From 535670c19d0190ac59e8a8f284d2a18d1b8cb56f Mon Sep 17 00:00:00 2001 From: Tomas Date: Tue, 17 Dec 2024 17:25:33 -0300 Subject: [PATCH 01/11] Add retries with exponential backoff to send transactions (#158) Implement `send_tx_with_retries` to the Simple TxManager that sends a transaction and retries using Exponential Backoff --- Cargo.lock | 15 ++++ Cargo.toml | 1 + crates/chainio/txmanager/Cargo.toml | 1 + .../txmanager/src/simple_tx_manager.rs | 86 ++++++++++++++++++- 4 files changed, 101 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f388c1cb..07d65f33 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1584,6 +1584,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom", + "instant", + "pin-project-lite", + "rand", + "tokio", +] + [[package]] name = "backtrace" version = "0.3.74" @@ -2486,6 +2500,7 @@ version = "0.1.1" dependencies = [ "alloy", "async-trait", + "backoff", "eigen-logging", "eigen-signer", "eigen-testing-utils", diff --git a/Cargo.toml b/Cargo.toml index 28e08347..7a7d6a64 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,6 +56,7 @@ ark-serialize = "0.5.0" async-trait = "0.1.83" aws-config = "1.5.9" aws-sdk-kms = "1.49.0" +backoff = { version = "0.4.0", features = ["futures", "tokio"] } clap = { version = "4.5.20", features = ["derive"] } eigen-chainio-txmanager = { path = "crates/chainio/txmanager/" } eigen-client-avsregistry = { path = "crates/chainio/clients/avsregistry" } diff --git a/crates/chainio/txmanager/Cargo.toml b/crates/chainio/txmanager/Cargo.toml index 5525bbfa..afec9039 100644 --- a/crates/chainio/txmanager/Cargo.toml +++ b/crates/chainio/txmanager/Cargo.toml @@ -15,6 +15,7 @@ eigen-signer.workspace = true reqwest.workspace = true thiserror.workspace = true tokio.workspace = true +backoff.workspace = true [dev-dependencies] eigen-testing-utils.workspace = true diff --git a/crates/chainio/txmanager/src/simple_tx_manager.rs b/crates/chainio/txmanager/src/simple_tx_manager.rs index e52c31c9..889be616 100644 --- a/crates/chainio/txmanager/src/simple_tx_manager.rs +++ b/crates/chainio/txmanager/src/simple_tx_manager.rs @@ -4,9 +4,11 @@ use alloy::primitives::U256; use alloy::providers::{PendingTransactionBuilder, Provider, ProviderBuilder, RootProvider}; use alloy::rpc::types::eth::{TransactionInput, TransactionReceipt, TransactionRequest}; use alloy::signers::local::PrivateKeySigner; +use backoff::{future::retry, ExponentialBackoffBuilder}; use eigen_logging::logger::SharedLogger; use eigen_signer::signer::Config; use reqwest::Url; +use std::time::Duration; use thiserror::Error; static FALLBACK_GAS_TIP_CAP: u128 = 5_000_000_000; @@ -14,7 +16,7 @@ static FALLBACK_GAS_TIP_CAP: u128 = 5_000_000_000; pub type Transport = alloy::transports::http::Http; /// Possible errors raised in Tx Manager -#[derive(Error, Debug)] +#[derive(Error, Debug, PartialEq)] pub enum TxManagerError { #[error("signer error")] SignerError, @@ -156,6 +158,48 @@ impl SimpleTxManager { SimpleTxManager::wait_for_receipt(self, pending_tx).await } + /// Send a transaction to the Ethereum node. It takes an unsigned/signed transaction, + /// sends it to the Ethereum node and waits for the receipt. + /// If you pass in a signed transaction it will ignore the signature + /// and re-sign the transaction after adding the nonce and gas limit. + /// If the transaction fails, it will retry sending the transaction until it gets a receipt, + /// using an **exponential backoff** strategy. + /// If no receipt is received after `max_elapsed_time`, it will return an error. + /// + /// # Arguments + /// + /// * `tx`: The transaction to be sent. + /// * `initial_interval`: The initial interval duration for the backoff. + /// * `max_elapsed_time`: The maximum elapsed time for retrying. + /// * `multiplier`: The multiplier used to compute the exponential backoff. + /// + /// # Returns + /// + /// * `TransactionReceipt` The transaction receipt. + /// + /// # Errors + /// + /// * `TxManagerError` - If the transaction cannot be sent, or there is an error + /// signing the transaction or estimating gas and nonce. + pub async fn send_tx_with_retries( + &self, + tx: &mut TransactionRequest, + initial_interval: Duration, + max_elapsed_time: Duration, + multiplier: f64, + ) -> Result { + let backoff_config = ExponentialBackoffBuilder::default() + .with_initial_interval(initial_interval) + .with_max_elapsed_time(Some(max_elapsed_time)) + .with_multiplier(multiplier) + .build(); + retry(backoff_config, || async { + let mut cloned_tx = tx.clone(); + Ok(self.send_tx(&mut cloned_tx).await?) + }) + .await + } + /// Estimates the gas and nonce for a transaction. /// /// # Arguments @@ -270,14 +314,16 @@ impl SimpleTxManager { #[cfg(test)] mod tests { - use super::SimpleTxManager; + use super::{SimpleTxManager, TxManagerError}; use alloy::consensus::TxLegacy; use alloy::network::TransactionBuilder; use alloy::primitives::{address, bytes, TxKind::Call, U256}; use alloy::rpc::types::eth::TransactionRequest; use eigen_logging::get_test_logger; use eigen_testing_utils::anvil::start_anvil_container; + use std::time::Duration; use tokio; + use tokio::time::Instant; #[tokio::test] async fn test_send_transaction_from_legacy() { @@ -339,4 +385,40 @@ mod tests { assert!(block_number > 0); assert_eq!(receipt.to, Some(to)); } + + #[tokio::test] + async fn test_send_transaction_with_retries_returns_after_timeout() { + let rpc_url = "http://fake:8545"; + let logger = get_test_logger(); + let private_key = + "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80".to_string(); + let simple_tx_manager = + SimpleTxManager::new(logger, 1.0, private_key.as_str(), rpc_url).unwrap(); + let to = address!("a0Ee7A142d267C1f36714E4a8F75612F20a79720"); + + let account_nonce = 0x69; + let mut tx = TransactionRequest::default() + .with_to(to) + .with_nonce(account_nonce) + .with_chain_id(31337) + .with_value(U256::from(100)) + .with_gas_limit(21_000) + .with_max_priority_fee_per_gas(1_000_000_000) + .with_max_fee_per_gas(20_000_000_000) + .with_gas_price(21_000_000_000); + let start = Instant::now(); + + let result = simple_tx_manager + .send_tx_with_retries( + &mut tx, + Duration::from_millis(5), + Duration::from_secs(1), + 1.0, + ) + .await; + assert_eq!(result, Err(TxManagerError::SendTxError)); + // substract one interval for asserting, because if the last try does not fit in the max_elapsed_time, it will not be executed + let elapsed = start.elapsed(); + assert!(elapsed >= Duration::from_secs(1) - Duration::from_millis(5)); + } } From 070d76d03fe1aabf7393945e2014b2acac6f75e2 Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Tue, 17 Dec 2024 17:33:54 -0300 Subject: [PATCH 02/11] query_registration_detail method (#162) This PR implements the method taken from Go SDK repo: ``` go func (r *ChainReader) QueryRegistrationDetail( opts *bind.CallOpts, operatorAddress common.Address, ) ([]bool, error) { operatorId, err := r.GetOperatorId(opts, operatorAddress) if err != nil { return nil, err } value, err := r.registryCoordinator.GetCurrentQuorumBitmap(opts, operatorId) if err != nil { return nil, err } numBits := value.BitLen() var quorums []bool for i := 0; i < numBits; i++ { quorums = append(quorums, value.Int64()&(1< --- .../chainio/clients/avsregistry/src/reader.rs | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/crates/chainio/clients/avsregistry/src/reader.rs b/crates/chainio/clients/avsregistry/src/reader.rs index 19471547..0798957a 100644 --- a/crates/chainio/clients/avsregistry/src/reader.rs +++ b/crates/chainio/clients/avsregistry/src/reader.rs @@ -399,6 +399,43 @@ impl AvsRegistryChainReader { Ok(quorum_stakes) } + /// Query registration detail + /// + /// # Arguments + /// + /// * `operator_address` - The operator address. + /// + /// # Returns + /// + /// A vector of booleans, where each boolean represents if the operator + /// is registered for a quorum. + /// + /// # Errors + /// + /// Returns an error if the operator id cannot be fetched or if the quorum bitmap + pub async fn query_registration_detail( + &self, + operator_address: Address, + ) -> Result<[bool; 64], AvsRegistryError> { + let operator_id = self.get_operator_id(operator_address).await?; + + let provider = get_provider(&self.provider); + let registry_coordinator = + RegistryCoordinator::new(self.registry_coordinator_addr, &provider); + let quorum_bitmap = registry_coordinator + .getCurrentQuorumBitmap(operator_id) + .call() + .await?; + + let inner_value = quorum_bitmap._0.into_limbs()[0]; + let mut quorums: [bool; 64] = [false; 64]; + for i in 0..64_u64 { + let other = inner_value & (1 << i) != 0; + quorums[i as usize] = other; + } + Ok(quorums) + } + /// Get operator id /// /// # Arguments @@ -727,4 +764,40 @@ mod tests { .await .unwrap(); } + + #[tokio::test] + async fn test_query_registration_detail() { + let avs_reader = build_avs_registry_chain_reader().await; + + let operator_id = U256::from_str( + "35344093966194310405039483339636912150346494903629410125452342281826147822033", + ) + .unwrap(); + + let operator_id_b256: B256 = operator_id.into(); + + let operator_address = avs_reader + .get_operator_from_id(operator_id_b256.into()) + .await + .unwrap(); + + let ret_query_registration_detail = avs_reader + .query_registration_detail(operator_address) + .await + .unwrap(); + + println!("{:?}", ret_query_registration_detail); + + // all the value are false + for ret_value in ret_query_registration_detail.iter() { + assert!(!ret_value); + } + + // register an operator + let is_registered = avs_reader + .is_operator_registered(operator_address) + .await + .unwrap(); + assert!(!is_registered); + } } From 305a7ad39671478c39d79530ebdcd2eb19c27df9 Mon Sep 17 00:00:00 2001 From: Tomas Date: Thu, 19 Dec 2024 17:14:03 -0300 Subject: [PATCH 03/11] Fix Holesky RPC provider url (#184) --- .../chainio/clients/avsregistry/src/reader.rs | 23 ++++++++----------- .../testing-utils/src/m2_holesky_constants.rs | 3 +++ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/crates/chainio/clients/avsregistry/src/reader.rs b/crates/chainio/clients/avsregistry/src/reader.rs index 0798957a..bc0fc048 100644 --- a/crates/chainio/clients/avsregistry/src/reader.rs +++ b/crates/chainio/clients/avsregistry/src/reader.rs @@ -634,23 +634,18 @@ impl AvsRegistryChainReader { mod tests { use super::*; use eigen_logging::get_test_logger; + use eigen_testing_utils::m2_holesky_constants::{ + HOLESKY_RPC_PROVIDER, OPERATOR_STATE_RETRIEVER, REGISTRY_COORDINATOR, + }; use hex::FromHex; use std::str::FromStr; - const HOLESKY_REGISTRY_COORDINATOR: &str = "0x53012C69A189cfA2D9d29eb6F19B32e0A2EA3490"; - const HOLESKY_OPERATOR_STATE_RETRIEVER: &str = "0xB4baAfee917fb4449f5ec64804217bccE9f46C67"; async fn build_avs_registry_chain_reader() -> AvsRegistryChainReader { - let holesky_registry_coordinator = - Address::from_str(HOLESKY_REGISTRY_COORDINATOR).expect("failed to parse address"); - let holesky_operator_state_retriever = - Address::from_str(HOLESKY_OPERATOR_STATE_RETRIEVER).expect("failed to parse address"); - - let holesky_provider = "https://ethereum-holesky.blockpi.network/v1/rpc/public"; AvsRegistryChainReader::new( get_test_logger(), - holesky_registry_coordinator, - holesky_operator_state_retriever, - holesky_provider.to_string(), + REGISTRY_COORDINATOR, + OPERATOR_STATE_RETRIEVER, + HOLESKY_RPC_PROVIDER.to_string(), ) .await .unwrap() @@ -734,9 +729,11 @@ mod tests { #[tokio::test] async fn test_is_operator_registered() { let avs_reader = build_avs_registry_chain_reader().await; - let address = Address::from_str(HOLESKY_REGISTRY_COORDINATOR).unwrap(); - let is_registered = avs_reader.is_operator_registered(address).await.unwrap(); + let is_registered = avs_reader + .is_operator_registered(REGISTRY_COORDINATOR) + .await + .unwrap(); assert!(!is_registered); } diff --git a/testing/testing-utils/src/m2_holesky_constants.rs b/testing/testing-utils/src/m2_holesky_constants.rs index cba586b3..bb5d58ff 100644 --- a/testing/testing-utils/src/m2_holesky_constants.rs +++ b/testing/testing-utils/src/m2_holesky_constants.rs @@ -1,5 +1,8 @@ use alloy_primitives::{address, Address}; +/// Holesky rpc provider +pub const HOLESKY_RPC_PROVIDER: &str = "https://ethereum-holesky-rpc.publicnode.com"; + /// https://holesky.etherscan.io/address/0xA44151489861Fe9e3055d95adC98FbD462B948e7 pub const DELEGATION_MANAGER_ADDRESS: Address = address!("A44151489861Fe9e3055d95adC98FbD462B948e7"); From f4b6b6f6ca467b9bb4b528a3481a80b894c35b6d Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Thu, 19 Dec 2024 17:30:00 -0300 Subject: [PATCH 04/11] Add clippy lints in Cargo.toml (#159) Co-authored-by: tomasarrachea --- Cargo.toml | 25 ++++++++++++++++--- .../chainio/clients/avsregistry/src/reader.rs | 6 ++--- crates/chainio/clients/fireblocks/src/lib.rs | 10 ++++++-- testing/testing-utils/src/anvil_constants.rs | 2 -- .../testing-utils/src/m2_holesky_constants.rs | 2 +- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7a7d6a64..c4896552 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,7 +46,14 @@ rust.rust_2018_idioms = { level = "deny", priority = -1 } rustdoc.all = "warn" clippy.unwrap_used = "warn" clippy.expect_used = "warn" +clippy.panic = "warn" clippy.todo = "warn" +clippy.indexing_slicing = "warn" +clippy.string_slice = "warn" +clippy.panic_in_result_fn = "warn" +clippy.panicking_overflow_checks = "warn" +clippy.question_mark = "warn" +clippy.implicit_return = "allow" [workspace.dependencies] ark-bn254 = "0.5.0" @@ -111,14 +118,23 @@ tracing-subscriber = { version = "0.3", features = ["json"] } url = "2.5" #misc -rust-bls-bn254 = { version = "0.2.1" , features = ["std"] } +rust-bls-bn254 = { version = "0.2.1", features = ["std"] } uuid = { version = "1.11", features = ["v4"] } #misc parking_lot = "0.12" + +anvil-utils = { path = "examples/anvil-utils" } + #alloy +alloy = { version = "0.7.0", features = [ + "sol-types", + "contract", + "full", + "signer-aws", +] } alloy-json-rpc = { version = "0.7", default-features = false } alloy-network = { version = "0.7", default-features = false } alloy-node-bindings = { version = "0.7", default-features = false } @@ -139,10 +155,11 @@ alloy-signer-aws = "0.7" alloy-signer-local = { version = "0.7", default-features = false } alloy-sol-types = "0.8" alloy-transport = { version = "0.7" } -alloy-transport-http = { version = "0.7", features = ["reqwest-rustls-tls"], default-features = false } +alloy-transport-http = { version = "0.7", features = [ + "reqwest-rustls-tls", +], default-features = false } alloy-transport-ipc = { version = "0.7.0", default-features = false } alloy-transport-ws = { version = "0.7.0", default-features = false } -alloy = { version = "0.7.0", 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/src/reader.rs b/crates/chainio/clients/avsregistry/src/reader.rs index bc0fc048..bdac856f 100644 --- a/crates/chainio/clients/avsregistry/src/reader.rs +++ b/crates/chainio/clients/avsregistry/src/reader.rs @@ -304,7 +304,6 @@ impl AvsRegistryChainReader { /// - a vector of the quorum numbers the operator was registered for at `block_number`. /// - for each of the quorums mentioned above, a vector of the operators registered for /// that quorum at `block_number`, containing each operator's `operatorId` and `stake`. - pub async fn get_operators_stake_in_quorums_of_operator_at_block( &self, operator_id: B256, @@ -430,8 +429,9 @@ impl AvsRegistryChainReader { let inner_value = quorum_bitmap._0.into_limbs()[0]; let mut quorums: [bool; 64] = [false; 64]; for i in 0..64_u64 { - let other = inner_value & (1 << i) != 0; - quorums[i as usize] = other; + if let Some(value) = quorums.get_mut(i as usize) { + *value = inner_value & (1 << i) != 0; + } } Ok(quorums) } diff --git a/crates/chainio/clients/fireblocks/src/lib.rs b/crates/chainio/clients/fireblocks/src/lib.rs index edbdb2c5..34d16ebb 100644 --- a/crates/chainio/clients/fireblocks/src/lib.rs +++ b/crates/chainio/clients/fireblocks/src/lib.rs @@ -98,7 +98,13 @@ impl FireblocksWallet { match contains_account { true => { - if self.whitelisted_accounts.get(&address).unwrap().id().eq("") { + if self + .whitelisted_accounts + .get(&address) + .unwrap() + .id() + .is_empty() + { Err(FireBlockError::AccountNotFoundError(address.to_string())) } else { Ok(self.whitelisted_accounts.get(&address).unwrap().clone()) @@ -146,7 +152,7 @@ impl FireblocksWallet { .get(&address) .unwrap() .id() - .eq("") + .is_empty() { Err(FireBlockError::ContractNotFound(address.to_string())) } else { diff --git a/testing/testing-utils/src/anvil_constants.rs b/testing/testing-utils/src/anvil_constants.rs index 2a282cd6..33d6655b 100644 --- a/testing/testing-utils/src/anvil_constants.rs +++ b/testing/testing-utils/src/anvil_constants.rs @@ -14,8 +14,6 @@ pub const ANVIL_HTTP_URL: &str = "http://localhost:8545"; /// Local anvil rpc WS url pub const ANVIL_WS_URL: &str = "ws://localhost:8545"; -#[allow(clippy::type_complexity)] - /// Service Manager contract address pub async fn get_service_manager_address(rpc_url: String) -> Address { let provider = get_provider(&rpc_url); diff --git a/testing/testing-utils/src/m2_holesky_constants.rs b/testing/testing-utils/src/m2_holesky_constants.rs index bb5d58ff..fcf9186d 100644 --- a/testing/testing-utils/src/m2_holesky_constants.rs +++ b/testing/testing-utils/src/m2_holesky_constants.rs @@ -64,7 +64,7 @@ pub const BEIGEN: Address = address!("275cCf9Be51f4a6C94aBa6114cdf2a4c45B9cb27") /// https://holesky.etherscan.io/address/0x43252609bff8a13dFe5e057097f2f45A24387a84 pub const EIGEN_STRATEGY: Address = address!("43252609bff8a13dFe5e057097f2f45A24387a84"); -/// Middlware contracts +// Middlware contracts /// https://holesky.etherscan.io/address/0x53012C69A189cfA2D9d29eb6F19B32e0A2EA3490 pub const REGISTRY_COORDINATOR: Address = address!("53012C69A189cfA2D9d29eb6F19B32e0A2EA3490"); From 832d9bf6381a9d5a8232a32676f7d6b9fc115523 Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Thu, 19 Dec 2024 18:01:02 -0300 Subject: [PATCH 05/11] Blsagg logger (#154) Co-authored-by: tomasarrachea --- crates/services/bls_aggregation/Cargo.toml | 1 + .../services/bls_aggregation/src/bls_agg.rs | 319 ++++++++++++------ .../bls_aggregation/src/bls_agg_test.rs | 13 +- .../src/bls_aggregation_service_error.rs | 21 ++ .../src/bls_aggregation_service_response.rs | 19 ++ crates/services/bls_aggregation/src/lib.rs | 2 + 6 files changed, 268 insertions(+), 107 deletions(-) create mode 100644 crates/services/bls_aggregation/src/bls_aggregation_service_error.rs create mode 100644 crates/services/bls_aggregation/src/bls_aggregation_service_response.rs diff --git a/crates/services/bls_aggregation/Cargo.toml b/crates/services/bls_aggregation/Cargo.toml index 410ba81e..35de702a 100644 --- a/crates/services/bls_aggregation/Cargo.toml +++ b/crates/services/bls_aggregation/Cargo.toml @@ -16,6 +16,7 @@ ark-ec.workspace = true eigen-client-avsregistry.workspace = true eigen-crypto-bls.workspace = true eigen-crypto-bn254.workspace = true +eigen-logging.workspace = true eigen-services-avsregistry.workspace = true eigen-types.workspace = true parking_lot.workspace = true diff --git a/crates/services/bls_aggregation/src/bls_agg.rs b/crates/services/bls_aggregation/src/bls_agg.rs index 8e2a49b9..5cebfb4b 100644 --- a/crates/services/bls_aggregation/src/bls_agg.rs +++ b/crates/services/bls_aggregation/src/bls_agg.rs @@ -1,18 +1,19 @@ +use super::bls_aggregation_service_error::BlsAggregationServiceError; +use super::bls_aggregation_service_response::BlsAggregationServiceResponse; use alloy_primitives::{FixedBytes, Uint, U256}; use ark_bn254::{G1Affine, G2Affine}; use ark_ec::AffineRepr; use eigen_crypto_bls::{BlsG1Point, BlsG2Point, Signature}; use eigen_crypto_bn254::utils::verify_message; +use eigen_logging::logger::SharedLogger; use eigen_services_avsregistry::AvsRegistryService; use eigen_types::{ avs::{SignatureVerificationError, SignedTaskResponseDigest, TaskIndex, TaskResponseDigest}, operator::{OperatorAvsState, QuorumThresholdPercentage, QuorumThresholdPercentages}, }; use parking_lot::RwLock; -use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::sync::Arc; -use thiserror::Error; use tokio::{ sync::{ mpsc::{self, UnboundedReceiver, UnboundedSender}, @@ -21,41 +22,6 @@ use tokio::{ time::Duration, }; -/// The response from the BLS aggregation service -#[allow(unused)] -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -pub struct BlsAggregationServiceResponse { - pub task_index: TaskIndex, - pub task_response_digest: TaskResponseDigest, - pub non_signers_pub_keys_g1: Vec, - pub quorum_apks_g1: Vec, - pub signers_apk_g2: BlsG2Point, - pub signers_agg_sig_g1: Signature, - pub non_signer_quorum_bitmap_indices: Vec, - pub quorum_apk_indices: Vec, - pub total_stake_indices: Vec, - pub non_signer_stake_indices: Vec>, -} - -/// Possible errors raised in BLS aggregation -#[derive(Error, Debug, Clone, PartialEq, Eq)] -pub enum BlsAggregationServiceError { - #[error("task expired error")] - TaskExpired, - #[error("task not found error")] - TaskNotFound, - #[error("signature verification error")] - SignatureVerificationError(SignatureVerificationError), - #[error("signatures channel was closed, can't send signatures to aggregator")] - SignaturesChannelClosed, - #[error("error sending to channel")] - ChannelError, - #[error("Avs Registry Error")] - RegistryError, - #[error("duplicate task index error")] - DuplicateTaskIndex, -} - /// Contains the aggregated operators signers information #[derive(Debug, Clone)] pub struct AggregatedOperators { @@ -71,6 +37,7 @@ pub struct BlsAggregatorService where A: Clone, { + logger: SharedLogger, aggregated_response_sender: UnboundedSender>, pub aggregated_response_receiver: Arc< @@ -90,9 +57,11 @@ impl BlsAggregatorService /// # Arguments /// /// * `avs_registry_service` - The AVS registry service - pub fn new(avs_registry_service: A) -> Self { + /// * `logger` - Logger to log messages + pub fn new(avs_registry_service: A, logger: SharedLogger) -> Self { let (tx, rx) = tokio::sync::mpsc::unbounded_channel(); Self { + logger, aggregated_response_sender: tx, aggregated_response_receiver: Arc::new(Mutex::new(rx)), signed_task_response: Arc::new(RwLock::new(HashMap::new())), @@ -169,6 +138,14 @@ impl BlsAggregatorService let avs_registry_service = self.avs_registry_service.clone(); let aggregated_response_sender = self.aggregated_response_sender.clone(); + self.logger.debug( + &format!( + "Create task to process new signed task responses for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.initialize_new_task_with_window", + ); + let logger = self.logger.clone(); tokio::spawn(async move { // Process each signed response here let _ = BlsAggregatorService::::single_task_aggregator( @@ -181,6 +158,7 @@ impl BlsAggregatorService aggregated_response_sender, signatures_rx, window_duration, + logger, ) .await .inspect_err(|err| { @@ -228,6 +206,13 @@ impl BlsAggregatorService .get(&task_index) .ok_or(BlsAggregationServiceError::TaskNotFound)?; + self.logger.debug( + &format!( + "send the task to the aggregator thread for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.process_new_signature", + ); // send the task to the aggregator thread sender .send(task) @@ -236,6 +221,13 @@ impl BlsAggregatorService // release the lock }; + self.logger.debug( + &format!( + "receive the signature verification result for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.process_new_signature", + ); // return the signature verification result rx.recv() .await @@ -250,6 +242,7 @@ impl BlsAggregatorService /// - `aggregated_operators` - Contains the information of all the aggregated operators. /// - `operator_state` - The state of the operator, contains information about its stake. /// - `signed_task_digest` - Contains the id and signature of the new operator. + /// - `logger` - The logger to log messages. /// /// # Returns /// @@ -258,6 +251,7 @@ impl BlsAggregatorService aggregated_operators: &mut AggregatedOperators, operator_state: OperatorAvsState, signed_task_digest: SignedTaskResponseDigest, + logger: SharedLogger, ) -> &mut AggregatedOperators { let operator_g2_pubkey = operator_state .operator_info @@ -269,6 +263,15 @@ impl BlsAggregatorService aggregated_operators .signers_operator_ids_set .insert(signed_task_digest.operator_id, true); + + logger.debug( + &format!( + "operator {} inserted in signers_operator_ids_set", + signed_task_digest.operator_id + ), + "eigen-services-blsaggregation.bls_agg.aggregate_new_operator", + ); + for (quorum_num, stake) in operator_state.stake_per_quorum.iter() { // For each quorum the operator has stake in, we aggregate the signature and update the stake aggregated_operators.signers_agg_sig_g1 = Signature::new( @@ -303,7 +306,9 @@ impl BlsAggregatorService /// * `quorum_threshold_percentages` - The quorum threshold percentages for the task /// * `time_to_expiry` - The timeout for the task reader to expire /// * `aggregated_response_sender` - The sender channel for the aggregated responses - /// * `rx` - The receiver channel for the signed task responses + /// * `signatures_rx` - The receiver channel for the signed task responses + /// * `window_duration` - The duration of the window to wait for signatures after quorum is reached + /// * `logger` - The logger to log messages. #[allow(clippy::too_many_arguments)] pub async fn single_task_aggregator( avs_registry_service: A, @@ -317,6 +322,7 @@ impl BlsAggregatorService >, signatures_rx: UnboundedReceiver, window_duration: Duration, + logger: SharedLogger, ) -> Result<(), BlsAggregationServiceError> { let quorum_threshold_percentage_map: HashMap = quorum_nums .iter() @@ -357,6 +363,7 @@ impl BlsAggregatorService quorum_apks_g1, quorum_nums, window_duration, + logger, ) .await } @@ -377,6 +384,7 @@ impl BlsAggregatorService quorum_apks_g1: Vec, quorum_nums: Vec, window_duration: Duration, + logger: SharedLogger, ) -> Result<(), BlsAggregationServiceError> { let mut aggregated_operators: HashMap, AggregatedOperators> = HashMap::new(); let mut open_window = false; @@ -389,50 +397,82 @@ impl BlsAggregatorService tokio::select! { _ = &mut task_expired_timer => { // Task expired. If window is open, send aggregated reponse. Else, send error - dbg!("Task expired for task index: {:?}", task_index); - if open_window { - aggregated_response_sender - .send(Ok(current_aggregated_response.unwrap())) - .map_err(|_| BlsAggregationServiceError::ChannelError)?; - } else { - let _ = aggregated_response_sender.send(Err(BlsAggregationServiceError::TaskExpired)); - } - return Ok(()); - }, - _ = window_rx.recv() => { - // Window finished. Send aggregated response + + if open_window { + logger.debug( + &format!( + "task_expired_timer while in the waiting window for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.loop_task_aggregator", + ); aggregated_response_sender .send(Ok(current_aggregated_response.unwrap())) .map_err(|_| BlsAggregationServiceError::ChannelError)?; - return Ok(()); - }, - signed_task_digest = signatures_rx.recv() =>{ - // New signature, aggregate it. If threshold is met, start window - let Some(digest) = signed_task_digest else { - return Err(BlsAggregationServiceError::SignaturesChannelClosed); - }; - // check if the operator has already signed for this digest - if aggregated_operators - .get(&digest.task_response_digest) - .map(|operators| { - operators - .signers_operator_ids_set - .contains_key(&digest.operator_id) - }) - .unwrap_or(false) - { - digest - .signature_verification_channel - .send(Err(SignatureVerificationError::DuplicateSignature)) - .await - .map_err(|_| BlsAggregationServiceError::ChannelError)?; - continue; - } + } else { + logger.debug( + &format!( + "task_expired_timer NOT in the waiting window for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.loop_task_aggregator", + ); + + let _ = aggregated_response_sender.send(Err(BlsAggregationServiceError::TaskExpired)); + } + return Ok(()); + }, + _ = window_rx.recv() => { + logger.debug( + &format!( + "Window finished. Send aggregated response for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.loop_task_aggregator", + ); + + // Window finished. Send aggregated response + aggregated_response_sender + .send(Ok(current_aggregated_response.unwrap())) + .map_err(|_| BlsAggregationServiceError::ChannelError)?; + return Ok(()); + }, + signed_task_digest = signatures_rx.recv() =>{ + logger.debug( + &format!( + "New signature received for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.loop_task_aggregator", + ); + + // New signature, aggregate it. If threshold is met, start window + let Some(digest) = signed_task_digest else { + return Err(BlsAggregationServiceError::SignaturesChannelClosed); + }; + // check if the operator has already signed for this digest + if aggregated_operators + .get(&digest.task_response_digest) + .map(|operators| { + operators + .signers_operator_ids_set + .contains_key(&digest.operator_id) + }) + .unwrap_or(false) + { + digest + .signature_verification_channel + .send(Err(SignatureVerificationError::DuplicateSignature)) + .await + .map_err(|_| BlsAggregationServiceError::ChannelError)?; + continue; + } let verification_result = BlsAggregatorService::::verify_signature( task_index, &digest, &operator_state_avs, + logger.clone(), ) .await; let verification_failed = verification_result.is_err(); @@ -444,7 +484,6 @@ impl BlsAggregatorService .map_err(|_| BlsAggregationServiceError::ChannelError)?; if verification_failed { - dbg!("Signature verification failed for digest: {:?}", digest); continue; } @@ -467,6 +506,7 @@ impl BlsAggregatorService digest_aggregated_operators, operator_state.clone(), digest.clone(), + logger.clone() ) .clone() }) @@ -496,6 +536,8 @@ impl BlsAggregatorService } }); + + aggregated_operators.insert( digest.task_response_digest, digest_aggregated_operators.clone(), @@ -506,18 +548,33 @@ impl BlsAggregatorService &total_stake_per_quorum, &quorum_threshold_percentage_map, ) { - dbg!("Stake threshold not met for task index: {:?}", task_index); continue; } + logger.debug( + &format!( + "Signature threshold is met for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.loop_task_aggregator", + ); + if !open_window { open_window = true; let sender_cloned = window_tx.clone(); + + logger.debug( + &format!( + "Create window to wait for new signatures for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.loop_task_aggregator", + ); + tokio::spawn(async move { tokio::time::sleep(window_duration).await; let _ = sender_cloned.send(true); }); - dbg!("Opened window for task index: {:?}", task_index); } current_aggregated_response = Some(BlsAggregatorService::build_aggregated_response( @@ -529,6 +586,7 @@ impl BlsAggregatorService &avs_registry_service, &quorum_apks_g1, &quorum_nums, + logger.clone(), ) .await?); @@ -549,6 +607,7 @@ impl BlsAggregatorService /// * `avs_registry_service` - The avs registry service. /// * `quorum_apks_g1` - The quorum aggregated public keys. /// * `quorum_nums` - The quorum numbers. + /// * `logger` - The logger to log messages. /// /// # Returns /// @@ -563,7 +622,13 @@ impl BlsAggregatorService avs_registry_service: &A, quorum_apks_g1: &[BlsG1Point], quorum_nums: &[u8], + logger: SharedLogger, ) -> Result { + logger.debug( + &format!("Build aggregated response for task index: {}", task_index), + "eigen-services-blsaggregation.bls_agg.build_aggregated_response", + ); + let mut non_signers_operators_ids: Vec> = operator_state_avs .keys() .filter(|operator_id| { @@ -615,6 +680,7 @@ impl BlsAggregatorService /// * `signed_task_response_digest` - The signed task response digest /// * `operator_avs_state` - A hashmap containing the staked of all the operator indexed by operator_id. /// This is used to get the `operator_state` to obtain the operator public key. + /// * `logger` - The logger to log messages. /// /// # Error /// @@ -623,16 +689,28 @@ impl BlsAggregatorService /// - `SignatureVerificationError::OperatorPublicKeyNotFound` if the operator public key is not found, /// - `SignatureVerificationError::IncorrectSignature` if the signature is incorrect. pub async fn verify_signature( - _task_index: TaskIndex, + task_index: TaskIndex, signed_task_response_digest: &SignedTaskResponseDigest, operator_avs_state: &HashMap, OperatorAvsState>, + logger: SharedLogger, ) -> Result<(), SignatureVerificationError> { let Some(operator_state) = operator_avs_state.get(&signed_task_response_digest.operator_id) else { + logger.error( + &format!("Operator Not Found for task index: {}", task_index), + "eigen-services-blsaggregation.bls_agg.verify_signature", + ); return Err(SignatureVerificationError::OperatorNotFound); }; let Some(pub_keys) = &operator_state.operator_info.pub_keys else { + logger.error( + &format!( + "Operator Public Key Not Found for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.verify_signature", + ); return Err(SignatureVerificationError::OperatorPublicKeyNotFound); }; @@ -649,6 +727,24 @@ impl BlsAggregatorService ) .then_some(()) .ok_or(SignatureVerificationError::IncorrectSignature) + .inspect(|_| { + logger.debug( + &format!( + "Signature verification successful for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.verify_signature", + ); + }) + .inspect_err(|_| { + logger.error( + &format!( + "Signature verification failed for task index: {}", + task_index + ), + "eigen-services-blsaggregation.bls_agg.verify_signature", + ); + }) } /// Checks if the stake thresholds are met for the given set of quorum members. @@ -692,6 +788,7 @@ mod tests { use super::{BlsAggregationServiceError, BlsAggregationServiceResponse, BlsAggregatorService}; use alloy_primitives::{B256, U256}; use eigen_crypto_bls::{BlsG1Point, BlsG2Point, BlsKeyPair, Signature}; + use eigen_logging::get_test_logger; use eigen_services_avsregistry::fake_avs_registry_service::FakeAvsRegistryService; use eigen_types::avs::SignatureVerificationError::{DuplicateSignature, IncorrectSignature}; use eigen_types::operator::{QuorumNum, QuorumThresholdPercentages}; @@ -763,7 +860,8 @@ mod tests { .sign_message(task_response_digest.as_ref()); let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, vec![test_operator_1.clone()]); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( task_index, @@ -837,7 +935,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators.clone()); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( task_index, @@ -954,7 +1053,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators.clone()); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1060,7 +1160,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators.clone()); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1151,7 +1252,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators.clone()); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); // initialize 2 concurrent tasks let task_1_index = 1; @@ -1320,7 +1422,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, vec![test_operator_1.clone()]); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( task_index, @@ -1371,7 +1474,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators.clone()); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1449,7 +1553,8 @@ mod tests { .sign_message(task_response_digest.as_ref()); let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1510,7 +1615,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators.clone()); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1619,7 +1725,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators.clone()); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1729,7 +1836,8 @@ mod tests { let task_response_digest = hash(task_response); let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1801,7 +1909,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, vec![test_operator_1.clone()]); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1866,7 +1975,8 @@ mod tests { let test_operators = vec![test_operator_1.clone(), test_operator_2.clone()]; let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -1921,7 +2031,8 @@ mod tests { let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, vec![test_operator_1.clone()]); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); let bls_sig_op_1 = test_operator_1 .bls_keypair @@ -1958,7 +2069,8 @@ mod tests { let quorum_threshold_percentages: QuorumThresholdPercentages = vec![100u8]; let time_to_expiry = Duration::from_secs(1); let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( @@ -2035,7 +2147,8 @@ mod tests { .sign_message(hash(task_response).as_ref()); let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, vec![test_operator_1.clone()]); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); bls_agg_service .initialize_new_task( task_index, @@ -2105,7 +2218,8 @@ mod tests { let quorum_numbers: Vec = vec![0]; let quorum_threshold_percentages: QuorumThresholdPercentages = vec![50_u8]; let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); let time_to_expiry = Duration::from_secs(5); let window_duration = Duration::from_secs(1); @@ -2230,7 +2344,8 @@ mod tests { let quorum_numbers: Vec = vec![0]; let quorum_threshold_percentages: QuorumThresholdPercentages = vec![40_u8]; let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); let time_to_expiry = Duration::from_secs(2); let window_duration = Duration::from_secs(10); @@ -2335,7 +2450,8 @@ mod tests { let quorum_numbers: Vec = vec![0]; let quorum_threshold_percentages: QuorumThresholdPercentages = vec![40_u8]; let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); let time_to_expiry = Duration::from_secs(2); let window_duration = Duration::ZERO; @@ -2383,7 +2499,7 @@ mod tests { ) .await; assert_eq!( - Err(BlsAggregationServiceError::ChannelError), + Err(BlsAggregationServiceError::ChannelError), // TODO: change this error to be more representative process_signature_result ); @@ -2442,7 +2558,8 @@ mod tests { let quorum_numbers: Vec = vec![0]; let quorum_threshold_percentages: QuorumThresholdPercentages = vec![40_u8]; let fake_avs_registry_service = FakeAvsRegistryService::new(block_number, test_operators); - let bls_agg_service = BlsAggregatorService::new(fake_avs_registry_service); + let bls_agg_service = + BlsAggregatorService::new(fake_avs_registry_service, get_test_logger()); let time_to_expiry = Duration::from_secs(5); let window_duration = Duration::from_secs(1); @@ -2490,7 +2607,7 @@ mod tests { ) .await; assert_eq!( - Err(BlsAggregationServiceError::ChannelError), + Err(BlsAggregationServiceError::ChannelError), // TODO: change this error to be more representative process_signature_result ); diff --git a/crates/services/bls_aggregation/src/bls_agg_test.rs b/crates/services/bls_aggregation/src/bls_agg_test.rs index 528df1cc..9a937df9 100644 --- a/crates/services/bls_aggregation/src/bls_agg_test.rs +++ b/crates/services/bls_aggregation/src/bls_agg_test.rs @@ -1,6 +1,7 @@ #[cfg(test)] pub mod integration_test { - use crate::bls_agg::{BlsAggregationServiceResponse, BlsAggregatorService}; + use crate::bls_agg::BlsAggregatorService; + use crate::bls_aggregation_service_response::BlsAggregationServiceResponse; use alloy::providers::Provider; use alloy_primitives::{aliases::U96, hex, Bytes, FixedBytes, B256, U256}; use eigen_client_avsregistry::{ @@ -191,7 +192,7 @@ pub mod integration_test { let avs_registry_service = AvsRegistryServiceChainCaller::new(avs_registry_reader.clone(), operators_info); - let bls_agg_service = BlsAggregatorService::new(avs_registry_service); + let bls_agg_service = BlsAggregatorService::new(avs_registry_service, get_test_logger()); let current_block_num = provider.get_block_number().await.unwrap(); mine_anvil_blocks(&container, 1).await; @@ -375,7 +376,7 @@ pub mod integration_test { let avs_registry_service = AvsRegistryServiceChainCaller::new(avs_registry_reader.clone(), operators_info); - let bls_agg_service = BlsAggregatorService::new(avs_registry_service); + let bls_agg_service = BlsAggregatorService::new(avs_registry_service, get_test_logger()); let current_block_num = provider.get_block_number().await.unwrap(); @@ -595,7 +596,7 @@ pub mod integration_test { let avs_registry_service = AvsRegistryServiceChainCaller::new(avs_registry_reader.clone(), operators_info); - let bls_agg_service = BlsAggregatorService::new(avs_registry_service); + let bls_agg_service = BlsAggregatorService::new(avs_registry_service, get_test_logger()); let current_block_num = provider.get_block_number().await.unwrap(); @@ -804,7 +805,7 @@ pub mod integration_test { let avs_registry_service = AvsRegistryServiceChainCaller::new(avs_registry_reader.clone(), operators_info); - let bls_agg_service = BlsAggregatorService::new(avs_registry_service); + let bls_agg_service = BlsAggregatorService::new(avs_registry_service, get_test_logger()); let current_block_num = provider.get_block_number().await.unwrap(); @@ -984,7 +985,7 @@ pub mod integration_test { let avs_registry_service = AvsRegistryServiceChainCaller::new(avs_registry_reader.clone(), operators_info); - let bls_agg_service = BlsAggregatorService::new(avs_registry_service); + let bls_agg_service = BlsAggregatorService::new(avs_registry_service, get_test_logger()); let current_block_num = provider.get_block_number().await.unwrap(); mine_anvil_blocks(&container, 1).await; diff --git a/crates/services/bls_aggregation/src/bls_aggregation_service_error.rs b/crates/services/bls_aggregation/src/bls_aggregation_service_error.rs new file mode 100644 index 00000000..1d6d0711 --- /dev/null +++ b/crates/services/bls_aggregation/src/bls_aggregation_service_error.rs @@ -0,0 +1,21 @@ +use eigen_types::avs::SignatureVerificationError; +use thiserror::Error; + +/// Possible errors raised in BLS aggregation +#[derive(Error, Debug, Clone, PartialEq, Eq)] +pub enum BlsAggregationServiceError { + #[error("task expired error")] + TaskExpired, + #[error("task not found error")] + TaskNotFound, + #[error("signature verification error")] + SignatureVerificationError(SignatureVerificationError), + #[error("signatures channel was closed, can't send signatures to aggregator")] + SignaturesChannelClosed, + #[error("error sending to channel")] + ChannelError, + #[error("Avs Registry Error")] + RegistryError, + #[error("duplicate task index error")] + DuplicateTaskIndex, +} diff --git a/crates/services/bls_aggregation/src/bls_aggregation_service_response.rs b/crates/services/bls_aggregation/src/bls_aggregation_service_response.rs new file mode 100644 index 00000000..ebcb38f6 --- /dev/null +++ b/crates/services/bls_aggregation/src/bls_aggregation_service_response.rs @@ -0,0 +1,19 @@ +use eigen_crypto_bls::{BlsG1Point, BlsG2Point, Signature}; +use eigen_types::avs::{TaskIndex, TaskResponseDigest}; +use serde::{Deserialize, Serialize}; + +/// The response from the BLS aggregation service +#[allow(unused)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct BlsAggregationServiceResponse { + pub task_index: TaskIndex, + pub task_response_digest: TaskResponseDigest, + pub non_signers_pub_keys_g1: Vec, + pub quorum_apks_g1: Vec, + pub signers_apk_g2: BlsG2Point, + pub signers_agg_sig_g1: Signature, + pub non_signer_quorum_bitmap_indices: Vec, + pub quorum_apk_indices: Vec, + pub total_stake_indices: Vec, + pub non_signer_stake_indices: Vec>, +} diff --git a/crates/services/bls_aggregation/src/lib.rs b/crates/services/bls_aggregation/src/lib.rs index 669a6aa2..02159997 100644 --- a/crates/services/bls_aggregation/src/lib.rs +++ b/crates/services/bls_aggregation/src/lib.rs @@ -9,3 +9,5 @@ pub mod bls_agg; mod bls_agg_test; +pub mod bls_aggregation_service_error; +pub mod bls_aggregation_service_response; From fadbe67d60510e9ba82c11973a987a762dc51a0a Mon Sep 17 00:00:00 2001 From: Tomas Date: Thu, 19 Dec 2024 18:03:18 -0300 Subject: [PATCH 06/11] Remove logs in operatorsinfo test (#185) --- crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs b/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs index 9876db13..fbc640f7 100644 --- a/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs +++ b/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs @@ -427,7 +427,7 @@ mod tests { use eigen_client_avsregistry::writer::AvsRegistryChainWriter; use eigen_client_elcontracts::{reader::ELChainReader, writer::ELChainWriter}; use eigen_crypto_bls::BlsKeyPair; - use eigen_logging::{get_logger, get_test_logger, init_logger}; + use eigen_logging::get_test_logger; use eigen_testing_utils::anvil::start_anvil_container; use eigen_testing_utils::anvil_constants::{ get_avs_directory_address, get_delegation_manager_address, @@ -444,8 +444,7 @@ mod tests { #[tokio::test] async fn test_query_past_registered_operator_events_and_fill_db() { let (_container, http_endpoint, ws_endpoint) = start_anvil_container().await; - init_logger(eigen_logging::log_level::LogLevel::Debug); - let test_logger = get_logger(); + let test_logger = get_test_logger(); register_operator( http_endpoint.clone(), "0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6", From 6f19a60d3ddb7963eff728fa02243c13558afc1c Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Fri, 3 Jan 2025 15:00:22 -0300 Subject: [PATCH 07/11] Contract Bindings section in the README (#178) Co-authored-by: tomasarrachea --- README.md | 21 ++++++++++++++++++++- crates/eigensdk/README.md | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c8e5649..ef90011f 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,26 @@ Example : cargo run --example get_quorum_count ``` +## Contract Bindings + +The main branch of this repo is intended to be syncronized with mainnet version of core contracts. + +To update the bindings of this repo: + +- Inside the `crates/contracts` folder, run: + +```bash +forge bind --alloy --bindings-path /crates/utils --overwrite -C src/contracts +``` + +where `path-eigensdk-rs` is the full path to the eigensdk-rs (this) repo. + +This command will generate the bindings files in the folder: `/crates/utils`. + +⚠️ It rewrites Cargo.toml file, this file must be restored to the current version. + +- Fix all compilation warnings. + ## Contributor Guidelines We are actively looking for contributors. Thank you for your interest. We have strict ci checks in place. In case of any questions and support, feel free to raise an issue. @@ -105,7 +125,6 @@ Rolling `MSRV` policy of 6 months. The current `MSRV` is 1.79 🚧 Eigensdk-rs is under active development and has not been audited. Eigensdk-rs is rapidly being upgraded, features may be added, removed or otherwise improved or modified and interfaces will have breaking changes. Eigensdk-rs should be used only for testing purposes and not in production. Eigensdk-rs is provided "as is" and Eigen Labs, Inc. does not guarantee its functionality or provide support for its use in production. 🚧 - ## Credits - [eigensdk-go](https://github.com/Layr-Labs/eigensdk-go/tree/master) diff --git a/crates/eigensdk/README.md b/crates/eigensdk/README.md index 29afde54..3c960d13 100644 --- a/crates/eigensdk/README.md +++ b/crates/eigensdk/README.md @@ -36,6 +36,26 @@ Example : cargo run --example get_quorum_count ``` +## Contract Bindings + +The main branch of this repo is intended to be syncronized with mainnet version of core contracts. + +To update the bindings of this repo: + +- Inside the `crates/contracts` folder, run: + +```bash +forge bind --alloy --bindings-path /crates/utils --overwrite -C src/contracts +``` + +where `path-eigensdk-rs` is the full path to the eigensdk-rs (this) repo. + +This command will generate the bindings files in the folder: `/crates/utils`. + +⚠️ It rewrites Cargo.toml file, this file must be restored to the current version. + +- Fix all compilation warnings. + ## Contributor Guidelines We are actively looking for contributors. Thank you for your interest. We have strict ci checks in place. In case of any questions and support, feel free to raise an issue. From aebc67154b045fee2fe936524643ea870701ec15 Mon Sep 17 00:00:00 2001 From: Tomas Date: Wed, 8 Jan 2025 13:53:32 -0300 Subject: [PATCH 08/11] Update eigenlayer-middleware to v.0.4.3 rewards release (#177) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Pablo Deymonnaz Co-authored-by: supernovahs <91280922+supernovahs@users.noreply.github.com> Co-authored-by: supernovahs Co-authored-by: Tomás Grüner <47506558+MegaRedHand@users.noreply.github.com> --- .github/workflows/integration.yml | 4 +- .gitmodules | 5 +- Cargo.lock | 394 +- Cargo.toml | 38 +- README.md | 2 +- crates/chainio/clients/avsregistry/Cargo.toml | 2 +- .../clients/avsregistry/src/fake_reader.rs | 2 +- .../chainio/clients/avsregistry/src/reader.rs | 10 +- .../chainio/clients/avsregistry/src/writer.rs | 9 +- crates/chainio/clients/elcontracts/Cargo.toml | 2 +- .../chainio/clients/elcontracts/src/reader.rs | 22 +- .../chainio/clients/elcontracts/src/writer.rs | 18 +- crates/chainio/clients/eth/Cargo.toml | 1 + .../clients/eth/src/instrumented_client.rs | 2 +- crates/chainio/clients/fireblocks/Cargo.toml | 2 +- crates/chainio/clients/fireblocks/src/lib.rs | 7 +- crates/common/Cargo.toml | 16 + crates/common/src/lib.rs | 70 + crates/contracts/lib/eigenlayer-middleware | 2 +- crates/contracts/lib/forge-std | 2 +- crates/contracts/script/DeployMockAvs.s.sol | 70 +- .../script/DeployMockAvsRegistries.s.sol | 180 +- .../DeployTokensStrategiesCreateQuorums.s.sol | 78 +- .../RegisterOperatorsWithEigenlayer.s.sol | 71 +- crates/contracts/script/UpdateOperators.s.sol | 56 +- .../script/parsers/ConfigsReadWriter.sol | 37 +- .../parsers/EigenlayerContractsParser.sol | 91 +- .../script/parsers/MockAvsContractsParser.sol | 54 +- .../TokensAndStrategiesContractsParser.sol | 21 +- crates/contracts/src/ContractsRegistry.sol | 36 +- .../contracts/src/MockAvsServiceManager.sol | 8 +- crates/contracts/src/MockERC20.sol | 8 +- crates/crypto/bls/src/lib.rs | 8 +- crates/eigen-cli/Cargo.toml | 1 + crates/eigen-cli/src/eigen_address.rs | 9 +- crates/eigensdk/README.md | 2 +- .../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 | 18 +- crates/services/operatorsinfo/Cargo.toml | 5 +- .../src/operatorsinfo_inmemory.rs | 9 +- crates/signer/src/signer.rs | 11 +- crates/utils/Cargo.toml | 2 - crates/utils/src/deploy/address.rs | 224 + crates/utils/src/deploy/addressupgradeable.rs | 226 + crates/utils/src/deploy/beaconchainproofs.rs | 226 + crates/utils/src/deploy/bitmaputils.rs | 224 + crates/utils/src/deploy/blsapkregistry.rs | 5640 +++++ .../src/{ => deploy}/blsapkregistrystorage.rs | 300 +- .../utils/src/deploy/blssignaturechecker.rs | 3389 +++ crates/utils/src/deploy/bn254.rs | 221 + .../src/{ => deploy}/configsreadwriter.rs | 26 +- crates/utils/src/{ => deploy}/context.rs | 7 +- .../src/{ => deploy}/contextupgradeable.rs | 21 +- .../src/{ => deploy}/contractsregistry.rs | 92 +- crates/utils/src/deploy/deploymockavs.rs | 2786 ++ .../{ => deploy}/deploymockavsregistries.rs | 158 +- .../deploytokensstrategiescreatequorums.rs | 582 + crates/utils/src/deploy/ecdsa.rs | 221 + .../{ => deploy}/eigenlayercontractsparser.rs | 26 +- .../utils/src/deploy/eip1271signatureutils.rs | 227 + crates/utils/src/{ => deploy}/eip712.rs | 7 +- crates/utils/src/deploy/emptycontract.rs | 428 + crates/utils/src/deploy/endian.rs | 223 + crates/utils/src/deploy/erc1967proxy.rs | 820 + .../utils/src/{ => deploy}/erc1967upgrade.rs | 49 +- crates/utils/src/deploy/erc20.rs | 2650 ++ .../utils/src/{ => deploy}/iavsdirectory.rs | 438 +- crates/utils/src/{ => deploy}/ibeacon.rs | 18 +- .../utils/src/{ => deploy}/iblsapkregistry.rs | 246 +- .../src/{ => deploy}/iblssignaturechecker.rs | 119 +- .../src/{ => deploy}/idelegationmanager.rs | 1151 +- crates/utils/src/{ => deploy}/ieigenpod.rs | 4846 ++-- .../src/{ => deploy}/ieigenpodmanager.rs | 1613 +- crates/utils/src/{ => deploy}/ierc1271.rs | 18 +- crates/utils/src/{ => deploy}/ierc165.rs | 18 +- .../src/{ => deploy}/ierc1822proxiable.rs | 18 +- crates/utils/src/{ => deploy}/ierc20.rs | 101 +- .../utils/src/{ => deploy}/ierc20metadata.rs | 134 +- crates/utils/src/{ => deploy}/ierc20permit.rs | 40 +- crates/utils/src/{ => deploy}/ierc721.rs | 159 +- .../src/{ => deploy}/ierc721enumerable.rs | 192 +- .../utils/src/{ => deploy}/ierc721metadata.rs | 192 +- .../src/{ => deploy}/ierc721tokenreceiver.rs | 18 +- .../utils/src/{ => deploy}/iethposdeposit.rs | 54 +- .../utils/src/{ => deploy}/iindexregistry.rs | 149 +- crates/utils/src/deploy/indexregistry.rs | 3501 +++ .../src/{ => deploy}/indexregistrystorage.rs | 192 +- .../utils/src/{ => deploy}/initializable.rs | 21 +- crates/utils/src/{ => deploy}/ipausable.rs | 126 +- .../utils/src/{ => deploy}/ipauserregistry.rs | 57 +- crates/utils/src/{ => deploy}/iregistry.rs | 18 +- .../src/{ => deploy}/iregistrycoordinator.rs | 356 +- .../src/{ => deploy}/irewardscoordinator.rs | 1772 +- .../iservicemanager.rs} | 171 +- .../utils/src/{ => deploy}/isignatureutils.rs | 7 +- crates/utils/src/{ => deploy}/islasher.rs | 306 +- .../utils/src/{ => deploy}/isocketupdater.rs | 32 +- .../utils/src/{ => deploy}/istakeregistry.rs | 395 +- crates/utils/src/{ => deploy}/istrategy.rs | 474 +- .../src/{ => deploy}/istrategymanager.rs | 763 +- crates/utils/src/deploy/merkle.rs | 223 + .../{ => deploy}/mockavscontractsparser.rs | 26 +- .../src/{ => deploy}/mockavsservicemanager.rs | 1645 +- crates/utils/src/{ => deploy}/mockerc20.rs | 175 +- crates/utils/src/{ => deploy}/mockerc721.rs | 211 +- crates/utils/src/deploy/mod.rs | 89 + .../src/deploy/operatorstateretriever.rs | 1761 ++ crates/utils/src/{ => deploy}/ownable.rs | 54 +- .../src/{ => deploy}/ownableupgradeable.rs | 68 +- crates/utils/src/deploy/pausable.rs | 1852 ++ crates/utils/src/deploy/pauserregistry.rs | 1401 ++ crates/utils/src/{ => deploy}/proxy.rs | 7 +- crates/utils/src/deploy/proxyadmin.rs | 1830 ++ crates/utils/src/deploy/registeroperators.rs | 715 + .../utils/src/deploy/registrycoordinator.rs | 13700 ++++++++++ .../registrycoordinatorstorage.rs | 752 +- crates/utils/src/deploy/safeerc20.rs | 224 + .../servicemanagerbase.rs} | 1809 +- .../utils/src/{ => deploy}/stakeregistry.rs | 467 +- .../src/{ => deploy}/stakeregistrystorage.rs | 435 +- crates/utils/src/deploy/storageslot.rs | 224 + crates/utils/src/deploy/strategybase.rs | 4702 ++++ .../src/{ => deploy}/strategybasetvllimits.rs | 676 +- crates/utils/src/deploy/strings.rs | 224 + .../tokenandstrategycontractsparser.rs | 26 +- .../src/deploy/transparentupgradeableproxy.rs | 1709 ++ crates/utils/src/deploy/updateoperators.rs | 715 + crates/utils/src/deploymockavs.rs | 2701 -- .../deploytokensstrategiescreatequorums.rs | 567 - crates/utils/src/ejectionmanager.rs | 3818 --- crates/utils/src/iejectionmanager.rs | 1809 -- crates/utils/src/lib.rs | 191 +- crates/utils/src/{ => middleware}/address.rs | 15 +- .../{ => middleware}/addressupgradeable.rs | 15 +- .../src/{ => middleware}/avsdirectory.rs | 382 +- .../utils/src/middleware/avsdirectorymock.rs | 2753 ++ .../avsdirectorystorage.rs} | 2756 +- .../src/middleware/beaconchainoraclemock.rs | 2531 ++ .../src/{ => middleware}/beaconchainproofs.rs | 15 +- crates/utils/src/middleware/beaconproxy.rs | 818 + crates/utils/src/middleware/bitmapstrings.rs | 224 + .../utils/src/{ => middleware}/bitmaputils.rs | 15 +- .../src/middleware/bitmaputilswrapper.rs | 2260 ++ .../src/{ => middleware}/blsapkregistry.rs | 321 +- .../src/middleware/blsapkregistryharness.rs | 5832 +++++ .../src/middleware/blsapkregistrystorage.rs | 5382 ++++ .../src/middleware/blsmockavsdeployer.rs | 10389 ++++++++ .../{ => middleware}/blssignaturechecker.rs | 169 +- crates/utils/src/{ => middleware}/bn254.rs | 15 +- crates/utils/src/middleware/byteslib.rs | 224 + .../checkpointsupgradeable.rs | 15 +- crates/utils/src/middleware/constants.rs | 224 + crates/utils/src/middleware/context.rs | 224 + .../src/middleware/contextupgradeable.rs | 407 + crates/utils/src/middleware/create2.rs | 224 + .../src/{ => middleware}/delegationmanager.rs | 899 +- .../middleware/delegationmanagerstorage.rs | 11549 +++++++++ crates/utils/src/middleware/delegationmock.rs | 13068 ++++++++++ crates/utils/src/{ => middleware}/ecdsa.rs | 15 +- .../{ => middleware}/ecdsastakeregistry.rs | 1438 +- .../ecdsastakeregistryequalweight.rs | 1566 +- .../ecdsastakeregistryeventsanderrors.rs | 506 +- .../ecdsastakeregistrypermissioned.rs | 1566 +- .../src/middleware/ecdsastakeregistrysetup.rs | 9034 +++++++ .../ecdsastakeregistrystorage.rs | 506 +- .../src/{ => middleware}/ecdsaupgradeable.rs | 15 +- crates/utils/src/middleware/eigenpod.rs | 8380 +++++++ .../utils/src/middleware/eigenpodmanager.rs | 6714 +++++ .../src/middleware/eigenpodmanagermock.rs | 11923 +++++++++ .../src/middleware/eigenpodmanagerstorage.rs | 5566 ++++ .../middleware/eigenpodpausingconstants.rs | 227 + .../utils/src/middleware/eigenpodstorage.rs | 7804 ++++++ .../{ => middleware}/eip1271signatureutils.rs | 15 +- crates/utils/src/middleware/eip712.rs | 223 + .../src/{ => middleware}/emptycontract.rs | 26 +- crates/utils/src/{ => middleware}/endian.rs | 15 +- .../middleware/equalweightecdsaregistry.rs | 9199 +++++++ .../src/{ => middleware}/erc1967proxy.rs | 59 +- crates/utils/src/middleware/erc1967upgrade.rs | 696 + crates/utils/src/{ => middleware}/erc20.rs | 166 +- crates/utils/src/middleware/erc20burnable.rs | 2882 +++ .../src/middleware/erc20presetfixedsupply.rs | 3045 +++ .../utils/src/middleware/ethposdepositmock.rs | 1048 + crates/utils/src/middleware/g2operations.rs | 6336 +++++ crates/utils/src/middleware/greeter.rs | 585 + .../utils/src/middleware/greeterproxiable.rs | 1082 + crates/utils/src/middleware/greeterv2.rs | 728 + .../src/middleware/greeterv2proxiable.rs | 1223 + crates/utils/src/middleware/iavsdirectory.rs | 2599 ++ crates/utils/src/middleware/ibeacon.rs | 433 + .../ibeaconchainoracle_deprecatedm1.rs | 2191 ++ .../utils/src/middleware/iblsapkregistry.rs | 4508 ++++ .../src/middleware/iblsapkregistryevents.rs | 1341 + .../src/middleware/iblssignaturechecker.rs | 2553 ++ .../src/middleware/idelegationmanager.rs | 10523 ++++++++ crates/utils/src/middleware/ieigenpod.rs | 7644 ++++++ .../utils/src/middleware/ieigenpodmanager.rs | 5407 ++++ .../ierc1271.rs} | 233 +- .../{ => middleware}/ierc1271upgradeable.rs | 18 +- .../utils/src/middleware/ierc1822proxiable.rs | 435 + crates/utils/src/middleware/ierc20.rs | 1724 ++ crates/utils/src/middleware/ierc20metadata.rs | 2172 ++ crates/utils/src/middleware/ierc20permit.rs | 868 + crates/utils/src/middleware/iethposdeposit.rs | 1048 + crates/utils/src/middleware/iindexregistry.rs | 2780 ++ .../src/middleware/iindexregistryevents.rs | 442 + .../src/{ => middleware}/indexregistry.rs | 202 +- .../src/middleware/indexregistrystorage.rs | 3414 +++ crates/utils/src/middleware/initializable.rs | 405 + .../integration_avs_sync_gascosts_ffi.rs | 8426 +++++++ .../integration_full_register_deregister.rs | 8041 ++++++ ...nfull_register_corebalancechange_update.rs | 8511 +++++++ ...integration_nonfull_register_deregister.rs | 8034 ++++++ .../utils/src/middleware/integrationbase.rs | 7393 ++++++ .../utils/src/middleware/integrationchecks.rs | 7393 ++++++ .../utils/src/middleware/integrationconfig.rs | 7454 ++++++ .../src/middleware/integrationdeployer.rs | 6865 +++++ crates/utils/src/middleware/ipausable.rs | 1852 ++ .../utils/src/middleware/ipauserregistry.rs | 951 + crates/utils/src/middleware/iregistry.rs | 438 + .../src/middleware/iregistrycoordinator.rs | 5886 +++++ .../utils/src/middleware/iservicemanager.rs | 1679 ++ .../utils/src/middleware/isignatureutils.rs | 226 + crates/utils/src/middleware/islasher.rs | 5120 ++++ crates/utils/src/middleware/isocketupdater.rs | 641 + crates/utils/src/middleware/istakeregistry.rs | 6844 +++++ .../src/middleware/istakeregistryevents.rs | 1209 + crates/utils/src/middleware/istrategy.rs | 2624 ++ .../utils/src/middleware/istrategymanager.rs | 4619 ++++ crates/utils/src/middleware/iuserdeployer.rs | 1049 + .../src/{ => middleware}/mathupgradeable.rs | 15 +- crates/utils/src/{ => middleware}/merkle.rs | 15 +- .../utils/src/middleware/mockavsdeployer.rs | 10070 ++++++++ .../src/middleware/mockdelegationmanager.rs | 674 + .../src/middleware/mockservicemanager.rs | 1023 + crates/utils/src/middleware/mod.rs | 154 + crates/utils/src/middleware/noinitializer.rs | 512 + crates/utils/src/middleware/operators.rs | 8146 ++++++ .../src/middleware/operatorstateretriever.rs | 1761 ++ crates/utils/src/middleware/ownable.rs | 936 + .../src/middleware/ownableupgradeable.rs | 1081 + crates/utils/src/middleware/owners.rs | 6820 +++++ crates/utils/src/{ => middleware}/pausable.rs | 134 +- .../src/{ => middleware}/pauserregistry.rs | 89 +- crates/utils/src/middleware/proofparsing.rs | 10207 ++++++++ crates/utils/src/middleware/proxiable.rs | 775 + crates/utils/src/middleware/proxy.rs | 234 + .../utils/src/{ => middleware}/proxyadmin.rs | 117 +- .../middleware/reentrancyguardupgradeable.rs | 408 + .../{ => middleware}/registrycoordinator.rs | 1301 +- .../middleware/registrycoordinatorharness.rs | 20909 ++++++++++++++++ .../src/middleware/registrycoordinatormock.rs | 6764 +++++ .../middleware/registrycoordinatorstorage.rs | 7025 ++++++ .../{ => middleware}/safecastupgradeable.rs | 15 +- .../utils/src/{ => middleware}/safeerc20.rs | 15 +- .../servicemanagerbase.rs} | 1462 +- .../servicemanagermock.rs} | 1909 +- .../{ => middleware}/servicemanagerrouter.rs | 48 +- .../middleware/servicemanagerrouterdeploy.rs | 578 + .../signaturecheckerupgradeable.rs | 15 +- .../src/middleware/signaturecompaction.rs | 226 + crates/utils/src/middleware/slasher.rs | 8255 ++++++ crates/utils/src/middleware/sort.rs | 221 + crates/utils/src/middleware/stakeregistry.rs | 8057 ++++++ .../src/middleware/stakeregistryharness.rs | 8847 +++++++ .../utils/src/middleware/stakeregistrymock.rs | 7340 ++++++ .../src/middleware/stakeregistrystorage.rs | 7566 ++++++ .../utils/src/{ => middleware}/storageslot.rs | 15 +- .../src/{ => middleware}/strategybase.rs | 593 +- .../src/{ => middleware}/strategymanager.rs | 531 +- .../src/middleware/strategymanagermock.rs | 9153 +++++++ .../src/middleware/strategymanagerstorage.rs | 5301 ++++ crates/utils/src/{ => middleware}/strings.rs | 15 +- .../{ => middleware}/stringsupgradeable.rs | 15 +- crates/utils/src/middleware/timemachine.rs | 6266 +++++ .../transparentupgradeableproxy.rs | 114 +- .../utils/src/middleware/upgradeablebeacon.rs | 1478 ++ .../src/middleware/upgradeableproxyutils.rs | 227 + crates/utils/src/middleware/user.rs | 8706 +++++++ .../utils/src/middleware/user_altmethods.rs | 8725 +++++++ crates/utils/src/middleware/utils.rs | 505 + .../utils/src/middleware/withconstructor.rs | 816 + crates/utils/src/operatorstateretriever.rs | 2112 -- crates/utils/src/registeroperators.rs | 695 - crates/utils/src/updateoperators.rs | 695 - testing/testing-utils/Cargo.toml | 3 +- testing/testing-utils/src/anvil_constants.rs | 7 +- 290 files changed, 511276 insertions(+), 30615 deletions(-) create mode 100644 crates/common/Cargo.toml create mode 100644 crates/common/src/lib.rs create mode 100644 crates/utils/src/deploy/address.rs create mode 100644 crates/utils/src/deploy/addressupgradeable.rs create mode 100644 crates/utils/src/deploy/beaconchainproofs.rs create mode 100644 crates/utils/src/deploy/bitmaputils.rs create mode 100644 crates/utils/src/deploy/blsapkregistry.rs rename crates/utils/src/{ => deploy}/blsapkregistrystorage.rs (96%) create mode 100644 crates/utils/src/deploy/blssignaturechecker.rs create mode 100644 crates/utils/src/deploy/bn254.rs rename crates/utils/src/{ => deploy}/configsreadwriter.rs (90%) rename crates/utils/src/{ => deploy}/context.rs (98%) rename crates/utils/src/{ => deploy}/contextupgradeable.rs (97%) rename crates/utils/src/{ => deploy}/contractsregistry.rs (74%) create mode 100644 crates/utils/src/deploy/deploymockavs.rs rename crates/utils/src/{ => deploy}/deploymockavsregistries.rs (90%) create mode 100644 crates/utils/src/deploy/deploytokensstrategiescreatequorums.rs create mode 100644 crates/utils/src/deploy/ecdsa.rs rename crates/utils/src/{ => deploy}/eigenlayercontractsparser.rs (90%) create mode 100644 crates/utils/src/deploy/eip1271signatureutils.rs rename crates/utils/src/{ => deploy}/eip712.rs (98%) create mode 100644 crates/utils/src/deploy/emptycontract.rs create mode 100644 crates/utils/src/deploy/endian.rs create mode 100644 crates/utils/src/deploy/erc1967proxy.rs rename crates/utils/src/{ => deploy}/erc1967upgrade.rs (96%) create mode 100644 crates/utils/src/deploy/erc20.rs rename crates/utils/src/{ => deploy}/iavsdirectory.rs (85%) rename crates/utils/src/{ => deploy}/ibeacon.rs (97%) rename crates/utils/src/{ => deploy}/iblsapkregistry.rs (96%) rename crates/utils/src/{ => deploy}/iblssignaturechecker.rs (97%) rename crates/utils/src/{ => deploy}/idelegationmanager.rs (91%) rename crates/utils/src/{ => deploy}/ieigenpod.rs (72%) rename crates/utils/src/{ => deploy}/ieigenpodmanager.rs (81%) rename crates/utils/src/{ => deploy}/ierc1271.rs (97%) rename crates/utils/src/{ => deploy}/ierc165.rs (97%) rename crates/utils/src/{ => deploy}/ierc1822proxiable.rs (97%) rename crates/utils/src/{ => deploy}/ierc20.rs (96%) rename crates/utils/src/{ => deploy}/ierc20metadata.rs (96%) rename crates/utils/src/{ => deploy}/ierc20permit.rs (97%) rename crates/utils/src/{ => deploy}/ierc721.rs (96%) rename crates/utils/src/{ => deploy}/ierc721enumerable.rs (96%) rename crates/utils/src/{ => deploy}/ierc721metadata.rs (96%) rename crates/utils/src/{ => deploy}/ierc721tokenreceiver.rs (97%) rename crates/utils/src/{ => deploy}/iethposdeposit.rs (96%) rename crates/utils/src/{ => deploy}/iindexregistry.rs (96%) create mode 100644 crates/utils/src/deploy/indexregistry.rs rename crates/utils/src/{ => deploy}/indexregistrystorage.rs (96%) rename crates/utils/src/{ => deploy}/initializable.rs (97%) rename crates/utils/src/{ => deploy}/ipausable.rs (95%) rename crates/utils/src/{ => deploy}/ipauserregistry.rs (96%) rename crates/utils/src/{ => deploy}/iregistry.rs (97%) rename crates/utils/src/{ => deploy}/iregistrycoordinator.rs (96%) rename crates/utils/src/{ => deploy}/irewardscoordinator.rs (87%) rename crates/utils/src/{iservicemanagerui.rs => deploy/iservicemanager.rs} (93%) rename crates/utils/src/{ => deploy}/isignatureutils.rs (98%) rename crates/utils/src/{ => deploy}/islasher.rs (96%) rename crates/utils/src/{ => deploy}/isocketupdater.rs (97%) rename crates/utils/src/{ => deploy}/istakeregistry.rs (96%) rename crates/utils/src/{ => deploy}/istrategy.rs (83%) rename crates/utils/src/{ => deploy}/istrategymanager.rs (85%) create mode 100644 crates/utils/src/deploy/merkle.rs rename crates/utils/src/{ => deploy}/mockavscontractsparser.rs (90%) rename crates/utils/src/{ => deploy}/mockavsservicemanager.rs (53%) rename crates/utils/src/{ => deploy}/mockerc20.rs (79%) rename crates/utils/src/{ => deploy}/mockerc721.rs (75%) create mode 100644 crates/utils/src/deploy/mod.rs create mode 100644 crates/utils/src/deploy/operatorstateretriever.rs rename crates/utils/src/{ => deploy}/ownable.rs (96%) rename crates/utils/src/{ => deploy}/ownableupgradeable.rs (96%) create mode 100644 crates/utils/src/deploy/pausable.rs create mode 100644 crates/utils/src/deploy/pauserregistry.rs rename crates/utils/src/{ => deploy}/proxy.rs (98%) create mode 100644 crates/utils/src/deploy/proxyadmin.rs create mode 100644 crates/utils/src/deploy/registeroperators.rs create mode 100644 crates/utils/src/deploy/registrycoordinator.rs rename crates/utils/src/{ => deploy}/registrycoordinatorstorage.rs (93%) create mode 100644 crates/utils/src/deploy/safeerc20.rs rename crates/utils/src/{iservicemanager.rs => deploy/servicemanagerbase.rs} (65%) rename crates/utils/src/{ => deploy}/stakeregistry.rs (71%) rename crates/utils/src/{ => deploy}/stakeregistrystorage.rs (96%) create mode 100644 crates/utils/src/deploy/storageslot.rs create mode 100644 crates/utils/src/deploy/strategybase.rs rename crates/utils/src/{ => deploy}/strategybasetvllimits.rs (71%) create mode 100644 crates/utils/src/deploy/strings.rs rename crates/utils/src/{ => deploy}/tokenandstrategycontractsparser.rs (90%) create mode 100644 crates/utils/src/deploy/transparentupgradeableproxy.rs create mode 100644 crates/utils/src/deploy/updateoperators.rs delete mode 100644 crates/utils/src/deploymockavs.rs delete mode 100644 crates/utils/src/deploytokensstrategiescreatequorums.rs delete mode 100644 crates/utils/src/ejectionmanager.rs delete mode 100644 crates/utils/src/iejectionmanager.rs rename crates/utils/src/{ => middleware}/address.rs (93%) rename crates/utils/src/{ => middleware}/addressupgradeable.rs (93%) rename crates/utils/src/{ => middleware}/avsdirectory.rs (96%) create mode 100644 crates/utils/src/middleware/avsdirectorymock.rs rename crates/utils/src/{ecdsaservicemanagerbase.rs => middleware/avsdirectorystorage.rs} (55%) create mode 100644 crates/utils/src/middleware/beaconchainoraclemock.rs rename crates/utils/src/{ => middleware}/beaconchainproofs.rs (93%) create mode 100644 crates/utils/src/middleware/beaconproxy.rs create mode 100644 crates/utils/src/middleware/bitmapstrings.rs rename crates/utils/src/{ => middleware}/bitmaputils.rs (93%) create mode 100644 crates/utils/src/middleware/bitmaputilswrapper.rs rename crates/utils/src/{ => middleware}/blsapkregistry.rs (74%) create mode 100644 crates/utils/src/middleware/blsapkregistryharness.rs create mode 100644 crates/utils/src/middleware/blsapkregistrystorage.rs create mode 100644 crates/utils/src/middleware/blsmockavsdeployer.rs rename crates/utils/src/{ => middleware}/blssignaturechecker.rs (61%) rename crates/utils/src/{ => middleware}/bn254.rs (93%) create mode 100644 crates/utils/src/middleware/byteslib.rs rename crates/utils/src/{ => middleware}/checkpointsupgradeable.rs (93%) create mode 100644 crates/utils/src/middleware/constants.rs create mode 100644 crates/utils/src/middleware/context.rs create mode 100644 crates/utils/src/middleware/contextupgradeable.rs create mode 100644 crates/utils/src/middleware/create2.rs rename crates/utils/src/{ => middleware}/delegationmanager.rs (74%) create mode 100644 crates/utils/src/middleware/delegationmanagerstorage.rs create mode 100644 crates/utils/src/middleware/delegationmock.rs rename crates/utils/src/{ => middleware}/ecdsa.rs (93%) rename crates/utils/src/{ => middleware}/ecdsastakeregistry.rs (69%) rename crates/utils/src/{ => middleware}/ecdsastakeregistryequalweight.rs (71%) rename crates/utils/src/{ => middleware}/ecdsastakeregistryeventsanderrors.rs (89%) rename crates/utils/src/{ => middleware}/ecdsastakeregistrypermissioned.rs (71%) create mode 100644 crates/utils/src/middleware/ecdsastakeregistrysetup.rs rename crates/utils/src/{ => middleware}/ecdsastakeregistrystorage.rs (89%) rename crates/utils/src/{ => middleware}/ecdsaupgradeable.rs (93%) create mode 100644 crates/utils/src/middleware/eigenpod.rs create mode 100644 crates/utils/src/middleware/eigenpodmanager.rs create mode 100644 crates/utils/src/middleware/eigenpodmanagermock.rs create mode 100644 crates/utils/src/middleware/eigenpodmanagerstorage.rs create mode 100644 crates/utils/src/middleware/eigenpodpausingconstants.rs create mode 100644 crates/utils/src/middleware/eigenpodstorage.rs rename crates/utils/src/{ => middleware}/eip1271signatureutils.rs (93%) create mode 100644 crates/utils/src/middleware/eip712.rs rename crates/utils/src/{ => middleware}/emptycontract.rs (94%) rename crates/utils/src/{ => middleware}/endian.rs (93%) create mode 100644 crates/utils/src/middleware/equalweightecdsaregistry.rs rename crates/utils/src/{ => middleware}/erc1967proxy.rs (96%) create mode 100644 crates/utils/src/middleware/erc1967upgrade.rs rename crates/utils/src/{ => middleware}/erc20.rs (96%) create mode 100644 crates/utils/src/middleware/erc20burnable.rs create mode 100644 crates/utils/src/middleware/erc20presetfixedsupply.rs create mode 100644 crates/utils/src/middleware/ethposdepositmock.rs create mode 100644 crates/utils/src/middleware/g2operations.rs create mode 100644 crates/utils/src/middleware/greeter.rs create mode 100644 crates/utils/src/middleware/greeterproxiable.rs create mode 100644 crates/utils/src/middleware/greeterv2.rs create mode 100644 crates/utils/src/middleware/greeterv2proxiable.rs create mode 100644 crates/utils/src/middleware/iavsdirectory.rs create mode 100644 crates/utils/src/middleware/ibeacon.rs create mode 100644 crates/utils/src/middleware/ibeaconchainoracle_deprecatedm1.rs create mode 100644 crates/utils/src/middleware/iblsapkregistry.rs create mode 100644 crates/utils/src/middleware/iblsapkregistryevents.rs create mode 100644 crates/utils/src/middleware/iblssignaturechecker.rs create mode 100644 crates/utils/src/middleware/idelegationmanager.rs create mode 100644 crates/utils/src/middleware/ieigenpod.rs create mode 100644 crates/utils/src/middleware/ieigenpodmanager.rs rename crates/utils/src/{ibeaconchainoracle.rs => middleware/ierc1271.rs} (66%) rename crates/utils/src/{ => middleware}/ierc1271upgradeable.rs (97%) create mode 100644 crates/utils/src/middleware/ierc1822proxiable.rs create mode 100644 crates/utils/src/middleware/ierc20.rs create mode 100644 crates/utils/src/middleware/ierc20metadata.rs create mode 100644 crates/utils/src/middleware/ierc20permit.rs create mode 100644 crates/utils/src/middleware/iethposdeposit.rs create mode 100644 crates/utils/src/middleware/iindexregistry.rs create mode 100644 crates/utils/src/middleware/iindexregistryevents.rs rename crates/utils/src/{ => middleware}/indexregistry.rs (75%) create mode 100644 crates/utils/src/middleware/indexregistrystorage.rs create mode 100644 crates/utils/src/middleware/initializable.rs create mode 100644 crates/utils/src/middleware/integration_avs_sync_gascosts_ffi.rs create mode 100644 crates/utils/src/middleware/integration_full_register_deregister.rs create mode 100644 crates/utils/src/middleware/integration_nonfull_register_corebalancechange_update.rs create mode 100644 crates/utils/src/middleware/integration_nonfull_register_deregister.rs create mode 100644 crates/utils/src/middleware/integrationbase.rs create mode 100644 crates/utils/src/middleware/integrationchecks.rs create mode 100644 crates/utils/src/middleware/integrationconfig.rs create mode 100644 crates/utils/src/middleware/integrationdeployer.rs create mode 100644 crates/utils/src/middleware/ipausable.rs create mode 100644 crates/utils/src/middleware/ipauserregistry.rs create mode 100644 crates/utils/src/middleware/iregistry.rs create mode 100644 crates/utils/src/middleware/iregistrycoordinator.rs create mode 100644 crates/utils/src/middleware/iservicemanager.rs create mode 100644 crates/utils/src/middleware/isignatureutils.rs create mode 100644 crates/utils/src/middleware/islasher.rs create mode 100644 crates/utils/src/middleware/isocketupdater.rs create mode 100644 crates/utils/src/middleware/istakeregistry.rs create mode 100644 crates/utils/src/middleware/istakeregistryevents.rs create mode 100644 crates/utils/src/middleware/istrategy.rs create mode 100644 crates/utils/src/middleware/istrategymanager.rs create mode 100644 crates/utils/src/middleware/iuserdeployer.rs rename crates/utils/src/{ => middleware}/mathupgradeable.rs (94%) rename crates/utils/src/{ => middleware}/merkle.rs (93%) create mode 100644 crates/utils/src/middleware/mockavsdeployer.rs create mode 100644 crates/utils/src/middleware/mockdelegationmanager.rs create mode 100644 crates/utils/src/middleware/mockservicemanager.rs create mode 100644 crates/utils/src/middleware/mod.rs create mode 100644 crates/utils/src/middleware/noinitializer.rs create mode 100644 crates/utils/src/middleware/operators.rs create mode 100644 crates/utils/src/middleware/operatorstateretriever.rs create mode 100644 crates/utils/src/middleware/ownable.rs create mode 100644 crates/utils/src/middleware/ownableupgradeable.rs create mode 100644 crates/utils/src/middleware/owners.rs rename crates/utils/src/{ => middleware}/pausable.rs (96%) rename crates/utils/src/{ => middleware}/pauserregistry.rs (96%) create mode 100644 crates/utils/src/middleware/proofparsing.rs create mode 100644 crates/utils/src/middleware/proxiable.rs create mode 100644 crates/utils/src/middleware/proxy.rs rename crates/utils/src/{ => middleware}/proxyadmin.rs (96%) create mode 100644 crates/utils/src/middleware/reentrancyguardupgradeable.rs rename crates/utils/src/{ => middleware}/registrycoordinator.rs (70%) create mode 100644 crates/utils/src/middleware/registrycoordinatorharness.rs create mode 100644 crates/utils/src/middleware/registrycoordinatormock.rs create mode 100644 crates/utils/src/middleware/registrycoordinatorstorage.rs rename crates/utils/src/{ => middleware}/safecastupgradeable.rs (94%) rename crates/utils/src/{ => middleware}/safeerc20.rs (93%) rename crates/utils/src/{servicemanagerbasestorage.rs => middleware/servicemanagerbase.rs} (63%) rename crates/utils/src/{servicemanagerbase.rs => middleware/servicemanagermock.rs} (61%) rename crates/utils/src/{ => middleware}/servicemanagerrouter.rs (96%) create mode 100644 crates/utils/src/middleware/servicemanagerrouterdeploy.rs rename crates/utils/src/{ => middleware}/signaturecheckerupgradeable.rs (94%) create mode 100644 crates/utils/src/middleware/signaturecompaction.rs create mode 100644 crates/utils/src/middleware/slasher.rs create mode 100644 crates/utils/src/middleware/sort.rs create mode 100644 crates/utils/src/middleware/stakeregistry.rs create mode 100644 crates/utils/src/middleware/stakeregistryharness.rs create mode 100644 crates/utils/src/middleware/stakeregistrymock.rs create mode 100644 crates/utils/src/middleware/stakeregistrystorage.rs rename crates/utils/src/{ => middleware}/storageslot.rs (93%) rename crates/utils/src/{ => middleware}/strategybase.rs (70%) rename crates/utils/src/{ => middleware}/strategymanager.rs (96%) create mode 100644 crates/utils/src/middleware/strategymanagermock.rs create mode 100644 crates/utils/src/middleware/strategymanagerstorage.rs rename crates/utils/src/{ => middleware}/strings.rs (93%) rename crates/utils/src/{ => middleware}/stringsupgradeable.rs (94%) create mode 100644 crates/utils/src/middleware/timemachine.rs rename crates/utils/src/{ => middleware}/transparentupgradeableproxy.rs (96%) create mode 100644 crates/utils/src/middleware/upgradeablebeacon.rs create mode 100644 crates/utils/src/middleware/upgradeableproxyutils.rs create mode 100644 crates/utils/src/middleware/user.rs create mode 100644 crates/utils/src/middleware/user_altmethods.rs create mode 100644 crates/utils/src/middleware/utils.rs create mode 100644 crates/utils/src/middleware/withconstructor.rs delete mode 100644 crates/utils/src/operatorstateretriever.rs delete mode 100644 crates/utils/src/registeroperators.rs delete mode 100644 crates/utils/src/updateoperators.rs diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 8358ff9a..2b7b0932 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -4,7 +4,7 @@ on: push: branches: [main] pull_request: - branches: [main] + branches: [ '**' ] jobs: build: @@ -94,4 +94,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: coverage-summary - path: coverage.zip + path: coverage.zip \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index af8cef93..4de1327e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,10 +1,7 @@ -[submodule "crates/contracts/bindings/utils/middleware"] - path = crates/contracts/bindings/utils/middleware - url = https://github.com/Layr-Labs/eigenlayer-middleware - branch = m2-mainnet [submodule "crates/contracts/lib/forge-std"] path = crates/contracts/lib/forge-std url = https://github.com/foundry-rs/forge-std [submodule "crates/contracts/lib/eigenlayer-middleware"] path = crates/contracts/lib/eigenlayer-middleware url = https://github.com/Layr-labs/eigenlayer-middleware + commit = 512ce7326f35e8060b9d46e23f9c159c0000b546 diff --git a/Cargo.lock b/Cargo.lock index 07d65f33..f17149a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,9 +68,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98452d9acf0e74c318625cbd45342c95ba6302214391baf23d28c7ae480fa80b" +checksum = "bbcc41e8a11a4975b18ec6afba2cc48d591fa63336a4c526dacb50479a8d6b35" dependencies = [ "alloy-consensus", "alloy-contract", @@ -105,9 +105,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1ff8439834ab71a4b0ecd1a8ff80b3921c87615f158940c3364f399c732786" +checksum = "f4138dc275554afa6f18c4217262ac9388790b2fc393c2dfe03c51d357abf013" dependencies = [ "alloy-eips", "alloy-primitives", @@ -123,9 +123,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "519a86faaa6729464365a90c04eba68539b6d3a30f426edb4b3dafd78920d42f" +checksum = "0fa04e1882c31288ce1028fdf31b6ea94cfa9eafa2e497f903ded631c8c6a42c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -137,9 +137,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca2b353d8b7f160dc930dfa174557acefece6deab5ecd7e6230d38858579eea" +checksum = "5f21886c1fea0626f755a49b2ac653b396fb345233f6170db2da3d0ada31560c" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -153,14 +153,14 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror", + "thiserror 2.0.4", ] [[package]] name = "alloy-core" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d14d531c99995de71558e8e2206c27d709559ee8e5a0452b965ea82405a013" +checksum = "d0713007d14d88a6edb8e248cddab783b698dbb954a28b8eee4bab21cfb7e578" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -171,9 +171,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80759b3f57b3b20fa7cd8fef6479930fc95461b58ff8adea6e87e618449c8a1d" +checksum = "44e3b98c37b3218924cd1d2a8570666b89662be54e5b182643855f783ea68b33" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -199,9 +199,9 @@ dependencies = [ [[package]] name = "alloy-eip7702" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" +checksum = "cabf647eb4650c91a9d38cb6f972bb320009e7e9d61765fb688a86f1563b33e8" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -212,9 +212,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dedb328c2114284f767e075589ca9de8d5e9c8a91333402f4804a584ed71a38" +checksum = "52dd5869ed09e399003e0e0ec6903d981b2a92e74c5d37e6b40890bad2517526" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -230,20 +230,22 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4841e8dd4e0f53d76b501fd4c6bc21d95d688bc8ebf0ea359fc6c7ab65b48742" +checksum = "e7d2a7fe5c1a9bd6793829ea21a636f30fc2b3f5d2e7418ba86d96e41dd1f460" dependencies = [ + "alloy-eips", "alloy-primitives", "alloy-serde", + "alloy-trie", "serde", ] [[package]] name = "alloy-json-abi" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac4b22b3e51cac09fd2adfcc73b55f447b4df669f983c13f7894ec82b607c63f" +checksum = "731ea743b3d843bc657e120fb1d1e9cc94f5dab8107e35a82125a63e6420a102" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -253,23 +255,23 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "254f770918f96dc4ec88a15e6e2e243358e1719d66b40ef814428e7697079d25" +checksum = "2008bedb8159a255b46b7c8614516eda06679ea82f620913679afbd8031fea72" dependencies = [ "alloy-primitives", "alloy-sol-types", "serde", "serde_json", - "thiserror", + "thiserror 2.0.4", "tracing", ] [[package]] name = "alloy-network" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "931dd176c6e33355f3dc0170ec69cf5b951f4d73870b276e2c837ab35f9c5136" +checksum = "4556f01fe41d0677495df10a648ddcf7ce118b0e8aa9642a0e2b6dd1fb7259de" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -287,14 +289,14 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 2.0.4", ] [[package]] name = "alloy-network-primitives" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa6ec0f23be233e851e31c5e4badfedfa9c7bc177bc37f4e03616072cd40a806" +checksum = "f31c3c6b71340a1d076831823f09cb6e02de01de5c6630a9631bdb36f947ff80" dependencies = [ "alloy-consensus", "alloy-eips", @@ -305,9 +307,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bce85f0f67b2248c2eb42941bb75079ac53648569a668e8bfd7de5a831ec64" +checksum = "4520cd4bc5cec20c32c98e4bc38914c7fb96bf4a712105e44da186a54e65e3ba" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -315,16 +317,16 @@ dependencies = [ "rand", "serde_json", "tempfile", - "thiserror", + "thiserror 2.0.4", "tracing", "url", ] [[package]] name = "alloy-primitives" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9db948902dfbae96a73c2fbf1f7abec62af034ab883e4c777c3fd29702bd6e2c" +checksum = "788bb18e8f61d5d9340b52143f27771daf7e1dccbaf2741621d2493f9debf52e" dependencies = [ "alloy-rlp", "bytes", @@ -333,7 +335,6 @@ dependencies = [ "derive_more", "foldhash", "hashbrown 0.15.2", - "hex-literal", "indexmap 2.7.0", "itoa", "k256", @@ -350,9 +351,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5545e2cbf2f8f24c68bb887ba0294fa12a2f816b9e72c4f226cd137b77d0e294" +checksum = "5a22c4441b3ebe2d77fa9cf629ba68c3f713eb91779cff84275393db97eddd82" dependencies = [ "alloy-chains", "alloy-consensus", @@ -381,7 +382,7 @@ dependencies = [ "schnellru", "serde", "serde_json", - "thiserror", + "thiserror 2.0.4", "tokio", "tracing", "url", @@ -390,9 +391,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b633f7731a3df2f4f334001bf80436565113816c5aa5c136c1ded563051e049b" +checksum = "2269fd635f7b505f27c63a3cb293148cd02301efce4c8bdd9ff54fbfc4a20e23" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -431,9 +432,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aed9e40c2a73265ebf70f1e48303ee55920282e1ea5971e832873fb2d32cea74" +checksum = "d06a292b37e182e514903ede6e623b9de96420e8109ce300da288a96d88b7e4b" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -457,9 +458,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42dea20fa715a6f39ec7adc735cfd9567342870737270ac67795d55896527772" +checksum = "9383845dd924939e7ab0298bbfe231505e20928907d7905aa3bf112287305e06" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", @@ -470,11 +471,10 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79d7620e22d6ed7c58451dd303d0501ade5a8bec9dc8daef0fbc48ceffabbae1" +checksum = "ca445cef0eb6c2cf51cfb4e214fbf1ebd00893ae2e6f3b944c8101b07990f988" dependencies = [ - "alloy-consensus", "alloy-consensus-any", "alloy-rpc-types-eth", "alloy-serde", @@ -482,9 +482,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb843daa6feb011475f0db8c499fff5ac62e1e6012fc01d97477ddb3217a83f" +checksum = "4a5f821f30344862a0b6eb9a1c2eb91dfb2ff44c7489f37152a526cdcab79264" dependencies = [ "alloy-consensus", "alloy-eips", @@ -498,9 +498,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df34b88df4deeac9ecfc80ad7cbb26a33e57437b9db8be5b952792feef6134bc" +checksum = "0938bc615c02421bd86c1733ca7205cc3d99a122d9f9bff05726bd604b76a5c2" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -510,17 +510,17 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-sol-types", - "derive_more", "itertools 0.13.0", "serde", "serde_json", + "thiserror 2.0.4", ] [[package]] name = "alloy-serde" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a89fd4cc3f96b3c5c0dd1cebeb63323e4659bbdc837117fa3fd5ac168df7d9" +checksum = "ae0465c71d4dced7525f408d84873aeebb71faf807d22d74c4a426430ccd9b55" dependencies = [ "alloy-primitives", "serde", @@ -529,23 +529,23 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532010243a96d1f8593c2246ec3971bc52303884fa1e43ca0a776798ba178910" +checksum = "9bfa395ad5cc952c82358d31e4c68b27bf4a89a5456d9b27e226e77dac50e4ff" dependencies = [ "alloy-primitives", "async-trait", "auto_impl", "elliptic-curve", "k256", - "thiserror", + "thiserror 2.0.4", ] [[package]] name = "alloy-signer-aws" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0bdb5079a35d7559714d9f9690b2ebb462921b9ceea63488bd2bef5744c15a" +checksum = "0eb06810c34427d499863817eb506acf57cb9ded9224b374116cae4e22dbd4e9" dependencies = [ "alloy-consensus", "alloy-network", @@ -555,15 +555,15 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror", + "thiserror 2.0.4", "tracing", ] [[package]] name = "alloy-signer-local" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8080c0ab2dc729b0cbb183843d08e78d2a1629140c9fc16234d2272abb483bd" +checksum = "fbdc63ce9eda1283fcbaca66ba4a414b841c0e3edbeef9c86a71242fc9e84ccc" dependencies = [ "alloy-consensus", "alloy-network", @@ -572,14 +572,14 @@ dependencies = [ "async-trait", "k256", "rand", - "thiserror", + "thiserror 2.0.4", ] [[package]] name = "alloy-sol-macro" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bfd7853b65a2b4f49629ec975fee274faf6dff15ab8894c620943398ef283c0" +checksum = "a07b74d48661ab2e4b50bb5950d74dbff5e61dd8ed03bb822281b706d54ebacb" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -591,9 +591,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82ec42f342d9a9261699f8078e57a7a4fda8aaa73c1a212ed3987080e6a9cd13" +checksum = "19cc9c7f20b90f9be1a8f71a3d8e283a43745137b0837b1a1cb13159d37cad72" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -610,9 +610,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2c50e6a62ee2b4f7ab3c6d0366e5770a21cad426e109c2f40335a1b3aff3df" +checksum = "713b7e6dfe1cb2f55c80fb05fd22ed085a1b4e48217611365ed0ae598a74c6ac" dependencies = [ "alloy-json-abi", "const-hex", @@ -627,9 +627,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac17c6e89a50fb4a758012e4b409d9a0ba575228e69b539fe37d7a1bd507ca4a" +checksum = "1eda2711ab2e1fb517fc6e2ffa9728c9a232e296d16810810e6957b781a1b8bc" dependencies = [ "serde", "winnow", @@ -637,9 +637,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9dc0fffe397aa17628160e16b89f704098bf3c9d74d5d369ebc239575936de5" +checksum = "e3b478bc9c0c4737a04cd976accde4df7eba0bdc0d90ad6ff43d58bc93cf79c1" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -650,9 +650,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6f295f4b745fb9e4e663d70bc57aed991288912c7aaaf25767def921050ee43" +checksum = "d17722a198f33bbd25337660787aea8b8f57814febb7c746bc30407bdfc39448" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -660,7 +660,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 2.0.4", "tokio", "tower", "tracing", @@ -670,9 +670,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39139015a5ec127d9c895b49b484608e27fe4538544f84cdf5eae0bd36339bc6" +checksum = "6e1509599021330a31c4a6816b655e34bf67acb1cc03c564e09fd8754ff6c5de" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -685,9 +685,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b4f865b13bb8648e93f812b19b74838b9165212a2beb95fc386188c443a5e3" +checksum = "fa4da44bc9a5155ab599666d26decafcf12204b72a80eeaba7c5e234ee8ac205" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -704,9 +704,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af91e3521b8b3eac26809b1c6f9b86e3ed455dfab812f036836aabdf709b921" +checksum = "58011745b2f17b334db40df9077d75b181f78360a5bc5c35519e15d4bfce15e2" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -722,15 +722,16 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.7.4" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b2e366c0debf0af77766c23694a3f863b02633050e71e096e257ffbd395e50" +checksum = "6917c79e837aa7b77b7a6dae9f89cbe15313ac161c4d3cfaf8909ef21f3d22d8" dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", "derive_more", "nybbles", + "serde", "smallvec", "tracing", ] @@ -1135,6 +1136,9 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] [[package]] name = "ascii-canvas" @@ -1785,7 +1789,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tower-service", @@ -1916,7 +1920,7 @@ dependencies = [ "semver 1.0.23", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2049,7 +2053,7 @@ dependencies = [ "k256", "serde", "sha2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2065,7 +2069,7 @@ dependencies = [ "pbkdf2 0.12.2", "rand", "sha2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2085,7 +2089,7 @@ dependencies = [ "serde_derive", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2506,7 +2510,7 @@ dependencies = [ "eigen-testing-utils", "once_cell", "reqwest 0.12.9", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -2524,6 +2528,7 @@ dependencies = [ "ark-serialize 0.5.0", "clap", "colored", + "eigen-common", "eigen-crypto-bls", "eigen-testing-utils", "eigen-types", @@ -2539,7 +2544,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "uuid 1.11.0", ] @@ -2556,6 +2561,7 @@ dependencies = [ "ark-ff 0.5.0", "async-trait", "eigen-client-elcontracts", + "eigen-common", "eigen-crypto-bls", "eigen-logging", "eigen-testing-utils", @@ -2564,7 +2570,7 @@ dependencies = [ "hex", "num-bigint 0.4.6", "once_cell", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -2577,13 +2583,14 @@ dependencies = [ "alloy-primitives", "alloy-provider", "alloy-signer-local", + "eigen-common", "eigen-logging", "eigen-testing-utils", "eigen-types", "eigen-utils", "once_cell", "serial_test", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -2597,6 +2604,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "async-trait", + "eigen-common", "eigen-logging", "eigen-metrics-collectors-rpc-calls", "eigen-signer", @@ -2605,7 +2613,7 @@ dependencies = [ "hex", "once_cell", "serial_test", - "thiserror", + "thiserror 1.0.69", "tokio", "url", ] @@ -2617,7 +2625,7 @@ dependencies = [ "alloy", "alloy-primitives", "chrono", - "eigen-utils", + "eigen-common", "hex", "jsonwebtoken 7.2.0", "mime", @@ -2626,11 +2634,23 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror", + "thiserror 1.0.69", "tokio", "uuid 1.11.0", ] +[[package]] +name = "eigen-common" +version = "0.1.1" +dependencies = [ + "alloy-provider", + "alloy-pubsub", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "url", +] + [[package]] name = "eigen-crypto-bls" version = "0.1.1" @@ -2647,7 +2667,7 @@ dependencies = [ "rand", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -2704,7 +2724,7 @@ dependencies = [ "eigen-types", "metrics", "num-bigint 0.4.6", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -2724,7 +2744,7 @@ dependencies = [ "reqwest 0.12.9", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -2759,6 +2779,7 @@ dependencies = [ "ark-bn254 0.5.0", "ark-ec 0.5.0", "eigen-client-avsregistry", + "eigen-common", "eigen-crypto-bls", "eigen-crypto-bn254", "eigen-logging", @@ -2773,7 +2794,7 @@ dependencies = [ "serial_test", "sha2", "testcontainers", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", ] @@ -2791,6 +2812,7 @@ dependencies = [ "async-trait", "eigen-client-avsregistry", "eigen-client-elcontracts", + "eigen-common", "eigen-crypto-bls", "eigen-logging", "eigen-testing-utils", @@ -2800,7 +2822,7 @@ dependencies = [ "futures", "futures-util", "serial_test", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", ] @@ -2823,7 +2845,7 @@ dependencies = [ "eth-keystore", "serde", "testcontainers", - "thiserror", + "thiserror 1.0.69", "tokio", "url", ] @@ -2836,6 +2858,7 @@ dependencies = [ "alloy-provider", "alloy-rpc-types", "alloy-transport", + "eigen-common", "eigen-utils", "serde", "serde_json", @@ -2851,7 +2874,7 @@ dependencies = [ "eigen-crypto-bls", "ethers", "num-bigint 0.4.6", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -3020,7 +3043,7 @@ dependencies = [ "serde_json", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid 0.8.2", ] @@ -3037,7 +3060,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -3116,7 +3139,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3184,7 +3207,7 @@ dependencies = [ "strum", "syn 2.0.90", "tempfile", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "unicode-xid", ] @@ -3201,7 +3224,7 @@ dependencies = [ "semver 1.0.23", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -3225,7 +3248,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-futures", @@ -3257,7 +3280,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite 0.20.1", "tracing", @@ -3284,7 +3307,7 @@ dependencies = [ "ethers-core", "rand", "sha2", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -3312,7 +3335,7 @@ dependencies = [ "serde_json", "solang-parser", "svm-rs", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "tokio", "tracing", @@ -3474,9 +3497,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" [[package]] name = "foreign-types" @@ -3666,8 +3689,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -3812,12 +3837,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hkdf" version = "0.12.4" @@ -4005,6 +4024,7 @@ dependencies = [ "tokio", "tokio-rustls 0.26.0", "tower-service", + "webpki-roots 0.26.7", ] [[package]] @@ -4644,7 +4664,7 @@ dependencies = [ "metrics", "metrics-util", "quanta", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -4794,7 +4814,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sha-1", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4836,7 +4856,7 @@ dependencies = [ "ntex-service", "ntex-util", "pin-project-lite", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4895,7 +4915,7 @@ dependencies = [ "ntex-service", "ntex-tokio", "ntex-util", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5090,11 +5110,14 @@ dependencies = [ [[package]] name = "nybbles" -version = "0.2.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ + "alloy-rlp", "const-hex", + "proptest", + "serde", "smallvec", ] @@ -5384,7 +5407,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.69", "ucd-trie", ] @@ -5654,6 +5677,58 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.0", + "rustls 0.23.19", + "socket2", + "thiserror 2.0.4", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom", + "rand", + "ring 0.17.8", + "rustc-hash 2.1.0", + "rustls 0.23.19", + "rustls-pki-types", + "slab", + "thiserror 2.0.4", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" version = "1.0.37" @@ -5780,7 +5855,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5895,7 +5970,10 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "quinn", + "rustls 0.23.19", "rustls-pemfile 2.2.0", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", @@ -5903,11 +5981,13 @@ dependencies = [ "system-configuration 0.6.1", "tokio", "tokio-native-tls", + "tokio-rustls 0.26.0", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "webpki-roots 0.26.7", "windows-registry", ] @@ -6065,7 +6145,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror", + "thiserror 1.0.69", "unicode-normalization", "uuid 0.8.2", ] @@ -6212,6 +6292,9 @@ name = "rustls-pki-types" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -6700,7 +6783,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror", + "thiserror 1.0.69", "time", ] @@ -6730,6 +6813,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -6751,7 +6837,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] @@ -6874,7 +6960,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror", + "thiserror 1.0.69", "url", "zip", ] @@ -6903,9 +6989,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.14" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0523f59468a2696391f2a772edc089342aacd53c3caa2ac3264e598edf119b" +checksum = "31e89d8bf2768d277f40573c83a02a099e96d96dd3104e13ea676194e61ac4b0" dependencies = [ "paste", "proc-macro2", @@ -7032,7 +7118,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tokio-tar", @@ -7046,7 +7132,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490" +dependencies = [ + "thiserror-impl 2.0.4", ] [[package]] @@ -7060,6 +7155,17 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "thiserror-impl" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -7445,7 +7551,7 @@ dependencies = [ "rand", "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] @@ -7466,7 +7572,7 @@ dependencies = [ "rustls 0.23.19", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -7744,6 +7850,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" version = "0.25.4" @@ -8039,7 +8155,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper 0.6.0", - "thiserror", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", diff --git a/Cargo.toml b/Cargo.toml index c4896552..4cfadf30 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,6 @@ [workspace] members = [ + "crates/common/", "crates/chainio/clients/avsregistry/", "crates/chainio/clients/elcontracts/", "crates/chainio/clients/eth/", @@ -65,6 +66,7 @@ aws-config = "1.5.9" aws-sdk-kms = "1.49.0" backoff = { version = "0.4.0", features = ["futures", "tokio"] } clap = { version = "4.5.20", features = ["derive"] } +eigen-common = { path = "crates/common/" } eigen-chainio-txmanager = { path = "crates/chainio/txmanager/" } eigen-client-avsregistry = { path = "crates/chainio/clients/avsregistry" } eigen-client-elcontracts = { path = "crates/chainio/clients/elcontracts" } @@ -129,37 +131,37 @@ parking_lot = "0.12" anvil-utils = { path = "examples/anvil-utils" } #alloy -alloy = { version = "0.7.0", features = [ +alloy = { version = "0.9", features = [ "sol-types", "contract", "full", "signer-aws", ] } -alloy-json-rpc = { version = "0.7", default-features = false } -alloy-network = { version = "0.7", default-features = false } -alloy-node-bindings = { version = "0.7", default-features = false } -alloy-primitives = "0.8.14" -alloy-provider = { version = "0.7", default-features = false, features = [ +alloy-json-rpc = { version = "0.9", default-features = false } +alloy-network = { version = "0.9", default-features = false } +alloy-node-bindings = { version = "0.9", default-features = false } +alloy-primitives = "0.8" +alloy-provider = { version = "0.9", default-features = false, features = [ "reqwest", "ws", ] } -alloy-pubsub = { version = "0.7", default-features = false } -alloy-rlp = "0.3.9" -alloy-rpc-client = "0.7" -alloy-rpc-types = { version = "0.7", default-features = false, features = [ +alloy-pubsub = { version = "0.9", default-features = false } +alloy-rlp = "0.3" +alloy-rpc-client = "0.9" +alloy-rpc-types = { version = "0.9", default-features = false, features = [ "eth", ] } -alloy-serde = { version = "0.7", default-features = false } -alloy-signer = { version = "0.7", default-features = false } -alloy-signer-aws = "0.7" -alloy-signer-local = { version = "0.7", default-features = false } +alloy-serde = { version = "0.9", default-features = false } +alloy-signer = { version = "0.9", default-features = false } +alloy-signer-aws = "0.9" +alloy-signer-local = { version = "0.9", default-features = false } alloy-sol-types = "0.8" -alloy-transport = { version = "0.7" } -alloy-transport-http = { version = "0.7", features = [ +alloy-transport = { version = "0.9" } +alloy-transport-http = { version = "0.9", features = [ "reqwest-rustls-tls", ], default-features = false } -alloy-transport-ipc = { version = "0.7.0", default-features = false } -alloy-transport-ws = { version = "0.7.0", default-features = false } +alloy-transport-ipc = { version = "0.9", default-features = false } +alloy-transport-ws = { version = "0.9", default-features = false } avsregistry-read = { path = "examples/avsregistry-read" } avsregistry-write = { path = "examples/avsregistry-write" } diff --git a/README.md b/README.md index ef90011f..69858b04 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ cargo add eigensdk --features full - [eigen-metrics](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/metrics) - performance, rpc and economic metrics - [eigen-services](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/services) - Spawn tokio services for operators info, bls aggregation - [eigen-types](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/types) - Common types -- [eigen-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/utils) - Publicly exportable `m2-mainnet` compatible alloy bindings. +- [eigen-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/utils) - Publicly exportable `mainnet rewards v0.4.3` compatible alloy bindings. - [eigen-testing-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/testing/testing-utils) - Contains publicly exportable anvil, holesky, mainnet addresses for eigen contracts. - [eigen-chainio-txmanager](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/chainio/txmanager) - Simple transaction manager. - [eigen-cli](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/eigen-cli) - ECDSA, BLS keystore cli diff --git a/crates/chainio/clients/avsregistry/Cargo.toml b/crates/chainio/clients/avsregistry/Cargo.toml index 7ff33bea..c9bdd194 100644 --- a/crates/chainio/clients/avsregistry/Cargo.toml +++ b/crates/chainio/clients/avsregistry/Cargo.toml @@ -19,12 +19,12 @@ eigen-types.workspace = true eigen-crypto-bls.workspace = true ark-ff.workspace = true eigen-client-elcontracts.workspace = true +eigen-common.workspace = true eigen-utils.workspace = true eigen-logging.workspace = true thiserror.workspace = true tracing.workspace = true - [lints] workspace = true diff --git a/crates/chainio/clients/avsregistry/src/fake_reader.rs b/crates/chainio/clients/avsregistry/src/fake_reader.rs index 7da43ce9..0aeb44fa 100644 --- a/crates/chainio/clients/avsregistry/src/fake_reader.rs +++ b/crates/chainio/clients/avsregistry/src/fake_reader.rs @@ -3,7 +3,7 @@ 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::operatorstateretriever::OperatorStateRetriever; +use eigen_utils::middleware::operatorstateretriever::OperatorStateRetriever; /// This struct is used to test AvsRegistryServiceChainCaller methods. #[derive(Debug)] diff --git a/crates/chainio/clients/avsregistry/src/reader.rs b/crates/chainio/clients/avsregistry/src/reader.rs index bdac856f..29a01174 100644 --- a/crates/chainio/clients/avsregistry/src/reader.rs +++ b/crates/chainio/clients/avsregistry/src/reader.rs @@ -4,6 +4,7 @@ use alloy::providers::Provider; use alloy::rpc::types::Filter; use ark_ff::Zero; use async_trait::async_trait; +use eigen_common::{get_provider, get_ws_provider, NEW_PUBKEY_REGISTRATION_EVENT}; use eigen_crypto_bls::{ alloy_registry_g1_point_to_g1_affine, alloy_registry_g2_point_to_g2_affine, BlsG1Point, BlsG2Point, @@ -13,12 +14,11 @@ use eigen_types::operator::{ bitmap_to_quorum_ids, bitmap_to_quorum_ids_from_u192, OperatorPubKeys, }; use eigen_utils::{ - get_provider, get_ws_provider, NEW_PUBKEY_REGISTRATION_EVENT, - { - blsapkregistry::BLSApkRegistry, operatorstateretriever::OperatorStateRetriever, - registrycoordinator::RegistryCoordinator, stakeregistry::StakeRegistry, - }, + deploy::stakeregistry::StakeRegistry, middleware::blsapkregistry::BLSApkRegistry, + middleware::operatorstateretriever::OperatorStateRetriever, + middleware::registrycoordinator::RegistryCoordinator, }; + use num_bigint::BigInt; use std::fmt::Debug; use std::{collections::HashMap, str::FromStr}; diff --git a/crates/chainio/clients/avsregistry/src/writer.rs b/crates/chainio/clients/avsregistry/src/writer.rs index c3d93b3a..11743857 100644 --- a/crates/chainio/clients/avsregistry/src/writer.rs +++ b/crates/chainio/clients/avsregistry/src/writer.rs @@ -7,14 +7,15 @@ 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::registrycoordinator::{ +use eigen_utils::middleware::registrycoordinator::{ IBLSApkRegistry::PubkeyRegistrationParams, ISignatureUtils::SignatureWithSaltAndExpiry, RegistryCoordinator, BN254::G1Point as RegistryG1Point, BN254::G2Point as RegistryG2Point, }; -use eigen_utils::{ - get_provider, get_signer, - {servicemanagerbase::ServiceManagerBase, stakeregistry::StakeRegistry}, +use eigen_utils::middleware::{ + servicemanagerbase::ServiceManagerBase, stakeregistry::StakeRegistry, }; + +use eigen_common::{get_provider, get_signer}; use std::str::FromStr; use tracing::info; diff --git a/crates/chainio/clients/elcontracts/Cargo.toml b/crates/chainio/clients/elcontracts/Cargo.toml index 841f16d7..04b45abe 100644 --- a/crates/chainio/clients/elcontracts/Cargo.toml +++ b/crates/chainio/clients/elcontracts/Cargo.toml @@ -11,6 +11,7 @@ license-file.workspace = true [dependencies] alloy.workspace = true alloy-primitives.workspace = true +eigen-common.workspace = true eigen-logging.workspace = true eigen-types.workspace = true eigen-utils.workspace = true @@ -22,7 +23,6 @@ alloy.workspace = true alloy-provider.workspace = true alloy-signer-local.workspace = true eigen-testing-utils.workspace = true -eigen-utils.workspace = true once_cell.workspace = true serial_test.workspace = true tokio.workspace = true diff --git a/crates/chainio/clients/elcontracts/src/reader.rs b/crates/chainio/clients/elcontracts/src/reader.rs index 2e571771..36634548 100644 --- a/crates/chainio/clients/elcontracts/src/reader.rs +++ b/crates/chainio/clients/elcontracts/src/reader.rs @@ -1,13 +1,11 @@ use crate::error::ElContractsError; use alloy_primitives::{Address, FixedBytes, U256}; +use eigen_common::get_provider; use eigen_logging::logger::SharedLogger; use eigen_types::operator::Operator; -use eigen_utils::{ - get_provider, - { - avsdirectory::AVSDirectory, delegationmanager::DelegationManager, erc20::ERC20, - islasher::ISlasher, istrategy::IStrategy, - }, +use eigen_utils::middleware::{ + avsdirectory::AVSDirectory, delegationmanager::DelegationManager, erc20::ERC20, + islasher::ISlasher, istrategy::IStrategy, }; #[derive(Debug, Clone)] @@ -401,11 +399,13 @@ mod tests { }, }; use eigen_utils::{ - avsdirectory::AVSDirectory, - avsdirectory::AVSDirectory::calculateOperatorAVSRegistrationDigestHashReturn, - delegationmanager::DelegationManager, - delegationmanager::DelegationManager::calculateDelegationApprovalDigestHashReturn, - mockavsservicemanager::MockAvsServiceManager, + deploy::mockavsservicemanager::MockAvsServiceManager, + middleware::{ + avsdirectory::AVSDirectory::{self, calculateOperatorAVSRegistrationDigestHashReturn}, + delegationmanager::DelegationManager::{ + self, calculateDelegationApprovalDigestHashReturn, + }, + }, }; use std::str::FromStr; diff --git a/crates/chainio/clients/elcontracts/src/writer.rs b/crates/chainio/clients/elcontracts/src/writer.rs index cd94ca15..3e8f868d 100644 --- a/crates/chainio/clients/elcontracts/src/writer.rs +++ b/crates/chainio/clients/elcontracts/src/writer.rs @@ -1,15 +1,15 @@ use crate::error::ElContractsError; use crate::reader::ELChainReader; use alloy_primitives::{Address, FixedBytes, TxHash, U256}; +use eigen_common::get_signer; pub use eigen_types::operator::Operator; -use eigen_utils::{ +use eigen_utils::deploy::irewardscoordinator::IRewardsCoordinator::{self, RewardsMerkleClaim}; +use eigen_utils::middleware::{ delegationmanager::{ DelegationManager::{self}, IDelegationManager::OperatorDetails, }, erc20::ERC20, - get_signer, - irewardscoordinator::IRewardsCoordinator::{self, RewardsMerkleClaim}, strategymanager::StrategyManager, }; @@ -261,6 +261,7 @@ mod tests { use alloy_primitives::{address, Address, FixedBytes, U256}; use alloy_signer_local::PrivateKeySigner; use anvil_constants::CONTRACTS_REGISTRY; + use eigen_common::get_provider; use eigen_logging::get_test_logger; use eigen_testing_utils::{ anvil::start_anvil_container, @@ -273,11 +274,12 @@ mod tests { }; use eigen_types::operator::Operator; use eigen_utils::{ - contractsregistry::ContractsRegistry::{self, get_test_valuesReturn}, - delegationmanager::DelegationManager, - get_provider, - irewardscoordinator::IRewardsCoordinator::{EarnerTreeMerkleLeaf, RewardsMerkleClaim}, - mockavsservicemanager::MockAvsServiceManager, + deploy::{ + contractsregistry::ContractsRegistry::{self, get_test_valuesReturn}, + irewardscoordinator::IRewardsCoordinator::{EarnerTreeMerkleLeaf, RewardsMerkleClaim}, + mockavsservicemanager::MockAvsServiceManager, + }, + middleware::delegationmanager::DelegationManager, }; use serial_test::serial; use std::str::FromStr; diff --git a/crates/chainio/clients/eth/Cargo.toml b/crates/chainio/clients/eth/Cargo.toml index fac702eb..7180a65c 100644 --- a/crates/chainio/clients/eth/Cargo.toml +++ b/crates/chainio/clients/eth/Cargo.toml @@ -23,6 +23,7 @@ url.workspace = true eigen-signer.workspace = true eigen-testing-utils.workspace = true eigen-utils.workspace = true +eigen-common.workspace = true once_cell.workspace = true serial_test.workspace = true tokio.workspace = true diff --git a/crates/chainio/clients/eth/src/instrumented_client.rs b/crates/chainio/clients/eth/src/instrumented_client.rs index d0dd2bbc..c67d41da 100644 --- a/crates/chainio/clients/eth/src/instrumented_client.rs +++ b/crates/chainio/clients/eth/src/instrumented_client.rs @@ -835,10 +835,10 @@ mod tests { pubsub::SubscriptionResult, BlockId, BlockNumberOrTag, BlockTransactionsKind, }; use alloy_primitives::address; + use eigen_common::get_provider; use eigen_signer::signer::Config; use eigen_testing_utils::anvil::start_anvil_container; use eigen_testing_utils::transaction::wait_transaction; - use eigen_utils::get_provider; use tokio; #[tokio::test] diff --git a/crates/chainio/clients/fireblocks/Cargo.toml b/crates/chainio/clients/fireblocks/Cargo.toml index be87695b..7391476b 100644 --- a/crates/chainio/clients/fireblocks/Cargo.toml +++ b/crates/chainio/clients/fireblocks/Cargo.toml @@ -14,7 +14,7 @@ alloy-primitives.workspace = true chrono = "0.4" #eigen -eigen-utils.workspace = true +eigen-common.workspace = true hex = "0.4" jsonwebtoken = "7" mime = "0.3.17" diff --git a/crates/chainio/clients/fireblocks/src/lib.rs b/crates/chainio/clients/fireblocks/src/lib.rs index 34d16ebb..0c05af9f 100644 --- a/crates/chainio/clients/fireblocks/src/lib.rs +++ b/crates/chainio/clients/fireblocks/src/lib.rs @@ -14,15 +14,12 @@ pub mod list_external_accounts; mod list_vault_accounts; pub mod status; 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 client::{Client, ASSET_ID_BY_CHAIN}; -use eigen_utils::get_provider; +use eigen_common::get_provider; use error::FireBlockError; use get_transaction::GetTransaction; use list_contracts::ListContracts; @@ -31,6 +28,8 @@ use list_external_accounts::ListExternalAccounts; use list_external_accounts::WhitelistedAccount; use list_vault_accounts::{ListVaultAccounts, VaultAccount}; use status::Status; +use std::collections::HashMap; +use std::str::FromStr; /// Fireblocks wallet #[derive(Debug)] diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml new file mode 100644 index 00000000..1f23af4a --- /dev/null +++ b/crates/common/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "eigen-common" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +repository.workspace = true +description = "Common functions for EigenLayer SDK" +license-file.workspace = true + +[dependencies] +alloy-transport.workspace = true +alloy-transport-http.workspace = true +alloy-signer-local.workspace = true +alloy-pubsub.workspace = true +alloy-provider.workspace = true +url.workspace = true diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs new file mode 100644 index 00000000..8fb40e16 --- /dev/null +++ b/crates/common/src/lib.rs @@ -0,0 +1,70 @@ +use alloy_provider::{ + fillers::{ + BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller, + }, + network::{Ethereum, EthereumWallet}, + Identity, ProviderBuilder, RootProvider, WsConnect, +}; +use alloy_pubsub::PubSubFrontend; +use alloy_signer_local::PrivateKeySigner; +use alloy_transport::{RpcError, TransportErrorKind}; +use alloy_transport_http::{Client, Http}; +use std::str::FromStr; +use url::Url; + +#[allow(clippy::type_complexity)] +pub fn get_signer( + key: &str, + rpc_url: &str, +) -> alloy_provider::fillers::FillProvider< + JoinFill< + JoinFill< + Identity, + JoinFill>>, + >, + WalletFiller, + >, + RootProvider>, + Http, + Ethereum, +> { + 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() + .with_recommended_fillers() + .wallet(wallet.clone()) + .on_http(url) +} + +#[allow(clippy::type_complexity)] +pub fn get_provider( + rpc_url: &str, +) -> FillProvider< + JoinFill< + Identity, + JoinFill>>, + >, + RootProvider>, + Http, + Ethereum, +> { + let url = Url::parse(rpc_url).expect("Wrong rpc url"); + ProviderBuilder::new() + .with_recommended_fillers() + .on_http(url) +} + +#[allow(clippy::type_complexity)] +pub async fn get_ws_provider( + rpc_url: &str, +) -> Result, RpcError> { + let ws = WsConnect::new(rpc_url); + ProviderBuilder::new().on_ws(ws).await +} + +/// Emitted when a new pubkey is registered +pub const NEW_PUBKEY_REGISTRATION_EVENT: &str = + "NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))"; + +pub const OPERATOR_SOCKET_UPDATE: &str = "OperatorSocketUpdate(bytes32,string)"; diff --git a/crates/contracts/lib/eigenlayer-middleware b/crates/contracts/lib/eigenlayer-middleware index 4c66477d..512ce732 160000 --- a/crates/contracts/lib/eigenlayer-middleware +++ b/crates/contracts/lib/eigenlayer-middleware @@ -1 +1 @@ -Subproject commit 4c66477d5b6656ca6f99186965502b8452c09f52 +Subproject commit 512ce7326f35e8060b9d46e23f9c159c0000b546 diff --git a/crates/contracts/lib/forge-std b/crates/contracts/lib/forge-std index 19891e6a..d3db4ef9 160000 --- a/crates/contracts/lib/forge-std +++ b/crates/contracts/lib/forge-std @@ -1 +1 @@ -Subproject commit 19891e6a0b5474b9ea6827ddb90bb9388f7acfc0 +Subproject commit d3db4ef90a72b7d24aa5a2e5c649593eaef7801d diff --git a/crates/contracts/script/DeployMockAvs.s.sol b/crates/contracts/script/DeployMockAvs.s.sol index 523cf480..2a1ee00b 100644 --- a/crates/contracts/script/DeployMockAvs.s.sol +++ b/crates/contracts/script/DeployMockAvs.s.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.9; +pragma solidity ^0.8.20; import "./DeployMockAvsRegistries.s.sol"; import "forge-std/console.sol"; @@ -12,9 +12,14 @@ contract DeployMockAvs is DeployMockAvsRegistries { function run() public virtual { // The ContractsRegistry contract should always be deployed at this address on anvil // it's the address of the contract created at nonce 0 by the first anvil account (0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266) - ContractsRegistry contractsRegistry = ContractsRegistry(0x5FbDB2315678afecb367f032d93F642f64180aa3); - EigenlayerContracts memory eigenlayerContracts = _loadEigenlayerDeployedContracts(); - MockAvsOpsAddresses memory addressConfig = _loadAvsOpsAddresses("ops_addresses"); + ContractsRegistry contractsRegistry = ContractsRegistry( + 0x5FbDB2315678afecb367f032d93F642f64180aa3 + ); + EigenlayerContracts + memory eigenlayerContracts = _loadEigenlayerDeployedContracts(); + MockAvsOpsAddresses memory addressConfig = _loadAvsOpsAddresses( + "ops_addresses" + ); vm.startBroadcast(); @@ -24,27 +29,60 @@ contract DeployMockAvs is DeployMockAvsRegistries { emptyContract = new EmptyContract(); mockAvsProxyAdmin = new ProxyAdmin(); mockAvsServiceManager = MockAvsServiceManager( - address(new TransparentUpgradeableProxy(address(emptyContract), address(mockAvsProxyAdmin), "")) - ); - MockAvsContracts memory mockAvsContracts = _deploymockAvsRegistryContracts( - eigenlayerContracts, addressConfig, mockAvsServiceManager, mockAvsServiceManagerImplementation + address( + new TransparentUpgradeableProxy( + address(emptyContract), + address(mockAvsProxyAdmin), + "" + ) + ) ); + MockAvsContracts + memory mockAvsContracts = _deploymockAvsRegistryContracts( + eigenlayerContracts, + addressConfig, + mockAvsServiceManager, + mockAvsServiceManagerImplementation + ); mockAvsServiceManagerImplementation = new MockAvsServiceManager( - registryCoordinator, eigenlayerContracts.avsDirectory, eigenlayerContracts.rewardsCoordinator + registryCoordinator, + eigenlayerContracts.avsDirectory, + eigenlayerContracts.rewardsCoordinator ); mockAvsProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(mockAvsServiceManager))), + TransparentUpgradeableProxy( + payable(address(mockAvsServiceManager)) + ), address(mockAvsServiceManagerImplementation), - abi.encodeWithSelector(mockAvsServiceManager.initialize.selector, addressConfig.communityMultisig) + abi.encodeWithSelector( + mockAvsServiceManager.initialize.selector, + addressConfig.communityMultisig + ) + ); + require( + Ownable(address(mockAvsServiceManager)).owner() != address(0), + "Owner uninitialized" ); - require(Ownable(address(mockAvsServiceManager)).owner() != address(0), "Owner uninitialized"); if (block.chainid == 31337 || block.chainid == 1337) { - contractsRegistry.registerContract("ProxyAdmin",address(mockAvsProxyAdmin)); - contractsRegistry.registerContract("AvsDirectory",address(eigenlayerContracts.avsDirectory)); - contractsRegistry.registerContract("eigenlayerPauserReg", address(eigenlayerContracts.eigenlayerPauserReg)); - _writeContractsToRegistry(contractsRegistry, eigenlayerContracts, mockAvsContracts); + contractsRegistry.registerContract( + "ProxyAdmin", + address(mockAvsProxyAdmin) + ); + contractsRegistry.registerContract( + "AvsDirectory", + address(eigenlayerContracts.avsDirectory) + ); + contractsRegistry.registerContract( + "eigenlayerPauserReg", + address(eigenlayerContracts.eigenlayerPauserReg) + ); + _writeContractsToRegistry( + contractsRegistry, + eigenlayerContracts, + mockAvsContracts + ); } vm.stopBroadcast(); } diff --git a/crates/contracts/script/DeployMockAvsRegistries.s.sol b/crates/contracts/script/DeployMockAvsRegistries.s.sol index 2e26cb73..25418f87 100644 --- a/crates/contracts/script/DeployMockAvsRegistries.s.sol +++ b/crates/contracts/script/DeployMockAvsRegistries.s.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.9; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; @@ -27,7 +27,11 @@ import {ContractsRegistry} from "../src/ContractsRegistry.sol"; import "forge-std/Script.sol"; import "forge-std/StdJson.sol"; -contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContractsParser { +contract DeployMockAvsRegistries is + Script, + ConfigsReadWriter, + EigenlayerContractsParser +{ // MockAvs contracts ProxyAdmin public mockAvsProxyAdmin; PauserRegistry public mockAvsPauserReg; @@ -49,14 +53,15 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac address ejector; } - function _loadAvsOpsAddresses(string memory opsAddressesFileName) - internal - view - returns (MockAvsOpsAddresses memory) - { + function _loadAvsOpsAddresses( + string memory opsAddressesFileName + ) internal view returns (MockAvsOpsAddresses memory) { string memory opsAddresses = readInput(opsAddressesFileName); MockAvsOpsAddresses memory addressConfig; - addressConfig.communityMultisig = stdJson.readAddress(opsAddresses, ".communityMultisig"); + addressConfig.communityMultisig = stdJson.readAddress( + opsAddresses, + ".communityMultisig" + ); addressConfig.pauser = stdJson.readAddress(opsAddresses, ".pauser"); addressConfig.churner = stdJson.readAddress(opsAddresses, ".churner"); addressConfig.ejector = stdJson.readAddress(opsAddresses, ".ejector"); @@ -74,23 +79,50 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac address[] memory pausers = new address[](2); pausers[0] = addressConfig.pauser; pausers[1] = addressConfig.communityMultisig; - mockAvsPauserReg = new PauserRegistry(pausers, addressConfig.communityMultisig); + mockAvsPauserReg = new PauserRegistry( + pausers, + addressConfig.communityMultisig + ); } /** * First, deploy upgradeable proxy contracts that **will point** to the implementations. Since the implementation contracts are * not yet deployed, we give these proxies an empty contract as the initial implementation, to act as if they have no code. */ registryCoordinator = blsregcoord.RegistryCoordinator( - address(new TransparentUpgradeableProxy(address(emptyContract), address(mockAvsProxyAdmin), "")) + address( + new TransparentUpgradeableProxy( + address(emptyContract), + address(mockAvsProxyAdmin), + "" + ) + ) ); blsApkRegistry = IBLSApkRegistry( - address(new TransparentUpgradeableProxy(address(emptyContract), address(mockAvsProxyAdmin), "")) + address( + new TransparentUpgradeableProxy( + address(emptyContract), + address(mockAvsProxyAdmin), + "" + ) + ) ); indexRegistry = IIndexRegistry( - address(new TransparentUpgradeableProxy(address(emptyContract), address(mockAvsProxyAdmin), "")) + address( + new TransparentUpgradeableProxy( + address(emptyContract), + address(mockAvsProxyAdmin), + "" + ) + ) ); stakeRegistry = IStakeRegistry( - address(new TransparentUpgradeableProxy(address(emptyContract), address(mockAvsProxyAdmin), "")) + address( + new TransparentUpgradeableProxy( + address(emptyContract), + address(mockAvsProxyAdmin), + "" + ) + ) ); operatorStateRetriever = new OperatorStateRetriever(); @@ -99,20 +131,26 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac blsApkRegistryImplementation = new BLSApkRegistry(registryCoordinator); mockAvsProxyAdmin.upgrade( - TransparentUpgradeableProxy(payable(address(blsApkRegistry))), address(blsApkRegistryImplementation) + TransparentUpgradeableProxy(payable(address(blsApkRegistry))), + address(blsApkRegistryImplementation) ); indexRegistryImplementation = new IndexRegistry(registryCoordinator); mockAvsProxyAdmin.upgrade( - TransparentUpgradeableProxy(payable(address(indexRegistry))), address(indexRegistryImplementation) + TransparentUpgradeableProxy(payable(address(indexRegistry))), + address(indexRegistryImplementation) ); { - stakeRegistryImplementation = new StakeRegistry(registryCoordinator, eigenlayerContracts.delegationManager); + stakeRegistryImplementation = new StakeRegistry( + registryCoordinator, + eigenlayerContracts.delegationManager + ); mockAvsProxyAdmin.upgrade( - TransparentUpgradeableProxy(payable(address(stakeRegistry))), address(stakeRegistryImplementation) + TransparentUpgradeableProxy(payable(address(stakeRegistry))), + address(stakeRegistryImplementation) ); } @@ -127,20 +165,26 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac uint256 numQuorums = 0; // for each quorum to setup, we need to define // quorumsOperatorSetParams, quorumsMinimumStake, and quorumsStrategyParams - blsregcoord.RegistryCoordinator.OperatorSetParam[] memory quorumsOperatorSetParams = - new blsregcoord.RegistryCoordinator.OperatorSetParam[](numQuorums); + blsregcoord.RegistryCoordinator.OperatorSetParam[] + memory quorumsOperatorSetParams = new blsregcoord.RegistryCoordinator.OperatorSetParam[]( + numQuorums + ); for (uint256 i = 0; i < numQuorums; i++) { // hard code these for now - quorumsOperatorSetParams[i] = blsregcoord.IRegistryCoordinator.OperatorSetParam({ - maxOperatorCount: 10000, - kickBIPsOfOperatorStake: 15000, - kickBIPsOfTotalStake: 100 - }); + quorumsOperatorSetParams[i] = blsregcoord + .IRegistryCoordinator + .OperatorSetParam({ + maxOperatorCount: 10000, + kickBIPsOfOperatorStake: 15000, + kickBIPsOfTotalStake: 100 + }); } // set to 0 for every quorum uint96[] memory quorumsMinimumStake = new uint96[](numQuorums); - IStakeRegistry.StrategyParams[][] memory quorumsStrategyParams = - new IStakeRegistry.StrategyParams[][](numQuorums); + IStakeRegistry.StrategyParams[][] + memory quorumsStrategyParams = new IStakeRegistry.StrategyParams[][]( + numQuorums + ); // We don't setup up any quorums so this is commented out for now // (since deployedStrategyArray doesn't exist) // for (uint i = 0; i < numQuorums; i++) { @@ -157,7 +201,9 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac // } // } mockAvsProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(registryCoordinator))), + TransparentUpgradeableProxy( + payable(address(registryCoordinator)) + ), address(registryCoordinatorImplementation), abi.encodeWithSelector( blsregcoord.RegistryCoordinator.initialize.selector, @@ -173,30 +219,61 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac ); } - require(Ownable(address(registryCoordinator)).owner() != address(0), "Owner uninitialized"); + require( + Ownable(address(registryCoordinator)).owner() != address(0), + "Owner uninitialized" + ); // WRITE JSON DATA { string memory parent_object = "parent object"; string memory deployed_addresses = "addresses"; - vm.serializeAddress(deployed_addresses, "proxyAdmin", address(mockAvsProxyAdmin)); - vm.serializeAddress(deployed_addresses, "mockAvsServiceManager", address(mockAvsServiceManager)); vm.serializeAddress( - deployed_addresses, "mockAvsServiceManagerImplementation", address(mockAvsServiceManagerImplementation) + deployed_addresses, + "proxyAdmin", + address(mockAvsProxyAdmin) + ); + vm.serializeAddress( + deployed_addresses, + "mockAvsServiceManager", + address(mockAvsServiceManager) + ); + vm.serializeAddress( + deployed_addresses, + "mockAvsServiceManagerImplementation", + address(mockAvsServiceManagerImplementation) + ); + vm.serializeAddress( + deployed_addresses, + "registryCoordinator", + address(registryCoordinator) ); - vm.serializeAddress(deployed_addresses, "registryCoordinator", address(registryCoordinator)); vm.serializeAddress( - deployed_addresses, "registryCoordinatorImplementation", address(registryCoordinatorImplementation) + deployed_addresses, + "registryCoordinatorImplementation", + address(registryCoordinatorImplementation) + ); + string memory deployed_addresses_output = vm.serializeAddress( + deployed_addresses, + "operatorStateRetriever", + address(operatorStateRetriever) ); - string memory deployed_addresses_output = - vm.serializeAddress(deployed_addresses, "operatorStateRetriever", address(operatorStateRetriever)); // serialize all the data - string memory finalJson = vm.serializeString(parent_object, deployed_addresses, deployed_addresses_output); + string memory finalJson = vm.serializeString( + parent_object, + deployed_addresses, + deployed_addresses_output + ); writeOutput(finalJson, "mockavs_deployment_output"); } - return MockAvsContracts(mockAvsServiceManager, registryCoordinator, operatorStateRetriever); + return + MockAvsContracts( + mockAvsServiceManager, + registryCoordinator, + operatorStateRetriever + ); } function _writeContractsToRegistry( @@ -204,14 +281,29 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac EigenlayerContracts memory eigenlayerContracts, MockAvsContracts memory mockAvsContracts ) internal { - contractsRegistry.registerContract("mockAvsServiceManager", address(mockAvsContracts.mockAvsServiceManager)); - contractsRegistry.registerContract("mockAvsRegistryCoordinator", address(mockAvsContracts.registryCoordinator)); contractsRegistry.registerContract( - "mockAvsOperatorStateRetriever", address(mockAvsContracts.operatorStateRetriever) + "mockAvsServiceManager", + address(mockAvsContracts.mockAvsServiceManager) + ); + contractsRegistry.registerContract( + "mockAvsRegistryCoordinator", + address(mockAvsContracts.registryCoordinator) + ); + contractsRegistry.registerContract( + "mockAvsOperatorStateRetriever", + address(mockAvsContracts.operatorStateRetriever) + ); + contractsRegistry.registerContract( + "delegationManager", + address(eigenlayerContracts.delegationManager) + ); + contractsRegistry.registerContract( + "strategyManager", + address(eigenlayerContracts.strategyManager) + ); + contractsRegistry.registerContract( + "avsDirectory", + address(eigenlayerContracts.avsDirectory) ); - contractsRegistry.registerContract("delegationManager", address(eigenlayerContracts.delegationManager)); - contractsRegistry.registerContract("strategyManager", address(eigenlayerContracts.strategyManager)); - contractsRegistry.registerContract("avsDirectory", address(eigenlayerContracts.avsDirectory)); - } } diff --git a/crates/contracts/script/DeployTokensStrategiesCreateQuorums.s.sol b/crates/contracts/script/DeployTokensStrategiesCreateQuorums.s.sol index 9c3711dd..2d6ea372 100644 --- a/crates/contracts/script/DeployTokensStrategiesCreateQuorums.s.sol +++ b/crates/contracts/script/DeployTokensStrategiesCreateQuorums.s.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.9; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; import "eigenlayer-contracts/src/contracts/permissions/PauserRegistry.sol"; @@ -19,16 +19,24 @@ import {console} from "forge-std/console.sol"; import "forge-std/Script.sol"; import "forge-std/StdJson.sol"; -contract DeployTokensStrategiesCreateQuorums is Script, EigenlayerContractsParser, MockAvsContractsParser { +contract DeployTokensStrategiesCreateQuorums is + Script, + EigenlayerContractsParser, + MockAvsContractsParser +{ uint256 MINT_AMOUNT = 5_000 ether; function run() external { // hardcoded as first contract deployed by anvil's 0th account // (generated from mnemonic "test test test test test test test test test test test junk") // 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (sk = 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80) - ContractsRegistry contractsRegistry = ContractsRegistry(0x5FbDB2315678afecb367f032d93F642f64180aa3); - EigenlayerContracts memory eigenlayerContracts = _loadEigenlayerDeployedContracts(); - MockAvsContracts memory mockAvsContracts = _loadMockAvsDeployedContracts(); + ContractsRegistry contractsRegistry = ContractsRegistry( + 0x5FbDB2315678afecb367f032d93F642f64180aa3 + ); + EigenlayerContracts + memory eigenlayerContracts = _loadEigenlayerDeployedContracts(); + MockAvsContracts + memory mockAvsContracts = _loadMockAvsDeployedContracts(); IStrategy strat; IERC20 mockToken; vm.startBroadcast(); @@ -40,7 +48,10 @@ contract DeployTokensStrategiesCreateQuorums is Script, EigenlayerContractsParse eigenlayerContracts.baseStrategyImplementation, eigenlayerContracts.strategyManager ); - contractsRegistry.registerContract("erc20MockStrategy", address(strat)); + contractsRegistry.registerContract( + "erc20MockStrategy", + address(strat) + ); } else if (block.chainid == 17000) { strat = IStrategy(0x5C8b55722f421556a2AAfb7A3EA63d4c3e514312); /// Whitelisted stETH strat @@ -82,34 +93,55 @@ contract DeployTokensStrategiesCreateQuorums is Script, EigenlayerContractsParse strats[0] = erc20MockStrategy; bool[] memory thirdPartyTransfersForbiddenValues = new bool[](1); thirdPartyTransfersForbiddenValues[0] = false; - strategyManager.addStrategiesToDepositWhitelist(strats, thirdPartyTransfersForbiddenValues); + strategyManager.addStrategiesToDepositWhitelist( + strats, + thirdPartyTransfersForbiddenValues + ); // WRITE JSON DATA // TODO: support more than one token/strategy pair string memory parent_object = "parent object"; string memory deployed_addresses = "addresses"; - vm.serializeAddress(deployed_addresses, "erc20mock", address(mockERC20)); - string memory deployed_addresses_output = - vm.serializeAddress(deployed_addresses, "erc20mockstrategy", address(erc20MockStrategy)); - string memory finalJson = vm.serializeString(parent_object, deployed_addresses, deployed_addresses_output); + vm.serializeAddress( + deployed_addresses, + "erc20mock", + address(mockERC20) + ); + string memory deployed_addresses_output = vm.serializeAddress( + deployed_addresses, + "erc20mockstrategy", + address(erc20MockStrategy) + ); + string memory finalJson = vm.serializeString( + parent_object, + deployed_addresses, + deployed_addresses_output + ); writeOutput(finalJson, "token_and_strategy_deployment_output"); return (IERC20(mockERC20), erc20MockStrategy); } - function _createQuorum(regcoord.RegistryCoordinator mockAvsRegCoord, IStrategy strat) internal { + function _createQuorum( + regcoord.RegistryCoordinator mockAvsRegCoord, + IStrategy strat + ) internal { // for each quorum to setup, we need to define // quorumsOperatorSetParams, quorumsMinimumStake, and quorumsStrategyParams - regcoord.RegistryCoordinator.OperatorSetParam memory quorumOperatorSetParams = regcoord - .IRegistryCoordinator - .OperatorSetParam({ - // hardcoded for now - maxOperatorCount: 10000, - kickBIPsOfOperatorStake: 15000, - kickBIPsOfTotalStake: 100 - }); + regcoord.RegistryCoordinator.OperatorSetParam + memory quorumOperatorSetParams = regcoord + .IRegistryCoordinator + .OperatorSetParam({ + // hardcoded for now + maxOperatorCount: 10000, + kickBIPsOfOperatorStake: 15000, + kickBIPsOfTotalStake: 100 + }); uint96 quorumMinimumStake = 0; - IStakeRegistry.StrategyParams[] memory quorumStrategyParams = new IStakeRegistry.StrategyParams[](1); + IStakeRegistry.StrategyParams[] + memory quorumStrategyParams = new IStakeRegistry.StrategyParams[]( + 1 + ); quorumStrategyParams[0] = IStakeRegistry.StrategyParams({ strategy: strat, // setting this to 1 ether since the divisor is also 1 ether @@ -120,7 +152,9 @@ contract DeployTokensStrategiesCreateQuorums is Script, EigenlayerContractsParse }); regcoord.RegistryCoordinator(address(mockAvsRegCoord)).createQuorum( - quorumOperatorSetParams, quorumMinimumStake, quorumStrategyParams + quorumOperatorSetParams, + quorumMinimumStake, + quorumStrategyParams ); } } diff --git a/crates/contracts/script/RegisterOperatorsWithEigenlayer.s.sol b/crates/contracts/script/RegisterOperatorsWithEigenlayer.s.sol index 1c2b9670..8b02969b 100644 --- a/crates/contracts/script/RegisterOperatorsWithEigenlayer.s.sol +++ b/crates/contracts/script/RegisterOperatorsWithEigenlayer.s.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.9; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; @@ -12,10 +12,14 @@ import {ContractsRegistry} from "../src/ContractsRegistry.sol"; // This script registers a bunch of operators with eigenlayer // We don't register with eigencert/eigenda because events are not registered in saved anvil state, so we need to register // them at runtime whenver we start anvil for a test or localnet. -contract RegisterOperators is ConfigsReadWriter, EigenlayerContractsParser, TokenAndStrategyContractsParser { +contract RegisterOperators is + ConfigsReadWriter, + EigenlayerContractsParser, + TokenAndStrategyContractsParser +{ string internal mnemonic; uint256 internal numberOfOperators; - ContractsRegistry contractsRegistry ; + ContractsRegistry contractsRegistry; function setUp() public { numberOfOperators = 10; if (block.chainid == 31337 || block.chainid == 1337) { @@ -26,19 +30,28 @@ contract RegisterOperators is ConfigsReadWriter, EigenlayerContractsParser, Toke } function run() external { - contractsRegistry = ContractsRegistry(0x5FbDB2315678afecb367f032d93F642f64180aa3); - EigenlayerContracts memory eigenlayerContracts = _loadEigenlayerDeployedContracts(); - TokenAndStrategyContracts memory tokenAndStrategy = _loadTokenAndStrategyContracts(); - + contractsRegistry = ContractsRegistry( + 0x5FbDB2315678afecb367f032d93F642f64180aa3 + ); + EigenlayerContracts + memory eigenlayerContracts = _loadEigenlayerDeployedContracts(); + TokenAndStrategyContracts + memory tokenAndStrategy = _loadTokenAndStrategyContracts(); address[] memory operators = new address[](numberOfOperators); uint256[] memory operatorsETHAmount = new uint256[](numberOfOperators); - uint256[] memory operatorTokenAmounts = new uint256[](numberOfOperators); + uint256[] memory operatorTokenAmounts = new uint256[]( + numberOfOperators + ); for (uint256 i; i < numberOfOperators; i++) { - (address operator,) = deriveRememberKey(mnemonic, uint32(i)); + (address operator, ) = deriveRememberKey(mnemonic, uint32(i)); operators[i] = operator; operatorsETHAmount[i] = 5 ether; - operatorTokenAmounts[i] = bound(uint256(keccak256(bytes.concat(bytes32(uint256(i))))), 1 ether, 10 ether); + operatorTokenAmounts[i] = bound( + uint256(keccak256(bytes.concat(bytes32(uint256(i))))), + 1 ether, + 10 ether + ); } vm.startBroadcast(); @@ -46,7 +59,11 @@ contract RegisterOperators is ConfigsReadWriter, EigenlayerContractsParser, Toke _allocateEthOrErc20(address(0), operators, operatorsETHAmount); // Allocate tokens to operators - _allocateEthOrErc20(address(tokenAndStrategy.token), operators, operatorTokenAmounts); + _allocateEthOrErc20( + address(tokenAndStrategy.token), + operators, + operatorTokenAmounts + ); vm.stopBroadcast(); @@ -54,25 +71,43 @@ contract RegisterOperators is ConfigsReadWriter, EigenlayerContractsParser, Toke for (uint256 i = 0; i < numberOfOperators; i++) { address delegationApprover = address(0); // anyone can delegate to this operator uint32 stakerOptOutWindowBlocks = 100; - string memory metadataURI = string.concat("https://coolstuff.com/operator/", vm.toString(i)); + string memory metadataURI = string.concat( + "https://coolstuff.com/operator/", + vm.toString(i) + ); (, uint256 privateKey) = deriveRememberKey(mnemonic, uint32(i)); vm.startBroadcast(privateKey); - if (block.chainid == 31337 || block.chainid == 1337) { - contractsRegistry.store_test("test_register_operator",int(i),block.number,block.timestamp); - } + if (block.chainid == 31337 || block.chainid == 1337) { + contractsRegistry.store_test( + "test_register_operator", + int(i), + block.number, + block.timestamp + ); + } eigenlayerContracts.delegationManager.registerAsOperator( - IDelegationManager.OperatorDetails(operators[i], delegationApprover, stakerOptOutWindowBlocks), + IDelegationManager.OperatorDetails( + operators[i], + delegationApprover, + stakerOptOutWindowBlocks + ), metadataURI ); eigenlayerContracts.strategyManager.depositIntoStrategy( - tokenAndStrategy.strategy, IERC20(tokenAndStrategy.token), operatorTokenAmounts[i] + tokenAndStrategy.strategy, + IERC20(tokenAndStrategy.token), + operatorTokenAmounts[i] ); vm.stopBroadcast(); } } // setting token=address(0) will allocate eth - function _allocateEthOrErc20(address token, address[] memory tos, uint256[] memory amounts) internal { + function _allocateEthOrErc20( + address token, + address[] memory tos, + uint256[] memory amounts + ) internal { for (uint256 i = 0; i < tos.length; i++) { if (token == address(0)) { payable(tos[i]).transfer(amounts[i]); diff --git a/crates/contracts/script/UpdateOperators.s.sol b/crates/contracts/script/UpdateOperators.s.sol index af5d67a8..bd9654cd 100644 --- a/crates/contracts/script/UpdateOperators.s.sol +++ b/crates/contracts/script/UpdateOperators.s.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.9; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; @@ -10,12 +10,17 @@ import "./parsers/EigenlayerContractsParser.sol"; import {ConfigsReadWriter} from "./parsers/ConfigsReadWriter.sol"; import {ContractsRegistry} from "../src/ContractsRegistry.sol"; -contract UpdateOperators is ConfigsReadWriter, EigenlayerContractsParser, TokenAndStrategyContractsParser { +contract UpdateOperators is + ConfigsReadWriter, + EigenlayerContractsParser, + TokenAndStrategyContractsParser +{ using Strings for uint256; string internal mnemonic; uint256 internal numberOfOperators; - ContractsRegistry contractsRegistry = ContractsRegistry(0x5FbDB2315678afecb367f032d93F642f64180aa3); + ContractsRegistry contractsRegistry = + ContractsRegistry(0x5FbDB2315678afecb367f032d93F642f64180aa3); function setUp() public { numberOfOperators = 10; @@ -27,17 +32,25 @@ contract UpdateOperators is ConfigsReadWriter, EigenlayerContractsParser, TokenA } function run() external { - EigenlayerContracts memory eigenlayerContracts = _loadEigenlayerDeployedContracts(); - TokenAndStrategyContracts memory tokenAndStrategy = _loadTokenAndStrategyContracts(); - + EigenlayerContracts + memory eigenlayerContracts = _loadEigenlayerDeployedContracts(); + TokenAndStrategyContracts + memory tokenAndStrategy = _loadTokenAndStrategyContracts(); + address[] memory operators = new address[](numberOfOperators); uint256[] memory operatorsETHAmount = new uint256[](numberOfOperators); - uint256[] memory operatorTokenAmounts = new uint256[](numberOfOperators); + uint256[] memory operatorTokenAmounts = new uint256[]( + numberOfOperators + ); for (uint256 i; i < numberOfOperators; i++) { - (address operator,) = deriveRememberKey(mnemonic, uint32(i)); + (address operator, ) = deriveRememberKey(mnemonic, uint32(i)); operators[i] = operator; operatorsETHAmount[i] = 5 ether; - operatorTokenAmounts[i] = bound(uint256(keccak256(bytes.concat(bytes32(uint256(i))))), 1 ether, 10 ether); + operatorTokenAmounts[i] = bound( + uint256(keccak256(bytes.concat(bytes32(uint256(i))))), + 1 ether, + 10 ether + ); } vm.startBroadcast(); @@ -45,7 +58,11 @@ contract UpdateOperators is ConfigsReadWriter, EigenlayerContractsParser, TokenA _allocateEthOrErc20(address(0), operators, operatorsETHAmount); // Allocate tokens to operators - _allocateEthOrErc20(address(tokenAndStrategy.token), operators, operatorTokenAmounts); + _allocateEthOrErc20( + address(tokenAndStrategy.token), + operators, + operatorTokenAmounts + ); vm.stopBroadcast(); @@ -55,16 +72,29 @@ contract UpdateOperators is ConfigsReadWriter, EigenlayerContractsParser, TokenA uint32 stakerOptOutWindowBlocks = 120; (, uint256 privateKey) = deriveRememberKey(mnemonic, uint32(i)); vm.startBroadcast(privateKey); - contractsRegistry.store_test("test_modify_operator_details", int256(i), block.number, block.timestamp); + contractsRegistry.store_test( + "test_modify_operator_details", + int256(i), + block.number, + block.timestamp + ); eigenlayerContracts.delegationManager.modifyOperatorDetails( - IDelegationManager.OperatorDetails(operators[i], delegationApprover, stakerOptOutWindowBlocks) + IDelegationManager.OperatorDetails( + operators[i], + delegationApprover, + stakerOptOutWindowBlocks + ) ); vm.stopBroadcast(); } } // setting token=address(0) will allocate eth - function _allocateEthOrErc20(address token, address[] memory tos, uint256[] memory amounts) internal { + function _allocateEthOrErc20( + address token, + address[] memory tos, + uint256[] memory amounts + ) internal { for (uint256 i = 0; i < tos.length; i++) { if (token == address(0)) { payable(tos[i]).transfer(amounts[i]); diff --git a/crates/contracts/script/parsers/ConfigsReadWriter.sol b/crates/contracts/script/parsers/ConfigsReadWriter.sol index d26a164c..3f0fe95b 100644 --- a/crates/contracts/script/parsers/ConfigsReadWriter.sol +++ b/crates/contracts/script/parsers/ConfigsReadWriter.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity =0.8.12; +pragma solidity ^0.8.20; import "eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol"; import "eigenlayer-contracts/src/contracts/strategies/StrategyBase.sol"; @@ -10,24 +10,45 @@ import "forge-std/StdJson.sol"; contract ConfigsReadWriter is Script { // Forge scripts best practice: https://book.getfoundry.sh/tutorials/best-practices#scripts // inputFileName should not contain the .json extension, we add it automatically - function readInput(string memory inputFileName) internal view returns (string memory) { - string memory inputDir = string.concat(vm.projectRoot(), "/script/input/"); + function readInput( + string memory inputFileName + ) internal view returns (string memory) { + string memory inputDir = string.concat( + vm.projectRoot(), + "/script/input/" + ); string memory chainDir = string.concat(vm.toString(block.chainid), "/"); string memory file = string.concat(inputFileName, ".json"); return vm.readFile(string.concat(inputDir, chainDir, file)); } - function readOutput(string memory outputFileName) internal view returns (string memory) { - string memory inputDir = string.concat(vm.projectRoot(), "/script/output/"); + function readOutput( + string memory outputFileName + ) internal view returns (string memory) { + string memory inputDir = string.concat( + vm.projectRoot(), + "/script/output/" + ); string memory chainDir = string.concat(vm.toString(block.chainid), "/"); string memory file = string.concat(outputFileName, ".json"); return vm.readFile(string.concat(inputDir, chainDir, file)); } - function writeOutput(string memory outputJson, string memory outputFileName) internal { - string memory outputDir = string.concat(vm.projectRoot(), "/script/output/"); + function writeOutput( + string memory outputJson, + string memory outputFileName + ) internal { + string memory outputDir = string.concat( + vm.projectRoot(), + "/script/output/" + ); string memory chainDir = string.concat(vm.toString(block.chainid), "/"); - string memory outputFilePath = string.concat(outputDir, chainDir, outputFileName, ".json"); + string memory outputFilePath = string.concat( + outputDir, + chainDir, + outputFileName, + ".json" + ); vm.writeJson(outputJson, outputFilePath); } } diff --git a/crates/contracts/script/parsers/EigenlayerContractsParser.sol b/crates/contracts/script/parsers/EigenlayerContractsParser.sol index da2bb8d5..5a23222a 100644 --- a/crates/contracts/script/parsers/EigenlayerContractsParser.sol +++ b/crates/contracts/script/parsers/EigenlayerContractsParser.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.9; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; import "eigenlayer-contracts/src/contracts/permissions/PauserRegistry.sol"; @@ -26,41 +26,78 @@ struct EigenlayerContracts { } contract EigenlayerContractsParser is ConfigsReadWriter { - function _loadEigenlayerDeployedContracts() internal view returns (EigenlayerContracts memory) { + function _loadEigenlayerDeployedContracts() + internal + view + returns (EigenlayerContracts memory) + { // Eigenlayer contracts - string memory eigenlayerDeployedContracts = readOutput("eigenlayer_deployment_output"); - ProxyAdmin eigenlayerProxyAdmin = - ProxyAdmin(stdJson.readAddress(eigenlayerDeployedContracts, ".addresses.eigenLayerProxyAdmin")); - PauserRegistry eigenlayerPauserReg = - PauserRegistry(stdJson.readAddress(eigenlayerDeployedContracts, ".addresses.eigenLayerPauserReg")); - IStrategyManager strategyManager = - IStrategyManager(stdJson.readAddress(eigenlayerDeployedContracts, ".addresses.strategyManager")); - IDelegationManager delegationManager = - IDelegationManager(stdJson.readAddress(eigenlayerDeployedContracts, ".addresses.delegation")); - IAVSDirectory avsDirectory = - IAVSDirectory(stdJson.readAddress(eigenlayerDeployedContracts, ".addresses.avsDirectory")); - ISlasher slasher = ISlasher(stdJson.readAddress(eigenlayerDeployedContracts, ".addresses.slasher")); - StrategyBaseTVLLimits baseStrategyImplementation = StrategyBaseTVLLimits( - stdJson.readAddress(eigenlayerDeployedContracts, ".addresses.baseStrategyImplementation") + string memory eigenlayerDeployedContracts = readOutput( + "eigenlayer_deployment_output" + ); + ProxyAdmin eigenlayerProxyAdmin = ProxyAdmin( + stdJson.readAddress( + eigenlayerDeployedContracts, + ".addresses.eigenLayerProxyAdmin" + ) + ); + PauserRegistry eigenlayerPauserReg = PauserRegistry( + stdJson.readAddress( + eigenlayerDeployedContracts, + ".addresses.eigenLayerPauserReg" + ) + ); + IStrategyManager strategyManager = IStrategyManager( + stdJson.readAddress( + eigenlayerDeployedContracts, + ".addresses.strategyManager" + ) + ); + IDelegationManager delegationManager = IDelegationManager( + stdJson.readAddress( + eigenlayerDeployedContracts, + ".addresses.delegation" + ) ); + IAVSDirectory avsDirectory = IAVSDirectory( + stdJson.readAddress( + eigenlayerDeployedContracts, + ".addresses.avsDirectory" + ) + ); + ISlasher slasher = ISlasher( + stdJson.readAddress( + eigenlayerDeployedContracts, + ".addresses.slasher" + ) + ); + StrategyBaseTVLLimits baseStrategyImplementation = StrategyBaseTVLLimits( + stdJson.readAddress( + eigenlayerDeployedContracts, + ".addresses.baseStrategyImplementation" + ) + ); // TODO: Update this to read from the eigenlayerDeployedContracts // right now M2_Deploy_from_scratch.s.sol deployment script doesnt deploy rewardsCoordinator - IRewardsCoordinator rewardsCoordinator = IRewardsCoordinator(address(0x0)); + IRewardsCoordinator rewardsCoordinator = IRewardsCoordinator( + address(0x0) + ); // IRewardsCoordinator rewardsCoordinator = IRewardsCoordinator( // stdJson.readAddress( // eigenlayerDeployedContracts, // ".addresses.rewardsCoordinator" // ) // ); - return EigenlayerContracts( - eigenlayerProxyAdmin, - eigenlayerPauserReg, - strategyManager, - delegationManager, - slasher, - avsDirectory, - rewardsCoordinator, - baseStrategyImplementation - ); + return + EigenlayerContracts( + eigenlayerProxyAdmin, + eigenlayerPauserReg, + strategyManager, + delegationManager, + slasher, + avsDirectory, + rewardsCoordinator, + baseStrategyImplementation + ); } } diff --git a/crates/contracts/script/parsers/MockAvsContractsParser.sol b/crates/contracts/script/parsers/MockAvsContractsParser.sol index 4bc37a54..93d1be0e 100644 --- a/crates/contracts/script/parsers/MockAvsContractsParser.sol +++ b/crates/contracts/script/parsers/MockAvsContractsParser.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.9; +pragma solidity ^0.8.20; import {RegistryCoordinator} from "eigenlayer-middleware/src/RegistryCoordinator.sol"; import {OperatorStateRetriever} from "eigenlayer-middleware/src/OperatorStateRetriever.sol"; @@ -16,23 +16,51 @@ struct MockAvsContracts { } contract MockAvsContractsParser is ConfigsReadWriter { - function _loadMockAvsDeployedContracts() internal view returns (MockAvsContracts memory) { + function _loadMockAvsDeployedContracts() + internal + view + returns (MockAvsContracts memory) + { // Eigenlayer contracts - string memory mockAvsDeployedContracts = readOutput("mockavs_deployment_output"); - MockAvsServiceManager mockAvsServiceManager = - MockAvsServiceManager(stdJson.readAddress(mockAvsDeployedContracts, ".addresses.mockAvsServiceManager")); + string memory mockAvsDeployedContracts = readOutput( + "mockavs_deployment_output" + ); + MockAvsServiceManager mockAvsServiceManager = MockAvsServiceManager( + stdJson.readAddress( + mockAvsDeployedContracts, + ".addresses.mockAvsServiceManager" + ) + ); + require( + address(mockAvsServiceManager) != address(0), + "MockAvsContractsParser: mockAvsServiceManager address is 0" + ); + RegistryCoordinator registryCoordinator = RegistryCoordinator( + stdJson.readAddress( + mockAvsDeployedContracts, + ".addresses.registryCoordinator" + ) + ); require( - address(mockAvsServiceManager) != address(0), "MockAvsContractsParser: mockAvsServiceManager address is 0" + address(registryCoordinator) != address(0), + "MockAvsContractsParser: registryCoordinator address is 0" + ); + OperatorStateRetriever operatorStateRetriever = OperatorStateRetriever( + stdJson.readAddress( + mockAvsDeployedContracts, + ".addresses.operatorStateRetriever" + ) ); - RegistryCoordinator registryCoordinator = - RegistryCoordinator(stdJson.readAddress(mockAvsDeployedContracts, ".addresses.registryCoordinator")); - require(address(registryCoordinator) != address(0), "MockAvsContractsParser: registryCoordinator address is 0"); - OperatorStateRetriever operatorStateRetriever = - OperatorStateRetriever(stdJson.readAddress(mockAvsDeployedContracts, ".addresses.operatorStateRetriever")); require( - address(operatorStateRetriever) != address(0), "MockAvsContractsParser: operatorStateRetriever address is 0" + address(operatorStateRetriever) != address(0), + "MockAvsContractsParser: operatorStateRetriever address is 0" ); - return MockAvsContracts(mockAvsServiceManager, registryCoordinator, operatorStateRetriever); + return + MockAvsContracts( + mockAvsServiceManager, + registryCoordinator, + operatorStateRetriever + ); } } diff --git a/crates/contracts/script/parsers/TokensAndStrategiesContractsParser.sol b/crates/contracts/script/parsers/TokensAndStrategiesContractsParser.sol index 06159d68..0079b19e 100644 --- a/crates/contracts/script/parsers/TokensAndStrategiesContractsParser.sol +++ b/crates/contracts/script/parsers/TokensAndStrategiesContractsParser.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.9; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/interfaces/IERC20.sol"; import {IStrategyManager, IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol"; @@ -14,13 +14,22 @@ struct TokenAndStrategyContracts { // TODO: support more than one token/strategy pair (dee deployTokensAndStrategies script) contract TokenAndStrategyContractsParser is ConfigsReadWriter { - function _loadTokenAndStrategyContracts() internal view returns (TokenAndStrategyContracts memory) { + function _loadTokenAndStrategyContracts() + internal + view + returns (TokenAndStrategyContracts memory) + { // Token and Strategy contracts - string memory tokenAndStrategyConfigFile = readOutput("token_and_strategy_deployment_output"); + string memory tokenAndStrategyConfigFile = readOutput( + "token_and_strategy_deployment_output" + ); - bytes memory tokensAndStrategiesConfigsRaw = stdJson.parseRaw(tokenAndStrategyConfigFile, ".addresses"); - TokenAndStrategyContracts memory tokensAndStrategiesContracts = - abi.decode(tokensAndStrategiesConfigsRaw, (TokenAndStrategyContracts)); + bytes memory tokensAndStrategiesConfigsRaw = stdJson.parseRaw( + tokenAndStrategyConfigFile, + ".addresses" + ); + TokenAndStrategyContracts memory tokensAndStrategiesContracts = abi + .decode(tokensAndStrategiesConfigsRaw, (TokenAndStrategyContracts)); return tokensAndStrategiesContracts; } diff --git a/crates/contracts/src/ContractsRegistry.sol b/crates/contracts/src/ContractsRegistry.sol index 14272609..5e985c29 100644 --- a/crates/contracts/src/ContractsRegistry.sol +++ b/crates/contracts/src/ContractsRegistry.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.12; +pragma solidity ^0.8.20; // ContractsRegistry store the address of all the contracts deployed for eigenlayer and avss // It is used for testing purpose only, so that we can retrieve the addresses without having to store them in a json file @@ -29,14 +29,34 @@ contract ContractsRegistry { contractCount++; } - function store_test(string memory test_name, int256 index, uint256 timestamp, uint256 block_number) public { - require(anvil_test[keccak256(abi.encodePacked(test_name,index))].timestamp == 0); - anvil_test[keccak256(abi.encodePacked(test_name))] = - BlockAndTimestamp({timestamp: timestamp, block_number: block_number, index: index}); + function store_test( + string memory test_name, + int256 index, + uint256 timestamp, + uint256 block_number + ) public { + require( + anvil_test[keccak256(abi.encodePacked(test_name, index))] + .timestamp == 0 + ); + anvil_test[keccak256(abi.encodePacked(test_name))] = BlockAndTimestamp({ + timestamp: timestamp, + block_number: block_number, + index: index + }); } - function get_test_values(string memory test_name,int index) public view returns (uint256, uint256, int256) { - BlockAndTimestamp memory test_details = anvil_test[keccak256(abi.encodePacked(test_name,index))]; - return (test_details.timestamp, test_details.block_number, test_details.index); + function get_test_values( + string memory test_name, + int index + ) public view returns (uint256, uint256, int256) { + BlockAndTimestamp memory test_details = anvil_test[ + keccak256(abi.encodePacked(test_name, index)) + ]; + return ( + test_details.timestamp, + test_details.block_number, + test_details.index + ); } } diff --git a/crates/contracts/src/MockAvsServiceManager.sol b/crates/contracts/src/MockAvsServiceManager.sol index 4f48ee05..424a0fde 100644 --- a/crates/contracts/src/MockAvsServiceManager.sol +++ b/crates/contracts/src/MockAvsServiceManager.sol @@ -15,12 +15,16 @@ contract MockAvsServiceManager is ServiceManagerBase, BLSSignatureChecker { IAVSDirectory _avsDirectory, IRewardsCoordinator _rewardsCoordinator ) - ServiceManagerBase(_avsDirectory, _rewardsCoordinator, _registryCoordinator, _registryCoordinator.stakeRegistry()) + ServiceManagerBase( + _avsDirectory, + _registryCoordinator, + _registryCoordinator.stakeRegistry() + ) BLSSignatureChecker(_registryCoordinator) {} function initialize(address _initialOwner) external initializer { // TODO: setting _rewardsInitializer to be _initialOwner for now. - __ServiceManagerBase_init(_initialOwner, _initialOwner); + __ServiceManagerBase_init(_initialOwner); } } diff --git a/crates/contracts/src/MockERC20.sol b/crates/contracts/src/MockERC20.sol index 72f046be..cd91e7b2 100644 --- a/crates/contracts/src/MockERC20.sol +++ b/crates/contracts/src/MockERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity =0.8.12; +pragma solidity ^0.8.20; import {ERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; @@ -9,7 +9,11 @@ contract MockERC20 is ERC20("Mock Token", "MCK") { } /// WARNING: Vulnerable, bypasses allowance check. Do not use in production! - function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { + function transferFrom( + address from, + address to, + uint256 amount + ) public virtual override returns (bool) { super._transfer(from, to, amount); return true; } diff --git a/crates/crypto/bls/src/lib.rs b/crates/crypto/bls/src/lib.rs index 766480fe..cd2f7af2 100644 --- a/crates/crypto/bls/src/lib.rs +++ b/crates/crypto/bls/src/lib.rs @@ -14,11 +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::blsapkregistry::BN254::{G1Point as G1PointRegistry, G2Point as G2PointRegistry}; -use eigen_utils::iblssignaturechecker::BN254::{ +use eigen_utils::middleware::blsapkregistry::BN254::{ + G1Point as G1PointRegistry, G2Point as G2PointRegistry, +}; +use eigen_utils::middleware::iblssignaturechecker::BN254::{ G1Point as G1PointChecker, G2Point as G2PointChecker, }; -use eigen_utils::registrycoordinator::BN254::{G1Point, G2Point}; +use eigen_utils::middleware::registrycoordinator::BN254::{G1Point, G2Point}; use serde::de::{self, Visitor}; use serde::{Deserialize, Serialize}; pub type PrivateKey = Fr; diff --git a/crates/eigen-cli/Cargo.toml b/crates/eigen-cli/Cargo.toml index 66bdd3c7..40eb1fa1 100644 --- a/crates/eigen-cli/Cargo.toml +++ b/crates/eigen-cli/Cargo.toml @@ -18,6 +18,7 @@ ark-ff.workspace = true ark-serialize.workspace = true clap.workspace = true colored = "2.1.0" +eigen-common.workspace = true eigen-crypto-bls.workspace = true eigen-testing-utils.workspace = true eigen-types.workspace = true diff --git a/crates/eigen-cli/src/eigen_address.rs b/crates/eigen-cli/src/eigen_address.rs index 0f84e8ac..4e1bbcfb 100644 --- a/crates/eigen-cli/src/eigen_address.rs +++ b/crates/eigen-cli/src/eigen_address.rs @@ -2,12 +2,11 @@ use crate::EigenAddressCliError; use alloy::contract::Error as ContractError; use alloy::primitives::Address; use alloy::providers::Provider; +use eigen_common::get_provider; use eigen_utils::{ - get_provider, - { - delegationmanager::DelegationManager, iblssignaturechecker::IBLSSignatureChecker, - registrycoordinator::RegistryCoordinator, - }, + middleware::delegationmanager::DelegationManager, + middleware::iblssignaturechecker::IBLSSignatureChecker, + middleware::registrycoordinator::RegistryCoordinator, }; use serde::{Deserialize, Serialize}; diff --git a/crates/eigensdk/README.md b/crates/eigensdk/README.md index 3c960d13..d1742339 100644 --- a/crates/eigensdk/README.md +++ b/crates/eigensdk/README.md @@ -19,7 +19,7 @@ cargo add eigensdk --features full - [eigen-metrics](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/metrics) - performance, rpc and economic metrics - [eigen-services](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/services) - Spawn tokio services for operators info, bls aggregation - [eigen-types](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/types) - Common types -- [eigen-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/utils) - Publicly exportable `m2-mainnet` compatible alloy bindings. +- [eigen-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/utils) - Publicly exportable `mainnet rewards v0.4.3` compatible alloy bindings. - [eigen-testing-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/testing/testing-utils) - Contains publicly exportable anvil, holesky, mainnet addresses for eigen contracts. - [eigen-chainio-txmanager](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/chainio/txmanager) - Simple transaction manager. - [eigen-cli](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/eigen-cli) - ECDSA, BLS keystore cli diff --git a/crates/services/avsregistry/src/chaincaller.rs b/crates/services/avsregistry/src/chaincaller.rs index 7f8acdee..c13edeaa 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::operatorstateretriever::OperatorStateRetriever::CheckSignaturesIndices; +use eigen_utils::middleware::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 e600a2b9..0b0b2209 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::operatorstateretriever::OperatorStateRetriever::CheckSignaturesIndices; +use eigen_utils::middleware::operatorstateretriever::OperatorStateRetriever::CheckSignaturesIndices; use crate::AvsRegistryService; diff --git a/crates/services/avsregistry/src/lib.rs b/crates/services/avsregistry/src/lib.rs index 95ce6474..a4a9091a 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::operatorstateretriever::OperatorStateRetriever::CheckSignaturesIndices; +use eigen_utils::middleware::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 35de702a..113a1c54 100644 --- a/crates/services/bls_aggregation/Cargo.toml +++ b/crates/services/bls_aggregation/Cargo.toml @@ -14,6 +14,7 @@ alloy-primitives.workspace = true ark-bn254.workspace = true ark-ec.workspace = true eigen-client-avsregistry.workspace = true +eigen-common.workspace = true eigen-crypto-bls.workspace = true eigen-crypto-bn254.workspace = true eigen-logging.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 9a937df9..5de6cf9d 100644 --- a/crates/services/bls_aggregation/src/bls_agg_test.rs +++ b/crates/services/bls_aggregation/src/bls_agg_test.rs @@ -7,6 +7,7 @@ pub mod integration_test { use eigen_client_avsregistry::{ reader::AvsRegistryChainReader, writer::AvsRegistryChainWriter, }; + use eigen_common::{get_provider, get_signer}; use eigen_crypto_bls::{ convert_to_bls_checker_g1_point, convert_to_bls_checker_g2_point, BlsKeyPair, }; @@ -27,16 +28,13 @@ pub mod integration_test { operator::{QuorumNum, QuorumThresholdPercentages}, }; use eigen_utils::{ - get_provider, get_signer, - { - iblssignaturechecker::{ - IBLSSignatureChecker::{self, NonSignerStakesAndSignature}, - BN254::G1Point, - }, - registrycoordinator::{ - IRegistryCoordinator::OperatorSetParam, IStakeRegistry::StrategyParams, - RegistryCoordinator, - }, + middleware::iblssignaturechecker::{ + IBLSSignatureChecker::{self, NonSignerStakesAndSignature}, + BN254::G1Point, + }, + middleware::registrycoordinator::{ + IRegistryCoordinator::OperatorSetParam, IStakeRegistry::StrategyParams, + RegistryCoordinator, }, }; use serde::Deserialize; diff --git a/crates/services/operatorsinfo/Cargo.toml b/crates/services/operatorsinfo/Cargo.toml index 3f47b58c..133b0cbd 100644 --- a/crates/services/operatorsinfo/Cargo.toml +++ b/crates/services/operatorsinfo/Cargo.toml @@ -13,6 +13,7 @@ alloy.workspace = true async-trait.workspace = true alloy-primitives.workspace = true eigen-client-avsregistry.workspace = true +eigen-common.workspace = true eigen-crypto-bls.workspace = true eigen-logging.workspace = true eigen-types.workspace = true @@ -29,6 +30,6 @@ alloy-signer-local.workspace = true eigen-logging.workspace = true eigen-client-elcontracts.workspace = true ark-bn254.workspace = true -ark-std = {version = "0.4.0", default-features = false} +ark-std = { version = "0.4.0", default-features = false } ark-ff.workspace = true -serial_test.workspace = true \ No newline at end of file +serial_test.workspace = true diff --git a/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs b/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs index fbc640f7..c4bef26b 100644 --- a/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs +++ b/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs @@ -3,6 +3,7 @@ use alloy::rpc::types::Filter; use alloy_primitives::{Address, FixedBytes}; use async_trait::async_trait; use eigen_client_avsregistry::reader::AvsRegistryChainReader; +use eigen_common::{get_ws_provider, NEW_PUBKEY_REGISTRATION_EVENT, OPERATOR_SOCKET_UPDATE}; use eigen_crypto_bls::{ alloy_registry_g1_point_to_g1_affine, alloy_registry_g2_point_to_g2_affine, BlsG1Point, BlsG2Point, @@ -12,13 +13,11 @@ use eigen_types::operator::{ operator_id_from_g1_pub_key, OperatorId, OperatorPubKeys, OperatorTypesError, }; use eigen_utils::{ - blsapkregistry::{ + middleware::blsapkregistry::{ BLSApkRegistry, BN254::{G1Point, G2Point}, }, - get_ws_provider, - registrycoordinator::RegistryCoordinator, - NEW_PUBKEY_REGISTRATION_EVENT, OPERATOR_SOCKET_UPDATE, + middleware::registrycoordinator::RegistryCoordinator, }; use eyre::Result; use futures_util::StreamExt; @@ -426,6 +425,7 @@ mod tests { use alloy_signer_local::PrivateKeySigner; use eigen_client_avsregistry::writer::AvsRegistryChainWriter; use eigen_client_elcontracts::{reader::ELChainReader, writer::ELChainWriter}; + use eigen_common::get_provider; use eigen_crypto_bls::BlsKeyPair; use eigen_logging::get_test_logger; use eigen_testing_utils::anvil::start_anvil_container; @@ -436,7 +436,6 @@ mod tests { }; use eigen_testing_utils::transaction::wait_transaction; use eigen_types::operator::Operator; - use eigen_utils::get_provider; use std::str::FromStr; use std::time::{Duration, SystemTime, UNIX_EPOCH}; use tokio::time::sleep; diff --git a/crates/signer/src/signer.rs b/crates/signer/src/signer.rs index 6e62e2f4..b4f04de7 100644 --- a/crates/signer/src/signer.rs +++ b/crates/signer/src/signer.rs @@ -69,8 +69,8 @@ mod test { use alloy::consensus::{SignableTransaction, TxLegacy}; use alloy::network::{TxSigner, TxSignerSync}; use alloy::signers::local::PrivateKeySigner; + use alloy_primitives::PrimitiveSignature; use alloy_primitives::{address, bytes, hex_literal::hex, keccak256, Address, U256}; - use alloy_primitives::{Parity, Signature}; use aws_config::{BehaviorVersion, Region, SdkConfig}; use aws_sdk_kms::{ self, @@ -120,13 +120,12 @@ mod test { .sign_transaction_sync(&mut tx) .unwrap() .into(); - let sig = Signature::try_from(&signature[..]).unwrap(); - let expected_signature = Signature::from_rs_and_parity( + let sig = PrimitiveSignature::try_from(&signature[..]).unwrap(); + let expected_signature = PrimitiveSignature::new( U256::from_str(SIGNATURE_R).unwrap(), U256::from_str(SIGNATURE_S).unwrap(), - Parity::NonEip155(false), - ) - .unwrap(); + false, + ); assert_eq!(sig, expected_signature); } diff --git a/crates/utils/Cargo.toml b/crates/utils/Cargo.toml index 404bc1b2..2681b6c6 100644 --- a/crates/utils/Cargo.toml +++ b/crates/utils/Cargo.toml @@ -10,5 +10,3 @@ license-file.workspace = true [dependencies] alloy.workspace = true reqwest.workspace = true - - diff --git a/crates/utils/src/deploy/address.rs b/crates/utils/src/deploy/address.rs new file mode 100644 index 00000000..4fd76299 --- /dev/null +++ b/crates/utils/src/deploy/address.rs @@ -0,0 +1,224 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod Address { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122047d8ac401f7873c1502260f0a1f3da4a60558815e958cdab50bc32ed4afa955d64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 G\xD8\xAC@\x1Fxs\xC1P\"`\xF0\xA1\xF3\xDAJ`U\x88\x15\xE9X\xCD\xABP\xBC2\xEDJ\xFA\x95]dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122047d8ac401f7873c1502260f0a1f3da4a60558815e958cdab50bc32ed4afa955d64736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 G\xD8\xAC@\x1Fxs\xC1P\"`\xF0\xA1\xF3\xDAJ`U\x88\x15\xE9X\xCD\xABP\xBC2\xEDJ\xFA\x95]dsolcC\0\x08\x1B\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/deploy/addressupgradeable.rs b/crates/utils/src/deploy/addressupgradeable.rs new file mode 100644 index 00000000..dd6bcfbf --- /dev/null +++ b/crates/utils/src/deploy/addressupgradeable.rs @@ -0,0 +1,226 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod AddressUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e926e2a0e9178d1d99ca98899eb00f4c373522c44335801fb6eef9622261322264736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 \xE9&\xE2\xA0\xE9\x17\x8D\x1D\x99\xCA\x98\x89\x9E\xB0\x0FL75\"\xC4C5\x80\x1F\xB6\xEE\xF9b\"a2\"dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e926e2a0e9178d1d99ca98899eb00f4c373522c44335801fb6eef9622261322264736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 \xE9&\xE2\xA0\xE9\x17\x8D\x1D\x99\xCA\x98\x89\x9E\xB0\x0FL75\"\xC4C5\x80\x1F\xB6\xEE\xF9b\"a2\"dsolcC\0\x08\x1B\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/deploy/beaconchainproofs.rs b/crates/utils/src/deploy/beaconchainproofs.rs new file mode 100644 index 00000000..dfbad73a --- /dev/null +++ b/crates/utils/src/deploy/beaconchainproofs.rs @@ -0,0 +1,226 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod BeaconChainProofs { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212207b98ffc3b29791c8c95a23d2f2339819e7e00ee30c410154bee33549051153b764736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 {\x98\xFF\xC3\xB2\x97\x91\xC8\xC9Z#\xD2\xF23\x98\x19\xE7\xE0\x0E\xE3\x0CA\x01T\xBE\xE35I\x05\x11S\xB7dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212207b98ffc3b29791c8c95a23d2f2339819e7e00ee30c410154bee33549051153b764736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 {\x98\xFF\xC3\xB2\x97\x91\xC8\xC9Z#\xD2\xF23\x98\x19\xE7\xE0\x0E\xE3\x0CA\x01T\xBE\xE35I\x05\x11S\xB7dsolcC\0\x08\x1B\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/deploy/bitmaputils.rs b/crates/utils/src/deploy/bitmaputils.rs new file mode 100644 index 00000000..90ca4ed7 --- /dev/null +++ b/crates/utils/src/deploy/bitmaputils.rs @@ -0,0 +1,224 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod BitmapUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c82fb528cbf6823fbd2a8d1a1bdf20ab5e0207c3da2b446d77b4a938b0c15f9764736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 \xC8/\xB5(\xCB\xF6\x82?\xBD*\x8D\x1A\x1B\xDF \xAB^\x02\x07\xC3\xDA+Dmw\xB4\xA98\xB0\xC1_\x97dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c82fb528cbf6823fbd2a8d1a1bdf20ab5e0207c3da2b446d77b4a938b0c15f9764736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 \xC8/\xB5(\xCB\xF6\x82?\xBD*\x8D\x1A\x1B\xDF \xAB^\x02\x07\xC3\xDA+Dmw\xB4\xA98\xB0\xC1_\x97dsolcC\0\x08\x1B\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/deploy/blsapkregistry.rs b/crates/utils/src/deploy/blsapkregistry.rs new file mode 100644 index 00000000..592ce1cf --- /dev/null +++ b/crates/utils/src/deploy/blsapkregistry.rs @@ -0,0 +1,5640 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style +)] +pub mod BLSApkRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561000f575f5ffd5b50604051611fd6380380611fd683398101604081905261002e91610108565b6001600160a01b0381166080528061004461004b565b5050610135565b5f54610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161015610106575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610118575f5ffd5b81516001600160a01b038116811461012e575f5ffd5b9392505050565b608051611e6d6101695f395f818161030301528181610457015281816105ae015281816109a70152610ff30152611e6d5ff3fe608060405234801561000f575f5ffd5b5060043610610110575f3560e01c80636d14a9871161009e578063bf79ce581161006e578063bf79ce58146103bf578063d5254a8c146103d2578063de29fac0146103f2578063e8bb9ae614610411578063f4e24fe514610439575f5ffd5b80636d14a987146102fe5780637916cea6146103255780637ff81a8714610366578063a3db80e214610399575f5ffd5b80633fb27952116100e45780633fb27952146101d657806347b314e8146101e95780635f61a88414610229578063605747d51461028357806368bccaac146102d1575f5ffd5b8062a1f4cb1461011457806313542a4e1461015457806326d941f21461018a578063377ed99d1461019f575b5f5ffd5b61013a610122366004611899565b60036020525f90815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61017c610162366004611899565b6001600160a01b03165f9081526001602052604090205490565b60405190815260200161014b565b61019d6101983660046118c9565b61044c565b005b6101c16101ad3660046118c9565b60ff165f9081526004602052604090205490565b60405163ffffffff909116815260200161014b565b61019d6101e4366004611950565b6105a3565b6102116101f73660046119f5565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161014b565b6102766102373660046118c9565b604080518082019091525f80825260208201525060ff165f90815260056020908152604091829020825180840190935280548352600101549082015290565b60405161014b9190611a0c565b610296610291366004611a23565b61065f565b60408051825167ffffffffffffffff1916815260208084015163ffffffff90811691830191909152928201519092169082015260600161014b565b6102e46102df366004611a4b565b6106f0565b60405167ffffffffffffffff19909116815260200161014b565b6102117f000000000000000000000000000000000000000000000000000000000000000081565b610338610333366004611a23565b610889565b6040805167ffffffffffffffff19909416845263ffffffff928316602085015291169082015260600161014b565b610379610374366004611899565b6108d0565b60408051835181526020938401519381019390935282015260600161014b565b61013a6103a73660046118c9565b60056020525f90815260409020805460019091015482565b61017c6103cd366004611a8f565b61099b565b6103e56103e0366004611ae7565b610de1565b60405161014b9190611b59565b61017c610400366004611899565b60016020525f908152604090205481565b61021161041f3660046119f5565b60026020525f90815260409020546001600160a01b031681565b61019d610447366004611950565b610fe8565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049d5760405162461bcd60e51b815260040161049490611ba1565b60405180910390fd5b60ff81165f908152600460205260409020541561051b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608401610494565b60ff165f908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105eb5760405162461bcd60e51b815260040161049490611ba1565b5f6105f5836108d0565b509050610602828261108f565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610642856001600160a01b03165f9081526001602052604090205490565b8460405161065293929190611c15565b60405180910390a1505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600490529190912080548390811061069b5761069b611c60565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff83165f90815260046020526040812080548291908490811061071657610716611c60565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107dc5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608401610494565b604081015163ffffffff1615806108025750806040015163ffffffff168463ffffffff16105b6108805760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a401610494565b51949350505050565b6004602052815f5260405f2081815481106108a2575f80fd5b5f91825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b604080518082019091525f80825260208201526001600160a01b0382165f818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109915760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608401610494565b9094909350915050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e45760405162461bcd60e51b815260040161049490611ba1565b5f610a106109fa36869003860160408701611c74565b80515f9081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610a96576040805162461bcd60e51b81526020600482015260248101919091525f516020611e185f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152608401610494565b6001600160a01b0385165f9081526001602052604090205415610b1e5760405162461bcd60e51b815260206004820152604760248201525f516020611e185f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a401610494565b5f818152600260205260409020546001600160a01b031615610ba05760405162461bcd60e51b815260206004820152604260248201525f516020611e185f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a401610494565b604080515f917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610bf8918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611ca5565b604051602081830303815290604052805190602001205f1c610c1a9190611ce7565b9050610cb3610c53610c3e83610c38368a90038a0160408b01611c74565b906112cb565b610c4d36899003890189611c74565b9061135a565b610c5b6113ed565b610c9c610c8d85610c386040805180820182525f80825260209182015281518083019092526001825260029082015290565b610c4d368a90038a018a611c74565b610cae368a90038a0160808b01611d48565b6114ad565b610d4d5760405162461bcd60e51b815260206004820152606c60248201525f516020611e185f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c401610494565b6001600160a01b0386165f8181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dd09160808a0190611d87565b60405180910390a250949350505050565b60605f8367ffffffffffffffff811115610dfd57610dfd6118e2565b604051908082528060200260200182016040528015610e26578160200160208202803683370190505b5090505f5b84811015610fdf575f868683818110610e4657610e46611c60565b919091013560f81c5f818152600460205260409020549092509050801580610ea6575060ff82165f9081526004602052604081208054909190610e8b57610e8b611c60565b5f91825260209091200154600160c01b900463ffffffff1686105b15610f335760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a401610494565b805b8015610fd45760ff83165f9081526004602052604090208790610f59600184611dc5565b81548110610f6957610f69611c60565b5f91825260209091200154600160c01b900463ffffffff1611610fc257610f91600182611dc5565b858581518110610fa357610fa3611c60565b602002602001019063ffffffff16908163ffffffff1681525050610fd4565b80610fcc81611dd8565b915050610f35565b505050600101610e2b565b50949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110305760405162461bcd60e51b815260040161049490611ba1565b5f61103a836108d0565b50905061104f8261104a8361170b565b61108f565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610642856001600160a01b03165f9081526001602052604090205490565b604080518082019091525f80825260208201525f5b83518110156112c5575f8482815181106110c0576110c0611c60565b0160209081015160f81c5f81815260049092526040822054909250908190036111515760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608401610494565b60ff82165f908152600560209081526040918290208251808401909352805483526001015490820152611184908661135a565b60ff83165f8181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111cc9085611dc5565b815481106111dc576111dc611c60565b5f918252602090912001805490915063ffffffff438116600160c01b909204160361121a5780546001600160c01b031916604083901c1781556112b5565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88165f908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110a49050565b50505050565b604080518082019091525f80825260208201526112e66117c7565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa9050808061131457fe5b50806113525760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610494565b505092915050565b604080518082019091525f80825260208201526113756117e5565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa905080806113af57fe5b50806113525760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610494565b6113f5611803565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390525f916114db611828565b5f5b6002811015611692575f6114f2826006611ded565b905084826002811061150657611506611c60565b60200201515183611517835f611e04565b600c811061152757611527611c60565b602002015284826002811061153e5761153e611c60565b602002015160200151838260016115559190611e04565b600c811061156557611565611c60565b602002015283826002811061157c5761157c611c60565b602002015151518361158f836002611e04565b600c811061159f5761159f611c60565b60200201528382600281106115b6576115b6611c60565b60200201515160016020020151836115cf836003611e04565b600c81106115df576115df611c60565b60200201528382600281106115f6576115f6611c60565b6020020151602001515f6002811061161057611610611c60565b602002015183611621836004611e04565b600c811061163157611631611c60565b602002015283826002811061164857611648611c60565b60200201516020015160016002811061166357611663611c60565b602002015183611674836005611e04565b600c811061168457611684611c60565b6020020152506001016114dd565b5061169b611847565b5f6020826101808560086107d05a03fa905080806116b557fe5b50806116fb5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606401610494565b5051151598975050505050505050565b604080518082019091525f8082526020820152815115801561172f57506020820151155b1561174c575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117909190611ce7565b6117ba907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611dc5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611816611865565b8152602001611823611865565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117c2575f5ffd5b5f602082840312156118a9575f5ffd5b6118b282611883565b9392505050565b803560ff811681146117c2575f5ffd5b5f602082840312156118d9575f5ffd5b6118b2826118b9565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611919576119196118e2565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611948576119486118e2565b604052919050565b5f5f60408385031215611961575f5ffd5b61196a83611883565b9150602083013567ffffffffffffffff811115611985575f5ffd5b8301601f81018513611995575f5ffd5b803567ffffffffffffffff8111156119af576119af6118e2565b6119c2601f8201601f191660200161191f565b8181528660208385010111156119d6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611a05575f5ffd5b5035919050565b8151815260208083015190820152604081016106ea565b5f5f60408385031215611a34575f5ffd5b611a3d836118b9565b946020939093013593505050565b5f5f5f60608486031215611a5d575f5ffd5b611a66846118b9565b9250602084013563ffffffff81168114611a7e575f5ffd5b929592945050506040919091013590565b5f5f5f838503610160811215611aa3575f5ffd5b611aac85611883565b9350610100601f1982011215611ac0575f5ffd5b602085019250604061011f1982011215611ad8575f5ffd5b50610120840190509250925092565b5f5f5f60408486031215611af9575f5ffd5b833567ffffffffffffffff811115611b0f575f5ffd5b8401601f81018613611b1f575f5ffd5b803567ffffffffffffffff811115611b35575f5ffd5b866020828401011115611b46575f5ffd5b6020918201979096509401359392505050565b602080825282518282018190525f918401906040840190835b81811015611b9657835163ffffffff16835260209384019390920191600101611b72565b509095945050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b0384168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f830116840101915050949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f6040828403128015611c85575f5ffd5b50611c8e6118f6565b823581526020928301359281019290925250919050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b5f82611d0157634e487b7160e01b5f52601260045260245ffd5b500690565b5f82601f830112611d15575f5ffd5b611d1d6118f6565b806040840185811115611d2e575f5ffd5b845b81811015611b96578035845260209384019301611d30565b5f6080828403128015611d59575f5ffd5b50611d626118f6565b611d6c8484611d06565b8152611d7b8460408501611d06565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ea576106ea611db1565b5f81611de657611de6611db1565b505f190190565b80820281158282048414176106ea576106ea611db1565b808201808211156106ea576106ea611db156fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220c19864f239c758ed49daf065941962208584aef050e2a28b0c61f4f4b2a159dd64736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`@Qa\x1F\xD68\x03\x80a\x1F\xD6\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Da\0KV[PPa\x015V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB6W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x01\x06W_\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[_` \x82\x84\x03\x12\x15a\x01\x18W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01.W__\xFD[\x93\x92PPPV[`\x80Qa\x1Ema\x01i_9_\x81\x81a\x03\x03\x01R\x81\x81a\x04W\x01R\x81\x81a\x05\xAE\x01R\x81\x81a\t\xA7\x01Ra\x0F\xF3\x01Ra\x1Em_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x10W_5`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\x9EW\x80c\xBFy\xCEX\x11a\0nW\x80c\xBFy\xCEX\x14a\x03\xBFW\x80c\xD5%J\x8C\x14a\x03\xD2W\x80c\xDE)\xFA\xC0\x14a\x03\xF2W\x80c\xE8\xBB\x9A\xE6\x14a\x04\x11W\x80c\xF4\xE2O\xE5\x14a\x049W__\xFD[\x80cm\x14\xA9\x87\x14a\x02\xFEW\x80cy\x16\xCE\xA6\x14a\x03%W\x80c\x7F\xF8\x1A\x87\x14a\x03fW\x80c\xA3\xDB\x80\xE2\x14a\x03\x99W__\xFD[\x80c?\xB2yR\x11a\0\xE4W\x80c?\xB2yR\x14a\x01\xD6W\x80cG\xB3\x14\xE8\x14a\x01\xE9W\x80c_a\xA8\x84\x14a\x02)W\x80c`WG\xD5\x14a\x02\x83W\x80ch\xBC\xCA\xAC\x14a\x02\xD1W__\xFD[\x80b\xA1\xF4\xCB\x14a\x01\x14W\x80c\x13T*N\x14a\x01TW\x80c&\xD9A\xF2\x14a\x01\x8AW\x80c7~\xD9\x9D\x14a\x01\x9FW[__\xFD[a\x01:a\x01\"6`\x04a\x18\x99V[`\x03` R_\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|a\x01b6`\x04a\x18\x99V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01KV[a\x01\x9Da\x01\x986`\x04a\x18\xC9V[a\x04LV[\0[a\x01\xC1a\x01\xAD6`\x04a\x18\xC9V[`\xFF\x16_\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01KV[a\x01\x9Da\x01\xE46`\x04a\x19PV[a\x05\xA3V[a\x02\x11a\x01\xF76`\x04a\x19\xF5V[_\x90\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01KV[a\x02va\x0276`\x04a\x18\xC9V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01RP`\xFF\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01R\x90V[`@Qa\x01K\x91\x90a\x1A\x0CV[a\x02\x96a\x02\x916`\x04a\x1A#V[a\x06_V[`@\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\x01KV[a\x02\xE4a\x02\xDF6`\x04a\x1AKV[a\x06\xF0V[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01KV[a\x02\x11\x7F\0\0\0\0\0\0\0\0\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\x038a\x0336`\x04a\x1A#V[a\x08\x89V[`@\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\x01KV[a\x03ya\x03t6`\x04a\x18\x99V[a\x08\xD0V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01KV[a\x01:a\x03\xA76`\x04a\x18\xC9V[`\x05` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01|a\x03\xCD6`\x04a\x1A\x8FV[a\t\x9BV[a\x03\xE5a\x03\xE06`\x04a\x1A\xE7V[a\r\xE1V[`@Qa\x01K\x91\x90a\x1BYV[a\x01|a\x04\x006`\x04a\x18\x99V[`\x01` R_\x90\x81R`@\x90 T\x81V[a\x02\x11a\x04\x1F6`\x04a\x19\xF5V[`\x02` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\x9Da\x04G6`\x04a\x19PV[a\x0F\xE8V[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\x04\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16_\x90\x81R`\x04` R`@\x90 T\x15a\x05\x1BW`@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\x01a\x04\x94V[`\xFF\x16_\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[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\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\x05\xF5\x83a\x08\xD0V[P\x90Pa\x06\x02\x82\x82a\x10\x8FV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06B\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06R\x93\x92\x91\x90a\x1C\x15V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x81\x01\x82R_\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\x9BWa\x06\x9Ba\x1C`V[_\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_\x90\x81R`\x04` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x07\x16Wa\x07\x16a\x1C`V[_\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\x07\xDCW`@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\x94V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x02WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x80W`@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\x94V[Q\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x08\xA2W_\x80\xFD[_\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_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x91W`@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\x94V[\x90\x94\x90\x93P\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\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\n\x10a\t\xFA6\x86\x90\x03\x86\x01`@\x87\x01a\x1CtV[\x80Q_\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\x03a\n\x96W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\x94V[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x0B\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x94V[_\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\x94V[`@\x80Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0B\xF8\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\xA5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\x0C\x1A\x91\x90a\x1C\xE7V[\x90Pa\x0C\xB3a\x0CSa\x0C>\x83a\x0C86\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1CtV[\x90a\x12\xCBV[a\x0CM6\x89\x90\x03\x89\x01\x89a\x1CtV[\x90a\x13ZV[a\x0C[a\x13\xEDV[a\x0C\x9Ca\x0C\x8D\x85a\x0C8`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\x0CM6\x8A\x90\x03\x8A\x01\x8Aa\x1CtV[a\x0C\xAE6\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1DHV[a\x14\xADV[a\rMW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`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\x94V[`\x01`\x01`\xA0\x1B\x03\x86\x16_\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\r\xD0\x91`\x80\x8A\x01\x90a\x1D\x87V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[``_\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xFDWa\r\xFDa\x18\xE2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E&W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0F\xDFW_\x86\x86\x83\x81\x81\x10a\x0EFWa\x0EFa\x1C`V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xA6WP`\xFF\x82\x16_\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\x8BWa\x0E\x8Ba\x1C`V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0F3W`@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\x94V[\x80[\x80\x15a\x0F\xD4W`\xFF\x83\x16_\x90\x81R`\x04` R`@\x90 \x87\x90a\x0FY`\x01\x84a\x1D\xC5V[\x81T\x81\x10a\x0FiWa\x0Fia\x1C`V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xC2Wa\x0F\x91`\x01\x82a\x1D\xC5V[\x85\x85\x81Q\x81\x10a\x0F\xA3Wa\x0F\xA3a\x1C`V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0F\xD4V[\x80a\x0F\xCC\x81a\x1D\xD8V[\x91PPa\x0F5V[PPP`\x01\x01a\x0E+V[P\x94\x93PPPPV[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\x100W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\x10:\x83a\x08\xD0V[P\x90Pa\x10O\x82a\x10J\x83a\x17\x0BV[a\x10\x8FV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06B\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_[\x83Q\x81\x10\x15a\x12\xC5W_\x84\x82\x81Q\x81\x10a\x10\xC0Wa\x10\xC0a\x1C`V[\x01` \x90\x81\x01Q`\xF8\x1C_\x81\x81R`\x04\x90\x92R`@\x82 T\x90\x92P\x90\x81\x90\x03a\x11QW`@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\x94V[`\xFF\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x11\x84\x90\x86a\x13ZV[`\xFF\x83\x16_\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\xCC\x90\x85a\x1D\xC5V[\x81T\x81\x10a\x11\xDCWa\x11\xDCa\x1C`V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x03a\x12\x1AW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xB5V[\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_\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[PP`\x01\x90\x92\x01\x91Pa\x10\xA4\x90PV[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\xE6a\x17\xC7V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\x14W\xFE[P\x80a\x13RW`@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\x94V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13ua\x17\xE5V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\xAFW\xFE[P\x80a\x13RW`@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\x94V[a\x13\xF5a\x18\x03V[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_\x91a\x14\xDBa\x18(V[_[`\x02\x81\x10\x15a\x16\x92W_a\x14\xF2\x82`\x06a\x1D\xEDV[\x90P\x84\x82`\x02\x81\x10a\x15\x06Wa\x15\x06a\x1C`V[` \x02\x01QQ\x83a\x15\x17\x83_a\x1E\x04V[`\x0C\x81\x10a\x15'Wa\x15'a\x1C`V[` \x02\x01R\x84\x82`\x02\x81\x10a\x15>Wa\x15>a\x1C`V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15U\x91\x90a\x1E\x04V[`\x0C\x81\x10a\x15eWa\x15ea\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15|Wa\x15|a\x1C`V[` \x02\x01QQQ\x83a\x15\x8F\x83`\x02a\x1E\x04V[`\x0C\x81\x10a\x15\x9FWa\x15\x9Fa\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xB6Wa\x15\xB6a\x1C`V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x15\xCF\x83`\x03a\x1E\x04V[`\x0C\x81\x10a\x15\xDFWa\x15\xDFa\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xF6Wa\x15\xF6a\x1C`V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x16\x10Wa\x16\x10a\x1C`V[` \x02\x01Q\x83a\x16!\x83`\x04a\x1E\x04V[`\x0C\x81\x10a\x161Wa\x161a\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16HWa\x16Ha\x1C`V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16cWa\x16ca\x1C`V[` \x02\x01Q\x83a\x16t\x83`\x05a\x1E\x04V[`\x0C\x81\x10a\x16\x84Wa\x16\x84a\x1C`V[` \x02\x01RP`\x01\x01a\x14\xDDV[Pa\x16\x9Ba\x18GV[_` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x16\xB5W\xFE[P\x80a\x16\xFBW`@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\x94V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17/WP` \x82\x01Q\x15[\x15a\x17LWPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x17\x90\x91\x90a\x1C\xE7V[a\x17\xBA\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\xC5V[\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\x18\x16a\x18eV[\x81R` \x01a\x18#a\x18eV[\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\xC2W__\xFD[_` \x82\x84\x03\x12\x15a\x18\xA9W__\xFD[a\x18\xB2\x82a\x18\x83V[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x17\xC2W__\xFD[_` \x82\x84\x03\x12\x15a\x18\xD9W__\xFD[a\x18\xB2\x82a\x18\xB9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19\x19Wa\x19\x19a\x18\xE2V[`@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\x19HWa\x19Ha\x18\xE2V[`@R\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x19aW__\xFD[a\x19j\x83a\x18\x83V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\x85W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x19\x95W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xAFWa\x19\xAFa\x18\xE2V[a\x19\xC2`\x1F\x82\x01`\x1F\x19\x16` \x01a\x19\x1FV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a\x19\xD6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x1A\x05W__\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xEAV[__`@\x83\x85\x03\x12\x15a\x1A4W__\xFD[a\x1A=\x83a\x18\xB9V[\x94` \x93\x90\x93\x015\x93PPPV[___``\x84\x86\x03\x12\x15a\x1A]W__\xFD[a\x1Af\x84a\x18\xB9V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A~W__\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[___\x83\x85\x03a\x01`\x81\x12\x15a\x1A\xA3W__\xFD[a\x1A\xAC\x85a\x18\x83V[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1A\xC0W__\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1A\xD8W__\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a\x1A\xF9W__\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x0FW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x1B\x1FW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B5W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x1BFW__\xFD[` \x91\x82\x01\x97\x90\x96P\x94\x015\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x1B\x96W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1BrV[P\x90\x95\x94PPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R_\x82Q\x80``\x84\x01R\x80` \x85\x01`\x80\x85\x01^_`\x80\x82\x85\x01\x01R`\x80`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`@\x82\x84\x03\x12\x80\x15a\x1C\x85W__\xFD[Pa\x1C\x8Ea\x18\xF6V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`@\x84`\xC0\x83\x017a\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[_\x82a\x1D\x01WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_\x82`\x1F\x83\x01\x12a\x1D\x15W__\xFD[a\x1D\x1Da\x18\xF6V[\x80`@\x84\x01\x85\x81\x11\x15a\x1D.W__\xFD[\x84[\x81\x81\x10\x15a\x1B\x96W\x805\x84R` \x93\x84\x01\x93\x01a\x1D0V[_`\x80\x82\x84\x03\x12\x80\x15a\x1DYW__\xFD[Pa\x1Dba\x18\xF6V[a\x1Dl\x84\x84a\x1D\x06V[\x81Ra\x1D{\x84`@\x85\x01a\x1D\x06V[` \x82\x01R\x93\x92PPPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01`@\x83\x81\x84\x017`@\x80\x84\x01`\x80\x84\x017\x93\x92PPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x06\xEAWa\x06\xEAa\x1D\xB1V[_\x81a\x1D\xE6Wa\x1D\xE6a\x1D\xB1V[P_\x19\x01\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xEAWa\x06\xEAa\x1D\xB1V[\x80\x82\x01\x80\x82\x11\x15a\x06\xEAWa\x06\xEAa\x1D\xB1V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \xC1\x98d\xF29\xC7X\xEDI\xDA\xF0e\x94\x19b \x85\x84\xAE\xF0P\xE2\xA2\x8B\x0Ca\xF4\xF4\xB2\xA1Y\xDDdsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b5060043610610110575f3560e01c80636d14a9871161009e578063bf79ce581161006e578063bf79ce58146103bf578063d5254a8c146103d2578063de29fac0146103f2578063e8bb9ae614610411578063f4e24fe514610439575f5ffd5b80636d14a987146102fe5780637916cea6146103255780637ff81a8714610366578063a3db80e214610399575f5ffd5b80633fb27952116100e45780633fb27952146101d657806347b314e8146101e95780635f61a88414610229578063605747d51461028357806368bccaac146102d1575f5ffd5b8062a1f4cb1461011457806313542a4e1461015457806326d941f21461018a578063377ed99d1461019f575b5f5ffd5b61013a610122366004611899565b60036020525f90815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61017c610162366004611899565b6001600160a01b03165f9081526001602052604090205490565b60405190815260200161014b565b61019d6101983660046118c9565b61044c565b005b6101c16101ad3660046118c9565b60ff165f9081526004602052604090205490565b60405163ffffffff909116815260200161014b565b61019d6101e4366004611950565b6105a3565b6102116101f73660046119f5565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161014b565b6102766102373660046118c9565b604080518082019091525f80825260208201525060ff165f90815260056020908152604091829020825180840190935280548352600101549082015290565b60405161014b9190611a0c565b610296610291366004611a23565b61065f565b60408051825167ffffffffffffffff1916815260208084015163ffffffff90811691830191909152928201519092169082015260600161014b565b6102e46102df366004611a4b565b6106f0565b60405167ffffffffffffffff19909116815260200161014b565b6102117f000000000000000000000000000000000000000000000000000000000000000081565b610338610333366004611a23565b610889565b6040805167ffffffffffffffff19909416845263ffffffff928316602085015291169082015260600161014b565b610379610374366004611899565b6108d0565b60408051835181526020938401519381019390935282015260600161014b565b61013a6103a73660046118c9565b60056020525f90815260409020805460019091015482565b61017c6103cd366004611a8f565b61099b565b6103e56103e0366004611ae7565b610de1565b60405161014b9190611b59565b61017c610400366004611899565b60016020525f908152604090205481565b61021161041f3660046119f5565b60026020525f90815260409020546001600160a01b031681565b61019d610447366004611950565b610fe8565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049d5760405162461bcd60e51b815260040161049490611ba1565b60405180910390fd5b60ff81165f908152600460205260409020541561051b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608401610494565b60ff165f908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105eb5760405162461bcd60e51b815260040161049490611ba1565b5f6105f5836108d0565b509050610602828261108f565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610642856001600160a01b03165f9081526001602052604090205490565b8460405161065293929190611c15565b60405180910390a1505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600490529190912080548390811061069b5761069b611c60565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff83165f90815260046020526040812080548291908490811061071657610716611c60565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107dc5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608401610494565b604081015163ffffffff1615806108025750806040015163ffffffff168463ffffffff16105b6108805760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a401610494565b51949350505050565b6004602052815f5260405f2081815481106108a2575f80fd5b5f91825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b604080518082019091525f80825260208201526001600160a01b0382165f818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109915760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608401610494565b9094909350915050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e45760405162461bcd60e51b815260040161049490611ba1565b5f610a106109fa36869003860160408701611c74565b80515f9081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610a96576040805162461bcd60e51b81526020600482015260248101919091525f516020611e185f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152608401610494565b6001600160a01b0385165f9081526001602052604090205415610b1e5760405162461bcd60e51b815260206004820152604760248201525f516020611e185f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a401610494565b5f818152600260205260409020546001600160a01b031615610ba05760405162461bcd60e51b815260206004820152604260248201525f516020611e185f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a401610494565b604080515f917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610bf8918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611ca5565b604051602081830303815290604052805190602001205f1c610c1a9190611ce7565b9050610cb3610c53610c3e83610c38368a90038a0160408b01611c74565b906112cb565b610c4d36899003890189611c74565b9061135a565b610c5b6113ed565b610c9c610c8d85610c386040805180820182525f80825260209182015281518083019092526001825260029082015290565b610c4d368a90038a018a611c74565b610cae368a90038a0160808b01611d48565b6114ad565b610d4d5760405162461bcd60e51b815260206004820152606c60248201525f516020611e185f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c401610494565b6001600160a01b0386165f8181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dd09160808a0190611d87565b60405180910390a250949350505050565b60605f8367ffffffffffffffff811115610dfd57610dfd6118e2565b604051908082528060200260200182016040528015610e26578160200160208202803683370190505b5090505f5b84811015610fdf575f868683818110610e4657610e46611c60565b919091013560f81c5f818152600460205260409020549092509050801580610ea6575060ff82165f9081526004602052604081208054909190610e8b57610e8b611c60565b5f91825260209091200154600160c01b900463ffffffff1686105b15610f335760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a401610494565b805b8015610fd45760ff83165f9081526004602052604090208790610f59600184611dc5565b81548110610f6957610f69611c60565b5f91825260209091200154600160c01b900463ffffffff1611610fc257610f91600182611dc5565b858581518110610fa357610fa3611c60565b602002602001019063ffffffff16908163ffffffff1681525050610fd4565b80610fcc81611dd8565b915050610f35565b505050600101610e2b565b50949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110305760405162461bcd60e51b815260040161049490611ba1565b5f61103a836108d0565b50905061104f8261104a8361170b565b61108f565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610642856001600160a01b03165f9081526001602052604090205490565b604080518082019091525f80825260208201525f5b83518110156112c5575f8482815181106110c0576110c0611c60565b0160209081015160f81c5f81815260049092526040822054909250908190036111515760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608401610494565b60ff82165f908152600560209081526040918290208251808401909352805483526001015490820152611184908661135a565b60ff83165f8181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111cc9085611dc5565b815481106111dc576111dc611c60565b5f918252602090912001805490915063ffffffff438116600160c01b909204160361121a5780546001600160c01b031916604083901c1781556112b5565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88165f908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110a49050565b50505050565b604080518082019091525f80825260208201526112e66117c7565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa9050808061131457fe5b50806113525760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610494565b505092915050565b604080518082019091525f80825260208201526113756117e5565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa905080806113af57fe5b50806113525760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610494565b6113f5611803565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390525f916114db611828565b5f5b6002811015611692575f6114f2826006611ded565b905084826002811061150657611506611c60565b60200201515183611517835f611e04565b600c811061152757611527611c60565b602002015284826002811061153e5761153e611c60565b602002015160200151838260016115559190611e04565b600c811061156557611565611c60565b602002015283826002811061157c5761157c611c60565b602002015151518361158f836002611e04565b600c811061159f5761159f611c60565b60200201528382600281106115b6576115b6611c60565b60200201515160016020020151836115cf836003611e04565b600c81106115df576115df611c60565b60200201528382600281106115f6576115f6611c60565b6020020151602001515f6002811061161057611610611c60565b602002015183611621836004611e04565b600c811061163157611631611c60565b602002015283826002811061164857611648611c60565b60200201516020015160016002811061166357611663611c60565b602002015183611674836005611e04565b600c811061168457611684611c60565b6020020152506001016114dd565b5061169b611847565b5f6020826101808560086107d05a03fa905080806116b557fe5b50806116fb5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606401610494565b5051151598975050505050505050565b604080518082019091525f8082526020820152815115801561172f57506020820151155b1561174c575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117909190611ce7565b6117ba907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611dc5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611816611865565b8152602001611823611865565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117c2575f5ffd5b5f602082840312156118a9575f5ffd5b6118b282611883565b9392505050565b803560ff811681146117c2575f5ffd5b5f602082840312156118d9575f5ffd5b6118b2826118b9565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611919576119196118e2565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611948576119486118e2565b604052919050565b5f5f60408385031215611961575f5ffd5b61196a83611883565b9150602083013567ffffffffffffffff811115611985575f5ffd5b8301601f81018513611995575f5ffd5b803567ffffffffffffffff8111156119af576119af6118e2565b6119c2601f8201601f191660200161191f565b8181528660208385010111156119d6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611a05575f5ffd5b5035919050565b8151815260208083015190820152604081016106ea565b5f5f60408385031215611a34575f5ffd5b611a3d836118b9565b946020939093013593505050565b5f5f5f60608486031215611a5d575f5ffd5b611a66846118b9565b9250602084013563ffffffff81168114611a7e575f5ffd5b929592945050506040919091013590565b5f5f5f838503610160811215611aa3575f5ffd5b611aac85611883565b9350610100601f1982011215611ac0575f5ffd5b602085019250604061011f1982011215611ad8575f5ffd5b50610120840190509250925092565b5f5f5f60408486031215611af9575f5ffd5b833567ffffffffffffffff811115611b0f575f5ffd5b8401601f81018613611b1f575f5ffd5b803567ffffffffffffffff811115611b35575f5ffd5b866020828401011115611b46575f5ffd5b6020918201979096509401359392505050565b602080825282518282018190525f918401906040840190835b81811015611b9657835163ffffffff16835260209384019390920191600101611b72565b509095945050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b0384168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f830116840101915050949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f6040828403128015611c85575f5ffd5b50611c8e6118f6565b823581526020928301359281019290925250919050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b5f82611d0157634e487b7160e01b5f52601260045260245ffd5b500690565b5f82601f830112611d15575f5ffd5b611d1d6118f6565b806040840185811115611d2e575f5ffd5b845b81811015611b96578035845260209384019301611d30565b5f6080828403128015611d59575f5ffd5b50611d626118f6565b611d6c8484611d06565b8152611d7b8460408501611d06565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ea576106ea611db1565b5f81611de657611de6611db1565b505f190190565b80820281158282048414176106ea576106ea611db1565b808201808211156106ea576106ea611db156fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220c19864f239c758ed49daf065941962208584aef050e2a28b0c61f4f4b2a159dd64736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\x01\x10W_5`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\x9EW\x80c\xBFy\xCEX\x11a\0nW\x80c\xBFy\xCEX\x14a\x03\xBFW\x80c\xD5%J\x8C\x14a\x03\xD2W\x80c\xDE)\xFA\xC0\x14a\x03\xF2W\x80c\xE8\xBB\x9A\xE6\x14a\x04\x11W\x80c\xF4\xE2O\xE5\x14a\x049W__\xFD[\x80cm\x14\xA9\x87\x14a\x02\xFEW\x80cy\x16\xCE\xA6\x14a\x03%W\x80c\x7F\xF8\x1A\x87\x14a\x03fW\x80c\xA3\xDB\x80\xE2\x14a\x03\x99W__\xFD[\x80c?\xB2yR\x11a\0\xE4W\x80c?\xB2yR\x14a\x01\xD6W\x80cG\xB3\x14\xE8\x14a\x01\xE9W\x80c_a\xA8\x84\x14a\x02)W\x80c`WG\xD5\x14a\x02\x83W\x80ch\xBC\xCA\xAC\x14a\x02\xD1W__\xFD[\x80b\xA1\xF4\xCB\x14a\x01\x14W\x80c\x13T*N\x14a\x01TW\x80c&\xD9A\xF2\x14a\x01\x8AW\x80c7~\xD9\x9D\x14a\x01\x9FW[__\xFD[a\x01:a\x01\"6`\x04a\x18\x99V[`\x03` R_\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|a\x01b6`\x04a\x18\x99V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01KV[a\x01\x9Da\x01\x986`\x04a\x18\xC9V[a\x04LV[\0[a\x01\xC1a\x01\xAD6`\x04a\x18\xC9V[`\xFF\x16_\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01KV[a\x01\x9Da\x01\xE46`\x04a\x19PV[a\x05\xA3V[a\x02\x11a\x01\xF76`\x04a\x19\xF5V[_\x90\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01KV[a\x02va\x0276`\x04a\x18\xC9V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01RP`\xFF\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01R\x90V[`@Qa\x01K\x91\x90a\x1A\x0CV[a\x02\x96a\x02\x916`\x04a\x1A#V[a\x06_V[`@\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\x01KV[a\x02\xE4a\x02\xDF6`\x04a\x1AKV[a\x06\xF0V[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01KV[a\x02\x11\x7F\0\0\0\0\0\0\0\0\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\x038a\x0336`\x04a\x1A#V[a\x08\x89V[`@\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\x01KV[a\x03ya\x03t6`\x04a\x18\x99V[a\x08\xD0V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01KV[a\x01:a\x03\xA76`\x04a\x18\xC9V[`\x05` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01|a\x03\xCD6`\x04a\x1A\x8FV[a\t\x9BV[a\x03\xE5a\x03\xE06`\x04a\x1A\xE7V[a\r\xE1V[`@Qa\x01K\x91\x90a\x1BYV[a\x01|a\x04\x006`\x04a\x18\x99V[`\x01` R_\x90\x81R`@\x90 T\x81V[a\x02\x11a\x04\x1F6`\x04a\x19\xF5V[`\x02` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\x9Da\x04G6`\x04a\x19PV[a\x0F\xE8V[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\x04\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16_\x90\x81R`\x04` R`@\x90 T\x15a\x05\x1BW`@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\x01a\x04\x94V[`\xFF\x16_\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[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\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\x05\xF5\x83a\x08\xD0V[P\x90Pa\x06\x02\x82\x82a\x10\x8FV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06B\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06R\x93\x92\x91\x90a\x1C\x15V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x81\x01\x82R_\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\x9BWa\x06\x9Ba\x1C`V[_\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_\x90\x81R`\x04` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x07\x16Wa\x07\x16a\x1C`V[_\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\x07\xDCW`@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\x94V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x02WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x80W`@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\x94V[Q\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x08\xA2W_\x80\xFD[_\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_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x91W`@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\x94V[\x90\x94\x90\x93P\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\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\n\x10a\t\xFA6\x86\x90\x03\x86\x01`@\x87\x01a\x1CtV[\x80Q_\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\x03a\n\x96W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\x94V[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x0B\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x94V[_\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\x94V[`@\x80Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0B\xF8\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\xA5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\x0C\x1A\x91\x90a\x1C\xE7V[\x90Pa\x0C\xB3a\x0CSa\x0C>\x83a\x0C86\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1CtV[\x90a\x12\xCBV[a\x0CM6\x89\x90\x03\x89\x01\x89a\x1CtV[\x90a\x13ZV[a\x0C[a\x13\xEDV[a\x0C\x9Ca\x0C\x8D\x85a\x0C8`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\x0CM6\x8A\x90\x03\x8A\x01\x8Aa\x1CtV[a\x0C\xAE6\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1DHV[a\x14\xADV[a\rMW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`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\x94V[`\x01`\x01`\xA0\x1B\x03\x86\x16_\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\r\xD0\x91`\x80\x8A\x01\x90a\x1D\x87V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[``_\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xFDWa\r\xFDa\x18\xE2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E&W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0F\xDFW_\x86\x86\x83\x81\x81\x10a\x0EFWa\x0EFa\x1C`V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xA6WP`\xFF\x82\x16_\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\x8BWa\x0E\x8Ba\x1C`V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0F3W`@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\x94V[\x80[\x80\x15a\x0F\xD4W`\xFF\x83\x16_\x90\x81R`\x04` R`@\x90 \x87\x90a\x0FY`\x01\x84a\x1D\xC5V[\x81T\x81\x10a\x0FiWa\x0Fia\x1C`V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xC2Wa\x0F\x91`\x01\x82a\x1D\xC5V[\x85\x85\x81Q\x81\x10a\x0F\xA3Wa\x0F\xA3a\x1C`V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0F\xD4V[\x80a\x0F\xCC\x81a\x1D\xD8V[\x91PPa\x0F5V[PPP`\x01\x01a\x0E+V[P\x94\x93PPPPV[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\x100W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\x10:\x83a\x08\xD0V[P\x90Pa\x10O\x82a\x10J\x83a\x17\x0BV[a\x10\x8FV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06B\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_[\x83Q\x81\x10\x15a\x12\xC5W_\x84\x82\x81Q\x81\x10a\x10\xC0Wa\x10\xC0a\x1C`V[\x01` \x90\x81\x01Q`\xF8\x1C_\x81\x81R`\x04\x90\x92R`@\x82 T\x90\x92P\x90\x81\x90\x03a\x11QW`@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\x94V[`\xFF\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x11\x84\x90\x86a\x13ZV[`\xFF\x83\x16_\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\xCC\x90\x85a\x1D\xC5V[\x81T\x81\x10a\x11\xDCWa\x11\xDCa\x1C`V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x03a\x12\x1AW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xB5V[\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_\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[PP`\x01\x90\x92\x01\x91Pa\x10\xA4\x90PV[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\xE6a\x17\xC7V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\x14W\xFE[P\x80a\x13RW`@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\x94V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13ua\x17\xE5V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\xAFW\xFE[P\x80a\x13RW`@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\x94V[a\x13\xF5a\x18\x03V[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_\x91a\x14\xDBa\x18(V[_[`\x02\x81\x10\x15a\x16\x92W_a\x14\xF2\x82`\x06a\x1D\xEDV[\x90P\x84\x82`\x02\x81\x10a\x15\x06Wa\x15\x06a\x1C`V[` \x02\x01QQ\x83a\x15\x17\x83_a\x1E\x04V[`\x0C\x81\x10a\x15'Wa\x15'a\x1C`V[` \x02\x01R\x84\x82`\x02\x81\x10a\x15>Wa\x15>a\x1C`V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15U\x91\x90a\x1E\x04V[`\x0C\x81\x10a\x15eWa\x15ea\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15|Wa\x15|a\x1C`V[` \x02\x01QQQ\x83a\x15\x8F\x83`\x02a\x1E\x04V[`\x0C\x81\x10a\x15\x9FWa\x15\x9Fa\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xB6Wa\x15\xB6a\x1C`V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x15\xCF\x83`\x03a\x1E\x04V[`\x0C\x81\x10a\x15\xDFWa\x15\xDFa\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xF6Wa\x15\xF6a\x1C`V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x16\x10Wa\x16\x10a\x1C`V[` \x02\x01Q\x83a\x16!\x83`\x04a\x1E\x04V[`\x0C\x81\x10a\x161Wa\x161a\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16HWa\x16Ha\x1C`V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16cWa\x16ca\x1C`V[` \x02\x01Q\x83a\x16t\x83`\x05a\x1E\x04V[`\x0C\x81\x10a\x16\x84Wa\x16\x84a\x1C`V[` \x02\x01RP`\x01\x01a\x14\xDDV[Pa\x16\x9Ba\x18GV[_` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x16\xB5W\xFE[P\x80a\x16\xFBW`@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\x94V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17/WP` \x82\x01Q\x15[\x15a\x17LWPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x17\x90\x91\x90a\x1C\xE7V[a\x17\xBA\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\xC5V[\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\x18\x16a\x18eV[\x81R` \x01a\x18#a\x18eV[\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\xC2W__\xFD[_` \x82\x84\x03\x12\x15a\x18\xA9W__\xFD[a\x18\xB2\x82a\x18\x83V[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x17\xC2W__\xFD[_` \x82\x84\x03\x12\x15a\x18\xD9W__\xFD[a\x18\xB2\x82a\x18\xB9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19\x19Wa\x19\x19a\x18\xE2V[`@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\x19HWa\x19Ha\x18\xE2V[`@R\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x19aW__\xFD[a\x19j\x83a\x18\x83V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\x85W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x19\x95W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xAFWa\x19\xAFa\x18\xE2V[a\x19\xC2`\x1F\x82\x01`\x1F\x19\x16` \x01a\x19\x1FV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a\x19\xD6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x1A\x05W__\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xEAV[__`@\x83\x85\x03\x12\x15a\x1A4W__\xFD[a\x1A=\x83a\x18\xB9V[\x94` \x93\x90\x93\x015\x93PPPV[___``\x84\x86\x03\x12\x15a\x1A]W__\xFD[a\x1Af\x84a\x18\xB9V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A~W__\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[___\x83\x85\x03a\x01`\x81\x12\x15a\x1A\xA3W__\xFD[a\x1A\xAC\x85a\x18\x83V[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1A\xC0W__\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1A\xD8W__\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a\x1A\xF9W__\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x0FW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x1B\x1FW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B5W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x1BFW__\xFD[` \x91\x82\x01\x97\x90\x96P\x94\x015\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x1B\x96W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1BrV[P\x90\x95\x94PPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R_\x82Q\x80``\x84\x01R\x80` \x85\x01`\x80\x85\x01^_`\x80\x82\x85\x01\x01R`\x80`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`@\x82\x84\x03\x12\x80\x15a\x1C\x85W__\xFD[Pa\x1C\x8Ea\x18\xF6V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`@\x84`\xC0\x83\x017a\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[_\x82a\x1D\x01WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_\x82`\x1F\x83\x01\x12a\x1D\x15W__\xFD[a\x1D\x1Da\x18\xF6V[\x80`@\x84\x01\x85\x81\x11\x15a\x1D.W__\xFD[\x84[\x81\x81\x10\x15a\x1B\x96W\x805\x84R` \x93\x84\x01\x93\x01a\x1D0V[_`\x80\x82\x84\x03\x12\x80\x15a\x1DYW__\xFD[Pa\x1Dba\x18\xF6V[a\x1Dl\x84\x84a\x1D\x06V[\x81Ra\x1D{\x84`@\x85\x01a\x1D\x06V[` \x82\x01R\x93\x92PPPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01`@\x83\x81\x84\x017`@\x80\x84\x01`\x80\x84\x017\x93\x92PPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x06\xEAWa\x06\xEAa\x1D\xB1V[_\x81a\x1D\xE6Wa\x1D\xE6a\x1D\xB1V[P_\x19\x01\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xEAWa\x06\xEAa\x1D\xB1V[\x80\x82\x01\x80\x82\x11\x15a\x06\xEAWa\x06\xEAa\x1D\xB1V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \xC1\x98d\xF29\xC7X\xEDI\xDA\xF0e\x94\x19b \x85\x84\xAE\xF0P\xE2\xA2\x8B\x0Ca\xF4\xF4\xB2\xA1Y\xDDdsolcC\0\x08\x1B\x003", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::FixedBytes<24>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkHistoryLengthReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorToPubkeyHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerBLSPublicKeyReturn { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/deploy/blsapkregistrystorage.rs similarity index 96% rename from crates/utils/src/blsapkregistrystorage.rs rename to crates/utils/src/deploy/blsapkregistrystorage.rs index c3f7d496..8fd68061 100644 --- a/crates/utils/src/blsapkregistrystorage.rs +++ b/crates/utils/src/deploy/blsapkregistrystorage.rs @@ -7,20 +7,30 @@ library BN254 { struct G2Point { uint256[2] X; uint256[2] Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -196,13 +206,18 @@ pub mod BN254 { /**```solidity struct G2Point { uint256[2] X; uint256[2] Y; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -528,21 +543,31 @@ library IBLSApkRegistry { struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -755,14 +780,19 @@ pub mod IBLSApkRegistry { /**```solidity struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PubkeyRegistrationParams { pub pubkeyRegistrationSignature: ::RustType, pub pubkeyG1: ::RustType, pub pubkeyG2: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1730,7 +1760,12 @@ interface BLSApkRegistryStorage { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod BLSApkRegistryStorage { use super::*; use alloy::sol_types as alloy_sol_types; @@ -1758,13 +1793,23 @@ pub mod BLSApkRegistryStorage { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1846,7 +1891,12 @@ pub mod BLSApkRegistryStorage { ```solidity event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct NewPubkeyRegistration { #[allow(missing_docs)] @@ -1856,7 +1906,12 @@ pub mod BLSApkRegistryStorage { #[allow(missing_docs)] pub pubkeyG2: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1948,7 +2003,12 @@ pub mod BLSApkRegistryStorage { ```solidity event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorAddedToQuorums { #[allow(missing_docs)] @@ -1958,7 +2018,12 @@ pub mod BLSApkRegistryStorage { #[allow(missing_docs)] pub quorumNumbers: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2054,7 +2119,12 @@ pub mod BLSApkRegistryStorage { ```solidity event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRemovedFromQuorums { #[allow(missing_docs)] @@ -2064,7 +2134,12 @@ pub mod BLSApkRegistryStorage { #[allow(missing_docs)] pub quorumNumbers: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2160,21 +2235,26 @@ pub mod BLSApkRegistryStorage { ```solidity function apkHistory(uint8, uint256) external view returns (bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2303,19 +2383,24 @@ pub mod BLSApkRegistryStorage { ```solidity function currentApk(uint8) external view returns (uint256 X, uint256 Y); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2427,17 +2512,22 @@ pub mod BLSApkRegistryStorage { ```solidity function deregisterOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2552,18 +2642,23 @@ pub mod BLSApkRegistryStorage { ```solidity function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2666,7 +2761,7 @@ pub mod BLSApkRegistryStorage { ```solidity function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkHashAtBlockNumberAndIndexCall { pub quorumNumber: u8, @@ -2674,12 +2769,17 @@ pub mod BLSApkRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkHashAtBlockNumberAndIndexReturn { pub _0: alloy::sol_types::private::FixedBytes<24>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2801,19 +2901,24 @@ pub mod BLSApkRegistryStorage { ```solidity function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2930,19 +3035,24 @@ pub mod BLSApkRegistryStorage { ```solidity function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IBLSApkRegistry.ApkUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3056,18 +3166,23 @@ pub mod BLSApkRegistryStorage { ```solidity function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorFromPubkeyHashReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3169,18 +3284,23 @@ pub mod BLSApkRegistryStorage { ```solidity function getOperatorId(address operator) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorIdReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3280,19 +3400,24 @@ pub mod BLSApkRegistryStorage { ```solidity function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3399,16 +3524,21 @@ pub mod BLSApkRegistryStorage { ```solidity function initializeQuorum(uint8 quorumNumber) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3510,19 +3640,24 @@ pub mod BLSApkRegistryStorage { ```solidity function operatorToPubkey(address) external view returns (uint256 X, uint256 Y); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3634,18 +3769,23 @@ pub mod BLSApkRegistryStorage { ```solidity function operatorToPubkeyHash(address) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorToPubkeyHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3745,18 +3885,23 @@ pub mod BLSApkRegistryStorage { ```solidity function pubkeyHashToOperator(bytes32) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pubkeyHashToOperatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3856,7 +4001,7 @@ pub mod BLSApkRegistryStorage { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerBLSPublicKeyCall { pub operator: alloy::sol_types::private::Address, @@ -3865,12 +4010,17 @@ pub mod BLSApkRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerBLSPublicKeyReturn { pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3998,17 +4148,22 @@ pub mod BLSApkRegistryStorage { ```solidity function registerOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4123,16 +4278,21 @@ pub mod BLSApkRegistryStorage { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/deploy/blssignaturechecker.rs b/crates/utils/src/deploy/blssignaturechecker.rs new file mode 100644 index 00000000..200b4ecd --- /dev/null +++ b/crates/utils/src/deploy/blssignaturechecker.rs @@ -0,0 +1,3389 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style +)] +pub mod BLSSignatureChecker { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x610100604052348015610010575f5ffd5b5060405161280c38038061280c83398101604081905261002f916101c4565b6001600160a01b038116608081905260408051636830483560e01b815290516368304835916004808201926020929091908290030181865afa158015610077573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009b91906101c4565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100f0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011491906101c4565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018f91906101c4565b6001600160a01b031660e052505f805460ff191660011790556101e6565b6001600160a01b03811681146101c1575f5ffd5b50565b5f602082840312156101d4575f5ffd5b81516101df816101ad565b9392505050565b60805160a05160c05160e0516125bc6102505f395f818161019c0152610b8301525f818160d20152610d5f01525f818161011101528181610f3201526110e701525f81816101380152818161034201528181610864015281816109f50152610c1d01526125bc5ff3fe608060405234801561000f575f5ffd5b5060043610610085575f3560e01c80636d14a987116100585780636d14a987146101335780636efb46361461015a578063b98d09081461017b578063df5cf72314610197575f5ffd5b8063171f1d5b14610089578063416c7e5e146100b85780635df45946146100cd578063683048351461010c575b5f5ffd5b61009c610097366004611efe565b6101be565b6040805192151583529015156020830152015b60405180910390f35b6100cb6100c6366004611f4c565b610340565b005b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100af565b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b61016d610168366004612232565b6104b7565b6040516100af929190612324565b5f546101879060ff1681565b60405190151581526020016100af565b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f600281106102015761020161236c565b60200201518951600160200201518a602001515f600281106102255761022561236c565b60200201518b602001516001600281106102415761024161236c565b602090810291909101518c518d83015160405161029e9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c6102c09190612380565b90506103326102d96102d28884611381565b8690611410565b6102e16114a3565b610328610319856103136040805180820182525f80825260209182015281518083019092526001825260029082015290565b90611381565b6103228c611563565b90611410565b886201d4c06115ed565b909890975095505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c0919061239f565b6001600160a01b0316336001600160a01b0316146104715760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b5f805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60408051808201909152606080825260208201525f84810361052e5760405162461bcd60e51b815260206004820152603760248201525f5160206125675f395f51905f5260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610468565b60408301515185148015610546575060a08301515185145b8015610556575060c08301515185145b8015610566575060e08301515185145b6105cf5760405162461bcd60e51b815260206004820152604160248201525f5160206125675f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610468565b825151602084015151146106465760405162461bcd60e51b8152602060048201526044602482018190525f5160206125675f395f51905f52908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610468565b4363ffffffff168463ffffffff16106106b45760405162461bcd60e51b815260206004820152603c60248201525f5160206125675f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610468565b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b038111156106f4576106f4611db5565b60405190808252806020026020018201604052801561071d578160200160208202803683370190505b506020820152866001600160401b0381111561073b5761073b611db5565b604051908082528060200260200182016040528015610764578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561079857610798611db5565b6040519080825280602002602001820160405280156107c1578160200160208202803683370190505b5081526020860151516001600160401b038111156107e1576107e1611db5565b60405190808252806020026020018201604052801561080a578160200160208202803683370190505b5081602001819052505f6108d88a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156108af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d391906123c5565b611801565b90505f5b876020015151811015610b5f57610920886020015182815181106109025761090261236c565b602002602001015180515f9081526020918201519091526040902090565b836020015182815181106109365761093661236c565b602090810291909101015280156109f35760208301516109576001836123f9565b815181106109675761096761236c565b60200260200101515f1c836020015182815181106109875761098761236c565b60200260200101515f1c116109f3576040805162461bcd60e51b81526020600482015260248101919091525f5160206125675f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610468565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110610a3857610a3861236c565b60200260200101518b8b5f01518581518110610a5657610a5661236c565b60200260200101516040518463ffffffff1660e01b8152600401610a939392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610aae573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad2919061240c565b6001600160c01b0316835f01518281518110610af057610af061236c565b602002602001018181525050610b556102d2610b2984865f01518581518110610b1b57610b1b61236c565b602002602001015116611893565b8a602001518481518110610b3f57610b3f61236c565b60200260200101516118bd90919063ffffffff16565b94506001016108dc565b5050610b6a8361199e565b5f805491945060ff9091169081610b81575f610c01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bdd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c019190612432565b90505f5b8a811015611254578215610d5d578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110610c5c57610c5c61236c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015610c9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbe9190612432565b610cc89190612449565b11610d5d5760405162461bcd60e51b815260206004820152606660248201525f5160206125675f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610468565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110610d9e57610d9e61236c565b9050013560f81c60f81b60f81c8c8c60a001518581518110610dc257610dc261236c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610e1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e40919061245c565b6001600160401b031916610e638a6040015183815181106109025761090261236c565b67ffffffffffffffff191614610efe5760405162461bcd60e51b815260206004820152606160248201525f5160206125675f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610468565b610f2e89604001518281518110610f1757610f1761236c565b60200260200101518761141090919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110610f7157610f7161236c565b9050013560f81c60f81b60f81c8c8c60c001518581518110610f9557610f9561236c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610fef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110139190612484565b856020015182815181106110295761102961236c565b6001600160601b039092166020928302919091018201528501518051829081106110555761105561236c565b6020026020010151855f015182815181106110725761107261236c565b6001600160601b03909216602092830291909101909101525f805b8a602001515181101561124a576110e0865f015182815181106110b2576110b261236c565b60200260200101518f8f868181106110cc576110cc61236c565b600192013560f81c9290921c811614919050565b15611242577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106111265761112661236c565b9050013560f81c60f81b60f81c8e8960200151858151811061114a5761114a61236c565b60200260200101518f60e0015188815181106111685761116861236c565b602002602001015187815181106111815761118161236c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156111e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112079190612484565b875180518590811061121b5761121b61236c565b6020026020010181815161122f91906124aa565b6001600160601b03169052506001909101905b60010161108d565b5050600101610c05565b5050505f5f61126d8c868a606001518b608001516101be565b91509150816112dd5760405162461bcd60e51b815260206004820152604360248201525f5160206125675f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610468565b8061133d5760405162461bcd60e51b815260206004820152603960248201525f5160206125675f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610468565b50505f8782602001516040516020016113579291906124c9565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b604080518082019091525f808252602082015261139c611cdb565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806113ca57fe5b50806114085760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610468565b505092915050565b604080518082019091525f808252602082015261142b611cf9565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061146557fe5b50806114085760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610468565b6114ab611d17565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f80806115905f5160206125475f395f51905f5286612380565b90505b61159c81611a34565b90935091505f5160206125475f395f51905f5282830983036115d4576040805180820190915290815260208101919091529392505050565b5f5160206125475f395f51905f52600182089050611593565b6040805180820182528681526020808201869052825180840190935286835282018490525f9182919061161e611d3c565b5f5b60028110156117d5575f61163582600661250f565b90508482600281106116495761164961236c565b6020020151518361165a835f612449565b600c811061166a5761166a61236c565b60200201528482600281106116815761168161236c565b602002015160200151838260016116989190612449565b600c81106116a8576116a861236c565b60200201528382600281106116bf576116bf61236c565b60200201515151836116d2836002612449565b600c81106116e2576116e261236c565b60200201528382600281106116f9576116f961236c565b6020020151516001602002015183611712836003612449565b600c81106117225761172261236c565b60200201528382600281106117395761173961236c565b6020020151602001515f600281106117535761175361236c565b602002015183611764836004612449565b600c81106117745761177461236c565b602002015283826002811061178b5761178b61236c565b6020020151602001516001600281106117a6576117a661236c565b6020020151836117b7836005612449565b600c81106117c7576117c761236c565b602002015250600101611620565b506117de611d5b565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b5f5f61180c84611ab0565b9050808360ff166001901b1161188a5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610468565b90505b92915050565b5f805b821561188d576118a76001846123f9565b90921691806118b581612526565b915050611896565b604080518082019091525f80825260208201526102008261ffff16106119185760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610468565b8161ffff1660010361192b57508161188d565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff161061199357600161ffff871660ff83161c81169003611976576119738484611410565b93505b6119808384611410565b92506201fffe600192831b169101611946565b509195945050505050565b604080518082019091525f808252602082015281511580156119c257506020820151155b156119df575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206125475f395f51905f528460200151611a109190612380565b611a27905f5160206125475f395f51905f526123f9565b905292915050565b919050565b5f80805f5160206125475f395f51905f5260035f5160206125475f395f51905f52865f5160206125475f395f51905f52888909090890505f611aa4827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206125475f395f51905f52611c33565b91959194509092505050565b5f61010082511115611b385760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610468565b81515f03611b4757505f919050565b5f5f835f81518110611b5b57611b5b61236c565b0160200151600160f89190911c81901b92505b8451811015611c2a57848181518110611b8957611b8961236c565b0160200151600160f89190911c1b9150828211611c1e5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610468565b91811791600101611b6e565b50909392505050565b5f5f611c3d611d5b565b611c45611d79565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280611c8257fe5b5082611cd05760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610468565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611d2a611d97565b8152602001611d37611d97565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715611deb57611deb611db5565b60405290565b60405161010081016001600160401b0381118282101715611deb57611deb611db5565b604051601f8201601f191681016001600160401b0381118282101715611e3c57611e3c611db5565b604052919050565b5f60408284031215611e54575f5ffd5b611e5c611dc9565b823581526020928301359281019290925250919050565b5f82601f830112611e82575f5ffd5b611e8a611dc9565b806040840185811115611e9b575f5ffd5b845b81811015611eb5578035845260209384019301611e9d565b509095945050505050565b5f60808284031215611ed0575f5ffd5b611ed8611dc9565b9050611ee48383611e73565b8152611ef38360408401611e73565b602082015292915050565b5f5f5f5f6101208587031215611f12575f5ffd5b84359350611f238660208701611e44565b9250611f328660608701611ec0565b9150611f418660e08701611e44565b905092959194509250565b5f60208284031215611f5c575f5ffd5b8135801515811461188a575f5ffd5b803563ffffffff81168114611a2f575f5ffd5b5f6001600160401b03821115611f9657611f96611db5565b5060051b60200190565b5f82601f830112611faf575f5ffd5b8135611fc2611fbd82611f7e565b611e14565b8082825260208201915060208360051b860101925085831115611fe3575f5ffd5b602085015b8381101561200757611ff981611f6b565b835260209283019201611fe8565b5095945050505050565b5f82601f830112612020575f5ffd5b813561202e611fbd82611f7e565b8082825260208201915060208360061b86010192508583111561204f575f5ffd5b602085015b83811015612007576120668782611e44565b8352602090920191604001612054565b5f82601f830112612085575f5ffd5b8135612093611fbd82611f7e565b8082825260208201915060208360051b8601019250858311156120b4575f5ffd5b602085015b838110156120075780356001600160401b038111156120d6575f5ffd5b6120e5886020838a0101611fa0565b845250602092830192016120b9565b5f6101808284031215612105575f5ffd5b61210d611df1565b905081356001600160401b03811115612124575f5ffd5b61213084828501611fa0565b82525060208201356001600160401b0381111561214b575f5ffd5b61215784828501612011565b60208301525060408201356001600160401b03811115612175575f5ffd5b61218184828501612011565b6040830152506121948360608401611ec0565b60608201526121a68360e08401611e44565b60808201526101208201356001600160401b038111156121c4575f5ffd5b6121d084828501611fa0565b60a0830152506101408201356001600160401b038111156121ef575f5ffd5b6121fb84828501611fa0565b60c0830152506101608201356001600160401b0381111561221a575f5ffd5b61222684828501612076565b60e08301525092915050565b5f5f5f5f5f60808688031215612246575f5ffd5b8535945060208601356001600160401b03811115612262575f5ffd5b8601601f81018813612272575f5ffd5b80356001600160401b03811115612287575f5ffd5b886020828401011115612298575f5ffd5b602091909101945092506122ae60408701611f6b565b915060608601356001600160401b038111156122c8575f5ffd5b6122d4888289016120f4565b9150509295509295909350565b5f8151808452602084019350602083015f5b8281101561231a5781516001600160601b03168652602095860195909101906001016122f3565b5093949350505050565b604081525f835160408084015261233e60808401826122e1565b90506020850151603f1984830301606085015261235b82826122e1565b925050508260208301529392505050565b634e487b7160e01b5f52603260045260245ffd5b5f8261239a57634e487b7160e01b5f52601260045260245ffd5b500690565b5f602082840312156123af575f5ffd5b81516001600160a01b038116811461188a575f5ffd5b5f602082840312156123d5575f5ffd5b815160ff8116811461188a575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561188d5761188d6123e5565b5f6020828403121561241c575f5ffd5b81516001600160c01b038116811461188a575f5ffd5b5f60208284031215612442575f5ffd5b5051919050565b8082018082111561188d5761188d6123e5565b5f6020828403121561246c575f5ffd5b815167ffffffffffffffff198116811461188a575f5ffd5b5f60208284031215612494575f5ffd5b81516001600160601b038116811461188a575f5ffd5b6001600160601b03828116828216039081111561188d5761188d6123e5565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b828110156125035781518452602093840193909101906001016124e5565b50919695505050505050565b808202811582820484141761188d5761188d6123e5565b5f61ffff821661ffff810361253d5761253d6123e5565b6001019291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122082025ed7651bb995a6a4e70722cd87a3383217335e0dc1e57ed8944f9dfed39d64736f6c634300081b0033 + /// ``` + #[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\x15a\0\x10W__\xFD[P`@Qa(\x0C8\x03\x80a(\x0C\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\xC4V[`\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\x15a\0wW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\x9B\x91\x90a\x01\xC4V[`\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\x15a\0\xF0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x14\x91\x90a\x01\xC4V[`\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\x15a\x01kW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x8F\x91\x90a\x01\xC4V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RP_\x80T`\xFF\x19\x16`\x01\x17\x90Ua\x01\xE6V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xC1W__\xFD[PV[_` \x82\x84\x03\x12\x15a\x01\xD4W__\xFD[\x81Qa\x01\xDF\x81a\x01\xADV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa%\xBCa\x02P_9_\x81\x81a\x01\x9C\x01Ra\x0B\x83\x01R_\x81\x81`\xD2\x01Ra\r_\x01R_\x81\x81a\x01\x11\x01R\x81\x81a\x0F2\x01Ra\x10\xE7\x01R_\x81\x81a\x018\x01R\x81\x81a\x03B\x01R\x81\x81a\x08d\x01R\x81\x81a\t\xF5\x01Ra\x0C\x1D\x01Ra%\xBC_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\x85W_5`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0XW\x80cm\x14\xA9\x87\x14a\x013W\x80cn\xFBF6\x14a\x01ZW\x80c\xB9\x8D\t\x08\x14a\x01{W\x80c\xDF\\\xF7#\x14a\x01\x97W__\xFD[\x80c\x17\x1F\x1D[\x14a\0\x89W\x80cAl~^\x14a\0\xB8W\x80c]\xF4YF\x14a\0\xCDW\x80ch0H5\x14a\x01\x0CW[__\xFD[a\0\x9Ca\0\x976`\x04a\x1E\xFEV[a\x01\xBEV[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCBa\0\xC66`\x04a\x1FLV[a\x03@V[\0[a\0\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[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xAFV[a\0\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\0\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\x01ma\x01h6`\x04a\"2V[a\x04\xB7V[`@Qa\0\xAF\x92\x91\x90a#$V[_Ta\x01\x87\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xAFV[a\0\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[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x02\x01Wa\x02\x01a#lV[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x02%Wa\x02%a#lV[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x02AWa\x02Aa#lV[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x02\x9E\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 _\x1Ca\x02\xC0\x91\x90a#\x80V[\x90Pa\x032a\x02\xD9a\x02\xD2\x88\x84a\x13\x81V[\x86\x90a\x14\x10V[a\x02\xE1a\x14\xA3V[a\x03(a\x03\x19\x85a\x03\x13`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a\x13\x81V[a\x03\"\x8Ca\x15cV[\x90a\x14\x10V[\x88b\x01\xD4\xC0a\x15\xEDV[\x90\x98\x90\x97P\x95PPPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x03\x9CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xC0\x91\x90a#\x9FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x04qW`@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[_\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[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x05.W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04hV[`@\x83\x01QQ\x85\x14\x80\x15a\x05FWP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x05VWP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x05fWP`\xE0\x83\x01QQ\x85\x14[a\x05\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\x04hV[\x82QQ` \x84\x01QQ\x14a\x06FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a%g_9_Q\x90_R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x04hV[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x06\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\x04hV[`@\x80Q\x80\x82\x01\x82R_\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\xF4Wa\x06\xF4a\x1D\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x1DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07;Wa\x07;a\x1D\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07dW\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\x07\x98Wa\x07\x98a\x1D\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xE1Wa\x07\xE1a\x1D\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\nW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\x08\xD8\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_\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\xAFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD3\x91\x90a#\xC5V[a\x18\x01V[\x90P_[\x87` \x01QQ\x81\x10\x15a\x0B_Wa\t \x88` \x01Q\x82\x81Q\x81\x10a\t\x02Wa\t\x02a#lV[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\t6Wa\t6a#lV[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\t\xF3W` \x83\x01Qa\tW`\x01\x83a#\xF9V[\x81Q\x81\x10a\tgWa\tga#lV[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\t\x87Wa\t\x87a#lV[` \x02` \x01\x01Q_\x1C\x11a\t\xF3W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\x04hV[\x7F\0\0\0\0\0\0\0\0\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\n8Wa\n8a#lV[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\nVWa\nVa#lV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x93\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\xAEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD2\x91\x90a$\x0CV[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\n\xF0Wa\n\xF0a#lV[` \x02` \x01\x01\x81\x81RPPa\x0BUa\x02\xD2a\x0B)\x84\x86_\x01Q\x85\x81Q\x81\x10a\x0B\x1BWa\x0B\x1Ba#lV[` \x02` \x01\x01Q\x16a\x18\x93V[\x8A` \x01Q\x84\x81Q\x81\x10a\x0B?Wa\x0B?a#lV[` \x02` \x01\x01Qa\x18\xBD\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\x08\xDCV[PPa\x0Bj\x83a\x19\x9EV[_\x80T\x91\x94P`\xFF\x90\x91\x16\x90\x81a\x0B\x81W_a\x0C\x01V[\x7F\0\0\0\0\0\0\0\0\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\x0B\xDDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x01\x91\x90a$2V[\x90P_[\x8A\x81\x10\x15a\x12TW\x82\x15a\r]W\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\x0C\\Wa\x0C\\a#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\x0C\x9AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xBE\x91\x90a$2V[a\x0C\xC8\x91\x90a$IV[\x11a\r]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\x04hV[\x7F\0\0\0\0\0\0\0\0\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\x9EWa\r\x9Ea#lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\r\xC2Wa\r\xC2a#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\x0E\x1CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E@\x91\x90a$\\V[`\x01`\x01`@\x1B\x03\x19\x16a\x0Ec\x8A`@\x01Q\x83\x81Q\x81\x10a\t\x02Wa\t\x02a#lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0E\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R_Q` a%g_9_Q\x90_R`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\x04hV[a\x0F.\x89`@\x01Q\x82\x81Q\x81\x10a\x0F\x17Wa\x0F\x17a#lV[` \x02` \x01\x01Q\x87a\x14\x10\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\x0FqWa\x0Fqa#lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x0F\x95Wa\x0F\x95a#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\x0F\xEFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\x13\x91\x90a$\x84V[\x85` \x01Q\x82\x81Q\x81\x10a\x10)Wa\x10)a#lV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x10UWa\x10Ua#lV[` \x02` \x01\x01Q\x85_\x01Q\x82\x81Q\x81\x10a\x10rWa\x10ra#lV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x8A` \x01QQ\x81\x10\x15a\x12JWa\x10\xE0\x86_\x01Q\x82\x81Q\x81\x10a\x10\xB2Wa\x10\xB2a#lV[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x10\xCCWa\x10\xCCa#lV[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x12BW\x7F\0\0\0\0\0\0\0\0\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#lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x11JWa\x11Ja#lV[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x11hWa\x11ha#lV[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x11\x81Wa\x11\x81a#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\x11\xE3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x07\x91\x90a$\x84V[\x87Q\x80Q\x85\x90\x81\x10a\x12\x1BWa\x12\x1Ba#lV[` \x02` \x01\x01\x81\x81Qa\x12/\x91\x90a$\xAAV[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\x10\x8DV[PP`\x01\x01a\x0C\x05V[PPP__a\x12m\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x01\xBEV[\x91P\x91P\x81a\x12\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x04hV[\x80a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04hV[PP_\x87\x82` \x01Q`@Q` \x01a\x13W\x92\x91\x90a$\xC9V[`@\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_\x80\x82R` \x82\x01Ra\x13\x9Ca\x1C\xDBV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\xCAW\xFE[P\x80a\x14\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04hV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x14+a\x1C\xF9V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x14eW\xFE[P\x80a\x14\x08W`@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\x04hV[a\x14\xABa\x1D\x17V[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_\x80\x82R` \x82\x01R_\x80\x80a\x15\x90_Q` a%G_9_Q\x90_R\x86a#\x80V[\x90P[a\x15\x9C\x81a\x1A4V[\x90\x93P\x91P_Q` a%G_9_Q\x90_R\x82\x83\t\x83\x03a\x15\xD4W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a%G_9_Q\x90_R`\x01\x82\x08\x90Pa\x15\x93V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a\x16\x1Ea\x1D`\x80\x84\x01\x82a\"\xE1V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra#[\x82\x82a\"\xE1V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a#\x9AWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_` \x82\x84\x03\x12\x15a#\xAFW__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x18\x8AW__\xFD[_` \x82\x84\x03\x12\x15a#\xD5W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x18\x8AW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x18\x8DWa\x18\x8Da#\xE5V[_` \x82\x84\x03\x12\x15a$\x1CW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x18\x8AW__\xFD[_` \x82\x84\x03\x12\x15a$BW__\xFD[PQ\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x18\x8DWa\x18\x8Da#\xE5V[_` \x82\x84\x03\x12\x15a$lW__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x18\x8AW__\xFD[_` \x82\x84\x03\x12\x15a$\x94W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x18\x8AW__\xFD[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x18\x8DWa\x18\x8Da#\xE5V[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a%\x03W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a$\xE5V[P\x91\x96\x95PPPPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x18\x8DWa\x18\x8Da#\xE5V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a%=Wa%=a#\xE5V[`\x01\x01\x92\x91PPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \x82\x02^\xD7e\x1B\xB9\x95\xA6\xA4\xE7\x07\"\xCD\x87\xA382\x173^\r\xC1\xE5~\xD8\x94O\x9D\xFE\xD3\x9DdsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b5060043610610085575f3560e01c80636d14a987116100585780636d14a987146101335780636efb46361461015a578063b98d09081461017b578063df5cf72314610197575f5ffd5b8063171f1d5b14610089578063416c7e5e146100b85780635df45946146100cd578063683048351461010c575b5f5ffd5b61009c610097366004611efe565b6101be565b6040805192151583529015156020830152015b60405180910390f35b6100cb6100c6366004611f4c565b610340565b005b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100af565b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b61016d610168366004612232565b6104b7565b6040516100af929190612324565b5f546101879060ff1681565b60405190151581526020016100af565b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f600281106102015761020161236c565b60200201518951600160200201518a602001515f600281106102255761022561236c565b60200201518b602001516001600281106102415761024161236c565b602090810291909101518c518d83015160405161029e9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c6102c09190612380565b90506103326102d96102d28884611381565b8690611410565b6102e16114a3565b610328610319856103136040805180820182525f80825260209182015281518083019092526001825260029082015290565b90611381565b6103228c611563565b90611410565b886201d4c06115ed565b909890975095505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c0919061239f565b6001600160a01b0316336001600160a01b0316146104715760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b5f805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60408051808201909152606080825260208201525f84810361052e5760405162461bcd60e51b815260206004820152603760248201525f5160206125675f395f51905f5260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610468565b60408301515185148015610546575060a08301515185145b8015610556575060c08301515185145b8015610566575060e08301515185145b6105cf5760405162461bcd60e51b815260206004820152604160248201525f5160206125675f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610468565b825151602084015151146106465760405162461bcd60e51b8152602060048201526044602482018190525f5160206125675f395f51905f52908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610468565b4363ffffffff168463ffffffff16106106b45760405162461bcd60e51b815260206004820152603c60248201525f5160206125675f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610468565b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b038111156106f4576106f4611db5565b60405190808252806020026020018201604052801561071d578160200160208202803683370190505b506020820152866001600160401b0381111561073b5761073b611db5565b604051908082528060200260200182016040528015610764578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561079857610798611db5565b6040519080825280602002602001820160405280156107c1578160200160208202803683370190505b5081526020860151516001600160401b038111156107e1576107e1611db5565b60405190808252806020026020018201604052801561080a578160200160208202803683370190505b5081602001819052505f6108d88a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156108af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d391906123c5565b611801565b90505f5b876020015151811015610b5f57610920886020015182815181106109025761090261236c565b602002602001015180515f9081526020918201519091526040902090565b836020015182815181106109365761093661236c565b602090810291909101015280156109f35760208301516109576001836123f9565b815181106109675761096761236c565b60200260200101515f1c836020015182815181106109875761098761236c565b60200260200101515f1c116109f3576040805162461bcd60e51b81526020600482015260248101919091525f5160206125675f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610468565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110610a3857610a3861236c565b60200260200101518b8b5f01518581518110610a5657610a5661236c565b60200260200101516040518463ffffffff1660e01b8152600401610a939392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610aae573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad2919061240c565b6001600160c01b0316835f01518281518110610af057610af061236c565b602002602001018181525050610b556102d2610b2984865f01518581518110610b1b57610b1b61236c565b602002602001015116611893565b8a602001518481518110610b3f57610b3f61236c565b60200260200101516118bd90919063ffffffff16565b94506001016108dc565b5050610b6a8361199e565b5f805491945060ff9091169081610b81575f610c01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bdd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c019190612432565b90505f5b8a811015611254578215610d5d578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110610c5c57610c5c61236c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015610c9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbe9190612432565b610cc89190612449565b11610d5d5760405162461bcd60e51b815260206004820152606660248201525f5160206125675f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610468565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110610d9e57610d9e61236c565b9050013560f81c60f81b60f81c8c8c60a001518581518110610dc257610dc261236c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610e1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e40919061245c565b6001600160401b031916610e638a6040015183815181106109025761090261236c565b67ffffffffffffffff191614610efe5760405162461bcd60e51b815260206004820152606160248201525f5160206125675f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610468565b610f2e89604001518281518110610f1757610f1761236c565b60200260200101518761141090919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110610f7157610f7161236c565b9050013560f81c60f81b60f81c8c8c60c001518581518110610f9557610f9561236c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610fef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110139190612484565b856020015182815181106110295761102961236c565b6001600160601b039092166020928302919091018201528501518051829081106110555761105561236c565b6020026020010151855f015182815181106110725761107261236c565b6001600160601b03909216602092830291909101909101525f805b8a602001515181101561124a576110e0865f015182815181106110b2576110b261236c565b60200260200101518f8f868181106110cc576110cc61236c565b600192013560f81c9290921c811614919050565b15611242577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106111265761112661236c565b9050013560f81c60f81b60f81c8e8960200151858151811061114a5761114a61236c565b60200260200101518f60e0015188815181106111685761116861236c565b602002602001015187815181106111815761118161236c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156111e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112079190612484565b875180518590811061121b5761121b61236c565b6020026020010181815161122f91906124aa565b6001600160601b03169052506001909101905b60010161108d565b5050600101610c05565b5050505f5f61126d8c868a606001518b608001516101be565b91509150816112dd5760405162461bcd60e51b815260206004820152604360248201525f5160206125675f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610468565b8061133d5760405162461bcd60e51b815260206004820152603960248201525f5160206125675f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610468565b50505f8782602001516040516020016113579291906124c9565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b604080518082019091525f808252602082015261139c611cdb565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806113ca57fe5b50806114085760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610468565b505092915050565b604080518082019091525f808252602082015261142b611cf9565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061146557fe5b50806114085760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610468565b6114ab611d17565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f80806115905f5160206125475f395f51905f5286612380565b90505b61159c81611a34565b90935091505f5160206125475f395f51905f5282830983036115d4576040805180820190915290815260208101919091529392505050565b5f5160206125475f395f51905f52600182089050611593565b6040805180820182528681526020808201869052825180840190935286835282018490525f9182919061161e611d3c565b5f5b60028110156117d5575f61163582600661250f565b90508482600281106116495761164961236c565b6020020151518361165a835f612449565b600c811061166a5761166a61236c565b60200201528482600281106116815761168161236c565b602002015160200151838260016116989190612449565b600c81106116a8576116a861236c565b60200201528382600281106116bf576116bf61236c565b60200201515151836116d2836002612449565b600c81106116e2576116e261236c565b60200201528382600281106116f9576116f961236c565b6020020151516001602002015183611712836003612449565b600c81106117225761172261236c565b60200201528382600281106117395761173961236c565b6020020151602001515f600281106117535761175361236c565b602002015183611764836004612449565b600c81106117745761177461236c565b602002015283826002811061178b5761178b61236c565b6020020151602001516001600281106117a6576117a661236c565b6020020151836117b7836005612449565b600c81106117c7576117c761236c565b602002015250600101611620565b506117de611d5b565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b5f5f61180c84611ab0565b9050808360ff166001901b1161188a5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610468565b90505b92915050565b5f805b821561188d576118a76001846123f9565b90921691806118b581612526565b915050611896565b604080518082019091525f80825260208201526102008261ffff16106119185760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610468565b8161ffff1660010361192b57508161188d565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff161061199357600161ffff871660ff83161c81169003611976576119738484611410565b93505b6119808384611410565b92506201fffe600192831b169101611946565b509195945050505050565b604080518082019091525f808252602082015281511580156119c257506020820151155b156119df575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206125475f395f51905f528460200151611a109190612380565b611a27905f5160206125475f395f51905f526123f9565b905292915050565b919050565b5f80805f5160206125475f395f51905f5260035f5160206125475f395f51905f52865f5160206125475f395f51905f52888909090890505f611aa4827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206125475f395f51905f52611c33565b91959194509092505050565b5f61010082511115611b385760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610468565b81515f03611b4757505f919050565b5f5f835f81518110611b5b57611b5b61236c565b0160200151600160f89190911c81901b92505b8451811015611c2a57848181518110611b8957611b8961236c565b0160200151600160f89190911c1b9150828211611c1e5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610468565b91811791600101611b6e565b50909392505050565b5f5f611c3d611d5b565b611c45611d79565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280611c8257fe5b5082611cd05760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610468565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611d2a611d97565b8152602001611d37611d97565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715611deb57611deb611db5565b60405290565b60405161010081016001600160401b0381118282101715611deb57611deb611db5565b604051601f8201601f191681016001600160401b0381118282101715611e3c57611e3c611db5565b604052919050565b5f60408284031215611e54575f5ffd5b611e5c611dc9565b823581526020928301359281019290925250919050565b5f82601f830112611e82575f5ffd5b611e8a611dc9565b806040840185811115611e9b575f5ffd5b845b81811015611eb5578035845260209384019301611e9d565b509095945050505050565b5f60808284031215611ed0575f5ffd5b611ed8611dc9565b9050611ee48383611e73565b8152611ef38360408401611e73565b602082015292915050565b5f5f5f5f6101208587031215611f12575f5ffd5b84359350611f238660208701611e44565b9250611f328660608701611ec0565b9150611f418660e08701611e44565b905092959194509250565b5f60208284031215611f5c575f5ffd5b8135801515811461188a575f5ffd5b803563ffffffff81168114611a2f575f5ffd5b5f6001600160401b03821115611f9657611f96611db5565b5060051b60200190565b5f82601f830112611faf575f5ffd5b8135611fc2611fbd82611f7e565b611e14565b8082825260208201915060208360051b860101925085831115611fe3575f5ffd5b602085015b8381101561200757611ff981611f6b565b835260209283019201611fe8565b5095945050505050565b5f82601f830112612020575f5ffd5b813561202e611fbd82611f7e565b8082825260208201915060208360061b86010192508583111561204f575f5ffd5b602085015b83811015612007576120668782611e44565b8352602090920191604001612054565b5f82601f830112612085575f5ffd5b8135612093611fbd82611f7e565b8082825260208201915060208360051b8601019250858311156120b4575f5ffd5b602085015b838110156120075780356001600160401b038111156120d6575f5ffd5b6120e5886020838a0101611fa0565b845250602092830192016120b9565b5f6101808284031215612105575f5ffd5b61210d611df1565b905081356001600160401b03811115612124575f5ffd5b61213084828501611fa0565b82525060208201356001600160401b0381111561214b575f5ffd5b61215784828501612011565b60208301525060408201356001600160401b03811115612175575f5ffd5b61218184828501612011565b6040830152506121948360608401611ec0565b60608201526121a68360e08401611e44565b60808201526101208201356001600160401b038111156121c4575f5ffd5b6121d084828501611fa0565b60a0830152506101408201356001600160401b038111156121ef575f5ffd5b6121fb84828501611fa0565b60c0830152506101608201356001600160401b0381111561221a575f5ffd5b61222684828501612076565b60e08301525092915050565b5f5f5f5f5f60808688031215612246575f5ffd5b8535945060208601356001600160401b03811115612262575f5ffd5b8601601f81018813612272575f5ffd5b80356001600160401b03811115612287575f5ffd5b886020828401011115612298575f5ffd5b602091909101945092506122ae60408701611f6b565b915060608601356001600160401b038111156122c8575f5ffd5b6122d4888289016120f4565b9150509295509295909350565b5f8151808452602084019350602083015f5b8281101561231a5781516001600160601b03168652602095860195909101906001016122f3565b5093949350505050565b604081525f835160408084015261233e60808401826122e1565b90506020850151603f1984830301606085015261235b82826122e1565b925050508260208301529392505050565b634e487b7160e01b5f52603260045260245ffd5b5f8261239a57634e487b7160e01b5f52601260045260245ffd5b500690565b5f602082840312156123af575f5ffd5b81516001600160a01b038116811461188a575f5ffd5b5f602082840312156123d5575f5ffd5b815160ff8116811461188a575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561188d5761188d6123e5565b5f6020828403121561241c575f5ffd5b81516001600160c01b038116811461188a575f5ffd5b5f60208284031215612442575f5ffd5b5051919050565b8082018082111561188d5761188d6123e5565b5f6020828403121561246c575f5ffd5b815167ffffffffffffffff198116811461188a575f5ffd5b5f60208284031215612494575f5ffd5b81516001600160601b038116811461188a575f5ffd5b6001600160601b03828116828216039081111561188d5761188d6123e5565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b828110156125035781518452602093840193909101906001016124e5565b50919695505050505050565b808202811582820484141761188d5761188d6123e5565b5f61ffff821661ffff810361253d5761253d6123e5565b6001019291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122082025ed7651bb995a6a4e70722cd87a3383217335e0dc1e57ed8944f9dfed39d64736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\0\x85W_5`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0XW\x80cm\x14\xA9\x87\x14a\x013W\x80cn\xFBF6\x14a\x01ZW\x80c\xB9\x8D\t\x08\x14a\x01{W\x80c\xDF\\\xF7#\x14a\x01\x97W__\xFD[\x80c\x17\x1F\x1D[\x14a\0\x89W\x80cAl~^\x14a\0\xB8W\x80c]\xF4YF\x14a\0\xCDW\x80ch0H5\x14a\x01\x0CW[__\xFD[a\0\x9Ca\0\x976`\x04a\x1E\xFEV[a\x01\xBEV[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCBa\0\xC66`\x04a\x1FLV[a\x03@V[\0[a\0\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[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xAFV[a\0\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\0\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\x01ma\x01h6`\x04a\"2V[a\x04\xB7V[`@Qa\0\xAF\x92\x91\x90a#$V[_Ta\x01\x87\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xAFV[a\0\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[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x02\x01Wa\x02\x01a#lV[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x02%Wa\x02%a#lV[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x02AWa\x02Aa#lV[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x02\x9E\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 _\x1Ca\x02\xC0\x91\x90a#\x80V[\x90Pa\x032a\x02\xD9a\x02\xD2\x88\x84a\x13\x81V[\x86\x90a\x14\x10V[a\x02\xE1a\x14\xA3V[a\x03(a\x03\x19\x85a\x03\x13`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a\x13\x81V[a\x03\"\x8Ca\x15cV[\x90a\x14\x10V[\x88b\x01\xD4\xC0a\x15\xEDV[\x90\x98\x90\x97P\x95PPPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x03\x9CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xC0\x91\x90a#\x9FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x04qW`@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[_\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[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x05.W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04hV[`@\x83\x01QQ\x85\x14\x80\x15a\x05FWP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x05VWP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x05fWP`\xE0\x83\x01QQ\x85\x14[a\x05\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\x04hV[\x82QQ` \x84\x01QQ\x14a\x06FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a%g_9_Q\x90_R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x04hV[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x06\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\x04hV[`@\x80Q\x80\x82\x01\x82R_\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\xF4Wa\x06\xF4a\x1D\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x1DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07;Wa\x07;a\x1D\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07dW\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\x07\x98Wa\x07\x98a\x1D\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xE1Wa\x07\xE1a\x1D\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\nW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\x08\xD8\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_\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\xAFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD3\x91\x90a#\xC5V[a\x18\x01V[\x90P_[\x87` \x01QQ\x81\x10\x15a\x0B_Wa\t \x88` \x01Q\x82\x81Q\x81\x10a\t\x02Wa\t\x02a#lV[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\t6Wa\t6a#lV[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\t\xF3W` \x83\x01Qa\tW`\x01\x83a#\xF9V[\x81Q\x81\x10a\tgWa\tga#lV[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\t\x87Wa\t\x87a#lV[` \x02` \x01\x01Q_\x1C\x11a\t\xF3W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\x04hV[\x7F\0\0\0\0\0\0\0\0\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\n8Wa\n8a#lV[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\nVWa\nVa#lV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x93\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\xAEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD2\x91\x90a$\x0CV[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\n\xF0Wa\n\xF0a#lV[` \x02` \x01\x01\x81\x81RPPa\x0BUa\x02\xD2a\x0B)\x84\x86_\x01Q\x85\x81Q\x81\x10a\x0B\x1BWa\x0B\x1Ba#lV[` \x02` \x01\x01Q\x16a\x18\x93V[\x8A` \x01Q\x84\x81Q\x81\x10a\x0B?Wa\x0B?a#lV[` \x02` \x01\x01Qa\x18\xBD\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\x08\xDCV[PPa\x0Bj\x83a\x19\x9EV[_\x80T\x91\x94P`\xFF\x90\x91\x16\x90\x81a\x0B\x81W_a\x0C\x01V[\x7F\0\0\0\0\0\0\0\0\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\x0B\xDDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x01\x91\x90a$2V[\x90P_[\x8A\x81\x10\x15a\x12TW\x82\x15a\r]W\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\x0C\\Wa\x0C\\a#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\x0C\x9AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xBE\x91\x90a$2V[a\x0C\xC8\x91\x90a$IV[\x11a\r]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\x04hV[\x7F\0\0\0\0\0\0\0\0\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\x9EWa\r\x9Ea#lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\r\xC2Wa\r\xC2a#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\x0E\x1CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E@\x91\x90a$\\V[`\x01`\x01`@\x1B\x03\x19\x16a\x0Ec\x8A`@\x01Q\x83\x81Q\x81\x10a\t\x02Wa\t\x02a#lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0E\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R_Q` a%g_9_Q\x90_R`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\x04hV[a\x0F.\x89`@\x01Q\x82\x81Q\x81\x10a\x0F\x17Wa\x0F\x17a#lV[` \x02` \x01\x01Q\x87a\x14\x10\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\x0FqWa\x0Fqa#lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x0F\x95Wa\x0F\x95a#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\x0F\xEFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\x13\x91\x90a$\x84V[\x85` \x01Q\x82\x81Q\x81\x10a\x10)Wa\x10)a#lV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x10UWa\x10Ua#lV[` \x02` \x01\x01Q\x85_\x01Q\x82\x81Q\x81\x10a\x10rWa\x10ra#lV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x8A` \x01QQ\x81\x10\x15a\x12JWa\x10\xE0\x86_\x01Q\x82\x81Q\x81\x10a\x10\xB2Wa\x10\xB2a#lV[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x10\xCCWa\x10\xCCa#lV[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x12BW\x7F\0\0\0\0\0\0\0\0\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#lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x11JWa\x11Ja#lV[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x11hWa\x11ha#lV[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x11\x81Wa\x11\x81a#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\x11\xE3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x07\x91\x90a$\x84V[\x87Q\x80Q\x85\x90\x81\x10a\x12\x1BWa\x12\x1Ba#lV[` \x02` \x01\x01\x81\x81Qa\x12/\x91\x90a$\xAAV[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\x10\x8DV[PP`\x01\x01a\x0C\x05V[PPP__a\x12m\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x01\xBEV[\x91P\x91P\x81a\x12\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x04hV[\x80a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R_Q` a%g_9_Q\x90_R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04hV[PP_\x87\x82` \x01Q`@Q` \x01a\x13W\x92\x91\x90a$\xC9V[`@\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_\x80\x82R` \x82\x01Ra\x13\x9Ca\x1C\xDBV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\xCAW\xFE[P\x80a\x14\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04hV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x14+a\x1C\xF9V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x14eW\xFE[P\x80a\x14\x08W`@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\x04hV[a\x14\xABa\x1D\x17V[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_\x80\x82R` \x82\x01R_\x80\x80a\x15\x90_Q` a%G_9_Q\x90_R\x86a#\x80V[\x90P[a\x15\x9C\x81a\x1A4V[\x90\x93P\x91P_Q` a%G_9_Q\x90_R\x82\x83\t\x83\x03a\x15\xD4W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a%G_9_Q\x90_R`\x01\x82\x08\x90Pa\x15\x93V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a\x16\x1Ea\x1D`\x80\x84\x01\x82a\"\xE1V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra#[\x82\x82a\"\xE1V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a#\x9AWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_` \x82\x84\x03\x12\x15a#\xAFW__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x18\x8AW__\xFD[_` \x82\x84\x03\x12\x15a#\xD5W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x18\x8AW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x18\x8DWa\x18\x8Da#\xE5V[_` \x82\x84\x03\x12\x15a$\x1CW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x18\x8AW__\xFD[_` \x82\x84\x03\x12\x15a$BW__\xFD[PQ\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x18\x8DWa\x18\x8Da#\xE5V[_` \x82\x84\x03\x12\x15a$lW__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x18\x8AW__\xFD[_` \x82\x84\x03\x12\x15a$\x94W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x18\x8AW__\xFD[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x18\x8DWa\x18\x8Da#\xE5V[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a%\x03W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a$\xE5V[P\x91\x96\x95PPPPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x18\x8DWa\x18\x8Da#\xE5V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a%=Wa%=a#\xE5V[`\x01\x01\x92\x91PPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \x82\x02^\xD7e\x1B\xB9\x95\xA6\xA4\xE7\x07\"\xCD\x87\xA382\x173^\r\xC1\xE5~\xD8\x94O\x9D\xFE\xD3\x9DdsolcC\0\x08\x1B\x003", + ); + /**Event with signature `StaleStakesForbiddenUpdate(bool)` and selector `0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc`. + ```solidity + event StaleStakesForbiddenUpdate(bool value); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct StaleStakesForbiddenUpdate { + #[allow(missing_docs)] + pub value: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStaleStakesForbiddenReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct staleStakesForbiddenCall {} + ///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct staleStakesForbiddenReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct trySignatureAndApkVerificationReturn { + pub pairingSuccessful: bool, + pub siganatureIsValid: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/deploy/bn254.rs b/crates/utils/src/deploy/bn254.rs new file mode 100644 index 00000000..1531dfe7 --- /dev/null +++ b/crates/utils/src/deploy/bn254.rs @@ -0,0 +1,221 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220686073f59c628f7c740769273b5a70fb3e59db8d7e6571ca0b349a3dd0c0622764736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 h`s\xF5\x9Cb\x8F|t\x07i';Zp\xFB>Y\xDB\x8D~eq\xCA\x0B4\x9A=\xD0\xC0b'dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220686073f59c628f7c740769273b5a70fb3e59db8d7e6571ca0b349a3dd0c0622764736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 h`s\xF5\x9Cb\x8F|t\x07i';Zp\xFB>Y\xDB\x8D~eq\xCA\x0B4\x9A=\xD0\xC0b'dsolcC\0\x08\x1B\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/configsreadwriter.rs b/crates/utils/src/deploy/configsreadwriter.rs similarity index 90% rename from crates/utils/src/configsreadwriter.rs rename to crates/utils/src/deploy/configsreadwriter.rs index 98492f29..44f9212e 100644 --- a/crates/utils/src/configsreadwriter.rs +++ b/crates/utils/src/deploy/configsreadwriter.rs @@ -25,44 +25,54 @@ interface ConfigsReadWriter { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ConfigsReadWriter { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220d5ec627cde6fce34f1f50fa9e130a252a6a025566cbacf476ab94f15e00d123c64736f6c634300080c0033 + ///0x6080604052600c805462ff00ff191662010001179055348015601f575f5ffd5b50608680602b5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063f8ccbf4714602a575b5f5ffd5b600c54603c9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220d2fba5dbd4e5b80cdf7eb2fd03e5209ebe22895f3564b348fad0dedfd78a63f364736f6c634300081b0033 /// ``` #[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\x92\x91\x90a\x06\x9FV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x82\x82\x01\x93\x90\x93R\x90\x82\x01_ \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[_`\x01`\x01`\xA0\x1B\x03\x16_\x83`@Qa\x02\xAE\x91\x90a\x06\xB7V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x14a\x03\x18W`@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_\x83`@Qa\x03(\x91\x90a\x06\xB7V[\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_\x90\x81R`\x01\x90\x91R a\x03o\x83\x82a\x07\x15V[P`\x02\x80T\x90_a\x03\x7F\x83a\x07\xD0V[\x91\x90PUPPPV[`\x03_\x85\x85`@Q` \x01a\x03\x9E\x92\x91\x90a\x06\x9FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01_ _\x01T_\x14a\x03\xCEW__\xFD[`@Q\x80``\x01`@R\x80\x83\x81R` \x01\x82\x81R` \x01\x84\x81RP`\x03_\x86`@Q` \x01a\x03\xFD\x91\x90a\x06\xB7V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x82\x82\x01\x93\x90\x93R\x90\x82\x01_ \x83Q\x81U\x90\x83\x01Q`\x01\x82\x01U\x91\x01Q`\x02\x90\x91\x01UPPPPV[_` \x82\x84\x03\x12\x15a\x04OW__\xFD[P5\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x04\xAEW__\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xC8Wa\x04\xC8a\x04\x8BV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xF7Wa\x04\xF7a\x04\x8BV[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a\x05\x0EW__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x05;W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05QW__\xFD[a\x05]\x85\x82\x86\x01a\x04\x9FV[\x95` \x94\x90\x94\x015\x94PPPPV[__`@\x83\x85\x03\x12\x15a\x05}W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\x93W__\xFD[a\x05\x9F\x85\x82\x86\x01a\x04\x9FV[\x92PP` \x83\x015`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05\xBBW__\xFD[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x05\xD6W__\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\xECW__\xFD[a\x05\xF8\x84\x82\x85\x01a\x04\x9FV[\x94\x93PPPPV[____`\x80\x85\x87\x03\x12\x15a\x06\x13W__\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06)W__\xFD[a\x065\x87\x82\x88\x01a\x04\x9FV[\x97` \x87\x015\x97P`@\x87\x015\x96``\x015\x95P\x93PPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x06dW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x06\x82WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a\x06\xAA\x82\x85a\x06\x88V[\x92\x83RPP` \x01\x91\x90PV[_a\x06\xC2\x82\x84a\x06\x88V[\x93\x92PPPV[`\x1F\x82\x11\x15a\x07\x10W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x06\xEEWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x07\rW_\x81U`\x01\x01a\x06\xFAV[PP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07/Wa\x07/a\x04\x8BV[a\x07C\x81a\x07=\x84Ta\x06PV[\x84a\x06\xC9V[` `\x1F\x82\x11`\x01\x81\x14a\x07uW_\x83\x15a\x07^WP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\x07\rV[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x07\xA4W\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x07\x84V[P\x84\x82\x10\x15a\x07\xC1W\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[_`\x01\x82\x01a\x07\xEDWcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xA0\xEE\x86\\\x19\x7FB\xC3\x8F\xC0!F\xF0\xB5h$\xAD\xFE\x93=\xDD\x88\xCDP\t^-G9\x11P^dsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637fafbbdd1161005b5780637fafbbdd146100ee5780638736381a1461011d5780638c5b838514610134578063acd5baa21461018057600080fd5b80633ca6bb92146100825780636842109e146100ab5780637f3c2c28146100d9575b600080fd5b6100956100903660046104f7565b610193565b6040516100a29190610540565b60405180910390f35b6100be6100b9366004610616565b61022d565b604080519384526020840192909252908201526060016100a2565b6100ec6100e736600461065b565b6102a2565b005b6100be6100fc3660046104f7565b60036020526000908152604090208054600182015460029092015490919083565b61012660025481565b6040519081526020016100a2565b6101686101423660046106b9565b80516020818301810180516000825292820191909301209152546001600160a01b031681565b6040516001600160a01b0390911681526020016100a2565b6100ec61018e3660046106f6565b6103a0565b600160205260009081526040902080546101ac9061074a565b80601f01602080910402602001604051908101604052809291908181526020018280546101d89061074a565b80156102255780601f106101fa57610100808354040283529160200191610225565b820191906000526020600020905b81548152906001019060200180831161020857829003601f168201915b505050505081565b60008060008060036000878760405160200161024a929190610785565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208251606081018452815480825260018301549382018490526002909201549301839052955093509150509250925092565b60006001600160a01b03166000836040516102bd91906107a7565b908152604051908190036020019020546001600160a01b0316146103275760405162461bcd60e51b815260206004820152601b60248201527f636f6e747261637420616c726561647920726567697374657265640000000000604482015260640160405180910390fd5b8060008360405161033891906107a7565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b0394909416939093179092556002546000908152600182529190912083516103869285019061045e565b5060028054906000610397836107c3565b91905055505050565b6003600085856040516020016103b7929190610785565b604051602081830303815290604052805190602001208152602001908152602001600020600001546000146103eb57600080fd5b604051806060016040528083815260200182815260200184815250600360008660405160200161041b91906107a7565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208351815590830151600182015591015160029091015550505050565b82805461046a9061074a565b90600052602060002090601f01602090048101928261048c57600085556104d2565b82601f106104a557805160ff19168380011785556104d2565b828001600101855582156104d2579182015b828111156104d25782518255916020019190600101906104b7565b506104de9291506104e2565b5090565b5b808211156104de57600081556001016104e3565b60006020828403121561050957600080fd5b5035919050565b60005b8381101561052b578181015183820152602001610513565b8381111561053a576000848401525b50505050565b602081526000825180602084015261055f816040850160208701610510565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261059a57600080fd5b813567ffffffffffffffff808211156105b5576105b5610573565b604051601f8301601f19908116603f011681019082821181831017156105dd576105dd610573565b816040528381528660208588010111156105f657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561062957600080fd5b823567ffffffffffffffff81111561064057600080fd5b61064c85828601610589565b95602094909401359450505050565b6000806040838503121561066e57600080fd5b823567ffffffffffffffff81111561068557600080fd5b61069185828601610589565b92505060208301356001600160a01b03811681146106ae57600080fd5b809150509250929050565b6000602082840312156106cb57600080fd5b813567ffffffffffffffff8111156106e257600080fd5b6106ee84828501610589565b949350505050565b6000806000806080858703121561070c57600080fd5b843567ffffffffffffffff81111561072357600080fd5b61072f87828801610589565b97602087013597506040870135966060013595509350505050565b600181811c9082168061075e57607f821691505b6020821081141561077f57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351610797818460208801610510565b9190910191825250602001919050565b600082516107b9818460208701610510565b9190910192915050565b60006000198214156107e557634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122089157e890af6e8b77edbdff673557bf07f0d01ea7e96dfd51b2d23aa3a6cc6d864736f6c634300080c0033 + ///0x608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80637fafbbdd116100585780637fafbbdd146100ea5780638736381a146101185780638c5b83851461012f578063acd5baa21461017a575f5ffd5b80633ca6bb921461007e5780636842109e146100a75780637f3c2c28146100d5575b5f5ffd5b61009161008c36600461043f565b61018d565b60405161009e9190610456565b60405180910390f35b6100ba6100b536600461052a565b610224565b6040805193845260208401929092529082015260600161009e565b6100e86100e336600461056c565b610295565b005b6100ba6100f836600461043f565b60036020525f908152604090208054600182015460029092015490919083565b61012160025481565b60405190815260200161009e565b61016261013d3660046105c6565b80516020818301810180515f825292820191909301209152546001600160a01b031681565b6040516001600160a01b03909116815260200161009e565b6100e8610188366004610600565b610388565b60016020525f9081526040902080546101a590610650565b80601f01602080910402602001604051908101604052809291908181526020018280546101d190610650565b801561021c5780601f106101f35761010080835404028352916020019161021c565b820191905f5260205f20905b8154815290600101906020018083116101ff57829003601f168201915b505050505081565b5f5f5f5f60035f878760405160200161023e92919061069f565b60408051601f1981840301815291815281516020928301208352828201939093529082015f208251606081018452815480825260018301549382018490526002909201549301839052955093509150509250925092565b5f6001600160a01b03165f836040516102ae91906106b7565b908152604051908190036020019020546001600160a01b0316146103185760405162461bcd60e51b815260206004820152601b60248201527f636f6e747261637420616c726561647920726567697374657265640000000000604482015260640160405180910390fd5b805f8360405161032891906106b7565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b0394909416939093179092556002545f90815260019091522061036f8382610715565b5060028054905f61037f836107d0565b91905055505050565b60035f858560405160200161039e92919061069f565b6040516020818303038152906040528051906020012081526020019081526020015f205f01545f146103ce575f5ffd5b60405180606001604052808381526020018281526020018481525060035f866040516020016103fd91906106b7565b60408051601f1981840301815291815281516020928301208352828201939093529082015f208351815590830151600182015591015160029091015550505050565b5f6020828403121561044f575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126104ae575f5ffd5b813567ffffffffffffffff8111156104c8576104c861048b565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156104f7576104f761048b565b60405281815283820160200185101561050e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561053b575f5ffd5b823567ffffffffffffffff811115610551575f5ffd5b61055d8582860161049f565b95602094909401359450505050565b5f5f6040838503121561057d575f5ffd5b823567ffffffffffffffff811115610593575f5ffd5b61059f8582860161049f565b92505060208301356001600160a01b03811681146105bb575f5ffd5b809150509250929050565b5f602082840312156105d6575f5ffd5b813567ffffffffffffffff8111156105ec575f5ffd5b6105f88482850161049f565b949350505050565b5f5f5f5f60808587031215610613575f5ffd5b843567ffffffffffffffff811115610629575f5ffd5b6106358782880161049f565b97602087013597506040870135966060013595509350505050565b600181811c9082168061066457607f821691505b60208210810361068257634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b5f6106aa8285610688565b9283525050602001919050565b5f6106c28284610688565b9392505050565b601f82111561071057805f5260205f20601f840160051c810160208510156106ee5750805b601f840160051c820191505b8181101561070d575f81556001016106fa565b50505b505050565b815167ffffffffffffffff81111561072f5761072f61048b565b6107438161073d8454610650565b846106c9565b6020601f821160018114610775575f831561075e5750848201515b5f19600385901b1c1916600184901b17845561070d565b5f84815260208120601f198516915b828110156107a45787850151825560209485019460019092019101610784565b50848210156107c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f600182016107ed57634e487b7160e01b5f52601160045260245ffd5b506001019056fea2646970667358221220a0ee865c197f42c38fc02146f0b56824adfe933ddd88cd50095e2d473911505e64736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0zW_5`\xE0\x1C\x80c\x7F\xAF\xBB\xDD\x11a\0XW\x80c\x7F\xAF\xBB\xDD\x14a\0\xEAW\x80c\x8768\x1A\x14a\x01\x18W\x80c\x8C[\x83\x85\x14a\x01/W\x80c\xAC\xD5\xBA\xA2\x14a\x01zW__\xFD[\x80c<\xA6\xBB\x92\x14a\0~W\x80chB\x10\x9E\x14a\0\xA7W\x80c\x7F<,(\x14a\0\xD5W[__\xFD[a\0\x91a\0\x8C6`\x04a\x04?V[a\x01\x8DV[`@Qa\0\x9E\x91\x90a\x04VV[`@Q\x80\x91\x03\x90\xF3[a\0\xBAa\0\xB56`\x04a\x05*V[a\x02$V[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\0\x9EV[a\0\xE8a\0\xE36`\x04a\x05lV[a\x02\x95V[\0[a\0\xBAa\0\xF86`\x04a\x04?V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x82\x01T`\x02\x90\x92\x01T\x90\x91\x90\x83V[a\x01!`\x02T\x81V[`@Q\x90\x81R` \x01a\0\x9EV[a\x01ba\x01=6`\x04a\x05\xC6V[\x80Q` \x81\x83\x01\x81\x01\x80Q_\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\x9EV[a\0\xE8a\x01\x886`\x04a\x06\0V[a\x03\x88V[`\x01` R_\x90\x81R`@\x90 \x80Ta\x01\xA5\x90a\x06PV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xD1\x90a\x06PV[\x80\x15a\x02\x1CW\x80`\x1F\x10a\x01\xF3Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\x1CV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01\xFFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[____`\x03_\x87\x87`@Q` \x01a\x02>\x92\x91\x90a\x06\x9FV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x82\x82\x01\x93\x90\x93R\x90\x82\x01_ \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[_`\x01`\x01`\xA0\x1B\x03\x16_\x83`@Qa\x02\xAE\x91\x90a\x06\xB7V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x14a\x03\x18W`@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_\x83`@Qa\x03(\x91\x90a\x06\xB7V[\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_\x90\x81R`\x01\x90\x91R a\x03o\x83\x82a\x07\x15V[P`\x02\x80T\x90_a\x03\x7F\x83a\x07\xD0V[\x91\x90PUPPPV[`\x03_\x85\x85`@Q` \x01a\x03\x9E\x92\x91\x90a\x06\x9FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01_ _\x01T_\x14a\x03\xCEW__\xFD[`@Q\x80``\x01`@R\x80\x83\x81R` \x01\x82\x81R` \x01\x84\x81RP`\x03_\x86`@Q` \x01a\x03\xFD\x91\x90a\x06\xB7V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x82\x82\x01\x93\x90\x93R\x90\x82\x01_ \x83Q\x81U\x90\x83\x01Q`\x01\x82\x01U\x91\x01Q`\x02\x90\x91\x01UPPPPV[_` \x82\x84\x03\x12\x15a\x04OW__\xFD[P5\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x04\xAEW__\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xC8Wa\x04\xC8a\x04\x8BV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xF7Wa\x04\xF7a\x04\x8BV[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a\x05\x0EW__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x05;W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05QW__\xFD[a\x05]\x85\x82\x86\x01a\x04\x9FV[\x95` \x94\x90\x94\x015\x94PPPPV[__`@\x83\x85\x03\x12\x15a\x05}W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\x93W__\xFD[a\x05\x9F\x85\x82\x86\x01a\x04\x9FV[\x92PP` \x83\x015`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05\xBBW__\xFD[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x05\xD6W__\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\xECW__\xFD[a\x05\xF8\x84\x82\x85\x01a\x04\x9FV[\x94\x93PPPPV[____`\x80\x85\x87\x03\x12\x15a\x06\x13W__\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06)W__\xFD[a\x065\x87\x82\x88\x01a\x04\x9FV[\x97` \x87\x015\x97P`@\x87\x015\x96``\x015\x95P\x93PPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x06dW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x06\x82WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a\x06\xAA\x82\x85a\x06\x88V[\x92\x83RPP` \x01\x91\x90PV[_a\x06\xC2\x82\x84a\x06\x88V[\x93\x92PPPV[`\x1F\x82\x11\x15a\x07\x10W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x06\xEEWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x07\rW_\x81U`\x01\x01a\x06\xFAV[PP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07/Wa\x07/a\x04\x8BV[a\x07C\x81a\x07=\x84Ta\x06PV[\x84a\x06\xC9V[` `\x1F\x82\x11`\x01\x81\x14a\x07uW_\x83\x15a\x07^WP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\x07\rV[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x07\xA4W\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x07\x84V[P\x84\x82\x10\x15a\x07\xC1W\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[_`\x01\x82\x01a\x07\xEDWcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xA0\xEE\x86\\\x19\x7FB\xC3\x8F\xC0!F\xF0\xB5h$\xAD\xFE\x93=\xDD\x88\xCDP\t^-G9\x11P^dsolcC\0\x08\x1B\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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -335,16 +345,21 @@ pub mod ContractsRegistry { ```solidity function contractCount() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct contractCountCall {} ///Container type for the return parameters of the [`contractCount()`](contractCountCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct contractCountReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -440,18 +455,23 @@ pub mod ContractsRegistry { ```solidity function contractNames(uint256) external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct contractNamesReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -551,18 +571,23 @@ pub mod ContractsRegistry { ```solidity function contracts(string memory) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct contractsReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -662,21 +687,26 @@ pub mod ContractsRegistry { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -807,17 +837,22 @@ pub mod ContractsRegistry { ```solidity function registerContract(string memory name, address _contract) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerContractReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -932,7 +967,7 @@ pub mod ContractsRegistry { ```solidity function store_test(string memory test_name, int256 index, uint256 timestamp, uint256 block_number) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct store_testCall { pub test_name: alloy::sol_types::private::String, @@ -941,10 +976,15 @@ pub mod ContractsRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct store_testReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/deploy/deploymockavs.rs b/crates/utils/src/deploy/deploymockavs.rs new file mode 100644 index 00000000..cd415922 --- /dev/null +++ b/crates/utils/src/deploy/deploymockavs.rs @@ -0,0 +1,2786 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod DeployMockAvs { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff191662010001179055348015601f575f5ffd5b50620163da806200002f5f395ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c80638b2c69eb11610093578063c040622611610063578063c040622614610207578063e18272c214610211578063e3a8b34514610224578063f8ccbf4714610237575f5ffd5b80638b2c69eb146101bb5780638c4f9b50146101ce5780639e3ba437146101e15780639e9923c2146101f4575f5ffd5b80635df45946116100ce5780635df459461461016f57806368304835146101825780636d14a9871461019557806380e064d4146101a8575f5ffd5b80630331ed2a146100ff578063346675641461013657806339a5fcfa146101495780634ca22c3f1461015c575b5f5ffd5b600c5461011990630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b601954610119906001600160a01b031681565b600f54610119906001600160a01b031681565b601654610119906001600160a01b031681565b601054610119906001600160a01b031681565b601454610119906001600160a01b031681565b600e54610119906001600160a01b031681565b600d54610119906001600160a01b031681565b601354610119906001600160a01b031681565b601854610119906001600160a01b031681565b601154610119906001600160a01b031681565b601254610119906001600160a01b031681565b61020f61025a565b005b601554610119906001600160a01b031681565b601754610119906001600160a01b031681565b600c5461024a9062010000900460ff1681565b604051901515815260200161012d565b735fbdb2315678afecb367f032d93f642f64180aa35f610278610807565b90505f6102a96040518060400160405280600d81526020016c6f70735f61646472657373657360981b815250610a7b565b90505f516020620163855f395f51905f525f1c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156102f3575f5ffd5b505af1158015610305573d5f5f3e3d5ffd5b505050506040516103159061203f565b604051809103905ff08015801561032e573d5f5f3e3d5ffd5b50601780546001600160a01b0319166001600160a01b039290921691909117905560405161035b9061204c565b604051809103905ff080158015610374573d5f5f3e3d5ffd5b50600c80546301000000600160b81b03191663010000006001600160a01b0393841681029190911791829055601754604051908416939190920416906103b99061205a565b6103c49291906120ca565b604051809103905ff0801580156103dd573d5f5f3e3d5ffd5b50601880546001600160a01b0319166001600160a01b039283169081179091556019545f92610410928692869216610bd0565b9050600e5f9054906101000a90046001600160a01b03168360a001518460c0015160405161043d90612068565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103905ff080158015610476573d5f5f3e3d5ffd5b50601980546001600160a01b039283166001600160a01b03199091168117909155600c5460185485516040805191861660248084019190915281518084039091018152604490920181526020820180516001600160e01b031663189acdbd60e31b17905251639623609d60e01b81526301000000909304851694639623609d9461050a949390911692909190600401612120565b5f604051808303815f87803b158015610521575f5ffd5b505af1158015610533573d5f5f3e3d5ffd5b505060185460408051638da5cb5b60e01b815290515f94506001600160a01b039092169250638da5cb5b9160048083019260209291908290030181865afa158015610580573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a4919061214b565b6001600160a01b0316036105f55760405162461bcd60e51b815260206004820152601360248201527213dddb995c881d5b9a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b46617a691480610606575046610539145b156107a357600c5460408051630fe7858560e31b81526004810191909152600a604482015269283937bc3ca0b236b4b760b11b606482015263010000009091046001600160a01b039081166024830152851690637f3c2c28906084015f604051808303815f87803b158015610679575f5ffd5b505af115801561068b573d5f5f3e3d5ffd5b5050505060a083015160408051630fe7858560e31b81526004810191909152600c60448201526b4176734469726563746f727960a01b60648201526001600160a01b03918216602482015290851690637f3c2c28906084015f604051808303815f87803b1580156106fa575f5ffd5b505af115801561070c573d5f5f3e3d5ffd5b50505050602083015160408051630fe7858560e31b815260048101919091526013604482015272656967656e6c6179657250617573657252656760681b60648201526001600160a01b03918216602482015290851690637f3c2c28906084015f604051808303815f87803b158015610782575f5ffd5b505af1158015610794573d5f5f3e3d5ffd5b505050506107a384848361189e565b5f516020620163855f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156107eb575f5ffd5b505af11580156107fd573d5f5f3e3d5ffd5b5050505050505050565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525f6108866040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250611ba8565b90505f6108c8826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e00815250611d8f565b90505f61090a836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c617965725061757365725265670000815250611d8f565b90505f61094c846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e61676572000000000000815250611d8f565b90505f61098685604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b815250611d8f565b90505f6109c8866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f7279000000000000000000815250611d8f565b90505f6109ff87604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b815250611d8f565b90505f610a25886040518060600160405280602581526020016201636060259139611d8f565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a08301525f60c083015290911660e082015292915050565b604080516080810182525f808252602082018190529181018290526060810182905290610aa783611e0a565b9050610ad2604080516080810182525f80825260208201819052918101829052606081019190915290565b610b0682604051806040016040528060128152602001712e636f6d6d756e6974794d756c746973696760701b815250611d8f565b6001600160a01b03168152604080518082019091526007815266173830bab9b2b960c91b6020820152610b3a908390611d8f565b81602001906001600160a01b031690816001600160a01b031681525050610b8182604051806040016040528060088152602001671731b43ab93732b960c11b815250611d8f565b6001600160a01b0316604080830191909152805180820190915260088152671732b532b1ba37b960c11b6020820152610bbb908390611d8f565b6001600160a01b031660608201529392505050565b60408051606080820183525f80835260208301819052828401819052835160028082529281019094529192908160200160208202803683370190505090508460200151815f81518110610c2557610c25612185565b60200260200101906001600160a01b031690816001600160a01b031681525050845f015181600181518110610c5c57610c5c612185565b60200260200101906001600160a01b031690816001600160a01b03168152505080855f0151604051610c8d90612076565b610c98929190612199565b604051809103905ff080158015610cb1573d5f5f3e3d5ffd5b50600d80546001600160a01b0319166001600160a01b03928316179055601754600c5460405191831693506301000000900490911690610cf09061205a565b610cfb9291906120ca565b604051809103905ff080158015610d14573d5f5f3e3d5ffd5b50600e80546001600160a01b0319166001600160a01b03928316179055601754600c546040519183169263010000009091041690610d519061205a565b610d5c9291906120ca565b604051809103905ff080158015610d75573d5f5f3e3d5ffd5b50601080546001600160a01b0319166001600160a01b03928316179055601754600c546040519183169263010000009091041690610db29061205a565b610dbd9291906120ca565b604051809103905ff080158015610dd6573d5f5f3e3d5ffd5b50601280546001600160a01b0319166001600160a01b03928316179055601754600c546040519183169263010000009091041690610e139061205a565b610e1e9291906120ca565b604051809103905ff080158015610e37573d5f5f3e3d5ffd5b50601480546001600160a01b0319166001600160a01b0392909216919091179055604051610e6490612084565b604051809103905ff080158015610e7d573d5f5f3e3d5ffd5b50601680546001600160a01b0319166001600160a01b03928316179055600e54604051911690610eac90612092565b6001600160a01b039091168152602001604051809103905ff080158015610ed5573d5f5f3e3d5ffd5b50601180546001600160a01b0319166001600160a01b03928316908117909155600c5460105460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec4906044015f604051808303815f87803b158015610f43575f5ffd5b505af1158015610f55573d5f5f3e3d5ffd5b5050600e546040516001600160a01b039091169250610f7491506120a0565b6001600160a01b039091168152602001604051809103905ff080158015610f9d573d5f5f3e3d5ffd5b50601380546001600160a01b0319166001600160a01b03928316908117909155600c5460125460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec4906044015f604051808303815f87803b15801561100b575f5ffd5b505af115801561101d573d5f5f3e3d5ffd5b5050600e5460608801516040516001600160a01b0390921693509150611042906120ae565b6001600160a01b03928316815291166020820152604001604051809103905ff080158015611072573d5f5f3e3d5ffd5b50601580546001600160a01b0319166001600160a01b03928316908117909155600c5460145460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec4906044015f604051808303815f87803b1580156110e0575f5ffd5b505af11580156110f2573d5f5f3e3d5ffd5b50506014546010546012546040518895506001600160a01b03938416945091831692169061111f906120bc565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103905ff080158015611160573d5f5f3e3d5ffd5b50600f80546001600160a01b0319166001600160a01b0392909216919091179055604080515f808252602082019092528190816111c3565b604080516060810182525f80825260208083018290529282015282525f199092019101816111985790505b5090505f5b8281101561121757604080516060810182526127108152613a986020820152606491810191909152825183908390811061120457611204612185565b60209081029190910101526001016111c8565b505f8267ffffffffffffffff81111561123257611232612171565b60405190808252806020026020018201604052801561125b578160200160208202803683370190505b5090505f8367ffffffffffffffff81111561127857611278612171565b6040519080825280602002602001820160405280156112ab57816020015b60608152602001906001900390816112965790505b509050600c60039054906101000a90046001600160a01b03166001600160a01b0316639623609d600e5f9054906101000a90046001600160a01b0316600f5f9054906101000a90046001600160a01b031663dd8283f360e01b8c5f01518d604001518e606001518f602001515f8c8c8c6040516024016113329897969594939291906122e8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b9092168252611379939291600401612120565b5f604051808303815f87803b158015611390575f5ffd5b505af11580156113a2573d5f5f3e3d5ffd5b5050600e5460408051638da5cb5b60e01b815290515f98506001600160a01b039092169650638da5cb5b955060048082019550602094509192508290030181865afa1580156113f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611417919061214b565b6001600160a01b0316036114635760405162461bcd60e51b815260206004820152601360248201527213dddb995c881d5b9a5b9a5d1a585b1a5e9959606a1b60448201526064016105ec565b604080518082018252600d81526c1c185c995b9d081bd89a9958dd609a1b60208083019190915282518084018452600981526861646472657373657360b81b91810191909152600c549251634b96303160e11b8152919290915f516020620163405f395f51905f529163972c6062916114f291859163010000009091046001600160a01b0316906004016123bb565b5f604051808303815f875af115801561150d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115349190810190612408565b50604051634b96303160e11b81525f516020620163405f395f51905f529063972c60629061156890849089906004016124bb565b5f604051808303815f875af1158015611583573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115aa9190810190612408565b50604051634b96303160e11b81525f516020620163405f395f51905f529063972c6062906115de9084908890600401612519565b5f604051808303815f875af11580156115f9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116209190810190612408565b50600e54604051634b96303160e11b81525f516020620163405f395f51905f529163972c6062916116619185916001600160a01b0390911690600401612585565b5f604051808303815f875af115801561167c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116a39190810190612408565b50600f54604051634b96303160e11b81525f516020620163405f395f51905f529163972c6062916116e49185916001600160a01b03909116906004016125db565b5f604051808303815f875af11580156116ff573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117269190810190612408565b50601654604051634b96303160e11b81525f915f516020620163405f395f51905f529163972c6062916117679186916001600160a01b031690600401612645565b5f604051808303815f875af1158015611782573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117a99190810190612408565b6040516388da6d3560e01b81529091505f905f516020620163405f395f51905f52906388da6d35906117e39087908790879060040161269e565b5f604051808303815f875af11580156117fe573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526118259190810190612408565b9050611866816040518060400160405280601981526020017f6d6f636b6176735f6465706c6f796d656e745f6f757470757400000000000000815250611e8f565b5050604080516060810182526001600160a01b039687168152600e548716602082015260165490961690860152509295945050505050565b8051604051630fe7858560e31b81526001600160a01b03851691637f3c2c28916118cb91906004016126e0565b5f604051808303815f87803b1580156118e2575f5ffd5b505af11580156118f4573d5f5f3e3d5ffd5b50505050602081015160408051630fe7858560e31b81526004810191909152601a60448201527f6d6f636b4176735265676973747279436f6f7264696e61746f7200000000000060648201526001600160a01b03918216602482015290841690637f3c2c28906084015f604051808303815f87803b158015611974575f5ffd5b505af1158015611986573d5f5f3e3d5ffd5b505050506040818101518151630fe7858560e31b81526004810192909252601d60448301527f6d6f636b4176734f70657261746f72537461746552657472696576657200000060648301526001600160a01b039081166024830152841690637f3c2c28906084015f604051808303815f87803b158015611a04575f5ffd5b505af1158015611a16573d5f5f3e3d5ffd5b50505050606082015160408051630fe7858560e31b8152600481019190915260116044820152703232b632b3b0ba34b7b726b0b730b3b2b960791b60648201526001600160a01b03918216602482015290841690637f3c2c28906084015f604051808303815f87803b158015611a8a575f5ffd5b505af1158015611a9c573d5f5f3e3d5ffd5b505050506040828101518151630fe7858560e31b81526004810192909252600f60448301526e39ba3930ba32b3bca6b0b730b3b2b960891b60648301526001600160a01b039081166024830152841690637f3c2c28906084015f604051808303815f87803b158015611b0c575f5ffd5b505af1158015611b1e573d5f5f3e3d5ffd5b5050505060a082015160408051630fe7858560e31b81526004810191909152600c60448201526b6176734469726563746f727960a01b60648201526001600160a01b03918216602482015290841690637f3c2c28906084015f604051808303815f87803b158015611b8d575f5ffd5b505af1158015611b9f573d5f5f3e3d5ffd5b50505050505050565b60605f5f516020620163855f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015611bf6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c1d9190810190612408565b604051602001611c2d9190612745565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f905f516020620163405f395f51905f5290636900a3ae906024015f60405180830381865afa158015611c85573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611cac9190810190612408565b604051602001611cbc919061276f565b60405160208183030381529060405290505f84604051602001611cdf919061278b565b60408051601f198184030181529082905291505f516020620163405f395f51905f52906360f9bb1190611d1a908690869086906020016127ab565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611d4591906127c8565b5f60405180830381865afa158015611d5f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d869190810190612408565b95945050505050565b604051631e19e65760e01b81525f905f516020620163405f395f51905f5290631e19e65790611dc490869086906004016127da565b602060405180830381865afa158015611ddf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e03919061214b565b9392505050565b60605f5f516020620163855f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015611e58573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e7f9190810190612408565b604051602001611c2d91906127fe565b5f5f516020620163855f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015611edb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f029190810190612408565b604051602001611f129190612745565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f905f516020620163405f395f51905f5290636900a3ae906024015f60405180830381865afa158015611f6a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f919190810190612408565b604051602001611fa1919061276f565b60405160208183030381529060405290505f828285604051602001611fc893929190612827565b60408051601f198184030181529082905263e23cd19f60e01b825291505f516020620163405f395f51905f529063e23cd19f9061200b90889085906004016127da565b5f604051808303815f87803b158015612022575f5ffd5b505af1158015612034573d5f5f3e3d5ffd5b505050505050505050565b608d806200285083390190565b6106c880620028dd83390190565b610cf28062002fa583390190565b613c2c8062003c9783390190565b61073680620078c383390190565b6119538062007ff983390190565b611fd6806200994c83390190565b61133e806200b92283390190565b613792806200cc6083390190565b615f4e80620103f283390190565b6001600160a01b039283168152911660208201526060604082018190525f9082015260800190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038481168252831660208201526060604082018190525f90611d86908301846120f2565b5f6020828403121561215b575f5ffd5b81516001600160a01b0381168114611e03575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b604080825283519082018190525f9060208501906060840190835b818110156121db5783516001600160a01b03168352602093840193909201916001016121b4565b50506001600160a01b039490941660209390930192909252509092915050565b5f8151808452602084019350602083015f5b828110156122395781516bffffffffffffffffffffffff1686526020958601959091019060010161220d565b5093949350505050565b5f82825180855260208501945060208160051b830101602085015f5b838110156122dc57848303601f19018852815180518085526020918201918501905f5b818110156122c357835180516001600160a01b031684526020908101516bffffffffffffffffffffffff168185015290930192604090920191600101612282565b50506020998a019990945092909201915060010161225f565b50909695505050505050565b6001600160a01b0389811682528881166020808401919091528882166040840152908716606083015260ff8616608083015261010060a0830181905285519083018190525f9161012084019183918801825b8281101561238257815163ffffffff815116865261ffff602082015116602087015261ffff60408201511660408701525060608501945060208201915060018101905061233a565b5050505082810360c084015261239881866121fb565b905082810360e08401526123ac8185612243565b9b9a5050505050505050505050565b606081525f6123cd60608301856120f2565b828103602080850191909152600a825269383937bc3ca0b236b4b760b11b908201526001600160a01b03939093166040928301525001919050565b5f60208284031215612418575f5ffd5b815167ffffffffffffffff81111561242e575f5ffd5b8201601f8101841361243e575f5ffd5b805167ffffffffffffffff81111561245857612458612171565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561248757612487612171565b60405281815282820160200186101561249e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b606081525f6124cd60608301856120f2565b828103602084015261250181601581527436b7b1b5a0bb39a9b2b93b34b1b2a6b0b730b3b2b960591b602082015260400190565b91505060018060a01b03831660408301529392505050565b606081525f61252b60608301856120f2565b8281036020840152602381527f6d6f636b417673536572766963654d616e61676572496d706c656d656e74617460208201526234b7b760e91b60408201526060810191505060018060a01b03831660408301529392505050565b606081525f61259760608301856120f2565b82810360208085019190915260138252723932b3b4b9ba393ca1b7b7b93234b730ba37b960691b908201526001600160a01b03939093166040928301525001919050565b606081525f6125ed60608301856120f2565b8281036020840152602181527f7265676973747279436f6f7264696e61746f72496d706c656d656e746174696f6020820152603760f91b60408201526060810191505060018060a01b03831660408301529392505050565b606081525f61265760608301856120f2565b828103602080850191909152601682527537b832b930ba37b929ba30ba32a932ba3934b2bb32b960511b908201526001600160a01b03939093166040928301525001919050565b606081525f6126b060608301866120f2565b82810360208401526126c281866120f2565b905082810360408401526126d681856120f2565b9695505050505050565b604081525f61271460408301601581527436b7b1b5a0bb39a9b2b93b34b1b2a6b0b730b3b2b960591b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b5f81518060208401855e5f93019283525090919050565b5f612750828461272e565b6e2f7363726970742f6f75747075742f60881b8152600f019392505050565b5f61277a828461272e565b602f60f81b81526001019392505050565b5f612796828461272e565b64173539b7b760d91b81526005019392505050565b5f611d866127c26127bc848861272e565b8661272e565b8461272e565b602081525f611e0360208301846120f2565b604081525f6127ec60408301856120f2565b8281036020840152611d8681856120f2565b5f612809828461272e565b6d2f7363726970742f696e7075742f60901b8152600e019392505050565b5f6128386127c26127bc848861272e565b64173539b7b760d91b81526005019594505050505056fe6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea264697066735822122011e61fbf0efe20efd2a44429869857506ff0229eaea2d630f1f8234ca75343a064736f6c634300081b00336080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea2646970667358221220a33a09721f70dd6af85c1e18653df74aa9d4c6528611772b1af916455d53b2a764736f6c634300081b00336080604052604051610cf2380380610cf2833981016040819052610022916103b7565b828161002f82825f610043565b5061003b90508261006e565b5050506104d3565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610cab5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610ccb60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610cab5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60606001600160a01b0384163b6102dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101a7565b5f5f856001600160a01b0316856040516102f79190610488565b5f60405180830381855af49150503d805f811461032f576040519150601f19603f3d011682016040523d82523d5f602084013e610334565b606091505b50909250905061034582828661034f565b9695505050505050565b6060831561035e57508161013f565b82511561036e5782518084602001fd5b8160405162461bcd60e51b81526004016101a7919061049e565b80516001600160a01b038116811461039e575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103c9575f5ffd5b6103d284610388565b92506103e060208501610388565b60408501519092506001600160401b038111156103fb575f5ffd5b8401601f8101861361040b575f5ffd5b80516001600160401b03811115610424576104246103a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610452576104526103a3565b604052818152828201602001881015610469575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6107cb806104e05f395ff3fe60806040526004361061004d575f3560e01c80633659cfe6146100645780634f1ef286146100835780635c60da1b146100965780638f283970146100c6578063f851a440146100e55761005c565b3661005c5761005a6100f9565b005b61005a6100f9565b34801561006f575f5ffd5b5061005a61007e36600461068c565b610113565b61005a6100913660046106a5565b61014e565b3480156100a1575f5ffd5b506100aa6101b4565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d1575f5ffd5b5061005a6100e036600461068c565b6101e4565b3480156100f0575f5ffd5b506100aa610204565b610101610224565b61011161010c6102b9565b6102c2565b565b61011b6102e0565b6001600160a01b03163303610146576101438160405180602001604052805f8152505f610312565b50565b6101436100f9565b6101566102e0565b6001600160a01b031633036101ac576101a78383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610312915050565b505050565b6101a76100f9565b5f6101bd6102e0565b6001600160a01b031633036101d9576101d46102b9565b905090565b6101e16100f9565b90565b6101ec6102e0565b6001600160a01b03163303610146576101438161033c565b5f61020d6102e0565b6001600160a01b031633036101d9576101d46102e0565b61022c6102e0565b6001600160a01b031633036101115760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101d4610390565b365f5f375f5f365f845af43d5f5f3e8080156102dc573d5ff35b3d5ffd5b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61031b836103b7565b5f825111806103275750805b156101a75761033683836103f6565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103656102e0565b604080516001600160a01b03928316815291841660208301520160405180910390a161014381610422565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610303565b6103c0816104cb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061041b838360405180606001604052806027815260200161076f6027913961055f565b9392505050565b6001600160a01b0381166104875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b0565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6105385760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102b0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104aa565b60606001600160a01b0384163b6105c75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b0565b5f5f856001600160a01b0316856040516105e19190610723565b5f60405180830381855af49150503d805f8114610619576040519150601f19603f3d011682016040523d82523d5f602084013e61061e565b606091505b509150915061062e828286610638565b9695505050505050565b6060831561064757508161041b565b8251156106575782518084602001fd5b8160405162461bcd60e51b81526004016102b09190610739565b80356001600160a01b0381168114610687575f5ffd5b919050565b5f6020828403121561069c575f5ffd5b61041b82610671565b5f5f5f604084860312156106b7575f5ffd5b6106c084610671565b9250602084013567ffffffffffffffff8111156106db575f5ffd5b8401601f810186136106eb575f5ffd5b803567ffffffffffffffff811115610701575f5ffd5b866020828401011115610712575f5ffd5b939660209190910195509293505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f7d2ab95619bf852f92dbb935d5c89319ed0b12fb24bc310adf12d7325f52fcb64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564610160604052348015610010575f5ffd5b50604051613c2c380380613c2c83398101604081905261002f91610311565b828284856001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610092919061035b565b6001600160a01b0380841660c052828116608052811660a0526100b361023d565b5050506001600160a01b03811660e081905260408051636830483560e01b815290516368304835916004808201926020929091908290030181865afa1580156100fe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610122919061035b565b6001600160a01b0316610100816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610178573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019c919061035b565b6001600160a01b0316610120816001600160a01b031681525050610100516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610219919061035b565b6001600160a01b03166101405250506097805460ff191660011790555061037d9050565b5f54610100900460ff16156102a85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811610156102f8575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461030e575f5ffd5b50565b5f5f5f60608486031215610323575f5ffd5b835161032e816102fa565b602085015190935061033f816102fa565b6040850151909250610350816102fa565b809150509250925092565b5f6020828403121561036b575f5ffd5b8151610376816102fa565b9392505050565b60805160a05160c05160e0516101005161012051610140516137c46104685f395f81816102d4015261116d01525f818161017e015261134901525f81816101bd0152818161151c01526116d101525f818161020a0152818161092d01528181610e5001528181610fe1015261120701525f81816101e1015281816119dd01528181611aac0152611b2601525f8181610682015281816107cd0152818161086101528181611d2d01528181611e9f0152611f3b01525f81816104b701528181610543015281816105c10152818161198901528181611a5001528181611c6d0152611dfd01526137c45ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80638da5cb5b1161009e578063b98d09081161006e578063b98d09081461029f578063c4d66de8146102bc578063df5cf723146102cf578063e481af9d146102f6578063f2fde38b146102fe575f5ffd5b80638da5cb5b146102555780639926ee7d14610266578063a364f4da14610279578063a98fb3551461028c575f5ffd5b806368304835116100e457806368304835146101b85780636b3aa72e146101df5780636d14a987146102055780636efb46361461022c578063715018a61461024d575f5ffd5b8063171f1d5b1461011557806333cfb7b714610144578063416c7e5e146101645780635df4594614610179575b5f5ffd5b610128610123366004612ded565b610311565b6040805192151583529015156020830152015b60405180910390f35b610157610152366004612e4f565b610493565b60405161013b9190612e6a565b610177610172366004612eaa565b61092b565b005b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161013b565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101a0565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b61023f61023a366004613190565b610aa3565b60405161013b929190613282565b61017761196b565b6033546001600160a01b03166101a0565b610177610274366004613322565b61197e565b610177610287366004612e4f565b611a45565b61017761029a3660046133ca565b611b07565b6097546102ac9060ff1681565b604051901515815260200161013b565b6101776102ca366004612e4f565b611b5b565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b610157611c68565b61017761030c366004612e4f565b612001565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f6002811061035457610354613416565b60200201518951600160200201518a602001515f6002811061037857610378613416565b60200201518b6020015160016002811061039457610394613416565b602090810291909101518c518d8301516040516103f19a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c610413919061342a565b905061048561042c610425888461207a565b8690612109565b61043461219c565b61047b61046c856104666040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061207a565b6104758c61225c565b90612109565b886201d4c06122e6565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060915f917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156104fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105209190613449565b60405163871ef04960e01b8152600481018290529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610588573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ac9190613460565b90506001600160c01b038116158061064457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063f9190613486565b60ff16155b1561065f575050604080515f81526020810190915292915050565b5f610672826001600160c01b03166124fa565b90505f805b825181101561073b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106106c1576106c1613416565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610703573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107279190613449565b61073190836134ba565b9150600101610677565b505f816001600160401b0381111561075557610755612c82565b60405190808252806020026020018201604052801561077e578160200160208202803683370190505b5090505f805b845181101561091e575f8582815181106107a0576107a0613416565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610812573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108369190613449565b90505f5b81811015610913576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156108ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d191906134e3565b5f01518686815181106108e6576108e6613416565b6001600160a01b03909216602092830291909101909101528461090881613522565b95505060010161083a565b505050600101610784565b5090979650505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610987573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ab919061353a565b6001600160a01b0316336001600160a01b031614610a5c5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60408051808201909152606080825260208201525f848103610b1a5760405162461bcd60e51b815260206004820152603760248201525f51602061376f5f395f51905f5260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610a53565b60408301515185148015610b32575060a08301515185145b8015610b42575060c08301515185145b8015610b52575060e08301515185145b610bbb5760405162461bcd60e51b815260206004820152604160248201525f51602061376f5f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610a53565b82515160208401515114610c325760405162461bcd60e51b8152602060048201526044602482018190525f51602061376f5f395f51905f52908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610a53565b4363ffffffff168463ffffffff1610610ca05760405162461bcd60e51b815260206004820152603c60248201525f51602061376f5f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610a53565b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610ce057610ce0612c82565b604051908082528060200260200182016040528015610d09578160200160208202803683370190505b506020820152866001600160401b03811115610d2757610d27612c82565b604051908082528060200260200182016040528015610d50578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610d8457610d84612c82565b604051908082528060200260200182016040528015610dad578160200160208202803683370190505b5081526020860151516001600160401b03811115610dcd57610dcd612c82565b604051908082528060200260200182016040528015610df6578160200160208202803683370190505b5081602001819052505f610ec48a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610e9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebf9190613486565b6125b9565b90505f5b87602001515181101561114b57610f0c88602001518281518110610eee57610eee613416565b602002602001015180515f9081526020918201519091526040902090565b83602001518281518110610f2257610f22613416565b60209081029190910101528015610fdf576020830151610f43600183613555565b81518110610f5357610f53613416565b60200260200101515f1c83602001518281518110610f7357610f73613416565b60200260200101515f1c11610fdf576040805162461bcd60e51b81526020600482015260248101919091525f51602061376f5f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610a53565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec63518460200151838151811061102457611024613416565b60200260200101518b8b5f0151858151811061104257611042613416565b60200260200101516040518463ffffffff1660e01b815260040161107f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561109a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be9190613460565b6001600160c01b0316835f015182815181106110dc576110dc613416565b60200260200101818152505061114161042561111584865f0151858151811061110757611107613416565b60200260200101511661264b565b8a60200151848151811061112b5761112b613416565b602002602001015161267590919063ffffffff16565b9450600101610ec8565b505061115683612756565b60975490935060ff165f8161116b575f6111eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190613449565b90505f5b8a81101561183e578215611347578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f8681811061124657611246613416565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015611284573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a89190613449565b6112b291906134ba565b116113475760405162461bcd60e51b815260206004820152606660248201525f51602061376f5f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610a53565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061138857611388613416565b9050013560f81c60f81b60f81c8c8c60a0015185815181106113ac576113ac613416565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611406573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142a9190613568565b6001600160401b03191661144d8a604001518381518110610eee57610eee613416565b67ffffffffffffffff1916146114e85760405162461bcd60e51b815260206004820152606160248201525f51602061376f5f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610a53565b6115188960400151828151811061150157611501613416565b60200260200101518761210990919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d8481811061155b5761155b613416565b9050013560f81c60f81b60f81c8c8c60c00151858151811061157f5761157f613416565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156115d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fd9190613590565b8560200151828151811061161357611613613416565b6001600160601b0390921660209283029190910182015285015180518290811061163f5761163f613416565b6020026020010151855f0151828151811061165c5761165c613416565b6001600160601b03909216602092830291909101909101525f805b8a6020015151811015611834576116ca865f0151828151811061169c5761169c613416565b60200260200101518f8f868181106116b6576116b6613416565b600192013560f81c9290921c811614919050565b1561182c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061171057611710613416565b9050013560f81c60f81b60f81c8e8960200151858151811061173457611734613416565b60200260200101518f60e00151888151811061175257611752613416565b6020026020010151878151811061176b5761176b613416565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156117cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f19190613590565b875180518590811061180557611805613416565b6020026020010181815161181991906135b0565b6001600160601b03169052506001909101905b600101611677565b50506001016111ef565b5050505f5f6118578c868a606001518b60800151610311565b91509150816118c75760405162461bcd60e51b815260206004820152604360248201525f51602061376f5f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610a53565b806119275760405162461bcd60e51b815260206004820152603960248201525f51602061376f5f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610a53565b50505f8782602001516040516020016119419291906135cf565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6119736127ec565b61197c5f612846565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119c65760405162461bcd60e51b8152600401610a5390613615565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611a1490859085906004016136bb565b5f604051808303815f87803b158015611a2b575f5ffd5b505af1158015611a3d573d5f5f3e3d5ffd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610a5390613615565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b5f604051808303815f87803b158015611aee575f5ffd5b505af1158015611b00573d5f5f3e3d5ffd5b5050505050565b611b0f6127ec565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ad7908490600401613705565b5f54610100900460ff1615808015611b7957505f54600160ff909116105b80611b925750303b158015611b9257505f5460ff166001145b611bf55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a53565b5f805460ff191660011790558015611c16575f805461ff0019166101001790555b611c1f82612897565b8015611c64575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190613486565b60ff169050805f03611d0a575050604080515f81526020810190915290565b5f805b82811015611db257604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611d7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9e9190613449565b611da890836134ba565b9150600101611d0d565b505f816001600160401b03811115611dcc57611dcc612c82565b604051908082528060200260200182016040528015611df5578160200160208202803683370190505b5090505f805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613486565b60ff16811015611ff757604051633ca5a5f560e01b815260ff821660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611eec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f109190613449565b90505f5b81811015611fed576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015611f87573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab91906134e3565b5f0151858581518110611fc057611fc0613416565b6001600160a01b039092166020928302919091019091015283611fe281613522565b945050600101611f14565b5050600101611dfb565b5090949350505050565b6120096127ec565b6001600160a01b03811661206e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a53565b61207781612846565b50565b604080518082019091525f8082526020820152612095612ba8565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806120c357fe5b50806121015760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610a53565b505092915050565b604080518082019091525f8082526020820152612124612bc6565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061215e57fe5b50806121015760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610a53565b6121a4612be4565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f80806122895f51602061374f5f395f51905f528661342a565b90505b61229581612901565b90935091505f51602061374f5f395f51905f5282830983036122cd576040805180820190915290815260208101919091529392505050565b5f51602061374f5f395f51905f5260018208905061228c565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190612317612c09565b5f5b60028110156124ce575f61232e826006613717565b905084826002811061234257612342613416565b60200201515183612353835f6134ba565b600c811061236357612363613416565b602002015284826002811061237a5761237a613416565b6020020151602001518382600161239191906134ba565b600c81106123a1576123a1613416565b60200201528382600281106123b8576123b8613416565b60200201515151836123cb8360026134ba565b600c81106123db576123db613416565b60200201528382600281106123f2576123f2613416565b602002015151600160200201518361240b8360036134ba565b600c811061241b5761241b613416565b602002015283826002811061243257612432613416565b6020020151602001515f6002811061244c5761244c613416565b60200201518361245d8360046134ba565b600c811061246d5761246d613416565b602002015283826002811061248457612484613416565b60200201516020015160016002811061249f5761249f613416565b6020020151836124b08360056134ba565b600c81106124c0576124c0613416565b602002015250600101612319565b506124d7612c28565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b60605f5f6125078461264b565b61ffff166001600160401b0381111561252257612522612c82565b6040519080825280601f01601f19166020018201604052801561254c576020820181803683370190505b5090505f805b825182108015612563575061010081105b15611ff7576001811b9350858416156125a9578060f81b83838151811061258c5761258c613416565b60200101906001600160f81b03191690815f1a9053508160010191505b6125b281613522565b9050612552565b5f5f6125c48461297d565b9050808360ff166001901b116126425760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610a53565b90505b92915050565b5f805b82156126455761265f600184613555565b909216918061266d8161372e565b91505061264e565b604080518082019091525f80825260208201526102008261ffff16106126d05760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610a53565b8161ffff166001036126e3575081612645565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff161061274b57600161ffff871660ff83161c8116900361272e5761272b8484612109565b93505b6127388384612109565b92506201fffe600192831b1691016126fe565b509195945050505050565b604080518082019091525f8082526020820152815115801561277a57506020820151155b15612797575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f51602061374f5f395f51905f5284602001516127c8919061342a565b6127df905f51602061374f5f395f51905f52613555565b905292915050565b919050565b6033546001600160a01b0316331461197c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a53565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661206e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a53565b5f80805f51602061374f5f395f51905f5260035f51602061374f5f395f51905f52865f51602061374f5f395f51905f52888909090890505f612971827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f51602061374f5f395f51905f52612b00565b91959194509092505050565b5f61010082511115612a055760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610a53565b81515f03612a1457505f919050565b5f5f835f81518110612a2857612a28613416565b0160200151600160f89190911c81901b92505b8451811015612af757848181518110612a5657612a56613416565b0160200151600160f89190911c1b9150828211612aeb5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610a53565b91811791600101612a3b565b50909392505050565b5f5f612b0a612c28565b612b12612c46565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280612b4f57fe5b5082612b9d5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610a53565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280612bf7612c64565b8152602001612c04612c64565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612cb857612cb8612c82565b60405290565b60405161010081016001600160401b0381118282101715612cb857612cb8612c82565b604051606081016001600160401b0381118282101715612cb857612cb8612c82565b604051601f8201601f191681016001600160401b0381118282101715612d2b57612d2b612c82565b604052919050565b5f60408284031215612d43575f5ffd5b612d4b612c96565b823581526020928301359281019290925250919050565b5f82601f830112612d71575f5ffd5b612d79612c96565b806040840185811115612d8a575f5ffd5b845b81811015612da4578035845260209384019301612d8c565b509095945050505050565b5f60808284031215612dbf575f5ffd5b612dc7612c96565b9050612dd38383612d62565b8152612de28360408401612d62565b602082015292915050565b5f5f5f5f6101208587031215612e01575f5ffd5b84359350612e128660208701612d33565b9250612e218660608701612daf565b9150612e308660e08701612d33565b905092959194509250565b6001600160a01b0381168114612077575f5ffd5b5f60208284031215612e5f575f5ffd5b813561264281612e3b565b602080825282518282018190525f918401906040840190835b81811015612da45783516001600160a01b0316835260209384019390920191600101612e83565b5f60208284031215612eba575f5ffd5b81358015158114612642575f5ffd5b803563ffffffff811681146127e7575f5ffd5b5f6001600160401b03821115612ef457612ef4612c82565b5060051b60200190565b5f82601f830112612f0d575f5ffd5b8135612f20612f1b82612edc565b612d03565b8082825260208201915060208360051b860101925085831115612f41575f5ffd5b602085015b83811015612f6557612f5781612ec9565b835260209283019201612f46565b5095945050505050565b5f82601f830112612f7e575f5ffd5b8135612f8c612f1b82612edc565b8082825260208201915060208360061b860101925085831115612fad575f5ffd5b602085015b83811015612f6557612fc48782612d33565b8352602090920191604001612fb2565b5f82601f830112612fe3575f5ffd5b8135612ff1612f1b82612edc565b8082825260208201915060208360051b860101925085831115613012575f5ffd5b602085015b83811015612f655780356001600160401b03811115613034575f5ffd5b613043886020838a0101612efe565b84525060209283019201613017565b5f6101808284031215613063575f5ffd5b61306b612cbe565b905081356001600160401b03811115613082575f5ffd5b61308e84828501612efe565b82525060208201356001600160401b038111156130a9575f5ffd5b6130b584828501612f6f565b60208301525060408201356001600160401b038111156130d3575f5ffd5b6130df84828501612f6f565b6040830152506130f28360608401612daf565b60608201526131048360e08401612d33565b60808201526101208201356001600160401b03811115613122575f5ffd5b61312e84828501612efe565b60a0830152506101408201356001600160401b0381111561314d575f5ffd5b61315984828501612efe565b60c0830152506101608201356001600160401b03811115613178575f5ffd5b61318484828501612fd4565b60e08301525092915050565b5f5f5f5f5f608086880312156131a4575f5ffd5b8535945060208601356001600160401b038111156131c0575f5ffd5b8601601f810188136131d0575f5ffd5b80356001600160401b038111156131e5575f5ffd5b8860208284010111156131f6575f5ffd5b6020919091019450925061320c60408701612ec9565b915060608601356001600160401b03811115613226575f5ffd5b61323288828901613052565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156132785781516001600160601b0316865260209586019590910190600101613251565b5093949350505050565b604081525f835160408084015261329c608084018261323f565b90506020850151603f198483030160608501526132b9828261323f565b925050508260208301529392505050565b5f5f6001600160401b038411156132e3576132e3612c82565b50601f8301601f19166020016132f881612d03565b91505082815283838301111561330c575f5ffd5b828260208301375f602084830101529392505050565b5f5f60408385031215613333575f5ffd5b823561333e81612e3b565b915060208301356001600160401b03811115613358575f5ffd5b830160608186031215613369575f5ffd5b613371612ce1565b81356001600160401b03811115613386575f5ffd5b8201601f81018713613396575f5ffd5b6133a5878235602084016132ca565b8252506020828101359082015260409182013591810191909152919491935090915050565b5f602082840312156133da575f5ffd5b81356001600160401b038111156133ef575f5ffd5b8201601f810184136133ff575f5ffd5b61340e848235602084016132ca565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f8261344457634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215613459575f5ffd5b5051919050565b5f60208284031215613470575f5ffd5b81516001600160c01b0381168114612642575f5ffd5b5f60208284031215613496575f5ffd5b815160ff81168114612642575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612645576126456134a6565b80516001600160601b03811681146127e7575f5ffd5b5f60408284031280156134f4575f5ffd5b506134fd612c96565b825161350881612e3b565b8152613516602084016134cd565b60208201529392505050565b5f60018201613533576135336134a6565b5060010190565b5f6020828403121561354a575f5ffd5b815161264281612e3b565b81810381811115612645576126456134a6565b5f60208284031215613578575f5ffd5b815167ffffffffffffffff1981168114612642575f5ffd5b5f602082840312156135a0575f5ffd5b6135a9826134cd565b9392505050565b6001600160601b038281168282160390811115612645576126456134a6565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b828110156136095781518452602093840193909101906001016135eb565b50919695505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0383168152604060208201525f8251606060408401526136e460a084018261368d565b90506020840151606084015260408401516080840152809150509392505050565b602081525f6135a9602083018461368d565b8082028115828204841417612645576126456134a6565b5f61ffff821661ffff8103613745576137456134a6565b6001019291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220c4ed738deef4f6cbeb3c374dc3f204829321a3bd1ad35a35262b9d91375a300864736f6c634300081b0033608060405234801561000f575f5ffd5b5060405161073638038061073683398101604081905261002e91610253565b5f5b825181101561006b5761006383828151811061004e5761004e61032f565b6020026020010151600161007c60201b60201c565b600101610030565b506100758161014d565b5050610343565b6001600160a01b0382166100ed5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101bb5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100e4565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b038116811461024e575f5ffd5b919050565b5f5f60408385031215610264575f5ffd5b82516001600160401b03811115610279575f5ffd5b8301601f81018513610289575f5ffd5b80516001600160401b038111156102a2576102a2610224565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102d0576102d0610224565b6040529182526020818401810192908101888411156102ed575f5ffd5b6020850194505b838510156103135761030585610238565b8152602094850194016102f4565b5094506103269250505060208401610238565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b6103e6806103505f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461030d565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461032d565b6100d8565b005b6100986100a836600461030d565b610119565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b0316331461010b5760405162461bcd60e51b815260040161010290610366565b60405180910390fd5b610115828261014f565b5050565b6001546001600160a01b031633146101435760405162461bcd60e51b815260040161010290610366565b61014c8161021b565b50565b6001600160a01b0382166101bb5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610102565b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166102895760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610102565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610308575f5ffd5b919050565b5f6020828403121561031d575f5ffd5b610326826102f2565b9392505050565b5f5f6040838503121561033e575f5ffd5b610347836102f2565b91506020830135801515811461035b575f5ffd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220bad9bc7e5840c034ce8eb3bf0529db3b114379ed30673ef2860d67336dc90c2e64736f6c634300081b00336080604052348015600e575f5ffd5b506119378061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80633563b0d11461004e5780634f739f74146100775780635c15566214610097578063cefdc1d4146100b7575b5f5ffd5b61006161005c3660046110ea565b6100d8565b60405161006e919061124b565b60405180910390f35b61008a6100853660046112ab565b610540565b60405161006e91906113ab565b6100aa6100a5366004611483565b610c3a565b60405161006e9190611532565b6100ca6100c5366004611574565b610def565b60405161006e9291906115b3565b60605f846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610117573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013b91906115d3565b90505f856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e91906115d3565b90505f866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020191906115d3565b90505f86516001600160401b0381111561021d5761021d611085565b60405190808252806020026020018201604052801561025057816020015b606081526020019060019003908161023b5790505b5090505f5b8751811015610534575f888281518110610271576102716115ee565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291505f906001600160a01b038716906389026245906044015f60405180830381865afa1580156102ce573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526102f59190810190611602565b905080516001600160401b0381111561031057610310611085565b60405190808252806020026020018201604052801561035957816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161032e5790505b5084848151811061036c5761036c6115ee565b60209081029190910101525f5b8151811015610529576040518060600160405280876001600160a01b03166347b314e88585815181106103ae576103ae6115ee565b60200260200101516040518263ffffffff1660e01b81526004016103d491815260200190565b602060405180830381865afa1580156103ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041391906115d3565b6001600160a01b03168152602001838381518110610433576104336115ee565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610461576104616115ee565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611692565b6001600160601b03168152508585815181106104fd576104fd6115ee565b60200260200101518281518110610516576105166115ee565b6020908102919091010152600101610379565b505050600101610255565b50979650505050505050565b61056b6040518060800160405280606081526020016060815260200160608152602001606081525090565b5f876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cc91906115d3565b90506105f96040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e90610629908b90899089906004016116b8565b5f60405180830381865afa158015610643573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261066a91908101906116fd565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061069c908b908b908b906004016117b4565b5f60405180830381865afa1580156106b6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106dd91908101906116fd565b6040820152856001600160401b038111156106fa576106fa611085565b60405190808252806020026020018201604052801561072d57816020015b60608152602001906001900390816107185790505b5060608201525f5b60ff8116871115610b52575f856001600160401b0381111561075957610759611085565b604051908082528060200260200182016040528015610782578160200160208202803683370190505b5083606001518360ff168151811061079c5761079c6115ee565b60209081029190910101525f5b86811015610a5e575f8c6001600160a01b03166304ec63518a8a858181106107d3576107d36115ee565b905060200201358e885f015186815181106107f0576107f06115ee565b60200260200101516040518463ffffffff1660e01b815260040161082d9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610848573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086c91906117dc565b9050806001600160c01b03165f036109165760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061092b5761092b6115ee565b60016001600160c01b038516919093013560f81c1c82169091039050610a5557856001600160a01b031663dd9846b98a8a8581811061096c5761096c6115ee565b905060200201358d8d8860ff16818110610988576109886115ee565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa1580156109dc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a009190611802565b85606001518560ff1681518110610a1957610a196115ee565b60200260200101518481518110610a3257610a326115ee565b63ffffffff9092166020928302919091019091015282610a5181611831565b9350505b506001016107a9565b505f816001600160401b03811115610a7857610a78611085565b604051908082528060200260200182016040528015610aa1578160200160208202803683370190505b5090505f5b82811015610b175784606001518460ff1681518110610ac757610ac76115ee565b60200260200101518181518110610ae057610ae06115ee565b6020026020010151828281518110610afa57610afa6115ee565b63ffffffff90921660209283029190910190910152600101610aa6565b508084606001518460ff1681518110610b3257610b326115ee565b602002602001018190525050508080610b4a90611849565b915050610735565b505f896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb491906115d3565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610be7908b908b908e90600401611867565b5f60405180830381865afa158015610c01573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2891908101906116fd565b60208301525098975050505050505050565b60605f846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610c6b929190611890565b5f60405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cac91908101906116fd565b90505f84516001600160401b03811115610cc857610cc8611085565b604051908082528060200260200182016040528015610cf1578160200160208202803683370190505b5090505f5b8551811015610de557866001600160a01b03166304ec6351878381518110610d2057610d206115ee565b602002602001015187868581518110610d3b57610d3b6115ee565b60200260200101516040518463ffffffff1660e01b8152600401610d789392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610d93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db791906117dc565b6001600160c01b0316828281518110610dd257610dd26115ee565b6020908102919091010152600101610cf6565b5095945050505050565b6040805160018082528183019092525f9160609183916020808301908036833701905050905084815f81518110610e2857610e286115ee565b60209081029190910101526040516361c8a12f60e11b81525f906001600160a01b0388169063c391425e90610e639088908690600401611890565b5f60405180830381865afa158015610e7d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ea491908101906116fd565b5f81518110610eb557610eb56115ee565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291505f906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f1e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4291906117dc565b6001600160c01b031690505f610f5782610f75565b905081610f658a838a6100d8565b9550955050505050935093915050565b60605f5f610f828461103e565b61ffff166001600160401b03811115610f9d57610f9d611085565b6040519080825280601f01601f191660200182016040528015610fc7576020820181803683370190505b5090505f805b825182108015610fde575061010081105b15611034576001811b935085841615611024578060f81b838381518110611007576110076115ee565b60200101906001600160f81b03191690815f1a9053508160010191505b61102d81611831565b9050610fcd565b5090949350505050565b5f805b8215611068576110526001846118d7565b9092169180611060816118ea565b915050611041565b92915050565b6001600160a01b0381168114611082575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156110c1576110c1611085565b604052919050565b63ffffffff81168114611082575f5ffd5b80356110e5816110c9565b919050565b5f5f5f606084860312156110fc575f5ffd5b83356111078161106e565b925060208401356001600160401b03811115611121575f5ffd5b8401601f81018613611131575f5ffd5b80356001600160401b0381111561114a5761114a611085565b61115d601f8201601f1916602001611099565b818152876020838501011115611171575f5ffd5b816020840160208301375f60208383010152809450505050611195604085016110da565b90509250925092565b5f82825180855260208501945060208160051b830101602085015f5b8381101561123f57848303601f19018852815180518085526020918201918501905f5b8181101561122657835180516001600160a01b03168452602080820151818601526040918201516001600160601b031691850191909152909301926060909201916001016111dd565b50506020998a01999094509290920191506001016111ba565b50909695505050505050565b602081525f61125d602083018461119e565b9392505050565b5f5f83601f840112611274575f5ffd5b5081356001600160401b0381111561128a575f5ffd5b6020830191508360208260051b85010111156112a4575f5ffd5b9250929050565b5f5f5f5f5f5f608087890312156112c0575f5ffd5b86356112cb8161106e565b955060208701356112db816110c9565b945060408701356001600160401b038111156112f5575f5ffd5b8701601f81018913611305575f5ffd5b80356001600160401b0381111561131a575f5ffd5b89602082840101111561132b575f5ffd5b6020919091019450925060608701356001600160401b0381111561134d575f5ffd5b61135989828a01611264565b979a9699509497509295939492505050565b5f8151808452602084019350602083015f5b828110156113a157815163ffffffff1686526020958601959091019060010161137d565b5093949350505050565b602081525f8251608060208401526113c660a084018261136b565b90506020840151601f198483030160408501526113e3828261136b565b9150506040840151601f19848303016060850152611401828261136b565b6060860151858203601f190160808701528051808352919350602090810192508084019190600582901b8501015f5b8281101561053457601f1986830301845261144c82865161136b565b60209586019594909401939150600101611430565b5f6001600160401b0382111561147957611479611085565b5060051b60200190565b5f5f5f60608486031215611495575f5ffd5b83356114a08161106e565b925060208401356001600160401b038111156114ba575f5ffd5b8401601f810186136114ca575f5ffd5b80356114dd6114d882611461565b611099565b8082825260208201915060208360051b8501019250888311156114fe575f5ffd5b6020840193505b82841015611520578335825260209384019390910190611505565b945061119592505050604085016110da565b602080825282518282018190525f918401906040840190835b8181101561156957835183526020938401939092019160010161154b565b509095945050505050565b5f5f5f60608486031215611586575f5ffd5b83356115918161106e565b92506020840135915060408401356115a8816110c9565b809150509250925092565b828152604060208201525f6115cb604083018461119e565b949350505050565b5f602082840312156115e3575f5ffd5b815161125d8161106e565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611612575f5ffd5b81516001600160401b03811115611627575f5ffd5b8201601f81018413611637575f5ffd5b80516116456114d882611461565b8082825260208201915060208360051b850101925086831115611666575f5ffd5b6020840193505b8284101561168857835182526020938401939091019061166d565b9695505050505050565b5f602082840312156116a2575f5ffd5b81516001600160601b038116811461125d575f5ffd5b63ffffffff8416815260406020820181905281018290525f6001600160fb1b038311156116e3575f5ffd5b8260051b8085606085013791909101606001949350505050565b5f6020828403121561170d575f5ffd5b81516001600160401b03811115611722575f5ffd5b8201601f81018413611732575f5ffd5b80516117406114d882611461565b8082825260208201915060208360051b850101925086831115611761575f5ffd5b6020840193505b8284101561168857835161177b816110c9565b825260209384019390910190611768565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201525f6117d360408301848661178c565b95945050505050565b5f602082840312156117ec575f5ffd5b81516001600160c01b038116811461125d575f5ffd5b5f60208284031215611812575f5ffd5b815161125d816110c9565b634e487b7160e01b5f52601160045260245ffd5b5f600182016118425761184261181d565b5060010190565b5f60ff821660ff810361185e5761185e61181d565b60010192915050565b604081525f61187a60408301858761178c565b905063ffffffff83166020830152949350505050565b5f6040820163ffffffff85168352604060208401528084518083526060850191506020860192505f5b8181101561123f5783518352602093840193909201916001016118b9565b818103818111156110685761106861181d565b5f61ffff821661ffff810361185e5761185e61181d56fea2646970667358221220983a7507ffb03d68ff5e42423434b107b2a2512a8e9989037206f78712fcd7ed64736f6c634300081b003360a060405234801561000f575f5ffd5b50604051611fd6380380611fd683398101604081905261002e91610108565b6001600160a01b0381166080528061004461004b565b5050610135565b5f54610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161015610106575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610118575f5ffd5b81516001600160a01b038116811461012e575f5ffd5b9392505050565b608051611e6d6101695f395f818161030301528181610457015281816105ae015281816109a70152610ff30152611e6d5ff3fe608060405234801561000f575f5ffd5b5060043610610110575f3560e01c80636d14a9871161009e578063bf79ce581161006e578063bf79ce58146103bf578063d5254a8c146103d2578063de29fac0146103f2578063e8bb9ae614610411578063f4e24fe514610439575f5ffd5b80636d14a987146102fe5780637916cea6146103255780637ff81a8714610366578063a3db80e214610399575f5ffd5b80633fb27952116100e45780633fb27952146101d657806347b314e8146101e95780635f61a88414610229578063605747d51461028357806368bccaac146102d1575f5ffd5b8062a1f4cb1461011457806313542a4e1461015457806326d941f21461018a578063377ed99d1461019f575b5f5ffd5b61013a610122366004611899565b60036020525f90815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61017c610162366004611899565b6001600160a01b03165f9081526001602052604090205490565b60405190815260200161014b565b61019d6101983660046118c9565b61044c565b005b6101c16101ad3660046118c9565b60ff165f9081526004602052604090205490565b60405163ffffffff909116815260200161014b565b61019d6101e4366004611950565b6105a3565b6102116101f73660046119f5565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161014b565b6102766102373660046118c9565b604080518082019091525f80825260208201525060ff165f90815260056020908152604091829020825180840190935280548352600101549082015290565b60405161014b9190611a0c565b610296610291366004611a23565b61065f565b60408051825167ffffffffffffffff1916815260208084015163ffffffff90811691830191909152928201519092169082015260600161014b565b6102e46102df366004611a4b565b6106f0565b60405167ffffffffffffffff19909116815260200161014b565b6102117f000000000000000000000000000000000000000000000000000000000000000081565b610338610333366004611a23565b610889565b6040805167ffffffffffffffff19909416845263ffffffff928316602085015291169082015260600161014b565b610379610374366004611899565b6108d0565b60408051835181526020938401519381019390935282015260600161014b565b61013a6103a73660046118c9565b60056020525f90815260409020805460019091015482565b61017c6103cd366004611a8f565b61099b565b6103e56103e0366004611ae7565b610de1565b60405161014b9190611b59565b61017c610400366004611899565b60016020525f908152604090205481565b61021161041f3660046119f5565b60026020525f90815260409020546001600160a01b031681565b61019d610447366004611950565b610fe8565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049d5760405162461bcd60e51b815260040161049490611ba1565b60405180910390fd5b60ff81165f908152600460205260409020541561051b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608401610494565b60ff165f908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105eb5760405162461bcd60e51b815260040161049490611ba1565b5f6105f5836108d0565b509050610602828261108f565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610642856001600160a01b03165f9081526001602052604090205490565b8460405161065293929190611c15565b60405180910390a1505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600490529190912080548390811061069b5761069b611c60565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff83165f90815260046020526040812080548291908490811061071657610716611c60565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107dc5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608401610494565b604081015163ffffffff1615806108025750806040015163ffffffff168463ffffffff16105b6108805760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a401610494565b51949350505050565b6004602052815f5260405f2081815481106108a2575f80fd5b5f91825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b604080518082019091525f80825260208201526001600160a01b0382165f818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109915760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608401610494565b9094909350915050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e45760405162461bcd60e51b815260040161049490611ba1565b5f610a106109fa36869003860160408701611c74565b80515f9081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610a96576040805162461bcd60e51b81526020600482015260248101919091525f516020611e185f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152608401610494565b6001600160a01b0385165f9081526001602052604090205415610b1e5760405162461bcd60e51b815260206004820152604760248201525f516020611e185f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a401610494565b5f818152600260205260409020546001600160a01b031615610ba05760405162461bcd60e51b815260206004820152604260248201525f516020611e185f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a401610494565b604080515f917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610bf8918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611ca5565b604051602081830303815290604052805190602001205f1c610c1a9190611ce7565b9050610cb3610c53610c3e83610c38368a90038a0160408b01611c74565b906112cb565b610c4d36899003890189611c74565b9061135a565b610c5b6113ed565b610c9c610c8d85610c386040805180820182525f80825260209182015281518083019092526001825260029082015290565b610c4d368a90038a018a611c74565b610cae368a90038a0160808b01611d48565b6114ad565b610d4d5760405162461bcd60e51b815260206004820152606c60248201525f516020611e185f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c401610494565b6001600160a01b0386165f8181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dd09160808a0190611d87565b60405180910390a250949350505050565b60605f8367ffffffffffffffff811115610dfd57610dfd6118e2565b604051908082528060200260200182016040528015610e26578160200160208202803683370190505b5090505f5b84811015610fdf575f868683818110610e4657610e46611c60565b919091013560f81c5f818152600460205260409020549092509050801580610ea6575060ff82165f9081526004602052604081208054909190610e8b57610e8b611c60565b5f91825260209091200154600160c01b900463ffffffff1686105b15610f335760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a401610494565b805b8015610fd45760ff83165f9081526004602052604090208790610f59600184611dc5565b81548110610f6957610f69611c60565b5f91825260209091200154600160c01b900463ffffffff1611610fc257610f91600182611dc5565b858581518110610fa357610fa3611c60565b602002602001019063ffffffff16908163ffffffff1681525050610fd4565b80610fcc81611dd8565b915050610f35565b505050600101610e2b565b50949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110305760405162461bcd60e51b815260040161049490611ba1565b5f61103a836108d0565b50905061104f8261104a8361170b565b61108f565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610642856001600160a01b03165f9081526001602052604090205490565b604080518082019091525f80825260208201525f5b83518110156112c5575f8482815181106110c0576110c0611c60565b0160209081015160f81c5f81815260049092526040822054909250908190036111515760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608401610494565b60ff82165f908152600560209081526040918290208251808401909352805483526001015490820152611184908661135a565b60ff83165f8181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111cc9085611dc5565b815481106111dc576111dc611c60565b5f918252602090912001805490915063ffffffff438116600160c01b909204160361121a5780546001600160c01b031916604083901c1781556112b5565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88165f908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110a49050565b50505050565b604080518082019091525f80825260208201526112e66117c7565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa9050808061131457fe5b50806113525760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610494565b505092915050565b604080518082019091525f80825260208201526113756117e5565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa905080806113af57fe5b50806113525760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610494565b6113f5611803565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390525f916114db611828565b5f5b6002811015611692575f6114f2826006611ded565b905084826002811061150657611506611c60565b60200201515183611517835f611e04565b600c811061152757611527611c60565b602002015284826002811061153e5761153e611c60565b602002015160200151838260016115559190611e04565b600c811061156557611565611c60565b602002015283826002811061157c5761157c611c60565b602002015151518361158f836002611e04565b600c811061159f5761159f611c60565b60200201528382600281106115b6576115b6611c60565b60200201515160016020020151836115cf836003611e04565b600c81106115df576115df611c60565b60200201528382600281106115f6576115f6611c60565b6020020151602001515f6002811061161057611610611c60565b602002015183611621836004611e04565b600c811061163157611631611c60565b602002015283826002811061164857611648611c60565b60200201516020015160016002811061166357611663611c60565b602002015183611674836005611e04565b600c811061168457611684611c60565b6020020152506001016114dd565b5061169b611847565b5f6020826101808560086107d05a03fa905080806116b557fe5b50806116fb5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606401610494565b5051151598975050505050505050565b604080518082019091525f8082526020820152815115801561172f57506020820151155b1561174c575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117909190611ce7565b6117ba907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611dc5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611816611865565b8152602001611823611865565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117c2575f5ffd5b5f602082840312156118a9575f5ffd5b6118b282611883565b9392505050565b803560ff811681146117c2575f5ffd5b5f602082840312156118d9575f5ffd5b6118b2826118b9565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611919576119196118e2565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611948576119486118e2565b604052919050565b5f5f60408385031215611961575f5ffd5b61196a83611883565b9150602083013567ffffffffffffffff811115611985575f5ffd5b8301601f81018513611995575f5ffd5b803567ffffffffffffffff8111156119af576119af6118e2565b6119c2601f8201601f191660200161191f565b8181528660208385010111156119d6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611a05575f5ffd5b5035919050565b8151815260208083015190820152604081016106ea565b5f5f60408385031215611a34575f5ffd5b611a3d836118b9565b946020939093013593505050565b5f5f5f60608486031215611a5d575f5ffd5b611a66846118b9565b9250602084013563ffffffff81168114611a7e575f5ffd5b929592945050506040919091013590565b5f5f5f838503610160811215611aa3575f5ffd5b611aac85611883565b9350610100601f1982011215611ac0575f5ffd5b602085019250604061011f1982011215611ad8575f5ffd5b50610120840190509250925092565b5f5f5f60408486031215611af9575f5ffd5b833567ffffffffffffffff811115611b0f575f5ffd5b8401601f81018613611b1f575f5ffd5b803567ffffffffffffffff811115611b35575f5ffd5b866020828401011115611b46575f5ffd5b6020918201979096509401359392505050565b602080825282518282018190525f918401906040840190835b81811015611b9657835163ffffffff16835260209384019390920191600101611b72565b509095945050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b0384168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f830116840101915050949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f6040828403128015611c85575f5ffd5b50611c8e6118f6565b823581526020928301359281019290925250919050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b5f82611d0157634e487b7160e01b5f52601260045260245ffd5b500690565b5f82601f830112611d15575f5ffd5b611d1d6118f6565b806040840185811115611d2e575f5ffd5b845b81811015611b96578035845260209384019301611d30565b5f6080828403128015611d59575f5ffd5b50611d626118f6565b611d6c8484611d06565b8152611d7b8460408501611d06565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ea576106ea611db1565b5f81611de657611de6611db1565b505f190190565b80820281158282048414176106ea576106ea611db1565b808201808211156106ea576106ea611db156fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220c19864f239c758ed49daf065941962208584aef050e2a28b0c61f4f4b2a159dd64736f6c634300081b003360a060405234801561000f575f5ffd5b5060405161133e38038061133e83398101604081905261002e91610108565b6001600160a01b0381166080528061004461004b565b5050610135565b5f54610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161015610106575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610118575f5ffd5b81516001600160a01b038116811461012e575f5ffd5b9392505050565b6080516111dc6101625f395f818161013e0152818161026f0152818161040301526107bd01526111dc5ff3fe608060405234801561000f575f5ffd5b50600436106100b0575f3560e01c8063890262451161006e57806389026245146101af578063a48bb0ac146101cf578063bd29b8cd146101e2578063caa3cd76146101f5578063e2e685801461020a578063f34109221461024f575f5ffd5b8062bff04d146100b457806312d1d74d146100dd57806326d941f2146101115780632ed583e5146101265780636d14a987146101395780638121906f14610178575b5f5ffd5b6100c76100c2366004610e72565b610262565b6040516100d49190610ee9565b60405180910390f35b6100f06100eb366004610f59565b6103b3565b60408051825163ffffffff16815260209283015192810192909252016100d4565b61012461011f366004610f8a565b6103f8565b005b6100f0610134366004610fa3565b61051a565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d4565b61018b610186366004610f8a565b61059d565b60408051825163ffffffff90811682526020938401511692810192909252016100d4565b6101c26101bd366004610f59565b6105e3565b6040516100d49190610fe3565b61018b6101dd366004610f59565b61073e565b6101246101f0366004610e72565b6107b2565b6101fc5f81565b6040519081526020016100d4565b61023a61021836600461101a565b600160209081525f928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d4565b61023a61025d366004610f8a565b6108b7565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102b55760405162461bcd60e51b81526004016102ac90611042565b60405180910390fd5b5f8267ffffffffffffffff8111156102cf576102cf6110b5565b6040519080825280602002602001820160405280156102f8578160200160208202803683370190505b5090505f5b838110156103a8575f858583818110610318576103186110c9565b919091013560f81c5f818152600360205260408120549193509091508190036103535760405162461bcd60e51b81526004016102ac906110dd565b5f61035d836108d5565b9050610374898461036f600185611146565b6109cc565b80858581518110610387576103876110c9565b63ffffffff92909216602092830291909101909101525050506001016102fd565b5090505b9392505050565b604080518082019091525f80825260208201526103d08383610a54565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104405760405162461bcd60e51b81526004016102ac90611042565b60ff81165f90815260036020526040902054156104b95760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102ac565b60ff165f908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091525f808252602082015260ff84165f90815260026020908152604080832063ffffffff80881685529252909120805490918416908110610565576105656110c9565b5f91825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b604080518082019091525f80825260208201526105b982610aa9565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b60605f6105f08484610ae8565b90505f8163ffffffff1667ffffffffffffffff811115610612576106126110b5565b60405190808252806020026020018201604052801561063b578160200160208202803683370190505b5090505f5b8263ffffffff1681101561073557610659868287610c1a565b82828151811061066b5761066b6110c9565b6020026020010181815250505f5f1b82828151811061068c5761068c6110c9565b60200260200101510361072d5760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102ac565b600101610640565b50949350505050565b604080518082019091525f808252602082015260ff83165f908152600360205260409020805463ffffffff841690811061077a5761077a6110c9565b5f9182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107fa5760405162461bcd60e51b81526004016102ac90611042565b5f5b818110156108b1575f838383818110610817576108176110c9565b919091013560f81c5f818152600360205260408120549193509091508190036108525760405162461bcd60e51b81526004016102ac906110dd565b60ff82165f90815260016020908152604080832089845290915281205463ffffffff169061087f84610ced565b90505f61088c8583610d25565b90508089146108a0576108a08186856109cc565b5050600190930192506107fc915050565b50505050565b5f6108c182610aa9565b54600160201b900463ffffffff1692915050565b5f5f6108e083610aa9565b80549091505f906108ff90600160201b900463ffffffff166001611162565b905061090c848383610d4d565b60ff84165f90815260026020526040812090610929600184611146565b63ffffffff16815260208101919091526040015f9081205490036103ac5760ff84165f90815260026020526040812090610964600184611146565b63ffffffff908116825260208083019390935260409182015f908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b5f6109d78383610a54565b90506109e583838387610dea565b60ff83165f818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff82165f90815260026020908152604080832063ffffffff851684529091528120805490610a8460018361117e565b81548110610a9457610a946110c9565b905f5260205f20906002020191505092915050565b60ff81165f908152600360205260408120805490610ac860018361117e565b81548110610ad857610ad86110c9565b905f5260205f2001915050919050565b60ff82165f90815260036020526040812054805b8015610b8d5760ff85165f908152600360205260408120610b1e60018461117e565b81548110610b2e57610b2e6110c9565b5f9182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610b7a576020015192506103f2915050565b5080610b8581611191565b915050610afc565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102ac565b60ff83165f90815260026020908152604080832063ffffffff86168452909152812054805b8015610ce25760ff86165f90815260026020908152604080832063ffffffff891684529091528120610c7260018461117e565b81548110610c8257610c826110c9565b5f91825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610ccf576020015192506103ac915050565b5080610cda81611191565b915050610c3f565b505f95945050505050565b5f5f610cf883610aa9565b80549091505f90610d1890600190600160201b900463ffffffff16611146565b90506103ac848383610d4d565b5f5f610d318484610a54565b6001810154909150610d458585845f610dea565b949350505050565b815463ffffffff438116911603610d8257815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83165f908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e0757600182018190556108b1565b60ff939093165f90815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b5f5f5f60408486031215610e84575f5ffd5b83359250602084013567ffffffffffffffff811115610ea1575f5ffd5b8401601f81018613610eb1575f5ffd5b803567ffffffffffffffff811115610ec7575f5ffd5b866020828401011115610ed8575f5ffd5b939660209190910195509293505050565b602080825282518282018190525f918401906040840190835b81811015610f2657835163ffffffff16835260209384019390920191600101610f02565b509095945050505050565b803560ff81168114610f41575f5ffd5b919050565b803563ffffffff81168114610f41575f5ffd5b5f5f60408385031215610f6a575f5ffd5b610f7383610f31565b9150610f8160208401610f46565b90509250929050565b5f60208284031215610f9a575f5ffd5b6103ac82610f31565b5f5f5f60608486031215610fb5575f5ffd5b610fbe84610f31565b9250610fcc60208501610f46565b9150610fda60408501610f46565b90509250925092565b602080825282518282018190525f918401906040840190835b81811015610f26578351835260209384019390920191600101610ffc565b5f5f6040838503121561102b575f5ffd5b61103483610f31565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff82811682821603908111156103f2576103f2611132565b63ffffffff81811683821601908111156103f2576103f2611132565b818103818111156103f2576103f2611132565b5f8161119f5761119f611132565b505f19019056fea2646970667358221220d0f03ad1c245a923263fa90389621f159fb1527687f7f9811d40cb3442ad6d0064736f6c634300081b003360c060405234801561000f575f5ffd5b5060405161379238038061379283398101604081905261002e9161005c565b6001600160a01b0391821660a05216608052610094565b6001600160a01b0381168114610059575f5ffd5b50565b5f5f6040838503121561006d575f5ffd5b825161007881610045565b602084015190925061008981610045565b809150509250929050565b60805160a05161369e6100f45f395f818161036d015281816106200152818161094b01528181610ca9015281816110b60152818161167c0152818161177b0152818161188f0152611c4201525f818161051b0152611dfc015261369e5ff3fe608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c80639f3ccf6511610109578063c8294c561161009e578063f2be94ae1161006e578063f2be94ae1461053d578063f851e19814610550578063fa28c62714610563578063ff694a7714610576575f5ffd5b8063c8294c56146104c8578063d5eccc05146104db578063dd9846b9146104ee578063df5cf72314610516575f5ffd5b8063bc9a40c3116100d9578063bc9a40c314610467578063bd29b8cd1461047a578063c46778a51461048d578063c601527d146104b5575f5ffd5b80639f3ccf65146103e1578063ac6bfb03146103f4578063adc804da14610414578063b6904b7814610454575f5ffd5b80634bd26e091161017f57806366acfefe1161014f57806366acfefe1461033d5780636d14a987146103685780637c172347146103a757806381c07502146103c1575f5ffd5b80634bd26e09146102d95780635401ed27146103085780635e5a67751461031b5780635f1f2d771461032a575f5ffd5b806320b66298116101ba57806320b662981461026157806325504777146102765780632cd95940146102975780633ca5a5f5146102b7575f5ffd5b80630491b41c146101e057806308732461146102155780631f9b74e014610236575b5f5ffd5b6102026101ee366004612b2b565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b610228610223366004612b44565b610589565b60405161020c929190612b6c565b610249610244366004612ba5565b6105ce565b6040516001600160601b03909116815260200161020c565b61027461026f366004612c1a565b61061e565b005b610289610284366004612cd5565b61093d565b60405161020c929190612d6f565b6102aa6102a5366004612d93565b610bf2565b60405161020c9190612dbd565b6102026102c5366004612b2b565b60ff165f9081526003602052604090205490565b6102026102e7366004612d93565b5f91825260026020908152604080842060ff93909316845291905290205490565b610249610316366004612d93565b610c8f565b610202670de0b6b3a764000081565b610274610338366004612ec4565b610ca7565b61035061034b366004612cd5565b6110aa565b6040516001600160c01b03909116815260200161020c565b61038f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161020c565b6103af602081565b60405160ff909116815260200161020c565b6103d46103cf366004612f7f565b611200565b60405161020c9190612fcd565b61038f6103ef366004612b44565b6114ac565b61040761040236600461300a565b6114e0565b60405161020c919061303a565b610427610422366004612b44565b611576565b6040805182516001600160a01b031681526020928301516001600160601b0316928101929092520161020c565b610407610462366004612b44565b6115ed565b61027461047536600461308a565b61167a565b6102746104883660046130b2565b611770565b61024961049b366004612b2b565b5f602081905290815260409020546001600160601b031681565b6102746104c3366004613175565b61188d565b6102496104d63660046131bf565b61197e565b6102496104e9366004612b2b565b6119fa565b6105016104fc3660046131f9565b611a4b565b60405163ffffffff909116815260200161020c565b61038f7f000000000000000000000000000000000000000000000000000000000000000081565b61024961054b366004613232565b611a5f565b61040761055e366004612d93565b611af2565b6102496105713660046131f9565b611bd8565b610274610584366004613271565b611c37565b6003602052815f5260405f2081815481106105a2575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff82165f9081526001602052604081205483906106075760405162461bcd60e51b81526004016105fe906132ca565b60405180910390fd5b5f6106128585611da0565b509250505b5092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069e919061331b565b6001600160a01b0316336001600160a01b0316146106ce5760405162461bcd60e51b81526004016105fe90613336565b846106e98160ff165f90815260016020526040902054151590565b6107055760405162461bcd60e51b81526004016105fe906132ca565b838061077b576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084016105fe565b8281146107f05760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d617463680000000000000060648201526084016105fe565b60ff87165f908152600360205260408120905b828110156109325785858281811061081d5761081d6133b2565b905060200201602081019061083291906133c6565b82898984818110610845576108456133b2565b905060200201358154811061085c5761085c6133b2565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108c2576108c26133b2565b90506020020135815481106108d9576108d96133b2565b5f918252602090912001546001600160a01b03168888858181106108ff576108ff6133b2565b905060200201602081019061091491906133c6565b604051610922929190612b6c565b60405180910390a2600101610803565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109885760405162461bcd60e51b81526004016105fe906133df565b5f836001600160401b038111156109a1576109a1612e36565b6040519080825280602002602001820160405280156109ca578160200160208202803683370190505b5090505f846001600160401b038111156109e6576109e6612e36565b604051908082528060200260200182016040528015610a0f578160200160208202803683370190505b5090505f5b85811015610be4575f878783818110610a2f57610a2f6133b2565b919091013560f81c5f8181526001602052604090205490925015159050610ab65760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b60648201526084016105fe565b5f5f610ac2838d611da0565b9150915080610b5f5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a4016105fe565b5f610b6b8c8585611f87565b905082878681518110610b8057610b806133b2565b60200260200101906001600160601b031690816001600160601b031681525050610baa8482612200565b868681518110610bbc57610bbc6133b2565b6001600160601b0390921660209283029190910190910152505060019092019150610a149050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610c82575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c2a565b5050505090505b92915050565b5f5f610c9b8484611af2565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d27919061331b565b6001600160a01b0316336001600160a01b031614610d575760405162461bcd60e51b81526004016105fe90613336565b81610d728160ff165f90815260016020526040902054151590565b610d8e5760405162461bcd60e51b81526004016105fe906132ca565b815180610e035760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f766964656400000060648201526084016105fe565b60ff84165f9081526003602090815260408083206004909252822090915b838110156110a1578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e6157610e616133b2565b602002602001015181548110610e7957610e796133b2565b5f91825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610ed657610ed66133b2565b602002602001015181548110610eee57610eee6133b2565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f2d90600190613465565b81548110610f3d57610f3d6133b2565b905f5260205f200183878381518110610f5857610f586133b2565b602002602001015181548110610f7057610f706133b2565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610fc257610fc2613478565b5f8281526020812082015f199081019190915501905581548290610fe890600190613465565b81548110610ff857610ff86133b2565b905f5260205f20015f9054906101000a90046001600160a01b031682878381518110611026576110266133b2565b60200260200101518154811061103e5761103e6133b2565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061107957611079613478565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610e21565b50505050505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110f35760405162461bcd60e51b81526004016105fe906133df565b5f805b838110156111f6575f858583818110611111576111116133b2565b919091013560f81c5f81815260016020526040902054909250151590506111a05760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f74206578697374000000000000000060648201526084016105fe565b5f5f6111ac838b611da0565b91509150806111cd575f9150600160ff84161b6001600160c01b0386161794505b5f6111d98a8585611f87565b90506111e58482612200565b5050600190930192506110f6915050565b5095945050505050565b60605f826001600160401b0381111561121b5761121b612e36565b604051908082528060200260200182016040528015611244578160200160208202803683370190505b5090505f5b838110156114a1575f858583818110611264576112646133b2565b919091013560f81c5f81815260016020526040902054909250151590506113025760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a4016105fe565b60ff81165f908152600160205260408120805463ffffffff8a16929061132a5761132a6133b2565b5f9182526020909120015463ffffffff1611156113d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a4016105fe565b60ff81165f90815260016020526040812054905b818110156114965760ff83165f90815260016020819052604090912063ffffffff8b16916114178486613465565b6114219190613465565b81548110611431576114316133b2565b5f9182526020909120015463ffffffff161161148e5760016114538284613465565b61145d9190613465565b85858151811061146f5761146f6133b2565b602002602001019063ffffffff16908163ffffffff1681525050611496565b6001016113e9565b505050600101611249565b5090505b9392505050565b6004602052815f5260405f2081815481106114c5575f80fd5b5f918252602090912001546001600160a01b03169150829050565b604080516060810182525f80825260208083018290528284018290528582526002815283822060ff88168352905291909120805483908110611524576115246133b2565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106115ac576115ac6133b2565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182525f808252602080830182905282840182905260ff861682526001905291909120805483908110611629576116296133b2565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fa919061331b565b6001600160a01b0316336001600160a01b03161461172a5760405162461bcd60e51b81526004016105fe90613336565b816117458160ff165f90815260016020526040902054151590565b6117615760405162461bcd60e51b81526004016105fe906132ca565b61176b8383612371565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117b85760405162461bcd60e51b81526004016105fe906133df565b5f5b81811015611887575f8383838181106117d5576117d56133b2565b919091013560f81c5f81815260016020526040902054909250151590506118645760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016105fe565b5f61187086835f611f87565b905061187c8282612200565b5050506001016117ba565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190d919061331b565b6001600160a01b0316336001600160a01b03161461193d5760405162461bcd60e51b81526004016105fe90613336565b816119588160ff165f90815260016020526040902054151590565b6119745760405162461bcd60e51b81526004016105fe906132ca565b61176b83836123d9565b60ff83165f9081526001602052604081208054829190849081106119a4576119a46133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610c9b81856127f6565b60ff81165f908152600160208190526040822080549091611a1a91613465565b81548110611a2a57611a2a6133b2565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a5784848461296f565b949350505050565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611a8f57611a8f6133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611ae581866127f6565b6040015195945050505050565b60408051606080820183525f80835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611b4e579150610c899050565b5f85815260026020908152604080832060ff881684529091529020611b74600184613465565b81548110611b8457611b846133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610c89915050565b5f83815260026020908152604080832060ff861684529091528120611bfe85858561296f565b63ffffffff1681548110611c1457611c146133b2565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c7f5760405162461bcd60e51b81526004016105fe906133df565b60ff83165f9081526001602052604090205415611cfc5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b60648201526084016105fe565b611d0683826123d9565b611d108383612371565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b5f5f5f5f611dbc8660ff165f9081526003602052604090205490565b604080518082019091525f808252602082015290915060ff87165f9081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611e2f928c920161348c565b5f60405180830381865afa158015611e49573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e7091908101906134ed565b90505f5b83811015611f545760ff89165f908152600360205260409020805482908110611e9f57611e9f6133b2565b5f9182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611eec57611eec6133b2565b60200260200101511115611f4c57670de0b6b3a764000083602001516001600160601b0316838381518110611f2357611f236133b2565b6020026020010151611f359190613573565b611f3f919061358a565b611f4990866135a9565b94505b600101611e74565b50505060ff86165f90815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b5f83815260026020908152604080832060ff86168452909152812054819080820361204b575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff19909616919092161793909317169190911790556121a6565b5f86815260026020908152604080832060ff891684529091528120612071600184613465565b81548110612081576120816133b2565b5f91825260209091200180546001600160601b03600160401b90910481169450909150851683036120b7575f93505050506114a5565b805463ffffffff4381169116036120ef578054600160401b600160a01b031916600160401b6001600160601b038716021781556121a4565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26121f68285612ad2565b9695505050505050565b60ff82165f90815260016020819052604082208054918391906122239084613465565b81548110612233576122336133b2565b905f5260205f20019050835f0361225e5754600160401b90046001600160601b03169150610c899050565b80545f9061227c90600160401b90046001600160601b031686612ae9565b825490915063ffffffff4381169116036122b7578154600160401b600160a01b031916600160401b6001600160601b03831602178255612368565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b5f81511161243c5760405162461bcd60e51b815260206004820152603860248201525f5160206136495f395f51905f5260448201527f3a206e6f20737472617465676965732070726f7669646564000000000000000060648201526084016105fe565b805160ff83165f908152600360209081526040909120549061245e83836135c8565b11156124cd5760405162461bcd60e51b815260206004820152604560248201525f5160206136495f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a4016105fe565b5f5b828110156127ef575f5b6124e382846135c8565b8110156125b4578482815181106124fc576124fc6133b2565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f208281548110612538576125386133b2565b5f918252602090912001546001600160a01b0316036125ac5760405162461bcd60e51b815260206004820152603d60248201525f5160206136495f395f51905f5260448201527f3a2063616e6e6f74206164642073616d6520737472617465677920327800000060648201526084016105fe565b6001016124d9565b505f8482815181106125c8576125c86133b2565b6020026020010151602001516001600160601b03161161264c5760405162461bcd60e51b815260206004820152604660248201525f5160206136495f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a4016105fe565b60ff85165f9081526003602052604090208451859083908110612671576126716133b2565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106126d5576126d56133b2565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061274b5761274b6133b2565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a758583815181106127a8576127a86133b2565b60200260200101515f01518684815181106127c5576127c56133b2565b6020026020010151602001516040516127df929190612b6c565b60405180910390a26001016124cf565b5050505050565b815f015163ffffffff168163ffffffff16101561289a5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a4016105fe565b602082015163ffffffff1615806128c05750816020015163ffffffff168163ffffffff16105b61296b5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c4016105fe565b5050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612a0d575f86815260026020908152604080832060ff89168452909152902063ffffffff8516906129c1600184613465565b815481106129d1576129d16133b2565b5f9182526020909120015463ffffffff16116129fb576129f2600182613465565b925050506114a5565b80612a05816135db565b91505061298d565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e4016105fe565b5f6114a56001600160601b038085169084166135f0565b5f5f821215612b0c57612afb8261360f565b612b059084613629565b9050610c89565b612b0582846135a9565b803560ff81168114612b26575f5ffd5b919050565b5f60208284031215612b3b575f5ffd5b6114a582612b16565b5f5f60408385031215612b55575f5ffd5b612b5e83612b16565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ba2575f5ffd5b50565b5f5f60408385031215612bb6575f5ffd5b612bbf83612b16565b91506020830135612bcf81612b8e565b809150509250929050565b5f5f83601f840112612bea575f5ffd5b5081356001600160401b03811115612c00575f5ffd5b6020830191508360208260051b8501011115611f80575f5ffd5b5f5f5f5f5f60608688031215612c2e575f5ffd5b612c3786612b16565b945060208601356001600160401b03811115612c51575f5ffd5b612c5d88828901612bda565b90955093505060408601356001600160401b03811115612c7b575f5ffd5b612c8788828901612bda565b969995985093965092949392505050565b5f5f83601f840112612ca8575f5ffd5b5081356001600160401b03811115612cbe575f5ffd5b602083019150836020828501011115611f80575f5ffd5b5f5f5f5f60608587031215612ce8575f5ffd5b8435612cf381612b8e565b93506020850135925060408501356001600160401b03811115612d14575f5ffd5b612d2087828801612c98565b95989497509550505050565b5f8151808452602084019350602083015f5b82811015612d655781516001600160601b0316865260209586019590910190600101612d3e565b5093949350505050565b604081525f612d816040830185612d2c565b82810360208401526123688185612d2c565b5f5f60408385031215612da4575f5ffd5b82359150612db460208401612b16565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015612e2b57612e1583855163ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b6020939093019260609290920191600101612dd6565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612e6c57612e6c612e36565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e9a57612e9a612e36565b604052919050565b5f6001600160401b03821115612eba57612eba612e36565b5060051b60200190565b5f5f60408385031215612ed5575f5ffd5b612ede83612b16565b915060208301356001600160401b03811115612ef8575f5ffd5b8301601f81018513612f08575f5ffd5b8035612f1b612f1682612ea2565b612e72565b8082825260208201915060208360051b850101925087831115612f3c575f5ffd5b6020840193505b82841015612f5e578335825260209384019390910190612f43565b809450505050509250929050565b803563ffffffff81168114612b26575f5ffd5b5f5f5f60408486031215612f91575f5ffd5b612f9a84612f6c565b925060208401356001600160401b03811115612fb4575f5ffd5b612fc086828701612c98565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b81811015612e2b57835163ffffffff16835260209384019390920191600101612fe6565b5f5f5f6060848603121561301c575f5ffd5b61302584612b16565b95602085013595506040909401359392505050565b60608101610c89828463ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b80356001600160601b0381168114612b26575f5ffd5b5f5f6040838503121561309b575f5ffd5b6130a483612b16565b9150612db460208401613074565b5f5f5f604084860312156130c4575f5ffd5b8335925060208401356001600160401b03811115612fb4575f5ffd5b5f82601f8301126130ef575f5ffd5b81356130fd612f1682612ea2565b8082825260208201915060208360061b86010192508583111561311e575f5ffd5b602085015b838110156111f6576040818803121561313a575f5ffd5b613142612e4a565b813561314d81612b8e565b815261315b60208301613074565b602082015280845250602083019250604081019050613123565b5f5f60408385031215613186575f5ffd5b61318f83612b16565b915060208301356001600160401b038111156131a9575f5ffd5b6131b5858286016130e0565b9150509250929050565b5f5f5f606084860312156131d1575f5ffd5b6131da84612b16565b92506131e860208501612f6c565b929592945050506040919091013590565b5f5f5f6060848603121561320b575f5ffd5b8335925061321b60208501612b16565b915061322960408501612f6c565b90509250925092565b5f5f5f5f60808587031215613245575f5ffd5b61324e85612b16565b935061325c60208601612f6c565b93969395505050506040820135916060013590565b5f5f5f60608486031215613283575f5ffd5b61328c84612b16565b925061329a60208501613074565b915060408401356001600160401b038111156132b4575f5ffd5b6132c0868287016130e0565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b5f6020828403121561332b575f5ffd5b81516114a581612b8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156133d6575f5ffd5b6114a582613074565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c8957610c89613451565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b03831681526040602080830182905283549183018290525f84815290812090916060840190835b818110156134e15783546001600160a01b03168352600193840193602090930192016134ba565b50909695505050505050565b5f602082840312156134fd575f5ffd5b81516001600160401b03811115613512575f5ffd5b8201601f81018413613522575f5ffd5b8051613530612f1682612ea2565b8082825260208201915060208360051b850101925086831115613551575f5ffd5b6020840193505b828410156121f6578351825260209384019390910190613558565b8082028115828204841417610c8957610c89613451565b5f826135a457634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610c8957610c89613451565b80820180821115610c8957610c89613451565b5f816135e9576135e9613451565b505f190190565b8181035f83128015838313168383128216171561061757610617613451565b5f600160ff1b820161362357613623613451565b505f0390565b6001600160601b038281168282160390811115610c8957610c8961345156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220bba538e60ec1d03f94aa3e3fa9bc2a258ca4e97dbd75087844a34b07534a150764736f6c634300081b00336101c0604052348015610010575f5ffd5b50604051615f4e380380615f4e83398101604081905261002f91610242565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61012d8184846040805160208101859052908101839052606081018290524660808201523060a08201525f9060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a05261016561016e565b5050505061029e565b5f54610100900460ff16156101d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161015610229575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461023f575f5ffd5b50565b5f5f5f5f60808587031215610255575f5ffd5b84516102608161022b565b60208601519094506102718161022b565b60408601519093506102828161022b565b60608601519092506102938161022b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615bb56103995f395f8181610628015281816110dd01528181611f8301528181612c7f0152818161346c0152613a2201525f818161056e01528181611f0e015281816123a201528181612c04015281816133c80152818161360e01526139a601525f818161053401528181610e8201528181611f4c01528181612b8b01528181612d6001528181612dd70152818161334d0152613a9901525f818161047801528181612ae7015261329b01525f613c9801525f613ce701525f613cc201525f613c1b01525f613c4501525f613c6f0152615bb55ff3fe608060405234801561000f575f5ffd5b506004361061028b575f3560e01c80635df45946116101615780639feab859116100ca578063d75b4c8811610084578063d75b4c88146106e6578063dd8283f3146106f9578063e65797ad1461070c578063f2fde38b146107ae578063fabc1cbc146107c1578063fd39105a146107d4575f5ffd5b80639feab8591461064a578063a50857bf14610671578063c391425e14610684578063ca0de882146106a4578063ca4f2d97146106cb578063d72d8dd6146106de575f5ffd5b8063871ef0491161011b578063871ef049146105be578063886f1195146105d15780638da5cb5b146105e95780639aa1653d146105f15780639b5d177b146106105780639e9923c214610623575f5ffd5b80635df459461461052f5780636347c9001461055657806368304835146105695780636e3b17db14610590578063715018a6146105a357806384ca5213146105ab575f5ffd5b806328f61b31116102035780635140a548116101bd5780635140a548146104ba5780635865c60c146104cd578063595c6a67146104ed5780635ac86ab7146104f55780635b0b829f146105145780635c975abb14610527575f5ffd5b806328f61b3114610427578063296bb0641461043a57806329d1e0c31461044d5780632cdd1e86146104605780633998fdd3146104735780633c2a7f4c1461049a575f5ffd5b806310d67a2f1161025457806310d67a2f1461033f57806313542a4e14610352578063136439dd1461037a5780631478851f1461038d5780631eb812da146103bf578063249a0c4214610408575f5ffd5b8062cf2ab51461028f57806303fd3492146102a457806304ec6351146102d6578063054310e6146103015780630cf4b7671461032c575b5f5ffd5b6102a261029d36600461475f565b61080f565b005b6102c36102b236600461479d565b5f9081526098602052604090205490565b6040519081526020015b60405180910390f35b6102e96102e43660046147c5565b610918565b6040516001600160c01b0390911681526020016102cd565b609d54610314906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b6102a261033a3660046148e0565b610b0c565b6102a261034d366004614950565b610bf2565b6102c3610360366004614950565b6001600160a01b03165f9081526099602052604090205490565b6102a261038836600461479d565b610ca2565b6103af61039b36600461479d565b609a6020525f908152604090205460ff1681565b60405190151581526020016102cd565b6103d26103cd36600461496b565b610ddc565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102cd565b6102c361041636600461499b565b609b6020525f908152604090205481565b609e54610314906001600160a01b031681565b61031461044836600461479d565b610e6a565b6102a261045b366004614950565b610ef3565b6102a261046e366004614950565b610f04565b6103147f000000000000000000000000000000000000000000000000000000000000000081565b6104ad6104a8366004614950565b610f15565b6040516102cd91906149b4565b6102a26104c8366004614a08565b610f93565b6104e06104db366004614950565b611483565b6040516102cd9190614aa6565b6102a26114f5565b6103af61050336600461499b565b6001805460ff9092161b9081161490565b6102a2610522366004614b28565b6115bd565b6001546102c3565b6103147f000000000000000000000000000000000000000000000000000000000000000081565b61031461056436600461479d565b611654565b6103147f000000000000000000000000000000000000000000000000000000000000000081565b6102a261059e366004614b5a565b61167c565b6102a261173b565b6102c36105b9366004614c0a565b61174e565b6102e96105cc36600461479d565b611797565b5f54610314906201000090046001600160a01b031681565b6103146117a1565b6096546105fe9060ff1681565b60405160ff90911681526020016102cd565b6102a261061e366004614d99565b6117b9565b6103147f000000000000000000000000000000000000000000000000000000000000000081565b6102c37f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102a261067f366004614e9b565b611adc565b610697610692366004614f44565b611c4e565b6040516102cd9190614fe9565b6102c37f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102a26106d9366004615031565b611cfb565b609c546102c3565b6102a26106f4366004615117565b611d60565b6102a26107073660046152ba565b611d73565b61077a61071a36600461499b565b60408051606080820183525f808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102cd565b6102a26107bc366004614950565b612066565b6102a26107cf36600461479d565b6120dc565b6108026107e2366004614950565b6001600160a01b03165f9081526099602052604090206001015460ff1690565b6040516102cd9190615390565b6001546002906004908116036108405760405162461bcd60e51b81526004016108379061539e565b60405180910390fd5b5f5b82811015610912575f84848381811061085d5761085d6153d5565b90506020020160208101906108729190614950565b6001600160a01b0381165f9081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108bc576108bc614a72565b60028111156108cd576108cd614a72565b90525080519091505f6108df82612235565b90505f6108f4826001600160c01b031661229c565b9050610901858583612365565b505060019093019250610842915050565b50505050565b5f83815260986020526040812080548291908490811061093a5761093a6153d5565b5f91825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a335760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610837565b602081015163ffffffff161580610a595750806020015163ffffffff168463ffffffff16105b610b005760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610837565b60400151949350505050565b6001335f9081526099602052604090206001015460ff166002811115610b3457610b34614a72565b14610ba75760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610837565b335f90815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610be7908490615417565b60405180910390a250565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c669190615429565b6001600160a01b0316336001600160a01b031614610c965760405162461bcd60e51b815260040161083790615444565b610c9f8161244e565b50565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610cec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d10919061548e565b610d2c5760405162461bcd60e51b8152600401610837906154ad565b60015481811614610da55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610837565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610be7565b604080516060810182525f80825260208201819052918101919091525f838152609860205260409020805483908110610e1757610e176153d5565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610ecf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e649190615429565b610efb612551565b610c9f816125b0565b610f0c612551565b610c9f81612619565b604080518082019091525f8082526020820152610e64610f8e7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610f739291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612682565b6126ce565b600154600290600490811603610fbb5760405162461bcd60e51b81526004016108379061539e565b5f61100184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060965460ff1691506127589050565b90508483146110715760405162461bcd60e51b815260206004820152604360248201525f516020615b205f395f51905f5260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610837565b5f5b8381101561147a575f85858381811061108e5761108e6153d5565b919091013560f81c91503690505f8989858181106110ae576110ae6153d5565b90506020028101906110c091906154f5565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa15801561112a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114e919061553a565b63ffffffff1681146111e95760405162461bcd60e51b815260206004820152606560248201525f516020615b205f395f51905f5260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610837565b5f805b82811015611420575f848483818110611207576112076153d5565b905060200201602081019061121c9190614950565b6001600160a01b0381165f9081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561126657611266614a72565b600281111561127757611277614a72565b90525080519091505f61128982612235565b905060016001600160c01b03821660ff8b161c81161461130c5760405162461bcd60e51b8152602060048201526044602482018190525f516020615b205f395f51905f52908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610837565b856001600160a01b0316846001600160a01b0316116113b65760405162461bcd60e51b815260206004820152606760248201525f516020615b205f395f51905f5260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610837565b5061141383838f8f8d908e60016113cd9190615569565b926113da9392919061557c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061236592505050565b50909250506001016111ec565b5060ff84165f818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806001019050611073565b50505050505050565b604080518082019091525f80825260208201526001600160a01b0382165f908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156114db576114db614a72565b60028111156114ec576114ec614a72565b90525092915050565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561153f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611563919061548e565b61157f5760405162461bcd60e51b8152600401610837906154ad565b5f19600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6115c5612551565b609654829060ff908116908216106116455760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610837565b61164f83836127e8565b505050565b609c8181548110611663575f80fd5b5f918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146116fc5760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610837565b61164f8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061289492505050565b611743612551565b61174c5f612cee565b565b5f61178d7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610f73969594939291906155a3565b9695505050505050565b5f610e6482612235565b5f6117b46064546001600160a01b031690565b905090565b600180545f91908116036117df5760405162461bcd60e51b81526004016108379061539e565b8389146118625760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610837565b5f61186d3388612d3f565b90506118cc33828888808060200260200160405190810160405280939291908181526020015f905b828210156118c1576118b260408302860136819003810190615628565b81526020019060010190611895565b505050505087612e6d565b5f61191133838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c9250612ff8915050565b90505f5b8b811015611acd575f60975f8f8f85818110611933576119336153d5565b919091013560f81c82525060208082019290925260409081015f208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b9091049093169181019190915284518051919350908490811061199f5761199f6153d5565b602002602001015163ffffffff161115611ac457611a408e8e848181106119c8576119c86153d5565b9050013560f81c60f81b60f81c846040015184815181106119eb576119eb6153d5565b60200260200101513386602001518681518110611a0a57611a0a6153d5565b60200260200101518d8d88818110611a2457611a246153d5565b905060400201803603810190611a3a9190615628565b866134f5565b611ac4898984818110611a5557611a556153d5565b9050604002016020016020810190611a6d9190614950565b8f8f8590866001611a7e9190615569565b92611a8b9392919061557c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061289492505050565b50600101611915565b50505050505050505050505050565b600180545f9190811603611b025760405162461bcd60e51b81526004016108379061539e565b5f611b0d3385612d3f565b90505f611b5433838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c9250612ff8915050565b5190505f5b88811015611c42575f8a8a83818110611b7457611b746153d5565b919091013560f81c5f81815260976020526040902054855191935063ffffffff169150849084908110611ba957611ba96153d5565b602002602001015163ffffffff161115611c395760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610837565b50600101611b59565b50505050505050505050565b60605f82516001600160401b03811115611c6a57611c6a6147fa565b604051908082528060200260200182016040528015611c93578160200160208202803683370190505b5090505f5b8351811015611cf357611cc485858381518110611cb757611cb76153d5565b60200260200101516137c0565b828281518110611cd657611cd66153d5565b63ffffffff90921660209283029190910190910152600101611c98565b509392505050565b60018054600290811603611d215760405162461bcd60e51b81526004016108379061539e565b61164f3384848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061289492505050565b611d68612551565b61164f8383836138ee565b5f54610100900460ff1615808015611d9157505f54600160ff909116105b80611daa5750303b158015611daa57505f5460ff166001145b611e0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610837565b5f805460ff191660011790558015611e2e575f805461ff0019166101001790555b82518451148015611e40575081518351145b611eaa5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610837565b611eb389612cee565b611ebd8686613af6565b611ec6886125b0565b611ecf87612619565b609c8054600181810183555f8381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120155761200d858281518110611fcc57611fcc6153d5565b6020026020010151858381518110611fe657611fe66153d5565b6020026020010151858481518110612000576120006153d5565b60200260200101516138ee565b600101611fae565b50801561205b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61206e612551565b6001600160a01b0381166120d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610837565b610c9f81612cee565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121509190615429565b6001600160a01b0316336001600160a01b0316146121805760405162461bcd60e51b815260040161083790615444565b6001541981196001541916146121fe5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610837565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610be7565b5f8181526098602052604081205480820361225257505f92915050565b5f83815260986020526040902061226a600183615642565b8154811061227a5761227a6153d5565b5f91825260209091200154600160401b90046001600160c01b03169392505050565b60605f5f6122a984613be5565b61ffff166001600160401b038111156122c4576122c46147fa565b6040519080825280601f01601f1916602001820160405280156122ee576020820181803683370190505b5090505f805b825182108015612305575061010081105b1561235b576001811b93508584161561234b578060f81b83838151811061232e5761232e6153d5565b60200101906001600160f81b03191690815f1a9053508160010191505b61235481615655565b90506122f4565b5090949350505050565b60018260200151600281111561237d5761237d614a72565b1461238757505050565b81516040516333567f7f60e11b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906123db9088908690889060040161566d565b6020604051808303815f875af11580156123f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061241b919061569c565b90506001600160c01b038116156124475761244785612442836001600160c01b031661229c565b612894565b5050505050565b6001600160a01b0381166124dc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610837565b5f54604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a15f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361255a6117a1565b6001600160a01b03161461174c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610837565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610e6461268e613c0f565b8360405161190160f01b602082015260228101839052604281018290525f9060620160405160208183030381529060405280519060200120905092915050565b604080518082019091525f80825260208201525f80806126fb5f516020615b605f395f51905f52866156d6565b90505b61270781613d35565b90935091505f516020615b605f395f51905f52828309830361273f576040805180820190915290815260208101919091529392505050565b5f516020615b605f395f51905f526001820890506126fe565b5f5f61276384613db1565b9050808360ff166001901b116127e15760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610837565b9392505050565b60ff82165f81815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382165f908152609960205260409020805460018083015460ff1660028111156128c7576128c7614a72565b146129465760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610837565b6096545f9061295990859060ff16612758565b90505f61296583612235565b90506001600160c01b0382166129e35760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610837565b6129fa6001600160c01b0383811690831681161490565b612a925760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610837565b6001600160c01b0382811619821616612aab8482613f34565b6001600160c01b038116612b745760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015f604051808303815f87803b158015612b28575f5ffd5b505af1158015612b3a573d5f5f3e3d5ffd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e4905f90a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612bc2908a908a906004016156e9565b5f604051808303815f87803b158015612bd9575f5ffd5b505af1158015612beb573d5f5f3e3d5ffd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612c3d9087908a9060040161570c565b5f604051808303815f87803b158015612c54575f5ffd5b505af1158015612c66573d5f5f3e3d5ffd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612cb89087908a9060040161570c565b5f604051808303815f87803b158015612ccf575f5ffd5b505af1158015612ce1573d5f5f3e3d5ffd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612da7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dcb9190615724565b90505f819003610e64577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612e0f87610f15565b6040518463ffffffff1660e01b8152600401612e2d9392919061573b565b6020604051808303815f875af1158015612e49573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127e19190615724565b6020808201515f908152609a909152604090205460ff1615612f125760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610837565b4281604001511015612fa75760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610837565b602080820180515f908152609a909252604091829020805460ff19166001179055609d54905191830151610912926001600160a01b0390921691612ff1918891889188919061174e565b83516140f0565b61301c60405180606001604052806060815260200160608152602001606081525090565b5f61306286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060965460ff1691506127589050565b90505f61306e88612235565b90506001600160c01b0382166130ec5760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610837565b8082166001600160c01b0316156131a25760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610837565b6001600160c01b03818116908316176131bb8982613f34565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516131eb9190615417565b60405180910390a260016001600160a01b038b165f9081526099602052604090206001015460ff16600281111561322457613224614a72565b14613336576040805180820182528a8152600160208083018281526001600160a01b038f165f908152609990925293902082518155925183820180549394939192909160ff19169083600281111561327e5761327e614a72565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906132d3908d9089906004016157ab565b5f604051808303815f87803b1580156132ea575f5ffd5b505af11580156132fc573d5f5f3e3d5ffd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe905f90a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb2795290613386908d908c908c9060040161581d565b5f604051808303815f87803b15801561339d575f5ffd5b505af11580156133af573d5f5f3e3d5ffd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613405908d908d908d908d90600401615841565b5f604051808303815f875af1158015613420573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261344791908101906158cc565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906134a4908c908c908c9060040161592f565b5f604051808303815f875af11580156134bf573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134e69190810190615948565b84525050509695505050505050565b6020808301516001600160a01b038082165f81815260999094526040909320549192908716036135725760405162461bcd60e51b815260206004820152603560248201525f516020615b405f395f51905f5260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610837565b8760ff16845f015160ff16146135ed5760405162461bcd60e51b815260206004820152604760248201525f516020615b405f395f51905f5260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610837565b604051635401ed2760e01b81526004810182905260ff891660248201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa15801561365b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061367f91906159d7565b905061368b81856142a8565b6001600160601b0316866001600160601b03161161371d5760405162461bcd60e51b815260206004820152605660248201525f516020615b405f395f51905f5260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610837565b61372788856142cb565b6001600160601b0316816001600160601b03161061205b5760405162461bcd60e51b815260206004820152605c60248201525f516020615b405f395f51905f5260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610837565b5f81815260986020526040812054815b818110156138445760016137e48284615642565b6137ee9190615642565b92508463ffffffff1660985f8681526020019081526020015f208463ffffffff168154811061381f5761381f6153d5565b5f9182526020909120015463ffffffff161161383c575050610e64565b6001016137d0565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610837565b60965460ff1660c081106139625760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610837565b61396d8160016159f2565b6096805460ff191660ff929092169190911790558061398c81866127e8565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a77906139df90849088908890600401615a0b565b5f604051808303815f87803b1580156139f6575f5ffd5b505af1158015613a08573d5f5f3e3d5ffd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f291506024015f604051808303815f87803b158015613a6d575f5ffd5b505af1158015613a7f573d5f5f3e3d5ffd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f291506024015f604051808303815f87803b158015613ae4575f5ffd5b505af115801561205b573d5f5f3e3d5ffd5b5f546201000090046001600160a01b0316158015613b1c57506001600160a01b03821615155b613b9e5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610837565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613be18261244e565b5050565b5f805b8215610e6457613bf9600184615642565b9092169180613c0781615a89565b915050613be8565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613c6757507f000000000000000000000000000000000000000000000000000000000000000046145b15613c9157507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b5f80805f516020615b605f395f51905f5260035f516020615b605f395f51905f52865f516020615b605f395f51905f52888909090890505f613da5827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f516020615b605f395f51905f526142e4565b91959194509092505050565b5f61010082511115613e395760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610837565b81515f03613e4857505f919050565b5f5f835f81518110613e5c57613e5c6153d5565b0160200151600160f89190911c81901b92505b8451811015613f2b57848181518110613e8a57613e8a6153d5565b0160200151600160f89190911c1b9150828211613f1f5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610837565b91811791600101613e6f565b50909392505050565b5f8281526098602052604081205490819003613fda575f838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b5f838152609860205260408120613ff2600184615642565b81548110614002576140026153d5565b5f918252602090912001805490915063ffffffff4381169116036140435780546001600160401b0316600160401b6001600160c01b03851602178155610912565b805463ffffffff438116600160201b81810267ffffffff00000000199094169390931784555f87815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561420857604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90614130908690869060040161570c565b602060405180830381865afa15801561414b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061416f9190615aa9565b6001600160e01b0319161461164f5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610837565b826001600160a01b031661421c838361438c565b6001600160a01b03161461164f5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610837565b60208101515f90612710906142c19061ffff1685615ad0565b6127e19190615af2565b60408101515f90612710906142c19061ffff1685615ad0565b5f5f6142ee6146e3565b6142f6614701565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061433357fe5b50826143815760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610837565b505195945050505050565b5f5f5f61439985856143a6565b91509150611cf381614411565b5f5f82516041036143da576020830151604084015160608501515f1a6143ce878285856145c6565b9450945050505061440a565b825160400361440357602083015160408401516143f88683836146ab565b93509350505061440a565b505f905060025b9250929050565b5f81600481111561442457614424614a72565b0361442c5750565b600181600481111561444057614440614a72565b0361448d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610837565b60028160048111156144a1576144a1614a72565b036144ee5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610837565b600381600481111561450257614502614a72565b0361455a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610837565b600481600481111561456e5761456e614a72565b03610c9f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610837565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156145fb57505f905060036146a2565b8460ff16601b1415801561461357508460ff16601c14155b1561462357505f905060046146a2565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614674573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661469c575f600192509250506146a2565b91505f90505b94509492505050565b5f806001600160ff1b038316816146c760ff86901c601b615569565b90506146d5878288856145c6565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5f5f83601f84011261472f575f5ffd5b5081356001600160401b03811115614745575f5ffd5b6020830191508360208260051b850101111561440a575f5ffd5b5f5f60208385031215614770575f5ffd5b82356001600160401b03811115614785575f5ffd5b6147918582860161471f565b90969095509350505050565b5f602082840312156147ad575f5ffd5b5035919050565b63ffffffff81168114610c9f575f5ffd5b5f5f5f606084860312156147d7575f5ffd5b8335925060208401356147e9816147b4565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614830576148306147fa565b60405290565b604080519081016001600160401b0381118282101715614830576148306147fa565b604051601f8201601f191681016001600160401b0381118282101715614880576148806147fa565b604052919050565b5f5f6001600160401b038411156148a1576148a16147fa565b50601f8301601f19166020016148b681614858565b9150508281528383830111156148ca575f5ffd5b828260208301375f602084830101529392505050565b5f602082840312156148f0575f5ffd5b81356001600160401b03811115614905575f5ffd5b8201601f81018413614915575f5ffd5b61492484823560208401614888565b949350505050565b6001600160a01b0381168114610c9f575f5ffd5b803561494b8161492c565b919050565b5f60208284031215614960575f5ffd5b81356127e18161492c565b5f5f6040838503121561497c575f5ffd5b50508035926020909101359150565b803560ff8116811461494b575f5ffd5b5f602082840312156149ab575f5ffd5b6127e18261498b565b815181526020808301519082015260408101610e64565b5f5f83601f8401126149db575f5ffd5b5081356001600160401b038111156149f1575f5ffd5b60208301915083602082850101111561440a575f5ffd5b5f5f5f5f60408587031215614a1b575f5ffd5b84356001600160401b03811115614a30575f5ffd5b614a3c8782880161471f565b90955093505060208501356001600160401b03811115614a5a575f5ffd5b614a66878288016149cb565b95989497509550505050565b634e487b7160e01b5f52602160045260245ffd5b60038110614aa257634e487b7160e01b5f52602160045260245ffd5b9052565b815181526020808301516040830191614ac190840182614a86565b5092915050565b803561ffff8116811461494b575f5ffd5b5f60608284031215614ae9575f5ffd5b614af161480e565b90508135614afe816147b4565b8152614b0c60208301614ac8565b6020820152614b1d60408301614ac8565b604082015292915050565b5f5f60808385031215614b39575f5ffd5b614b428361498b565b9150614b518460208501614ad9565b90509250929050565b5f5f5f60408486031215614b6c575f5ffd5b8335614b778161492c565b925060208401356001600160401b03811115614b91575f5ffd5b614b9d868287016149cb565b9497909650939450505050565b5f6001600160401b03821115614bc257614bc26147fa565b5060051b60200190565b5f60408284031215614bdc575f5ffd5b614be4614836565b9050614bef8261498b565b81526020820135614bff8161492c565b602082015292915050565b5f5f5f5f5f60a08688031215614c1e575f5ffd5b8535614c298161492c565b94506020860135935060408601356001600160401b03811115614c4a575f5ffd5b8601601f81018813614c5a575f5ffd5b8035614c6d614c6882614baa565b614858565b8082825260208201915060208360061b85010192508a831115614c8e575f5ffd5b6020840193505b82841015614cba57614ca78b85614bcc565b8252602082019150604084019350614c95565b979a9699509697606081013597506080013595945050505050565b5f6101008284031215614ce6575f5ffd5b50919050565b5f5f83601f840112614cfc575f5ffd5b5081356001600160401b03811115614d12575f5ffd5b6020830191508360208260061b850101111561440a575f5ffd5b5f60608284031215614d3c575f5ffd5b614d4461480e565b905081356001600160401b03811115614d5b575f5ffd5b8201601f81018413614d6b575f5ffd5b614d7a84823560208401614888565b8252506020828101359082015260409182013591810191909152919050565b5f5f5f5f5f5f5f5f5f6101a08a8c031215614db2575f5ffd5b89356001600160401b03811115614dc7575f5ffd5b614dd38c828d016149cb565b909a5098505060208a01356001600160401b03811115614df1575f5ffd5b614dfd8c828d016149cb565b9098509650614e1190508b60408c01614cd5565b94506101408a01356001600160401b03811115614e2c575f5ffd5b614e388c828d01614cec565b9095509350506101608a01356001600160401b03811115614e57575f5ffd5b614e638c828d01614d2c565b9250506101808a01356001600160401b03811115614e7f575f5ffd5b614e8b8c828d01614d2c565b9150509295985092959850929598565b5f5f5f5f5f5f6101608789031215614eb1575f5ffd5b86356001600160401b03811115614ec6575f5ffd5b614ed289828a016149cb565b90975095505060208701356001600160401b03811115614ef0575f5ffd5b614efc89828a016149cb565b9095509350614f1090508860408901614cd5565b91506101408701356001600160401b03811115614f2b575f5ffd5b614f3789828a01614d2c565b9150509295509295509295565b5f5f60408385031215614f55575f5ffd5b8235614f60816147b4565b915060208301356001600160401b03811115614f7a575f5ffd5b8301601f81018513614f8a575f5ffd5b8035614f98614c6882614baa565b8082825260208201915060208360051b850101925087831115614fb9575f5ffd5b6020840193505b82841015614fdb578335825260209384019390910190614fc0565b809450505050509250929050565b602080825282518282018190525f918401906040840190835b8181101561502657835163ffffffff16835260209384019390920191600101615002565b509095945050505050565b5f5f60208385031215615042575f5ffd5b82356001600160401b03811115615057575f5ffd5b614791858286016149cb565b6001600160601b0381168114610c9f575f5ffd5b5f82601f830112615086575f5ffd5b8135615094614c6882614baa565b8082825260208201915060208360061b8601019250858311156150b5575f5ffd5b602085015b8381101561510d57604081880312156150d1575f5ffd5b6150d9614836565b81356150e48161492c565b815260208201356150f481615063565b60208281019190915290845292909201916040016150ba565b5095945050505050565b5f5f5f60a08486031215615129575f5ffd5b6151338585614ad9565b9250606084013561514381615063565b915060808401356001600160401b0381111561515d575f5ffd5b61516986828701615077565b9150509250925092565b5f82601f830112615182575f5ffd5b8135615190614c6882614baa565b808282526020820191506020606084028601019250858311156151b1575f5ffd5b602085015b8381101561510d576151c88782614ad9565b83526020909201916060016151b6565b5f82601f8301126151e7575f5ffd5b81356151f5614c6882614baa565b8082825260208201915060208360051b860101925085831115615216575f5ffd5b602085015b8381101561510d57803561522e81615063565b83526020928301920161521b565b5f82601f83011261524b575f5ffd5b8135615259614c6882614baa565b8082825260208201915060208360051b86010192508583111561527a575f5ffd5b602085015b8381101561510d5780356001600160401b0381111561529c575f5ffd5b6152ab886020838a0101615077565b8452506020928301920161527f565b5f5f5f5f5f5f5f5f610100898b0312156152d2575f5ffd5b6152db89614940565b97506152e960208a01614940565b96506152f760408a01614940565b955061530560608a01614940565b94506080890135935060a08901356001600160401b03811115615326575f5ffd5b6153328b828c01615173565b93505060c08901356001600160401b0381111561534d575f5ffd5b6153598b828c016151d8565b92505060e08901356001600160401b03811115615374575f5ffd5b6153808b828c0161523c565b9150509295985092959890939650565b60208101610e648284614a86565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6127e160208301846153e9565b5f60208284031215615439575f5ffd5b81516127e18161492c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b5f6020828403121561549e575f5ffd5b815180151581146127e1575f5ffd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b5f5f8335601e1984360301811261550a575f5ffd5b8301803591506001600160401b03821115615523575f5ffd5b6020019150600581901b360382131561440a575f5ffd5b5f6020828403121561554a575f5ffd5b81516127e1816147b4565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e6457610e64615555565b5f5f8585111561558a575f5ffd5b83861115615596575f5ffd5b5050820193919092039150565b5f60c0820188835260018060a01b038816602084015286604084015260c0606084015280865180835260e0850191506020880192505f5b81811015615610578351805160ff1684526020908101516001600160a01b031681850152909301926040909201916001016155da565b50506080840195909552505060a00152949350505050565b5f60408284031215615638575f5ffd5b6127e18383614bcc565b81810381811115610e6457610e64615555565b5f6001820161566657615666615555565b5060010190565b60018060a01b0384168152826020820152606060408201525f61569360608301846153e9565b95945050505050565b5f602082840312156156ac575f5ffd5b81516001600160c01b03811681146127e1575f5ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826156e4576156e46156c2565b500690565b6001600160a01b03831681526040602082018190525f90614924908301846153e9565b828152604060208201525f61492460408301846153e9565b5f60208284031215615734575f5ffd5b5051919050565b6001600160a01b03841681526101608101615763602083018580358252602090810135910152565b61577d606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614924565b60018060a01b0383168152604060208201525f8251606060408401526157d460a08401826153e9565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190525f9061569390830184866157f5565b60018060a01b0385168152836020820152606060408201525f61178d6060830184866157f5565b5f82601f830112615877575f5ffd5b8151615885614c6882614baa565b8082825260208201915060208360051b8601019250858311156158a6575f5ffd5b602085015b8381101561510d5780516158be81615063565b8352602092830192016158ab565b5f5f604083850312156158dd575f5ffd5b82516001600160401b038111156158f2575f5ffd5b6158fe85828601615868565b92505060208301516001600160401b03811115615919575f5ffd5b61592585828601615868565b9150509250929050565b838152604060208201525f6156936040830184866157f5565b5f60208284031215615958575f5ffd5b81516001600160401b0381111561596d575f5ffd5b8201601f8101841361597d575f5ffd5b805161598b614c6882614baa565b8082825260208201915060208360051b8501019250868311156159ac575f5ffd5b6020840193505b8284101561178d5783516159c6816147b4565b8252602093840193909101906159b3565b5f602082840312156159e7575f5ffd5b81516127e181615063565b60ff8181168382160190811115610e6457610e64615555565b5f6060820160ff861683526001600160601b0385166020840152606060408401528084518083526080850191506020860192505f5b81811015615a7c57835180516001600160a01b031684526020908101516001600160601b03168185015290930192604090920191600101615a40565b5090979650505050505050565b5f61ffff821661ffff8103615aa057615aa0615555565b60010192915050565b5f60208284031215615ab9575f5ffd5b81516001600160e01b0319811681146127e1575f5ffd5b6001600160601b038181168382160290811690818114614ac157614ac1615555565b5f6001600160601b03831680615b0a57615b0a6156c2565b806001600160601b038416049150509291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212201a144f0030bdfb9ee5b344ad192130e6ac3cc038f2faadae7c522733ba94169264736f6c634300081b00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d2e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da26469706673582212209f7a2ff9f4bae086742d0fb8fd9599625c205e772ef99dad2e37e60e6661c39264736f6c634300081b0033 + /// ``` + #[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`\x1FW__\xFD[Pb\x01c\xDA\x80b\0\0/_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xFBW_5`\xE0\x1C\x80c\x8B,i\xEB\x11a\0\x93W\x80c\xC0@b&\x11a\0cW\x80c\xC0@b&\x14a\x02\x07W\x80c\xE1\x82r\xC2\x14a\x02\x11W\x80c\xE3\xA8\xB3E\x14a\x02$W\x80c\xF8\xCC\xBFG\x14a\x027W__\xFD[\x80c\x8B,i\xEB\x14a\x01\xBBW\x80c\x8CO\x9BP\x14a\x01\xCEW\x80c\x9E;\xA47\x14a\x01\xE1W\x80c\x9E\x99#\xC2\x14a\x01\xF4W__\xFD[\x80c]\xF4YF\x11a\0\xCEW\x80c]\xF4YF\x14a\x01oW\x80ch0H5\x14a\x01\x82W\x80cm\x14\xA9\x87\x14a\x01\x95W\x80c\x80\xE0d\xD4\x14a\x01\xA8W__\xFD[\x80c\x031\xED*\x14a\0\xFFW\x80c4fud\x14a\x016W\x80c9\xA5\xFC\xFA\x14a\x01IW\x80cL\xA2,?\x14a\x01\\W[__\xFD[`\x0CTa\x01\x19\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[`\x19Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0FTa\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x16Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x10Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x14Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0ETa\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\rTa\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x13Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x18Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x11Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x12Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\x0Fa\x02ZV[\0[`\x15Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x17Ta\x01\x19\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0CTa\x02J\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01-V[s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3_a\x02xa\x08\x07V[\x90P_a\x02\xA9`@Q\x80`@\x01`@R\x80`\r\x81R` \x01lops_addresses`\x98\x1B\x81RPa\n{V[\x90P_Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xF3W__\xFD[PZ\xF1\x15\x80\x15a\x03\x05W=__>=_\xFD[PPPP`@Qa\x03\x15\x90a ?V[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x03.W=__>=_\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`@Qa\x03[\x90a LV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x03tW=__>=_\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\x90a\x03\xB9\x90a ZV[a\x03\xC4\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x03\xDDW=__>=_\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_\x92a\x04\x10\x92\x86\x92\x86\x92\x16a\x0B\xD0V[\x90P`\x0E_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\xA0\x01Q\x84`\xC0\x01Q`@Qa\x04=\x90a hV[`\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_\xF0\x80\x15\x80\x15a\x04vW=__>=_\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\x94a\x05\n\x94\x93\x90\x91\x16\x92\x90\x91\x90`\x04\x01a! V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x05!W__\xFD[PZ\xF1\x15\x80\x15a\x053W=__>=_\xFD[PP`\x18T`@\x80Qc\x8D\xA5\xCB[`\xE0\x1B\x81R\x90Q_\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\x15a\x05\x80W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xA4\x91\x90a!KV[`\x01`\x01`\xA0\x1B\x03\x16\x03a\x05\xF5W`@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\x80a\x06\x06WPFa\x059\x14[\x15a\x07\xA3W`\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06yW__\xFD[PZ\xF1\x15\x80\x15a\x06\x8BW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\xFAW__\xFD[PZ\xF1\x15\x80\x15a\x07\x0CW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07\x82W__\xFD[PZ\xF1\x15\x80\x15a\x07\x94W=__>=_\xFD[PPPPa\x07\xA3\x84\x84\x83a\x18\x9EV[_Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07\xEBW__\xFD[PZ\xF1\x15\x80\x15a\x07\xFDW=__>=_\xFD[PPPPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R_\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_a\x08\x86`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\x1B\xA8V[\x90P_a\x08\xC8\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x1D\x8FV[\x90P_a\t\n\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x1D\x8FV[\x90P_a\tL\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x1D\x8FV[\x90P_a\t\x86\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\x1D\x8FV[\x90P_a\t\xC8\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x1D\x8FV[\x90P_a\t\xFF\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x1D\x8FV[\x90P_a\n%\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x01c``%\x919a\x1D\x8FV[`@\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_`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R\x90a\n\xA7\x83a\x1E\nV[\x90Pa\n\xD2`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91R\x90V[a\x0B\x06\x82`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q.communityMultisig`p\x1B\x81RPa\x1D\x8FV[`\x01`\x01`\xA0\x1B\x03\x16\x81R`@\x80Q\x80\x82\x01\x90\x91R`\x07\x81Rf\x1780\xBA\xB9\xB2\xB9`\xC9\x1B` \x82\x01Ra\x0B:\x90\x83\x90a\x1D\x8FV[\x81` \x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPa\x0B\x81\x82`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x171\xB4:\xB972\xB9`\xC1\x1B\x81RPa\x1D\x8FV[`\x01`\x01`\xA0\x1B\x03\x16`@\x80\x83\x01\x91\x90\x91R\x80Q\x80\x82\x01\x90\x91R`\x08\x81Rg\x172\xB52\xB1\xBA7\xB9`\xC1\x1B` \x82\x01Ra\x0B\xBB\x90\x83\x90a\x1D\x8FV[`\x01`\x01`\xA0\x1B\x03\x16``\x82\x01R\x93\x92PPPV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q`\x02\x80\x82R\x92\x81\x01\x90\x94R\x91\x92\x90\x81` \x01` \x82\x02\x806\x837\x01\x90PP\x90P\x84` \x01Q\x81_\x81Q\x81\x10a\x0C%Wa\x0C%a!\x85V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84_\x01Q\x81`\x01\x81Q\x81\x10a\x0C\\Wa\x0C\\a!\x85V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85_\x01Q`@Qa\x0C\x8D\x90a vV[a\x0C\x98\x92\x91\x90a!\x99V[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0C\xB1W=__>=_\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\x90a\x0C\xF0\x90a ZV[a\x0C\xFB\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\r\x14W=__>=_\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\x90a\rQ\x90a ZV[a\r\\\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\ruW=__>=_\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\x90a\r\xB2\x90a ZV[a\r\xBD\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\r\xD6W=__>=_\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\x90a\x0E\x13\x90a ZV[a\x0E\x1E\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0E7W=__>=_\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`@Qa\x0Ed\x90a \x84V[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0E}W=__>=_\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\x90a\x0E\xAC\x90a \x92V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0E\xD5W=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0FCW__\xFD[PZ\xF1\x15\x80\x15a\x0FUW=__>=_\xFD[PP`\x0ET`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pa\x0Ft\x91Pa \xA0V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0F\x9DW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x10\x0BW__\xFD[PZ\xF1\x15\x80\x15a\x10\x1DW=__>=_\xFD[PP`\x0ET``\x88\x01Q`@Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x93P\x91Pa\x10B\x90a \xAEV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x10rW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x10\xE0W__\xFD[PZ\xF1\x15\x80\x15a\x10\xF2W=__>=_\xFD[PP`\x14T`\x10T`\x12T`@Q\x88\x95P`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94P\x91\x83\x16\x92\x16\x90a\x11\x1F\x90a \xBCV[`\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_\xF0\x80\x15\x80\x15a\x11`W=__>=_\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_\x80\x82R` \x82\x01\x90\x92R\x81\x90\x81a\x11\xC3V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R_\x19\x90\x92\x01\x91\x01\x81a\x11\x98W\x90P[P\x90P_[\x82\x81\x10\x15a\x12\x17W`@\x80Q``\x81\x01\x82Ra'\x10\x81Ra:\x98` \x82\x01R`d\x91\x81\x01\x91\x90\x91R\x82Q\x83\x90\x83\x90\x81\x10a\x12\x04Wa\x12\x04a!\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x11\xC8V[P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x122Wa\x122a!qV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12[W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12xWa\x12xa!qV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xABW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12\x96W\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_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x0F_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x82\x83\xF3`\xE0\x1B\x8C_\x01Q\x8D`@\x01Q\x8E``\x01Q\x8F` \x01Q_\x8C\x8C\x8C`@Q`$\x01a\x132\x98\x97\x96\x95\x94\x93\x92\x91\x90a\"\xE8V[`@\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\x82Ra\x13y\x93\x92\x91`\x04\x01a! V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x13\x90W__\xFD[PZ\xF1\x15\x80\x15a\x13\xA2W=__>=_\xFD[PP`\x0ET`@\x80Qc\x8D\xA5\xCB[`\xE0\x1B\x81R\x90Q_\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\x15a\x13\xF3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\x17\x91\x90a!KV[`\x01`\x01`\xA0\x1B\x03\x16\x03a\x14cW`@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\x01a\x05\xECV[`@\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\x91_Q` b\x01c@_9_Q\x90_R\x91c\x97,`b\x91a\x14\xF2\x91\x85\x91c\x01\0\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90`\x04\x01a#\xBBV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x15\rW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x154\x91\x90\x81\x01\x90a$\x08V[P`@QcK\x9601`\xE1\x1B\x81R_Q` b\x01c@_9_Q\x90_R\x90c\x97,`b\x90a\x15h\x90\x84\x90\x89\x90`\x04\x01a$\xBBV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x15\x83W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x15\xAA\x91\x90\x81\x01\x90a$\x08V[P`@QcK\x9601`\xE1\x1B\x81R_Q` b\x01c@_9_Q\x90_R\x90c\x97,`b\x90a\x15\xDE\x90\x84\x90\x88\x90`\x04\x01a%\x19V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x15\xF9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x16 \x91\x90\x81\x01\x90a$\x08V[P`\x0ET`@QcK\x9601`\xE1\x1B\x81R_Q` b\x01c@_9_Q\x90_R\x91c\x97,`b\x91a\x16a\x91\x85\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\x04\x01a%\x85V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x16|W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x16\xA3\x91\x90\x81\x01\x90a$\x08V[P`\x0FT`@QcK\x9601`\xE1\x1B\x81R_Q` b\x01c@_9_Q\x90_R\x91c\x97,`b\x91a\x16\xE4\x91\x85\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\x04\x01a%\xDBV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x16\xFFW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x17&\x91\x90\x81\x01\x90a$\x08V[P`\x16T`@QcK\x9601`\xE1\x1B\x81R_\x91_Q` b\x01c@_9_Q\x90_R\x91c\x97,`b\x91a\x17g\x91\x86\x91`\x01`\x01`\xA0\x1B\x03\x16\x90`\x04\x01a&EV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x17\x82W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x17\xA9\x91\x90\x81\x01\x90a$\x08V[`@Qc\x88\xDAm5`\xE0\x1B\x81R\x90\x91P_\x90_Q` b\x01c@_9_Q\x90_R\x90c\x88\xDAm5\x90a\x17\xE3\x90\x87\x90\x87\x90\x87\x90`\x04\x01a&\x9EV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x17\xFEW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x18%\x91\x90\x81\x01\x90a$\x08V[\x90Pa\x18f\x81`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7Fmockavs_deployment_output\0\0\0\0\0\0\0\x81RPa\x1E\x8FV[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<,(\x91a\x18\xCB\x91\x90`\x04\x01a&\xE0V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\xE2W__\xFD[PZ\xF1\x15\x80\x15a\x18\xF4W=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x19tW__\xFD[PZ\xF1\x15\x80\x15a\x19\x86W=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\x04W__\xFD[PZ\xF1\x15\x80\x15a\x1A\x16W=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\x8AW__\xFD[PZ\xF1\x15\x80\x15a\x1A\x9CW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1B\x0CW__\xFD[PZ\xF1\x15\x80\x15a\x1B\x1EW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1B\x8DW__\xFD[PZ\xF1\x15\x80\x15a\x1B\x9FW=__>=_\xFD[PPPPPPPV[``__Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xF6W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1C\x1D\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1C-\x91\x90a'EV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90_Q` b\x01c@_9_Q\x90_R\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\x85W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1C\xAC\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1C\xBC\x91\x90a'oV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x84`@Q` \x01a\x1C\xDF\x91\x90a'\x8BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91P_Q` b\x01c@_9_Q\x90_R\x90c`\xF9\xBB\x11\x90a\x1D\x1A\x90\x86\x90\x86\x90\x86\x90` \x01a'\xABV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1DE\x91\x90a'\xC8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D_W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D\x86\x91\x90\x81\x01\x90a$\x08V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R_\x90_Q` b\x01c@_9_Q\x90_R\x90c\x1E\x19\xE6W\x90a\x1D\xC4\x90\x86\x90\x86\x90`\x04\x01a'\xDAV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\xDFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\x03\x91\x90a!KV[\x93\x92PPPV[``__Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EXW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1E\x7F\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1C-\x91\x90a'\xFEV[__Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xDBW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\x02\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1F\x12\x91\x90a'EV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90_Q` b\x01c@_9_Q\x90_R\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1FjW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\x91\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1F\xA1\x91\x90a'oV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x82\x82\x85`@Q` \x01a\x1F\xC8\x93\x92\x91\x90a('V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rc\xE2<\xD1\x9F`\xE0\x1B\x82R\x91P_Q` b\x01c@_9_Q\x90_R\x90c\xE2<\xD1\x9F\x90a \x0B\x90\x88\x90\x85\x90`\x04\x01a'\xDAV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a \"W__\xFD[PZ\xF1\x15\x80\x15a 4W=__>=_\xFD[PPPPPPPPPV[`\x8D\x80b\0(P\x839\x01\x90V[a\x06\xC8\x80b\0(\xDD\x839\x01\x90V[a\x0C\xF2\x80b\0/\xA5\x839\x01\x90V[a<,\x80b\0<\x97\x839\x01\x90V[a\x076\x80b\0x\xC3\x839\x01\x90V[a\x19S\x80b\0\x7F\xF9\x839\x01\x90V[a\x1F\xD6\x80b\0\x99L\x839\x01\x90V[a\x13>\x80b\0\xB9\"\x839\x01\x90V[a7\x92\x80b\0\xCC`\x839\x01\x90V[a_N\x80b\x01\x03\xF2\x839\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R_\x90\x82\x01R`\x80\x01\x90V[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R_\x90a\x1D\x86\x90\x83\x01\x84a \xF2V[_` \x82\x84\x03\x12\x15a![W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1E\x03W__\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R_\x90` \x85\x01\x90``\x84\x01\x90\x83[\x81\x81\x10\x15a!\xDBW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a!\xB4V[PP`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16` \x93\x90\x93\x01\x92\x90\x92RP\x90\x92\x91PPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\"9W\x81Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\"\rV[P\x93\x94\x93PPPPV[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15a\"\xDCW\x84\x83\x03`\x1F\x19\x01\x88R\x81Q\x80Q\x80\x85R` \x91\x82\x01\x91\x85\x01\x90_[\x81\x81\x10\x15a\"\xC3W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x90\x81\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81\x85\x01R\x90\x93\x01\x92`@\x90\x92\x01\x91`\x01\x01a\"\x82V[PP` \x99\x8A\x01\x99\x90\x94P\x92\x90\x92\x01\x91P`\x01\x01a\"_V[P\x90\x96\x95PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x89\x81\x16\x82R\x88\x81\x16` \x80\x84\x01\x91\x90\x91R\x88\x82\x16`@\x84\x01R\x90\x87\x16``\x83\x01R`\xFF\x86\x16`\x80\x83\x01Ra\x01\0`\xA0\x83\x01\x81\x90R\x85Q\x90\x83\x01\x81\x90R_\x91a\x01 \x84\x01\x91\x83\x91\x88\x01\x82[\x82\x81\x10\x15a#\x82W\x81Qc\xFF\xFF\xFF\xFF\x81Q\x16\x86Ra\xFF\xFF` \x82\x01Q\x16` \x87\x01Ra\xFF\xFF`@\x82\x01Q\x16`@\x87\x01RP``\x85\x01\x94P` \x82\x01\x91P`\x01\x81\x01\x90Pa#:V[PPPP\x82\x81\x03`\xC0\x84\x01Ra#\x98\x81\x86a!\xFBV[\x90P\x82\x81\x03`\xE0\x84\x01Ra#\xAC\x81\x85a\"CV[\x9B\x9APPPPPPPPPPPV[``\x81R_a#\xCD``\x83\x01\x85a \xF2V[\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[_` \x82\x84\x03\x12\x15a$\x18W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$.W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a$>W__\xFD[\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$XWa$Xa!qV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\x87Wa$\x87a!qV[`@R\x81\x81R\x82\x82\x01` \x01\x86\x10\x15a$\x9EW__\xFD[\x81` \x84\x01` \x83\x01^_\x91\x81\x01` \x01\x91\x90\x91R\x94\x93PPPPV[``\x81R_a$\xCD``\x83\x01\x85a \xF2V[\x82\x81\x03` \x84\x01Ra%\x01\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_a%+``\x83\x01\x85a \xF2V[\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_a%\x97``\x83\x01\x85a \xF2V[\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_a%\xED``\x83\x01\x85a \xF2V[\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_a&W``\x83\x01\x85a \xF2V[\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_a&\xB0``\x83\x01\x86a \xF2V[\x82\x81\x03` \x84\x01Ra&\xC2\x81\x86a \xF2V[\x90P\x82\x81\x03`@\x84\x01Ra&\xD6\x81\x85a \xF2V[\x96\x95PPPPPPV[`@\x81R_a'\x14`@\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[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a'P\x82\x84a'.V[n/script/output/`\x88\x1B\x81R`\x0F\x01\x93\x92PPPV[_a'z\x82\x84a'.V[`/`\xF8\x1B\x81R`\x01\x01\x93\x92PPPV[_a'\x96\x82\x84a'.V[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x93\x92PPPV[_a\x1D\x86a'\xC2a'\xBC\x84\x88a'.V[\x86a'.V[\x84a'.V[` \x81R_a\x1E\x03` \x83\x01\x84a \xF2V[`@\x81R_a'\xEC`@\x83\x01\x85a \xF2V[\x82\x81\x03` \x84\x01Ra\x1D\x86\x81\x85a \xF2V[_a(\t\x82\x84a'.V[m/script/input/`\x90\x1B\x81R`\x0E\x01\x93\x92PPPV[_a(8a'\xC2a'\xBC\x84\x88a'.V[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x95\x94PPPPPV\xFE`\x80`@R4\x80\x15`\x0EW__\xFD[P`s\x80`\x1A_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xC2\x98Ux\x14`*W[__\xFD[_`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x11\xE6\x1F\xBF\x0E\xFE \xEF\xD2\xA4D)\x86\x98WPo\xF0\"\x9E\xAE\xA2\xD60\xF1\xF8#L\xA7SC\xA0dsolcC\0\x08\x1B\x003`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x163`\x1AV[`iV[_\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\x06R\x80a\0v_9_\xF3\xFE`\x80`@R`\x046\x10a\0yW_5`\xE0\x1C\x80c\x96#`\x9D\x11a\0LW\x80c\x96#`\x9D\x14a\x01\tW\x80c\x99\xA8\x8E\xC4\x14a\x01\x1CW\x80c\xF2\xFD\xE3\x8B\x14a\x01;W\x80c\xF3\xB7\xDE\xAD\x14a\x01ZW__\xFD[\x80c N\x1Cz\x14a\0}W\x80cqP\x18\xA6\x14a\0\xB8W\x80c~\xFF'^\x14a\0\xCEW\x80c\x8D\xA5\xCB[\x14a\0\xEDW[__\xFD[4\x80\x15a\0\x88W__\xFD[Pa\0\x9Ca\0\x976`\x04a\x04yV[a\x01yV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC3W__\xFD[Pa\0\xCCa\x02\x04V[\0[4\x80\x15a\0\xD9W__\xFD[Pa\0\xCCa\0\xE86`\x04a\x04\x9BV[a\x02\x17V[4\x80\x15a\0\xF8W__\xFD[P_T`\x01`\x01`\xA0\x1B\x03\x16a\0\x9CV[a\0\xCCa\x01\x176`\x04a\x04\xE6V[a\x02zV[4\x80\x15a\x01'W__\xFD[Pa\0\xCCa\x0166`\x04a\x04\x9BV[a\x02\xE5V[4\x80\x15a\x01FW__\xFD[Pa\0\xCCa\x01U6`\x04a\x04yV[a\x03\x1BV[4\x80\x15a\x01eW__\xFD[Pa\0\x9Ca\x01t6`\x04a\x04yV[a\x03\x99V[___\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\x9D\x90c\\`\xDA\x1B`\xE0\x1B\x81R`\x04\x01\x90V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\x01\xD5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x01\xDAV[``\x91P[P\x91P\x91P\x81a\x01\xE8W__\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\x01\xFC\x91\x90a\x05\xBDV[\x94\x93PPPPV[a\x02\x0Ca\x03\xBDV[a\x02\x15_a\x04\x16V[V[a\x02\x1Fa\x03\xBDV[`@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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02`W__\xFD[PZ\xF1\x15\x80\x15a\x02rW=__>=_\xFD[PPPPPPV[a\x02\x82a\x03\xBDV[`@Qc'\x8FyC`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90cO\x1E\xF2\x86\x904\x90a\x02\xB2\x90\x86\x90\x86\x90`\x04\x01a\x05\xD8V[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x02\xC9W__\xFD[PZ\xF1\x15\x80\x15a\x02\xDBW=__>=_\xFD[PPPPPPPPV[a\x02\xEDa\x03\xBDV[`@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\x02IV[a\x03#a\x03\xBDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\x8DW`@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\x96\x81a\x04\x16V[PV[___\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\x9D\x90c\x03\xE1F\x91`\xE6\x1B\x81R`\x04\x01\x90V[_T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x15W`@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\x84V[_\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\x96W__\xFD[_` \x82\x84\x03\x12\x15a\x04\x89W__\xFD[\x815a\x04\x94\x81a\x04eV[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x04\xACW__\xFD[\x825a\x04\xB7\x81a\x04eV[\x91P` \x83\x015a\x04\xC7\x81a\x04eV[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x04\xF8W__\xFD[\x835a\x05\x03\x81a\x04eV[\x92P` \x84\x015a\x05\x13\x81a\x04eV[\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05.W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x05>W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05XWa\x05Xa\x04\xD2V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x87Wa\x05\x87a\x04\xD2V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x05\x9EW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x05\xCDW__\xFD[\x81Qa\x04\x94\x81a\x04eV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q\x80`@\x84\x01R\x80` \x85\x01``\x85\x01^_``\x82\x85\x01\x01R```\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xA3:\tr\x1Fp\xDDj\xF8\\\x1E\x18e=\xF7J\xA9\xD4\xC6R\x86\x11w+\x1A\xF9\x16E]S\xB2\xA7dsolcC\0\x08\x1B\x003`\x80`@R`@Qa\x0C\xF28\x03\x80a\x0C\xF2\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x03\xB7V[\x82\x81a\0/\x82\x82_a\0CV[Pa\0;\x90P\x82a\0nV[PPPa\x04\xD3V[a\0L\x83a\0\xDBV[_\x82Q\x11\x80a\0XWP\x80[\x15a\0iWa\0g\x83\x83a\x01\x1AV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\0\xAD_Q` a\x0C\xAB_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\0\xD8\x81a\x01FV[PV[a\0\xE4\x81a\x01\xE1V[`@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_\x90\xA2PV[``a\x01?\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x0C\xCB`'\x919a\x02uV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xB0W`@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[\x80_Q` a\x0C\xAB_9_Q\x90_R[\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\x81\x16;a\x02NW`@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\x01\xA7V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xC0V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x02\xDDW`@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\x01\xA7V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xF7\x91\x90a\x04\x88V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x03/W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x034V[``\x91P[P\x90\x92P\x90Pa\x03E\x82\x82\x86a\x03OV[\x96\x95PPPPPPV[``\x83\x15a\x03^WP\x81a\x01?V[\x82Q\x15a\x03nW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xA7\x91\x90a\x04\x9EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x9EW__\xFD[\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x03\xC9W__\xFD[a\x03\xD2\x84a\x03\x88V[\x92Pa\x03\xE0` \x85\x01a\x03\x88V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\xFBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x04\x0BW__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04$Wa\x04$a\x03\xA3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x04RWa\x04Ra\x03\xA3V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x04iW__\xFD[\x81` \x84\x01` \x83\x01^_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[a\x07\xCB\x80a\x04\xE0_9_\xF3\xFE`\x80`@R`\x046\x10a\0MW_5`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0dW\x80cO\x1E\xF2\x86\x14a\0\x83W\x80c\\`\xDA\x1B\x14a\0\x96W\x80c\x8F(9p\x14a\0\xC6W\x80c\xF8Q\xA4@\x14a\0\xE5Wa\0\\V[6a\0\\Wa\0Za\0\xF9V[\0[a\0Za\0\xF9V[4\x80\x15a\0oW__\xFD[Pa\0Za\0~6`\x04a\x06\x8CV[a\x01\x13V[a\0Za\0\x916`\x04a\x06\xA5V[a\x01NV[4\x80\x15a\0\xA1W__\xFD[Pa\0\xAAa\x01\xB4V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD1W__\xFD[Pa\0Za\0\xE06`\x04a\x06\x8CV[a\x01\xE4V[4\x80\x15a\0\xF0W__\xFD[Pa\0\xAAa\x02\x04V[a\x01\x01a\x02$V[a\x01\x11a\x01\x0Ca\x02\xB9V[a\x02\xC2V[V[a\x01\x1Ba\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x03\x12V[PV[a\x01Ca\0\xF9V[a\x01Va\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xACWa\x01\xA7\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_\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x12\x91PPV[PPPV[a\x01\xA7a\0\xF9V[_a\x01\xBDa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xD9Wa\x01\xD4a\x02\xB9V[\x90P\x90V[a\x01\xE1a\0\xF9V[\x90V[a\x01\xECa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81a\x03\x80\x80\x15a\x02\xDCW=_\xF3[=_\xFD[_\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\x1B\x83a\x03\xB7V[_\x82Q\x11\x80a\x03'WP\x80[\x15a\x01\xA7Wa\x036\x83\x83a\x03\xF6V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03ea\x02\xE0V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01C\x81a\x04\"V[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x03V[a\x03\xC0\x81a\x04\xCBV[`@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_\x90\xA2PV[``a\x04\x1B\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x07o`'\x919a\x05_V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04\x87W`@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\x02\xB0V[\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[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x058W`@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\x02\xB0V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04\xAAV[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x05\xC7W`@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\x02\xB0V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05\xE1\x91\x90a\x07#V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x06\x19W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x06\x1EV[``\x91P[P\x91P\x91Pa\x06.\x82\x82\x86a\x068V[\x96\x95PPPPPPV[``\x83\x15a\x06GWP\x81a\x04\x1BV[\x82Q\x15a\x06WW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB0\x91\x90a\x079V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x87W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\x9CW__\xFD[a\x04\x1B\x82a\x06qV[___`@\x84\x86\x03\x12\x15a\x06\xB7W__\xFD[a\x06\xC0\x84a\x06qV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xDBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x06\xEBW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x01W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x07\x12W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xF7\xD2\xAB\x95a\x9B\xF8R\xF9-\xBB\x93]\\\x891\x9E\xD0\xB1/\xB2K\xC3\x10\xAD\xF1-s%\xF5/\xCBdsolcC\0\x08\x1B\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``@R4\x80\x15a\0\x10W__\xFD[P`@Qa<,8\x03\x80a<,\x839\x81\x01`@\x81\x90Ra\0/\x91a\x03\x11V[\x82\x82\x84\x85`\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\0nW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\x92\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\xC0R\x82\x81\x16`\x80R\x81\x16`\xA0Ra\0\xB3a\x02=V[PPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\xE0\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\x15a\0\xFEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\"\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01\0\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\x15a\x01xW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x9C\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01 \x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPa\x01\0Q`\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\x15a\x01\xF5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x19\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01@RPP`\x97\x80T`\xFF\x19\x16`\x01\x17\x90UPa\x03}\x90PV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x02\xA8W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x02\xF8W_\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\x14a\x03\x0EW__\xFD[PV[___``\x84\x86\x03\x12\x15a\x03#W__\xFD[\x83Qa\x03.\x81a\x02\xFAV[` \x85\x01Q\x90\x93Pa\x03?\x81a\x02\xFAV[`@\x85\x01Q\x90\x92Pa\x03P\x81a\x02\xFAV[\x80\x91PP\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x03kW__\xFD[\x81Qa\x03v\x81a\x02\xFAV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa7\xC4a\x04h_9_\x81\x81a\x02\xD4\x01Ra\x11m\x01R_\x81\x81a\x01~\x01Ra\x13I\x01R_\x81\x81a\x01\xBD\x01R\x81\x81a\x15\x1C\x01Ra\x16\xD1\x01R_\x81\x81a\x02\n\x01R\x81\x81a\t-\x01R\x81\x81a\x0EP\x01R\x81\x81a\x0F\xE1\x01Ra\x12\x07\x01R_\x81\x81a\x01\xE1\x01R\x81\x81a\x19\xDD\x01R\x81\x81a\x1A\xAC\x01Ra\x1B&\x01R_\x81\x81a\x06\x82\x01R\x81\x81a\x07\xCD\x01R\x81\x81a\x08a\x01R\x81\x81a\x1D-\x01R\x81\x81a\x1E\x9F\x01Ra\x1F;\x01R_\x81\x81a\x04\xB7\x01R\x81\x81a\x05C\x01R\x81\x81a\x05\xC1\x01R\x81\x81a\x19\x89\x01R\x81\x81a\x1AP\x01R\x81\x81a\x1Cm\x01Ra\x1D\xFD\x01Ra7\xC4_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x11W_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0\x9EW\x80c\xB9\x8D\t\x08\x11a\0nW\x80c\xB9\x8D\t\x08\x14a\x02\x9FW\x80c\xC4\xD6m\xE8\x14a\x02\xBCW\x80c\xDF\\\xF7#\x14a\x02\xCFW\x80c\xE4\x81\xAF\x9D\x14a\x02\xF6W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xFEW__\xFD[\x80c\x8D\xA5\xCB[\x14a\x02UW\x80c\x99&\xEE}\x14a\x02fW\x80c\xA3d\xF4\xDA\x14a\x02yW\x80c\xA9\x8F\xB3U\x14a\x02\x8CW__\xFD[\x80ch0H5\x11a\0\xE4W\x80ch0H5\x14a\x01\xB8W\x80ck:\xA7.\x14a\x01\xDFW\x80cm\x14\xA9\x87\x14a\x02\x05W\x80cn\xFBF6\x14a\x02,W\x80cqP\x18\xA6\x14a\x02MW__\xFD[\x80c\x17\x1F\x1D[\x14a\x01\x15W\x80c3\xCF\xB7\xB7\x14a\x01DW\x80cAl~^\x14a\x01dW\x80c]\xF4YF\x14a\x01yW[__\xFD[a\x01(a\x01#6`\x04a-\xEDV[a\x03\x11V[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01Wa\x01R6`\x04a.OV[a\x04\x93V[`@Qa\x01;\x91\x90a.jV[a\x01wa\x01r6`\x04a.\xAAV[a\t+V[\0[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\xA0\x7F\0\0\0\0\0\0\0\0\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[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\xA0V[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\x02?a\x02:6`\x04a1\x90V[a\n\xA3V[`@Qa\x01;\x92\x91\x90a2\x82V[a\x01wa\x19kV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x01\xA0V[a\x01wa\x02t6`\x04a3\"V[a\x19~V[a\x01wa\x02\x876`\x04a.OV[a\x1AEV[a\x01wa\x02\x9A6`\x04a3\xCAV[a\x1B\x07V[`\x97Ta\x02\xAC\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01;V[a\x01wa\x02\xCA6`\x04a.OV[a\x1B[V[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\x01Wa\x1ChV[a\x01wa\x03\x0C6`\x04a.OV[a \x01V[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x03TWa\x03Ta4\x16V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x03xWa\x03xa4\x16V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x03\x94Wa\x03\x94a4\x16V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x03\xF1\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 _\x1Ca\x04\x13\x91\x90a4*V[\x90Pa\x04\x85a\x04,a\x04%\x88\x84a zV[\x86\x90a!\tV[a\x044a!\x9CV[a\x04{a\x04l\x85a\x04f`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a zV[a\x04u\x8Ca\"\\V[\x90a!\tV[\x88b\x01\xD4\xC0a\"\xE6V[\x90\x98\x90\x97P\x95PPPPPPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91_\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xFCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05 \x91\x90a4IV[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P_\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\x88W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xAC\x91\x90a4`V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06DWP\x7F\0\0\0\0\0\0\0\0\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\x1BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a4\x86V[`\xFF\x16\x15[\x15a\x06_WPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x92\x91PPV[_a\x06r\x82`\x01`\x01`\xC0\x1B\x03\x16a$\xFAV[\x90P_\x80[\x82Q\x81\x10\x15a\x07;W\x7F\0\0\0\0\0\0\0\0\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\x06\xC1Wa\x06\xC1a4\x16V[\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\x07\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07'\x91\x90a4IV[a\x071\x90\x83a4\xBAV[\x91P`\x01\x01a\x06wV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07UWa\x07Ua,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07~W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x80[\x84Q\x81\x10\x15a\t\x1EW_\x85\x82\x81Q\x81\x10a\x07\xA0Wa\x07\xA0a4\x16V[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P_\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\x12W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x086\x91\x90a4IV[\x90P_[\x81\x81\x10\x15a\t\x13W`@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\x08\xADW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD1\x91\x90a4\xE3V[_\x01Q\x86\x86\x81Q\x81\x10a\x08\xE6Wa\x08\xE6a4\x16V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x08\x81a5\"V[\x95PP`\x01\x01a\x08:V[PPP`\x01\x01a\x07\x84V[P\x90\x97\x96PPPPPPPV[\x7F\0\0\0\0\0\0\0\0\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\t\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xAB\x91\x90a5:V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\\W`@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[`\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[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x0B\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[`@\x83\x01QQ\x85\x14\x80\x15a\x0B2WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x0BBWP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x0BRWP`\xE0\x83\x01QQ\x85\x14[a\x0B\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\nSV[\x82QQ` \x84\x01QQ\x14a\x0C2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a7o_9_Q\x90_R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\nSV[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x0C\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[`@\x80Q\x80\x82\x01\x82R_\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\x0C\xE0Wa\x0C\xE0a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\tW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r'Wa\r'a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rPW\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\x84Wa\r\x84a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xADW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xCDWa\r\xCDa,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xF6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\x0E\xC4\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_\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\x0E\x9BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xBF\x91\x90a4\x86V[a%\xB9V[\x90P_[\x87` \x01QQ\x81\x10\x15a\x11KWa\x0F\x0C\x88` \x01Q\x82\x81Q\x81\x10a\x0E\xEEWa\x0E\xEEa4\x16V[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x0F\"Wa\x0F\"a4\x16V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\x0F\xDFW` \x83\x01Qa\x0FC`\x01\x83a5UV[\x81Q\x81\x10a\x0FSWa\x0FSa4\x16V[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\x0FsWa\x0Fsa4\x16V[` \x02` \x01\x01Q_\x1C\x11a\x0F\xDFW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\nSV[\x7F\0\0\0\0\0\0\0\0\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$Wa\x10$a4\x16V[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\x10BWa\x10Ba4\x16V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10\x7F\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\x9AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xBE\x91\x90a4`V[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\x10\xDCWa\x10\xDCa4\x16V[` \x02` \x01\x01\x81\x81RPPa\x11Aa\x04%a\x11\x15\x84\x86_\x01Q\x85\x81Q\x81\x10a\x11\x07Wa\x11\x07a4\x16V[` \x02` \x01\x01Q\x16a&KV[\x8A` \x01Q\x84\x81Q\x81\x10a\x11+Wa\x11+a4\x16V[` \x02` \x01\x01Qa&u\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\x0E\xC8V[PPa\x11V\x83a'VV[`\x97T\x90\x93P`\xFF\x16_\x81a\x11kW_a\x11\xEBV[\x7F\0\0\0\0\0\0\0\0\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\x11\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\xEB\x91\x90a4IV[\x90P_[\x8A\x81\x10\x15a\x18>W\x82\x15a\x13GW\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\x12FWa\x12Fa4\x16V[`@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\x12\x84W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\xA8\x91\x90a4IV[a\x12\xB2\x91\x90a4\xBAV[\x11a\x13GW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\nSV[\x7F\0\0\0\0\0\0\0\0\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\x13\x88Wa\x13\x88a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\x13\xACWa\x13\xACa4\x16V[` \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\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14*\x91\x90a5hV[`\x01`\x01`@\x1B\x03\x19\x16a\x14M\x8A`@\x01Q\x83\x81Q\x81\x10a\x0E\xEEWa\x0E\xEEa4\x16V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x14\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R_Q` a7o_9_Q\x90_R`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\nSV[a\x15\x18\x89`@\x01Q\x82\x81Q\x81\x10a\x15\x01Wa\x15\x01a4\x16V[` \x02` \x01\x01Q\x87a!\t\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[Wa\x15[a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x15\x7FWa\x15\x7Fa4\x16V[` \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\x15\xD9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xFD\x91\x90a5\x90V[\x85` \x01Q\x82\x81Q\x81\x10a\x16\x13Wa\x16\x13a4\x16V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x16?Wa\x16?a4\x16V[` \x02` \x01\x01Q\x85_\x01Q\x82\x81Q\x81\x10a\x16\\Wa\x16\\a4\x16V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x8A` \x01QQ\x81\x10\x15a\x184Wa\x16\xCA\x86_\x01Q\x82\x81Q\x81\x10a\x16\x9CWa\x16\x9Ca4\x16V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x16\xB6Wa\x16\xB6a4\x16V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x18,W\x7F\0\0\0\0\0\0\0\0\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\x10Wa\x17\x10a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x174Wa\x174a4\x16V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x17RWa\x17Ra4\x16V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x17kWa\x17ka4\x16V[` \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\x17\xCDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xF1\x91\x90a5\x90V[\x87Q\x80Q\x85\x90\x81\x10a\x18\x05Wa\x18\x05a4\x16V[` \x02` \x01\x01\x81\x81Qa\x18\x19\x91\x90a5\xB0V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\x16wV[PP`\x01\x01a\x11\xEFV[PPP__a\x18W\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03\x11V[\x91P\x91P\x81a\x18\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\nSV[\x80a\x19'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[PP_\x87\x82` \x01Q`@Q` \x01a\x19A\x92\x91\x90a5\xCFV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[a\x19sa'\xECV[a\x19|_a(FV[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\x19\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\nS\x90a6\x15V[`@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\x90c\x99&\xEE}\x90a\x1A\x14\x90\x85\x90\x85\x90`\x04\x01a6\xBBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A+W__\xFD[PZ\xF1\x15\x80\x15a\x1A=W=__>=_\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\x1A\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\nS\x90a6\x15V[`@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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xEEW__\xFD[PZ\xF1\x15\x80\x15a\x1B\0W=__>=_\xFD[PPPPPV[a\x1B\x0Fa'\xECV[`@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\x1A\xD7\x90\x84\x90`\x04\x01a7\x05V[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1ByWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1B\x92WP0;\x15\x80\x15a\x1B\x92WP_T`\xFF\x16`\x01\x14[a\x1B\xF5W`@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\nSV[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1C\x16W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x1C\x1F\x82a(\x97V[\x80\x15a\x1CdW_\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[PPV[``_\x7F\0\0\0\0\0\0\0\0\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\x1C\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xEB\x91\x90a4\x86V[`\xFF\x16\x90P\x80_\x03a\x1D\nWPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x90V[_\x80[\x82\x81\x10\x15a\x1D\xB2W`@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\x1DzW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\x9E\x91\x90a4IV[a\x1D\xA8\x90\x83a4\xBAV[\x91P`\x01\x01a\x1D\rV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xCCWa\x1D\xCCa,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\xF5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x1EWW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E{\x91\x90a4\x86V[`\xFF\x16\x81\x10\x15a\x1F\xF7W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R_\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\x1E\xECW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\x10\x91\x90a4IV[\x90P_[\x81\x81\x10\x15a\x1F\xEDW`@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\x1F\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xAB\x91\x90a4\xE3V[_\x01Q\x85\x85\x81Q\x81\x10a\x1F\xC0Wa\x1F\xC0a4\x16V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\x1F\xE2\x81a5\"V[\x94PP`\x01\x01a\x1F\x14V[PP`\x01\x01a\x1D\xFBV[P\x90\x94\x93PPPPV[a \ta'\xECV[`\x01`\x01`\xA0\x1B\x03\x81\x16a nW`@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\nSV[a w\x81a(FV[PV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra \x95a+\xA8V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a \xC3W\xFE[P\x80a!\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\nSV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra!$a+\xC6V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a!^W\xFE[P\x80a!\x01W`@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\nSV[a!\xA4a+\xE4V[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_\x80\x82R` \x82\x01R_\x80\x80a\"\x89_Q` a7O_9_Q\x90_R\x86a4*V[\x90P[a\"\x95\x81a)\x01V[\x90\x93P\x91P_Q` a7O_9_Q\x90_R\x82\x83\t\x83\x03a\"\xCDW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a7O_9_Q\x90_R`\x01\x82\x08\x90Pa\"\x8CV[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a#\x17a,\tV[_[`\x02\x81\x10\x15a$\xCEW_a#.\x82`\x06a7\x17V[\x90P\x84\x82`\x02\x81\x10a#BWa#Ba4\x16V[` \x02\x01QQ\x83a#S\x83_a4\xBAV[`\x0C\x81\x10a#cWa#ca4\x16V[` \x02\x01R\x84\x82`\x02\x81\x10a#zWa#za4\x16V[` \x02\x01Q` \x01Q\x83\x82`\x01a#\x91\x91\x90a4\xBAV[`\x0C\x81\x10a#\xA1Wa#\xA1a4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a#\xB8Wa#\xB8a4\x16V[` \x02\x01QQQ\x83a#\xCB\x83`\x02a4\xBAV[`\x0C\x81\x10a#\xDBWa#\xDBa4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a#\xF2Wa#\xF2a4\x16V[` \x02\x01QQ`\x01` \x02\x01Q\x83a$\x0B\x83`\x03a4\xBAV[`\x0C\x81\x10a$\x1BWa$\x1Ba4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a$2Wa$2a4\x16V[` \x02\x01Q` \x01Q_`\x02\x81\x10a$LWa$La4\x16V[` \x02\x01Q\x83a$]\x83`\x04a4\xBAV[`\x0C\x81\x10a$mWa$ma4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a$\x84Wa$\x84a4\x16V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a$\x9FWa$\x9Fa4\x16V[` \x02\x01Q\x83a$\xB0\x83`\x05a4\xBAV[`\x0C\x81\x10a$\xC0Wa$\xC0a4\x16V[` \x02\x01RP`\x01\x01a#\x19V[Pa$\xD7a,(V[_` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[``__a%\x07\x84a&KV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a%\"Wa%\"a,\x82V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a%LW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a%cWPa\x01\0\x81\x10[\x15a\x1F\xF7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a%\xA9W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a%\x8CWa%\x8Ca4\x16V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a%\xB2\x81a5\"V[\x90Pa%RV[__a%\xC4\x84a)}V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a&BW`@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\nSV[\x90P[\x92\x91PPV[_\x80[\x82\x15a&EWa&_`\x01\x84a5UV[\x90\x92\x16\x91\x80a&m\x81a7.V[\x91PPa&NV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a&\xD0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\nSV[\x81a\xFF\xFF\x16`\x01\x03a&\xE3WP\x81a&EV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a'KW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x90\x03a'.Wa'+\x84\x84a!\tV[\x93P[a'8\x83\x84a!\tV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a&\xFEV[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a'zWP` \x82\x01Q\x15[\x15a'\x97WPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a7O_9_Q\x90_R\x84` \x01Qa'\xC8\x91\x90a4*V[a'\xDF\x90_Q` a7O_9_Q\x90_Ra5UV[\x90R\x92\x91PPV[\x91\x90PV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x19|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\nSV[`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_\x90\xA3PPV[_Ta\x01\0\x90\x04`\xFF\x16a nW`@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\nSV[_\x80\x80_Q` a7O_9_Q\x90_R`\x03_Q` a7O_9_Q\x90_R\x86_Q` a7O_9_Q\x90_R\x88\x89\t\t\x08\x90P_a)q\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R_Q` a7O_9_Q\x90_Ra+\0V[\x91\x95\x91\x94P\x90\x92PPPV[_a\x01\0\x82Q\x11\x15a*\x05W`@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\nSV[\x81Q_\x03a*\x14WP_\x91\x90PV[__\x83_\x81Q\x81\x10a*(Wa*(a4\x16V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a*\xF7W\x84\x81\x81Q\x81\x10a*VWa*Va4\x16V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a*\xEBW`@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\nSV[\x91\x81\x17\x91`\x01\x01a*;V[P\x90\x93\x92PPPV[__a+\na,(V[a+\x12a,FV[` \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\x80a+OW\xFE[P\x82a+\x9DW`@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\nSV[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+\xF7a,dV[\x81R` \x01a,\x04a,dV[\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_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-+Wa-+a,\x82V[`@R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-CW__\xFD[a-Ka,\x96V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a-qW__\xFD[a-ya,\x96V[\x80`@\x84\x01\x85\x81\x11\x15a-\x8AW__\xFD[\x84[\x81\x81\x10\x15a-\xA4W\x805\x84R` \x93\x84\x01\x93\x01a-\x8CV[P\x90\x95\x94PPPPPV[_`\x80\x82\x84\x03\x12\x15a-\xBFW__\xFD[a-\xC7a,\x96V[\x90Pa-\xD3\x83\x83a-bV[\x81Ra-\xE2\x83`@\x84\x01a-bV[` \x82\x01R\x92\x91PPV[____a\x01 \x85\x87\x03\x12\x15a.\x01W__\xFD[\x845\x93Pa.\x12\x86` \x87\x01a-3V[\x92Pa.!\x86``\x87\x01a-\xAFV[\x91Pa.0\x86`\xE0\x87\x01a-3V[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a wW__\xFD[_` \x82\x84\x03\x12\x15a._W__\xFD[\x815a&B\x81a.;V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a-\xA4W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a.\x83V[_` \x82\x84\x03\x12\x15a.\xBAW__\xFD[\x815\x80\x15\x15\x81\x14a&BW__\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a'\xE7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x11\x15a.\xF4Wa.\xF4a,\x82V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a/\rW__\xFD[\x815a/ a/\x1B\x82a.\xDCV[a-\x03V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/AW__\xFD[` \x85\x01[\x83\x81\x10\x15a/eWa/W\x81a.\xC9V[\x83R` \x92\x83\x01\x92\x01a/FV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a/~W__\xFD[\x815a/\x8Ca/\x1B\x82a.\xDCV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/\xADW__\xFD[` \x85\x01[\x83\x81\x10\x15a/eWa/\xC4\x87\x82a-3V[\x83R` \x90\x92\x01\x91`@\x01a/\xB2V[_\x82`\x1F\x83\x01\x12a/\xE3W__\xFD[\x815a/\xF1a/\x1B\x82a.\xDCV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a0\x12W__\xFD[` \x85\x01[\x83\x81\x10\x15a/eW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a04W__\xFD[a0C\x88` \x83\x8A\x01\x01a.\xFEV[\x84RP` \x92\x83\x01\x92\x01a0\x17V[_a\x01\x80\x82\x84\x03\x12\x15a0cW__\xFD[a0ka,\xBEV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x82W__\xFD[a0\x8E\x84\x82\x85\x01a.\xFEV[\x82RP` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xA9W__\xFD[a0\xB5\x84\x82\x85\x01a/oV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD3W__\xFD[a0\xDF\x84\x82\x85\x01a/oV[`@\x83\x01RPa0\xF2\x83``\x84\x01a-\xAFV[``\x82\x01Ra1\x04\x83`\xE0\x84\x01a-3V[`\x80\x82\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\"W__\xFD[a1.\x84\x82\x85\x01a.\xFEV[`\xA0\x83\x01RPa\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1MW__\xFD[a1Y\x84\x82\x85\x01a.\xFEV[`\xC0\x83\x01RPa\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1xW__\xFD[a1\x84\x84\x82\x85\x01a/\xD4V[`\xE0\x83\x01RP\x92\x91PPV[_____`\x80\x86\x88\x03\x12\x15a1\xA4W__\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xC0W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a1\xD0W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE5W__\xFD[\x88` \x82\x84\x01\x01\x11\x15a1\xF6W__\xFD[` \x91\x90\x91\x01\x94P\x92Pa2\x0C`@\x87\x01a.\xC9V[\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2&W__\xFD[a22\x88\x82\x89\x01a0RV[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a2xW\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a2QV[P\x93\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra2\x9C`\x80\x84\x01\x82a2?V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra2\xB9\x82\x82a2?V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[__`\x01`\x01`@\x1B\x03\x84\x11\x15a2\xE3Wa2\xE3a,\x82V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a2\xF8\x81a-\x03V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a3\x0CW__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a33W__\xFD[\x825a3>\x81a.;V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3XW__\xFD[\x83\x01``\x81\x86\x03\x12\x15a3iW__\xFD[a3qa,\xE1V[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x86W__\xFD[\x82\x01`\x1F\x81\x01\x87\x13a3\x96W__\xFD[a3\xA5\x87\x825` \x84\x01a2\xCAV[\x82RP` \x82\x81\x015\x90\x82\x01R`@\x91\x82\x015\x91\x81\x01\x91\x90\x91R\x91\x94\x91\x93P\x90\x91PPV[_` \x82\x84\x03\x12\x15a3\xDAW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xEFW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a3\xFFW__\xFD[a4\x0E\x84\x825` \x84\x01a2\xCAV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a4DWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_` \x82\x84\x03\x12\x15a4YW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a4pW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a&BW__\xFD[_` \x82\x84\x03\x12\x15a4\x96W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a&BW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a&EWa&Ea4\xA6V[\x80Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a'\xE7W__\xFD[_`@\x82\x84\x03\x12\x80\x15a4\xF4W__\xFD[Pa4\xFDa,\x96V[\x82Qa5\x08\x81a.;V[\x81Ra5\x16` \x84\x01a4\xCDV[` \x82\x01R\x93\x92PPPV[_`\x01\x82\x01a53Wa53a4\xA6V[P`\x01\x01\x90V[_` \x82\x84\x03\x12\x15a5JW__\xFD[\x81Qa&B\x81a.;V[\x81\x81\x03\x81\x81\x11\x15a&EWa&Ea4\xA6V[_` \x82\x84\x03\x12\x15a5xW__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a&BW__\xFD[_` \x82\x84\x03\x12\x15a5\xA0W__\xFD[a5\xA9\x82a4\xCDV[\x93\x92PPPV[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a&EWa&Ea4\xA6V[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a6\tW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a5\xEBV[P\x91\x96\x95PPPPPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q```@\x84\x01Ra6\xE4`\xA0\x84\x01\x82a6\x8DV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R_a5\xA9` \x83\x01\x84a6\x8DV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a&EWa&Ea4\xA6V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a7EWa7Ea4\xA6V[`\x01\x01\x92\x91PPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \xC4\xEDs\x8D\xEE\xF4\xF6\xCB\xEB<7M\xC3\xF2\x04\x82\x93!\xA3\xBD\x1A\xD3Z5&+\x9D\x917Z0\x08dsolcC\0\x08\x1B\x003`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x0768\x03\x80a\x076\x839\x81\x01`@\x81\x90Ra\0.\x91a\x02SV[_[\x82Q\x81\x10\x15a\0kWa\0c\x83\x82\x81Q\x81\x10a\0NWa\0Na\x03/V[` \x02` \x01\x01Q`\x01a\0|` \x1B` \x1CV[`\x01\x01a\x000V[Pa\0u\x81a\x01MV[PPa\x03CV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\0\xEDW`@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_\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\xBBW`@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\xE4V[`\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_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02NW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x02dW__\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02yW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x02\x89W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\xA2Wa\x02\xA2a\x02$V[`@Q`\x05\x82\x90\x1B\x90`?\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02\xD0Wa\x02\xD0a\x02$V[`@R\x91\x82R` \x81\x84\x01\x81\x01\x92\x90\x81\x01\x88\x84\x11\x15a\x02\xEDW__\xFD[` \x85\x01\x94P[\x83\x85\x10\x15a\x03\x13Wa\x03\x05\x85a\x028V[\x81R` \x94\x85\x01\x94\x01a\x02\xF4V[P\x94Pa\x03&\x92PPP` \x84\x01a\x028V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x03\xE6\x80a\x03P_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80cF\xFB\xF6\x8E\x14a\0NW\x80c\x85hR\x06\x14a\0\x85W\x80c\xCET\x84(\x14a\0\x9AW\x80c\xEA\xB6mz\x14a\0\xADW[__\xFD[a\0pa\0\\6`\x04a\x03\rV[_` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\x98a\0\x936`\x04a\x03-V[a\0\xD8V[\0[a\0\x98a\0\xA86`\x04a\x03\rV[a\x01\x19V[`\x01Ta\0\xC0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0|V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x02\x90a\x03fV[`@Q\x80\x91\x03\x90\xFD[a\x01\x15\x82\x82a\x01OV[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x02\x90a\x03fV[a\x01L\x81a\x02\x1BV[PV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x01\xBBW`@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\x02V[`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x89W`@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\x02V[`\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\x08W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x03\x1DW__\xFD[a\x03&\x82a\x02\xF2V[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x03>W__\xFD[a\x03G\x83a\x02\xF2V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x03[W__\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 \xBA\xD9\xBC~X@\xC04\xCE\x8E\xB3\xBF\x05)\xDB;\x11Cy\xED0g>\xF2\x86\rg3m\xC9\x0C.dsolcC\0\x08\x1B\x003`\x80`@R4\x80\x15`\x0EW__\xFD[Pa\x197\x80a\0\x1C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80c5c\xB0\xD1\x14a\0NW\x80cOs\x9Ft\x14a\0wW\x80c\\\x15Vb\x14a\0\x97W\x80c\xCE\xFD\xC1\xD4\x14a\0\xB7W[__\xFD[a\0aa\0\\6`\x04a\x10\xEAV[a\0\xD8V[`@Qa\0n\x91\x90a\x12KV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Aa\0\x856`\x04a\x12\xABV[a\x05@V[`@Qa\0n\x91\x90a\x13\xABV[a\0\xAAa\0\xA56`\x04a\x14\x83V[a\x0C:V[`@Qa\0n\x91\x90a\x152V[a\0\xCAa\0\xC56`\x04a\x15tV[a\r\xEFV[`@Qa\0n\x92\x91\x90a\x15\xB3V[``_\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\x01\x17W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01;\x91\x90a\x15\xD3V[\x90P_\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\x01zW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x9E\x91\x90a\x15\xD3V[\x90P_\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\x01\xDDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x01\x91\x90a\x15\xD3V[\x90P_\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x1DWa\x02\x1Da\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02PW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02;W\x90P[P\x90P_[\x87Q\x81\x10\x15a\x054W_\x88\x82\x81Q\x81\x10a\x02qWa\x02qa\x15\xEEV[\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_\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xCEW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x02\xF5\x91\x90\x81\x01\x90a\x16\x02V[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x10Wa\x03\x10a\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03YW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R_\x19\x90\x92\x01\x91\x01\x81a\x03.W\x90P[P\x84\x84\x81Q\x81\x10a\x03lWa\x03la\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x81Q\x81\x10\x15a\x05)W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xAEWa\x03\xAEa\x15\xEEV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xD4\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xEFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x13\x91\x90a\x15\xD3V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x043Wa\x043a\x15\xEEV[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04aWa\x04aa\x15\xEEV[` \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\x04\xBBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xDF\x91\x90a\x16\x92V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x04\xFDWa\x04\xFDa\x15\xEEV[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x05\x16Wa\x05\x16a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x03yV[PPP`\x01\x01a\x02UV[P\x97\x96PPPPPPPV[a\x05k`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_\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\x05\xA8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xCC\x91\x90a\x15\xD3V[\x90Pa\x05\xF9`@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\x06)\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x16\xB8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06CW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06j\x91\x90\x81\x01\x90a\x16\xFDV[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\x9C\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x17\xB4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xB6W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xDD\x91\x90\x81\x01\x90a\x16\xFDV[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xFAWa\x06\xFAa\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07-W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07\x18W\x90P[P``\x82\x01R_[`\xFF\x81\x16\x87\x11\x15a\x0BRW_\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07YWa\x07Ya\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x82W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\x9CWa\x07\x9Ca\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x86\x81\x10\x15a\n^W_\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x07\xD3Wa\x07\xD3a\x15\xEEV[\x90P` \x02\x015\x8E\x88_\x01Q\x86\x81Q\x81\x10a\x07\xF0Wa\x07\xF0a\x15\xEEV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08-\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\x08HW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08l\x91\x90a\x17\xDCV[\x90P\x80`\x01`\x01`\xC0\x1B\x03\x16_\x03a\t\x16W`@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\t+Wa\t+a\x15\xEEV[`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x91\x90\x93\x015`\xF8\x1C\x1C\x82\x16\x90\x91\x03\x90Pa\nUW\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\tlWa\tla\x15\xEEV[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\x88Wa\t\x88a\x15\xEEV[`@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\t\xDCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\0\x91\x90a\x18\x02V[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n\x19Wa\n\x19a\x15\xEEV[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\n2Wa\n2a\x15\xEEV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\nQ\x81a\x181V[\x93PP[P`\x01\x01a\x07\xA9V[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\nxWa\nxa\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xA1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x0B\x17W\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\n\xC7Wa\n\xC7a\x15\xEEV[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\n\xE0Wa\n\xE0a\x15\xEEV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\n\xFAWa\n\xFAa\x15\xEEV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\n\xA6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B2Wa\x0B2a\x15\xEEV[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0BJ\x90a\x18IV[\x91PPa\x075V[P_\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\x0B\x90W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xB4\x91\x90a\x15\xD3V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0B\xE7\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x18gV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x01W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C(\x91\x90\x81\x01\x90a\x16\xFDV[` \x83\x01RP\x98\x97PPPPPPPPV[``_\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ck\x92\x91\x90a\x18\x90V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x85W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\xAC\x91\x90\x81\x01\x90a\x16\xFDV[\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C\xC8Wa\x0C\xC8a\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\xF1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85Q\x81\x10\x15a\r\xE5W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r Wa\r a\x15\xEEV[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r;Wa\r;a\x15\xEEV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\rx\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\r\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xB7\x91\x90a\x17\xDCV[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\r\xD2Wa\r\xD2a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0C\xF6V[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81_\x81Q\x81\x10a\x0E(Wa\x0E(a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x0Ec\x90\x88\x90\x86\x90`\x04\x01a\x18\x90V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E}W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xA4\x91\x90\x81\x01\x90a\x16\xFDV[_\x81Q\x81\x10a\x0E\xB5Wa\x0E\xB5a\x15\xEEV[` \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_\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x1EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0FB\x91\x90a\x17\xDCV[`\x01`\x01`\xC0\x1B\x03\x16\x90P_a\x0FW\x82a\x0FuV[\x90P\x81a\x0Fe\x8A\x83\x8Aa\0\xD8V[\x95P\x95PPPPP\x93P\x93\x91PPV[``__a\x0F\x82\x84a\x10>V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\x9DWa\x0F\x9Da\x10\x85V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0F\xC7W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a\x0F\xDEWPa\x01\0\x81\x10[\x15a\x104W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10$W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x07Wa\x10\x07a\x15\xEEV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a\x10-\x81a\x181V[\x90Pa\x0F\xCDV[P\x90\x94\x93PPPPV[_\x80[\x82\x15a\x10hWa\x10R`\x01\x84a\x18\xD7V[\x90\x92\x16\x91\x80a\x10`\x81a\x18\xEAV[\x91PPa\x10AV[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x10\x82W__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x10\xC1Wa\x10\xC1a\x10\x85V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x10\x82W__\xFD[\x805a\x10\xE5\x81a\x10\xC9V[\x91\x90PV[___``\x84\x86\x03\x12\x15a\x10\xFCW__\xFD[\x835a\x11\x07\x81a\x10nV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11!W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x111W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11JWa\x11Ja\x10\x85V[a\x11]`\x1F\x82\x01`\x1F\x19\x16` \x01a\x10\x99V[\x81\x81R\x87` \x83\x85\x01\x01\x11\x15a\x11qW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x94PPPPa\x11\x95`@\x85\x01a\x10\xDAV[\x90P\x92P\x92P\x92V[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15a\x12?W\x84\x83\x03`\x1F\x19\x01\x88R\x81Q\x80Q\x80\x85R` \x91\x82\x01\x91\x85\x01\x90_[\x81\x81\x10\x15a\x12&W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x80\x82\x01Q\x81\x86\x01R`@\x91\x82\x01Q`\x01`\x01``\x1B\x03\x16\x91\x85\x01\x91\x90\x91R\x90\x93\x01\x92``\x90\x92\x01\x91`\x01\x01a\x11\xDDV[PP` \x99\x8A\x01\x99\x90\x94P\x92\x90\x92\x01\x91P`\x01\x01a\x11\xBAV[P\x90\x96\x95PPPPPPV[` \x81R_a\x12]` \x83\x01\x84a\x11\x9EV[\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a\x12tW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\x8AW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x12\xA4W__\xFD[\x92P\x92\x90PV[______`\x80\x87\x89\x03\x12\x15a\x12\xC0W__\xFD[\x865a\x12\xCB\x81a\x10nV[\x95P` \x87\x015a\x12\xDB\x81a\x10\xC9V[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xF5W__\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x13\x05W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x1AW__\xFD[\x89` \x82\x84\x01\x01\x11\x15a\x13+W__\xFD[` \x91\x90\x91\x01\x94P\x92P``\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13MW__\xFD[a\x13Y\x89\x82\x8A\x01a\x12dV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\x13\xA1W\x81Qc\xFF\xFF\xFF\xFF\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\x13}V[P\x93\x94\x93PPPPV[` \x81R_\x82Q`\x80` \x84\x01Ra\x13\xC6`\xA0\x84\x01\x82a\x13kV[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x13\xE3\x82\x82a\x13kV[\x91PP`@\x84\x01Q`\x1F\x19\x84\x83\x03\x01``\x85\x01Ra\x14\x01\x82\x82a\x13kV[``\x86\x01Q\x85\x82\x03`\x1F\x19\x01`\x80\x87\x01R\x80Q\x80\x83R\x91\x93P` \x90\x81\x01\x92P\x80\x84\x01\x91\x90`\x05\x82\x90\x1B\x85\x01\x01_[\x82\x81\x10\x15a\x054W`\x1F\x19\x86\x83\x03\x01\x84Ra\x14L\x82\x86Qa\x13kV[` \x95\x86\x01\x95\x94\x90\x94\x01\x93\x91P`\x01\x01a\x140V[_`\x01`\x01`@\x1B\x03\x82\x11\x15a\x14yWa\x14ya\x10\x85V[P`\x05\x1B` \x01\x90V[___``\x84\x86\x03\x12\x15a\x14\x95W__\xFD[\x835a\x14\xA0\x81a\x10nV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBAW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14\xCAW__\xFD[\x805a\x14\xDDa\x14\xD8\x82a\x14aV[a\x10\x99V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a\x14\xFEW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x15 W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x15\x05V[\x94Pa\x11\x95\x92PPP`@\x85\x01a\x10\xDAV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x15iW\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x15KV[P\x90\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a\x15\x86W__\xFD[\x835a\x15\x91\x81a\x10nV[\x92P` \x84\x015\x91P`@\x84\x015a\x15\xA8\x81a\x10\xC9V[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R_a\x15\xCB`@\x83\x01\x84a\x11\x9EV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x15\xE3W__\xFD[\x81Qa\x12]\x81a\x10nV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x16\x12W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16'W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x167W__\xFD[\x80Qa\x16Ea\x14\xD8\x82a\x14aV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x16fW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x16\x88W\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x16mV[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x16\xA2W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12]W__\xFD[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R_`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x16\xE3W__\xFD[\x82`\x05\x1B\x80\x85``\x85\x017\x91\x90\x91\x01``\x01\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x17\rW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\"W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x172W__\xFD[\x80Qa\x17@a\x14\xD8\x82a\x14aV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x17aW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x16\x88W\x83Qa\x17{\x81a\x10\xC9V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x17hV[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R_a\x17\xD3`@\x83\x01\x84\x86a\x17\x8CV[\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a\x17\xECW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12]W__\xFD[_` \x82\x84\x03\x12\x15a\x18\x12W__\xFD[\x81Qa\x12]\x81a\x10\xC9V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[_`\x01\x82\x01a\x18BWa\x18Ba\x18\x1DV[P`\x01\x01\x90V[_`\xFF\x82\x16`\xFF\x81\x03a\x18^Wa\x18^a\x18\x1DV[`\x01\x01\x92\x91PPV[`@\x81R_a\x18z`@\x83\x01\x85\x87a\x17\x8CV[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[_`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R`@` \x84\x01R\x80\x84Q\x80\x83R``\x85\x01\x91P` \x86\x01\x92P_[\x81\x81\x10\x15a\x12?W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x18\xB9V[\x81\x81\x03\x81\x81\x11\x15a\x10hWa\x10ha\x18\x1DV[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a\x18^Wa\x18^a\x18\x1DV\xFE\xA2dipfsX\"\x12 \x98:u\x07\xFF\xB0=h\xFF^BB44\xB1\x07\xB2\xA2Q*\x8E\x99\x89\x03r\x06\xF7\x87\x12\xFC\xD7\xEDdsolcC\0\x08\x1B\x003`\xA0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x1F\xD68\x03\x80a\x1F\xD6\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Da\0KV[PPa\x015V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB6W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x01\x06W_\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[_` \x82\x84\x03\x12\x15a\x01\x18W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01.W__\xFD[\x93\x92PPPV[`\x80Qa\x1Ema\x01i_9_\x81\x81a\x03\x03\x01R\x81\x81a\x04W\x01R\x81\x81a\x05\xAE\x01R\x81\x81a\t\xA7\x01Ra\x0F\xF3\x01Ra\x1Em_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x10W_5`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\x9EW\x80c\xBFy\xCEX\x11a\0nW\x80c\xBFy\xCEX\x14a\x03\xBFW\x80c\xD5%J\x8C\x14a\x03\xD2W\x80c\xDE)\xFA\xC0\x14a\x03\xF2W\x80c\xE8\xBB\x9A\xE6\x14a\x04\x11W\x80c\xF4\xE2O\xE5\x14a\x049W__\xFD[\x80cm\x14\xA9\x87\x14a\x02\xFEW\x80cy\x16\xCE\xA6\x14a\x03%W\x80c\x7F\xF8\x1A\x87\x14a\x03fW\x80c\xA3\xDB\x80\xE2\x14a\x03\x99W__\xFD[\x80c?\xB2yR\x11a\0\xE4W\x80c?\xB2yR\x14a\x01\xD6W\x80cG\xB3\x14\xE8\x14a\x01\xE9W\x80c_a\xA8\x84\x14a\x02)W\x80c`WG\xD5\x14a\x02\x83W\x80ch\xBC\xCA\xAC\x14a\x02\xD1W__\xFD[\x80b\xA1\xF4\xCB\x14a\x01\x14W\x80c\x13T*N\x14a\x01TW\x80c&\xD9A\xF2\x14a\x01\x8AW\x80c7~\xD9\x9D\x14a\x01\x9FW[__\xFD[a\x01:a\x01\"6`\x04a\x18\x99V[`\x03` R_\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|a\x01b6`\x04a\x18\x99V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01KV[a\x01\x9Da\x01\x986`\x04a\x18\xC9V[a\x04LV[\0[a\x01\xC1a\x01\xAD6`\x04a\x18\xC9V[`\xFF\x16_\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01KV[a\x01\x9Da\x01\xE46`\x04a\x19PV[a\x05\xA3V[a\x02\x11a\x01\xF76`\x04a\x19\xF5V[_\x90\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01KV[a\x02va\x0276`\x04a\x18\xC9V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01RP`\xFF\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01R\x90V[`@Qa\x01K\x91\x90a\x1A\x0CV[a\x02\x96a\x02\x916`\x04a\x1A#V[a\x06_V[`@\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\x01KV[a\x02\xE4a\x02\xDF6`\x04a\x1AKV[a\x06\xF0V[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01KV[a\x02\x11\x7F\0\0\0\0\0\0\0\0\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\x038a\x0336`\x04a\x1A#V[a\x08\x89V[`@\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\x01KV[a\x03ya\x03t6`\x04a\x18\x99V[a\x08\xD0V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01KV[a\x01:a\x03\xA76`\x04a\x18\xC9V[`\x05` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01|a\x03\xCD6`\x04a\x1A\x8FV[a\t\x9BV[a\x03\xE5a\x03\xE06`\x04a\x1A\xE7V[a\r\xE1V[`@Qa\x01K\x91\x90a\x1BYV[a\x01|a\x04\x006`\x04a\x18\x99V[`\x01` R_\x90\x81R`@\x90 T\x81V[a\x02\x11a\x04\x1F6`\x04a\x19\xF5V[`\x02` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\x9Da\x04G6`\x04a\x19PV[a\x0F\xE8V[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\x04\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16_\x90\x81R`\x04` R`@\x90 T\x15a\x05\x1BW`@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\x01a\x04\x94V[`\xFF\x16_\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[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\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\x05\xF5\x83a\x08\xD0V[P\x90Pa\x06\x02\x82\x82a\x10\x8FV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06B\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06R\x93\x92\x91\x90a\x1C\x15V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x81\x01\x82R_\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\x9BWa\x06\x9Ba\x1C`V[_\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_\x90\x81R`\x04` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x07\x16Wa\x07\x16a\x1C`V[_\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\x07\xDCW`@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\x94V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x02WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x80W`@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\x94V[Q\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x08\xA2W_\x80\xFD[_\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_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x91W`@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\x94V[\x90\x94\x90\x93P\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\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\n\x10a\t\xFA6\x86\x90\x03\x86\x01`@\x87\x01a\x1CtV[\x80Q_\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\x03a\n\x96W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\x94V[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x0B\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x94V[_\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\x94V[`@\x80Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0B\xF8\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\xA5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\x0C\x1A\x91\x90a\x1C\xE7V[\x90Pa\x0C\xB3a\x0CSa\x0C>\x83a\x0C86\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1CtV[\x90a\x12\xCBV[a\x0CM6\x89\x90\x03\x89\x01\x89a\x1CtV[\x90a\x13ZV[a\x0C[a\x13\xEDV[a\x0C\x9Ca\x0C\x8D\x85a\x0C8`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\x0CM6\x8A\x90\x03\x8A\x01\x8Aa\x1CtV[a\x0C\xAE6\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1DHV[a\x14\xADV[a\rMW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`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\x94V[`\x01`\x01`\xA0\x1B\x03\x86\x16_\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\r\xD0\x91`\x80\x8A\x01\x90a\x1D\x87V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[``_\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xFDWa\r\xFDa\x18\xE2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E&W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0F\xDFW_\x86\x86\x83\x81\x81\x10a\x0EFWa\x0EFa\x1C`V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xA6WP`\xFF\x82\x16_\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\x8BWa\x0E\x8Ba\x1C`V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0F3W`@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\x94V[\x80[\x80\x15a\x0F\xD4W`\xFF\x83\x16_\x90\x81R`\x04` R`@\x90 \x87\x90a\x0FY`\x01\x84a\x1D\xC5V[\x81T\x81\x10a\x0FiWa\x0Fia\x1C`V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xC2Wa\x0F\x91`\x01\x82a\x1D\xC5V[\x85\x85\x81Q\x81\x10a\x0F\xA3Wa\x0F\xA3a\x1C`V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0F\xD4V[\x80a\x0F\xCC\x81a\x1D\xD8V[\x91PPa\x0F5V[PPP`\x01\x01a\x0E+V[P\x94\x93PPPPV[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\x100W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\x10:\x83a\x08\xD0V[P\x90Pa\x10O\x82a\x10J\x83a\x17\x0BV[a\x10\x8FV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06B\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_[\x83Q\x81\x10\x15a\x12\xC5W_\x84\x82\x81Q\x81\x10a\x10\xC0Wa\x10\xC0a\x1C`V[\x01` \x90\x81\x01Q`\xF8\x1C_\x81\x81R`\x04\x90\x92R`@\x82 T\x90\x92P\x90\x81\x90\x03a\x11QW`@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\x94V[`\xFF\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x11\x84\x90\x86a\x13ZV[`\xFF\x83\x16_\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\xCC\x90\x85a\x1D\xC5V[\x81T\x81\x10a\x11\xDCWa\x11\xDCa\x1C`V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x03a\x12\x1AW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xB5V[\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_\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[PP`\x01\x90\x92\x01\x91Pa\x10\xA4\x90PV[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\xE6a\x17\xC7V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\x14W\xFE[P\x80a\x13RW`@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\x94V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13ua\x17\xE5V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\xAFW\xFE[P\x80a\x13RW`@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\x94V[a\x13\xF5a\x18\x03V[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_\x91a\x14\xDBa\x18(V[_[`\x02\x81\x10\x15a\x16\x92W_a\x14\xF2\x82`\x06a\x1D\xEDV[\x90P\x84\x82`\x02\x81\x10a\x15\x06Wa\x15\x06a\x1C`V[` \x02\x01QQ\x83a\x15\x17\x83_a\x1E\x04V[`\x0C\x81\x10a\x15'Wa\x15'a\x1C`V[` \x02\x01R\x84\x82`\x02\x81\x10a\x15>Wa\x15>a\x1C`V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15U\x91\x90a\x1E\x04V[`\x0C\x81\x10a\x15eWa\x15ea\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15|Wa\x15|a\x1C`V[` \x02\x01QQQ\x83a\x15\x8F\x83`\x02a\x1E\x04V[`\x0C\x81\x10a\x15\x9FWa\x15\x9Fa\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xB6Wa\x15\xB6a\x1C`V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x15\xCF\x83`\x03a\x1E\x04V[`\x0C\x81\x10a\x15\xDFWa\x15\xDFa\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xF6Wa\x15\xF6a\x1C`V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x16\x10Wa\x16\x10a\x1C`V[` \x02\x01Q\x83a\x16!\x83`\x04a\x1E\x04V[`\x0C\x81\x10a\x161Wa\x161a\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16HWa\x16Ha\x1C`V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16cWa\x16ca\x1C`V[` \x02\x01Q\x83a\x16t\x83`\x05a\x1E\x04V[`\x0C\x81\x10a\x16\x84Wa\x16\x84a\x1C`V[` \x02\x01RP`\x01\x01a\x14\xDDV[Pa\x16\x9Ba\x18GV[_` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x16\xB5W\xFE[P\x80a\x16\xFBW`@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\x94V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17/WP` \x82\x01Q\x15[\x15a\x17LWPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x17\x90\x91\x90a\x1C\xE7V[a\x17\xBA\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\xC5V[\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\x18\x16a\x18eV[\x81R` \x01a\x18#a\x18eV[\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\xC2W__\xFD[_` \x82\x84\x03\x12\x15a\x18\xA9W__\xFD[a\x18\xB2\x82a\x18\x83V[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x17\xC2W__\xFD[_` \x82\x84\x03\x12\x15a\x18\xD9W__\xFD[a\x18\xB2\x82a\x18\xB9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19\x19Wa\x19\x19a\x18\xE2V[`@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\x19HWa\x19Ha\x18\xE2V[`@R\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x19aW__\xFD[a\x19j\x83a\x18\x83V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\x85W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x19\x95W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xAFWa\x19\xAFa\x18\xE2V[a\x19\xC2`\x1F\x82\x01`\x1F\x19\x16` \x01a\x19\x1FV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a\x19\xD6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x1A\x05W__\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xEAV[__`@\x83\x85\x03\x12\x15a\x1A4W__\xFD[a\x1A=\x83a\x18\xB9V[\x94` \x93\x90\x93\x015\x93PPPV[___``\x84\x86\x03\x12\x15a\x1A]W__\xFD[a\x1Af\x84a\x18\xB9V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A~W__\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[___\x83\x85\x03a\x01`\x81\x12\x15a\x1A\xA3W__\xFD[a\x1A\xAC\x85a\x18\x83V[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1A\xC0W__\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1A\xD8W__\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a\x1A\xF9W__\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x0FW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x1B\x1FW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B5W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x1BFW__\xFD[` \x91\x82\x01\x97\x90\x96P\x94\x015\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x1B\x96W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1BrV[P\x90\x95\x94PPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R_\x82Q\x80``\x84\x01R\x80` \x85\x01`\x80\x85\x01^_`\x80\x82\x85\x01\x01R`\x80`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`@\x82\x84\x03\x12\x80\x15a\x1C\x85W__\xFD[Pa\x1C\x8Ea\x18\xF6V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`@\x84`\xC0\x83\x017a\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[_\x82a\x1D\x01WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_\x82`\x1F\x83\x01\x12a\x1D\x15W__\xFD[a\x1D\x1Da\x18\xF6V[\x80`@\x84\x01\x85\x81\x11\x15a\x1D.W__\xFD[\x84[\x81\x81\x10\x15a\x1B\x96W\x805\x84R` \x93\x84\x01\x93\x01a\x1D0V[_`\x80\x82\x84\x03\x12\x80\x15a\x1DYW__\xFD[Pa\x1Dba\x18\xF6V[a\x1Dl\x84\x84a\x1D\x06V[\x81Ra\x1D{\x84`@\x85\x01a\x1D\x06V[` \x82\x01R\x93\x92PPPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01`@\x83\x81\x84\x017`@\x80\x84\x01`\x80\x84\x017\x93\x92PPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x06\xEAWa\x06\xEAa\x1D\xB1V[_\x81a\x1D\xE6Wa\x1D\xE6a\x1D\xB1V[P_\x19\x01\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xEAWa\x06\xEAa\x1D\xB1V[\x80\x82\x01\x80\x82\x11\x15a\x06\xEAWa\x06\xEAa\x1D\xB1V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \xC1\x98d\xF29\xC7X\xEDI\xDA\xF0e\x94\x19b \x85\x84\xAE\xF0P\xE2\xA2\x8B\x0Ca\xF4\xF4\xB2\xA1Y\xDDdsolcC\0\x08\x1B\x003`\xA0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x13>8\x03\x80a\x13>\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Da\0KV[PPa\x015V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB6W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x01\x06W_\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[_` \x82\x84\x03\x12\x15a\x01\x18W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01.W__\xFD[\x93\x92PPPV[`\x80Qa\x11\xDCa\x01b_9_\x81\x81a\x01>\x01R\x81\x81a\x02o\x01R\x81\x81a\x04\x03\x01Ra\x07\xBD\x01Ra\x11\xDC_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c\x89\x02bE\x11a\0nW\x80c\x89\x02bE\x14a\x01\xAFW\x80c\xA4\x8B\xB0\xAC\x14a\x01\xCFW\x80c\xBD)\xB8\xCD\x14a\x01\xE2W\x80c\xCA\xA3\xCDv\x14a\x01\xF5W\x80c\xE2\xE6\x85\x80\x14a\x02\nW\x80c\xF3A\t\"\x14a\x02OW__\xFD[\x80b\xBF\xF0M\x14a\0\xB4W\x80c\x12\xD1\xD7M\x14a\0\xDDW\x80c&\xD9A\xF2\x14a\x01\x11W\x80c.\xD5\x83\xE5\x14a\x01&W\x80cm\x14\xA9\x87\x14a\x019W\x80c\x81!\x90o\x14a\x01xW[__\xFD[a\0\xC7a\0\xC26`\x04a\x0ErV[a\x02bV[`@Qa\0\xD4\x91\x90a\x0E\xE9V[`@Q\x80\x91\x03\x90\xF3[a\0\xF0a\0\xEB6`\x04a\x0FYV[a\x03\xB3V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92R\x01a\0\xD4V[a\x01$a\x01\x1F6`\x04a\x0F\x8AV[a\x03\xF8V[\0[a\0\xF0a\x0146`\x04a\x0F\xA3V[a\x05\x1AV[a\x01`\x7F\0\0\0\0\0\0\0\0\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\xD4V[a\x01\x8Ba\x01\x866`\x04a\x0F\x8AV[a\x05\x9DV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\0\xD4V[a\x01\xC2a\x01\xBD6`\x04a\x0FYV[a\x05\xE3V[`@Qa\0\xD4\x91\x90a\x0F\xE3V[a\x01\x8Ba\x01\xDD6`\x04a\x0FYV[a\x07>V[a\x01$a\x01\xF06`\x04a\x0ErV[a\x07\xB2V[a\x01\xFC_\x81V[`@Q\x90\x81R` \x01a\0\xD4V[a\x02:a\x02\x186`\x04a\x10\x1AV[`\x01` \x90\x81R_\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\xD4V[a\x02:a\x02]6`\x04a\x0F\x8AV[a\x08\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\x02\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[`@Q\x80\x91\x03\x90\xFD[_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\xCFWa\x02\xCFa\x10\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xF8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x03\xA8W_\x85\x85\x83\x81\x81\x10a\x03\x18Wa\x03\x18a\x10\xC9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x03` R`@\x81 T\x91\x93P\x90\x91P\x81\x90\x03a\x03SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10\xDDV[_a\x03]\x83a\x08\xD5V[\x90Pa\x03t\x89\x84a\x03o`\x01\x85a\x11FV[a\t\xCCV[\x80\x85\x85\x81Q\x81\x10a\x03\x87Wa\x03\x87a\x10\xC9V[c\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPPP`\x01\x01a\x02\xFDV[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x03\xD0\x83\x83a\nTV[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\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\x04@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[`\xFF\x81\x16_\x90\x81R`\x03` R`@\x90 T\x15a\x04\xB9W`@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\x02\xACV[`\xFF\x16_\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_\x80\x82R` \x82\x01R`\xFF\x84\x16_\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\x05eWa\x05ea\x10\xC9V[_\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_\x80\x82R` \x82\x01Ra\x05\xB9\x82a\n\xA9V[`@\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[``_a\x05\xF0\x84\x84a\n\xE8V[\x90P_\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x12Wa\x06\x12a\x10\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06;W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x075Wa\x06Y\x86\x82\x87a\x0C\x1AV[\x82\x82\x81Q\x81\x10a\x06kWa\x06ka\x10\xC9V[` \x02` \x01\x01\x81\x81RPP__\x1B\x82\x82\x81Q\x81\x10a\x06\x8CWa\x06\x8Ca\x10\xC9V[` \x02` \x01\x01Q\x03a\x07-W`@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\x02\xACV[`\x01\x01a\x06@V[P\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80Tc\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x10a\x07zWa\x07za\x10\xC9V[_\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[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\x07\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[_[\x81\x81\x10\x15a\x08\xB1W_\x83\x83\x83\x81\x81\x10a\x08\x17Wa\x08\x17a\x10\xC9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x03` R`@\x81 T\x91\x93P\x90\x91P\x81\x90\x03a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10\xDDV[`\xFF\x82\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x08\x7F\x84a\x0C\xEDV[\x90P_a\x08\x8C\x85\x83a\r%V[\x90P\x80\x89\x14a\x08\xA0Wa\x08\xA0\x81\x86\x85a\t\xCCV[PP`\x01\x90\x93\x01\x92Pa\x07\xFC\x91PPV[PPPPV[_a\x08\xC1\x82a\n\xA9V[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[__a\x08\xE0\x83a\n\xA9V[\x80T\x90\x91P_\x90a\x08\xFF\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11bV[\x90Pa\t\x0C\x84\x83\x83a\rMV[`\xFF\x84\x16_\x90\x81R`\x02` R`@\x81 \x90a\t)`\x01\x84a\x11FV[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_\x90\x81 T\x90\x03a\x03\xACW`\xFF\x84\x16_\x90\x81R`\x02` R`@\x81 \x90a\td`\x01\x84a\x11FV[c\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x83\x01\x93\x90\x93R`@\x91\x82\x01_\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[_a\t\xD7\x83\x83a\nTV[\x90Pa\t\xE5\x83\x83\x83\x87a\r\xEAV[`\xFF\x83\x16_\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_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x85\x16\x84R\x90\x91R\x81 \x80T\x90a\n\x84`\x01\x83a\x11~V[\x81T\x81\x10a\n\x94Wa\n\x94a\x10\xC9V[\x90_R` _ \x90`\x02\x02\x01\x91PP\x92\x91PPV[`\xFF\x81\x16_\x90\x81R`\x03` R`@\x81 \x80T\x90a\n\xC8`\x01\x83a\x11~V[\x81T\x81\x10a\n\xD8Wa\n\xD8a\x10\xC9V[\x90_R` _ \x01\x91PP\x91\x90PV[`\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 T\x80[\x80\x15a\x0B\x8DW`\xFF\x85\x16_\x90\x81R`\x03` R`@\x81 a\x0B\x1E`\x01\x84a\x11~V[\x81T\x81\x10a\x0B.Wa\x0B.a\x10\xC9V[_\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\x0BzW` \x01Q\x92Pa\x03\xF2\x91PPV[P\x80a\x0B\x85\x81a\x11\x91V[\x91PPa\n\xFCV[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\x02\xACV[`\xFF\x83\x16_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a\x0C\xE2W`\xFF\x86\x16_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x89\x16\x84R\x90\x91R\x81 a\x0Cr`\x01\x84a\x11~V[\x81T\x81\x10a\x0C\x82Wa\x0C\x82a\x10\xC9V[_\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\x0C\xCFW` \x01Q\x92Pa\x03\xAC\x91PPV[P\x80a\x0C\xDA\x81a\x11\x91V[\x91PPa\x0C?V[P_\x95\x94PPPPPV[__a\x0C\xF8\x83a\n\xA9V[\x80T\x90\x91P_\x90a\r\x18\x90`\x01\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16a\x11FV[\x90Pa\x03\xAC\x84\x83\x83a\rMV[__a\r1\x84\x84a\nTV[`\x01\x81\x01T\x90\x91Pa\rE\x85\x85\x84_a\r\xEAV[\x94\x93PPPPV[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\r\x82W\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_\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[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x0E\x07W`\x01\x82\x01\x81\x90Ua\x08\xB1V[`\xFF\x93\x90\x93\x16_\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[___`@\x84\x86\x03\x12\x15a\x0E\x84W__\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xA1W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x0E\xB1W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC7W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x0E\xD8W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0F&W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0F\x02V[P\x90\x95\x94PPPPPV[\x805`\xFF\x81\x16\x81\x14a\x0FAW__\xFD[\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0FAW__\xFD[__`@\x83\x85\x03\x12\x15a\x0FjW__\xFD[a\x0Fs\x83a\x0F1V[\x91Pa\x0F\x81` \x84\x01a\x0FFV[\x90P\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x0F\x9AW__\xFD[a\x03\xAC\x82a\x0F1V[___``\x84\x86\x03\x12\x15a\x0F\xB5W__\xFD[a\x0F\xBE\x84a\x0F1V[\x92Pa\x0F\xCC` \x85\x01a\x0FFV[\x91Pa\x0F\xDA`@\x85\x01a\x0FFV[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0F&W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0F\xFCV[__`@\x83\x85\x03\x12\x15a\x10+W__\xFD[a\x104\x83a\x0F1V[\x94` \x93\x90\x93\x015\x93PPPV[` \x80\x82R`M\x90\x82\x01R\x7FIndexRegistry.onlyRegistryCoordi`@\x82\x01R\x7Fnator: caller is not the registr``\x82\x01Rl<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x99\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\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_R`\x11`\x04R`$_\xFD[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[\x81\x81\x03\x81\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[_\x81a\x11\x9FWa\x11\x9Fa\x112V[P_\x19\x01\x90V\xFE\xA2dipfsX\"\x12 \xD0\xF0:\xD1\xC2E\xA9#&?\xA9\x03\x89b\x1F\x15\x9F\xB1Rv\x87\xF7\xF9\x81\x1D@\xCB4B\xADm\0dsolcC\0\x08\x1B\x003`\xC0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa7\x928\x03\x80a7\x92\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\\V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\xA0R\x16`\x80Ra\0\x94V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0YW__\xFD[PV[__`@\x83\x85\x03\x12\x15a\0mW__\xFD[\x82Qa\0x\x81a\0EV[` \x84\x01Q\x90\x92Pa\0\x89\x81a\0EV[\x80\x91PP\x92P\x92\x90PV[`\x80Q`\xA0Qa6\x9Ea\0\xF4_9_\x81\x81a\x03m\x01R\x81\x81a\x06 \x01R\x81\x81a\tK\x01R\x81\x81a\x0C\xA9\x01R\x81\x81a\x10\xB6\x01R\x81\x81a\x16|\x01R\x81\x81a\x17{\x01R\x81\x81a\x18\x8F\x01Ra\x1CB\x01R_\x81\x81a\x05\x1B\x01Ra\x1D\xFC\x01Ra6\x9E_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\xDCW_5`\xE0\x1C\x80c\x9F<\xCFe\x11a\x01\tW\x80c\xC8)LV\x11a\0\x9EW\x80c\xF2\xBE\x94\xAE\x11a\0nW\x80c\xF2\xBE\x94\xAE\x14a\x05=W\x80c\xF8Q\xE1\x98\x14a\x05PW\x80c\xFA(\xC6'\x14a\x05cW\x80c\xFFiJw\x14a\x05vW__\xFD[\x80c\xC8)LV\x14a\x04\xC8W\x80c\xD5\xEC\xCC\x05\x14a\x04\xDBW\x80c\xDD\x98F\xB9\x14a\x04\xEEW\x80c\xDF\\\xF7#\x14a\x05\x16W__\xFD[\x80c\xBC\x9A@\xC3\x11a\0\xD9W\x80c\xBC\x9A@\xC3\x14a\x04gW\x80c\xBD)\xB8\xCD\x14a\x04zW\x80c\xC4gx\xA5\x14a\x04\x8DW\x80c\xC6\x01R}\x14a\x04\xB5W__\xFD[\x80c\x9F<\xCFe\x14a\x03\xE1W\x80c\xACk\xFB\x03\x14a\x03\xF4W\x80c\xAD\xC8\x04\xDA\x14a\x04\x14W\x80c\xB6\x90Kx\x14a\x04TW__\xFD[\x80cK\xD2n\t\x11a\x01\x7FW\x80cf\xAC\xFE\xFE\x11a\x01OW\x80cf\xAC\xFE\xFE\x14a\x03=W\x80cm\x14\xA9\x87\x14a\x03hW\x80c|\x17#G\x14a\x03\xA7W\x80c\x81\xC0u\x02\x14a\x03\xC1W__\xFD[\x80cK\xD2n\t\x14a\x02\xD9W\x80cT\x01\xED'\x14a\x03\x08W\x80c^Zgu\x14a\x03\x1BW\x80c_\x1F-w\x14a\x03*W__\xFD[\x80c \xB6b\x98\x11a\x01\xBAW\x80c \xB6b\x98\x14a\x02aW\x80c%PGw\x14a\x02vW\x80c,\xD9Y@\x14a\x02\x97W\x80c<\xA5\xA5\xF5\x14a\x02\xB7W__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xE0W\x80c\x08s$a\x14a\x02\x15W\x80c\x1F\x9Bt\xE0\x14a\x026W[__\xFD[a\x02\x02a\x01\xEE6`\x04a++V[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02(a\x02#6`\x04a+DV[a\x05\x89V[`@Qa\x02\x0C\x92\x91\x90a+lV[a\x02Ia\x02D6`\x04a+\xA5V[a\x05\xCEV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x02ta\x02o6`\x04a,\x1AV[a\x06\x1EV[\0[a\x02\x89a\x02\x846`\x04a,\xD5V[a\t=V[`@Qa\x02\x0C\x92\x91\x90a-oV[a\x02\xAAa\x02\xA56`\x04a-\x93V[a\x0B\xF2V[`@Qa\x02\x0C\x91\x90a-\xBDV[a\x02\x02a\x02\xC56`\x04a++V[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\x02a\x02\xE76`\x04a-\x93V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ia\x03\x166`\x04a-\x93V[a\x0C\x8FV[a\x02\x02g\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02ta\x0386`\x04a.\xC4V[a\x0C\xA7V[a\x03Pa\x03K6`\x04a,\xD5V[a\x10\xAAV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\x8F\x7F\0\0\0\0\0\0\0\0\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\x0CV[a\x03\xAF` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\xD4a\x03\xCF6`\x04a/\x7FV[a\x12\0V[`@Qa\x02\x0C\x91\x90a/\xCDV[a\x03\x8Fa\x03\xEF6`\x04a+DV[a\x14\xACV[a\x04\x07a\x04\x026`\x04a0\nV[a\x14\xE0V[`@Qa\x02\x0C\x91\x90a0:V[a\x04'a\x04\"6`\x04a+DV[a\x15vV[`@\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\x0CV[a\x04\x07a\x04b6`\x04a+DV[a\x15\xEDV[a\x02ta\x04u6`\x04a0\x8AV[a\x16zV[a\x02ta\x04\x886`\x04a0\xB2V[a\x17pV[a\x02Ia\x04\x9B6`\x04a++V[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02ta\x04\xC36`\x04a1uV[a\x18\x8DV[a\x02Ia\x04\xD66`\x04a1\xBFV[a\x19~V[a\x02Ia\x04\xE96`\x04a++V[a\x19\xFAV[a\x05\x01a\x04\xFC6`\x04a1\xF9V[a\x1AKV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\x8F\x7F\0\0\0\0\0\0\0\0\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\x02Ia\x05K6`\x04a22V[a\x1A_V[a\x04\x07a\x05^6`\x04a-\x93V[a\x1A\xF2V[a\x02Ia\x05q6`\x04a1\xF9V[a\x1B\xD8V[a\x02ta\x05\x846`\x04a2qV[a\x1C7V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x05\xA2W_\x80\xFD[_\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[`\xFF\x82\x16_\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[`@Q\x80\x91\x03\x90\xFD[_a\x06\x12\x85\x85a\x1D\xA0V[P\x92PP[P\x92\x91PPV[\x7F\0\0\0\0\0\0\0\0\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\x06zW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x9E\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x84a\x06\xE9\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[\x83\x80a\x07{W`@\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\x01a\x05\xFEV[\x82\x81\x14a\x07\xF0W`@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\x05\xFEV[`\xFF\x87\x16_\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\t2W\x85\x85\x82\x81\x81\x10a\x08\x1DWa\x08\x1Da3\xB2V[\x90P` \x02\x01` \x81\x01\x90a\x082\x91\x90a3\xC6V[\x82\x89\x89\x84\x81\x81\x10a\x08EWa\x08Ea3\xB2V[\x90P` \x02\x015\x81T\x81\x10a\x08\\Wa\x08\\a3\xB2V[\x90_R` _ \x01_\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\x08\xC2Wa\x08\xC2a3\xB2V[\x90P` \x02\x015\x81T\x81\x10a\x08\xD9Wa\x08\xD9a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\xFFWa\x08\xFFa3\xB2V[\x90P` \x02\x01` \x81\x01\x90a\t\x14\x91\x90a3\xC6V[`@Qa\t\"\x92\x91\x90a+lV[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x08\x03V[PPPPPPPPPV[``\x803`\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\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA1Wa\t\xA1a.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xCAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE6Wa\t\xE6a.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x0FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\x0B\xE4W_\x87\x87\x83\x81\x81\x10a\n/Wa\n/a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x05\xFEV[__a\n\xC2\x83\x8Da\x1D\xA0V[\x91P\x91P\x80a\x0B_W`@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\x05\xFEV[_a\x0Bk\x8C\x85\x85a\x1F\x87V[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\x80Wa\x0B\x80a3\xB2V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xAA\x84\x82a\"\0V[\x86\x86\x81Q\x81\x10a\x0B\xBCWa\x0B\xBCa3\xB2V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\n\x14\x90PV[P\x90\x97\x90\x96P\x94PPPPPV[_\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\x0C\x82W_\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\x0C*V[PPPP\x90P[\x92\x91PPV[__a\x0C\x9B\x84\x84a\x1A\xF2V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\r\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r'\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rWW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\rr\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[\x81Q\x80a\x0E\x03W`@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\x05\xFEV[`\xFF\x84\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xA1W\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\x0EaWa\x0Eaa3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0EyWa\x0Eya3\xB2V[_\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\x0E\xD6Wa\x0E\xD6a3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xEEWa\x0E\xEEa3\xB2V[_\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\x0F-\x90`\x01\x90a4eV[\x81T\x81\x10a\x0F=Wa\x0F=a3\xB2V[\x90_R` _ \x01\x83\x87\x83\x81Q\x81\x10a\x0FXWa\x0FXa3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0FpWa\x0Fpa3\xB2V[_\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\x0F\xC2Wa\x0F\xC2a4xV[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x0F\xE8\x90`\x01\x90a4eV[\x81T\x81\x10a\x0F\xF8Wa\x0F\xF8a3\xB2V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10&Wa\x10&a3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x10>Wa\x10>a3\xB2V[\x90_R` _ \x01_a\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\x10yWa\x10ya4xV[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0E!V[PPPPPPPV[_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\xF3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_\x80[\x83\x81\x10\x15a\x11\xF6W_\x85\x85\x83\x81\x81\x10a\x11\x11Wa\x11\x11a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x05\xFEV[__a\x11\xAC\x83\x8Ba\x1D\xA0V[\x91P\x91P\x80a\x11\xCDW_\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[_a\x11\xD9\x8A\x85\x85a\x1F\x87V[\x90Pa\x11\xE5\x84\x82a\"\0V[PP`\x01\x90\x93\x01\x92Pa\x10\xF6\x91PPV[P\x95\x94PPPPPV[``_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\x1BWa\x12\x1Ba.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x14\xA1W_\x85\x85\x83\x81\x81\x10a\x12dWa\x12da3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x05\xFEV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13*Wa\x13*a3\xB2V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x13\xD5W`@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\x05\xFEV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x14\x96W`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14\x17\x84\x86a4eV[a\x14!\x91\x90a4eV[\x81T\x81\x10a\x141Wa\x141a3\xB2V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\x8EW`\x01a\x14S\x82\x84a4eV[a\x14]\x91\x90a4eV[\x85\x85\x81Q\x81\x10a\x14oWa\x14oa3\xB2V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x14\x96V[`\x01\x01a\x13\xE9V[PPP`\x01\x01a\x12IV[P\x90P[\x93\x92PPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x14\xC5W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R_\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\x15$Wa\x15$a3\xB2V[_\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_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x15\xACWa\x15\xACa3\xB2V[_\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_\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\x16)Wa\x16)a3\xB2V[_\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[\x7F\0\0\0\0\0\0\0\0\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\x16\xD6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xFA\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\x17E\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17aW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[a\x17k\x83\x83a#qV[PPPV[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\x17\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_[\x81\x81\x10\x15a\x18\x87W_\x83\x83\x83\x81\x81\x10a\x17\xD5Wa\x17\xD5a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x05\xFEV[_a\x18p\x86\x83_a\x1F\x87V[\x90Pa\x18|\x82\x82a\"\0V[PPP`\x01\x01a\x17\xBAV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x18\xE9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\r\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19=W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\x19X\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x19tW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[a\x17k\x83\x83a#\xD9V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x19\xA4Wa\x19\xA4a3\xB2V[_\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\x0C\x9B\x81\x85a'\xF6V[`\xFF\x81\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\x1A\x91a4eV[\x81T\x81\x10a\x1A*Wa\x1A*a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1AW\x84\x84\x84a)oV[\x94\x93PPPPV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\x8FWa\x1A\x8Fa3\xB2V[_\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\x1A\xE5\x81\x86a'\xF6V[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R_\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\x01\x81\x90R\x91\x92\x91\x82\x90\x03a\x1BNW\x91Pa\x0C\x89\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1Bt`\x01\x84a4eV[\x81T\x81\x10a\x1B\x84Wa\x1B\x84a3\xB2V[_\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\x0C\x89\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1B\xFE\x85\x85\x85a)oV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\x14Wa\x1C\x14a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1C\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x1C\xFCW`@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\x05\xFEV[a\x1D\x06\x83\x82a#\xD9V[a\x1D\x10\x83\x83a#qV[PP`\xFF\x16_\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[____a\x1D\xBC\x86`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90\x91P`\xFF\x87\x16_\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\x1E/\x92\x8C\x92\x01a4\x8CV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EIW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1Ep\x91\x90\x81\x01\x90a4\xEDV[\x90P_[\x83\x81\x10\x15a\x1FTW`\xFF\x89\x16_\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1E\x9FWa\x1E\x9Fa3\xB2V[_\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\x1E\xECWa\x1E\xECa3\xB2V[` \x02` \x01\x01Q\x11\x15a\x1FLWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F#Wa\x1F#a3\xB2V[` \x02` \x01\x01Qa\x1F5\x91\x90a5sV[a\x1F?\x91\x90a5\x8AV[a\x1FI\x90\x86a5\xA9V[\x94P[`\x01\x01a\x1EtV[PPP`\xFF\x86\x16_\x90\x81R` \x81\x90R`@\x90 T\x91\x93PP`\x01`\x01``\x1B\x03\x90\x81\x16\x90\x83\x16\x10\x15\x90P[\x92P\x92\x90PV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80\x82\x03a KW_\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!\xA6V[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a q`\x01\x84a4eV[\x81T\x81\x10a \x81Wa \x81a3\xB2V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a \xB7W_\x93PPPPa\x14\xA5V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a \xEFW\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua!\xA4V[\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_\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!\xF6\x82\x85a*\xD2V[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"#\x90\x84a4eV[\x81T\x81\x10a\"3Wa\"3a3\xB2V[\x90_R` _ \x01\x90P\x83_\x03a\"^WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\x89\x90PV[\x80T_\x90a\"|\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a*\xE9V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\"\xB7W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua#hV[\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_\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_\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[_\x81Q\x11a$V[P\x93\x94\x93PPPPV[`@\x81R_a-\x81`@\x83\x01\x85a-,V[\x82\x81\x03` \x84\x01Ra#h\x81\x85a-,V[__`@\x83\x85\x03\x12\x15a-\xA4W__\xFD[\x825\x91Pa-\xB4` \x84\x01a+\x16V[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a.+Wa.\x15\x83\x85Qc\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a-\xD6V[P\x90\x95\x94PPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.lWa.la.6V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x9AWa.\x9Aa.6V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a.\xBAWa.\xBAa.6V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a.\xD5W__\xFD[a.\xDE\x83a+\x16V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\x08W__\xFD[\x805a/\x1Ba/\x16\x82a.\xA2V[a.rV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a/?\xA9\xBC*%\x8C\xA4\xE9}\xBDu\x08xD\xA3K\x07SJ\x15\x07dsolcC\0\x08\x1B\x003a\x01\xC0`@R4\x80\x15a\0\x10W__\xFD[P`@Qa_N8\x03\x80a_N\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02BV[`@\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@\x0Fa\x01-\x81\x84\x84`@\x80Q` \x81\x01\x85\x90R\x90\x81\x01\x83\x90R``\x81\x01\x82\x90RF`\x80\x82\x01R0`\xA0\x82\x01R_\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\xA0Ra\x01ea\x01nV[PPPPa\x02\x9EV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x01\xD9W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x02)W_\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\x14a\x02?W__\xFD[PV[____`\x80\x85\x87\x03\x12\x15a\x02UW__\xFD[\x84Qa\x02`\x81a\x02+V[` \x86\x01Q\x90\x94Pa\x02q\x81a\x02+V[`@\x86\x01Q\x90\x93Pa\x02\x82\x81a\x02+V[``\x86\x01Q\x90\x92Pa\x02\x93\x81a\x02+V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qa[\xB5a\x03\x99_9_\x81\x81a\x06(\x01R\x81\x81a\x10\xDD\x01R\x81\x81a\x1F\x83\x01R\x81\x81a,\x7F\x01R\x81\x81a4l\x01Ra:\"\x01R_\x81\x81a\x05n\x01R\x81\x81a\x1F\x0E\x01R\x81\x81a#\xA2\x01R\x81\x81a,\x04\x01R\x81\x81a3\xC8\x01R\x81\x81a6\x0E\x01Ra9\xA6\x01R_\x81\x81a\x054\x01R\x81\x81a\x0E\x82\x01R\x81\x81a\x1FL\x01R\x81\x81a+\x8B\x01R\x81\x81a-`\x01R\x81\x81a-\xD7\x01R\x81\x81a3M\x01Ra:\x99\x01R_\x81\x81a\x04x\x01R\x81\x81a*\xE7\x01Ra2\x9B\x01R_a<\x98\x01R_a<\xE7\x01R_a<\xC2\x01R_a<\x1B\x01R_a\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xA2a\x06\x7F6`\x04aN\x9BV[a\x1A\xDCV[a\x06\x97a\x06\x926`\x04aODV[a\x1CNV[`@Qa\x02\xCD\x91\x90aO\xE9V[a\x02\xC3\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xA2a\x06\xD96`\x04aP1V[a\x1C\xFBV[`\x9CTa\x02\xC3V[a\x02\xA2a\x06\xF46`\x04aQ\x17V[a\x1D`V[a\x02\xA2a\x07\x076`\x04aR\xBAV[a\x1DsV[a\x07za\x07\x1A6`\x04aI\x9BV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xCDV[a\x02\xA2a\x07\xBC6`\x04aIPV[a fV[a\x02\xA2a\x07\xCF6`\x04aG\x9DV[a \xDCV[a\x08\x02a\x07\xE26`\x04aIPV[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xCD\x91\x90aS\x90V[`\x01T`\x02\x90`\x04\x90\x81\x16\x03a\x08@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\t\x12W_\x84\x84\x83\x81\x81\x10a\x08]Wa\x08]aS\xD5V[\x90P` \x02\x01` \x81\x01\x90a\x08r\x91\x90aIPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\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\x08\xBCWa\x08\xBCaJrV[`\x02\x81\x11\x15a\x08\xCDWa\x08\xCDaJrV[\x90RP\x80Q\x90\x91P_a\x08\xDF\x82a\"5V[\x90P_a\x08\xF4\x82`\x01`\x01`\xC0\x1B\x03\x16a\"\x9CV[\x90Pa\t\x01\x85\x85\x83a#eV[PP`\x01\x90\x93\x01\x92Pa\x08B\x91PPV[PPPPV[_\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\t:Wa\t:aS\xD5V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\n3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x087V[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nYWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x087V[`@\x01Q\x94\x93PPPPV[`\x013_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0B4Wa\x0B4aJrV[\x14a\x0B\xA7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x087V[3_\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0B\xE7\x90\x84\x90aT\x17V[`@Q\x80\x91\x03\x90\xA2PV[_`\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\x0CBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cf\x91\x90aT)V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aTDV[a\x0C\x9F\x81a$NV[PV[_T`@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\x0C\xECW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x10\x91\x90aT\x8EV[a\r,W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aT\xADV[`\x01T\x81\x81\x16\x14a\r\xA5W`@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\x087V[`\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\x0B\xE7V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_\x83\x81R`\x98` R`@\x90 \x80T\x83\x90\x81\x10a\x0E\x17Wa\x0E\x17aS\xD5V[_\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_\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\x0E\xCFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Ed\x91\x90aT)V[a\x0E\xFBa%QV[a\x0C\x9F\x81a%\xB0V[a\x0F\x0Ca%QV[a\x0C\x9F\x81a&\x19V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Eda\x0F\x8E\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\x0Fs\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&\x82V[a&\xCEV[`\x01T`\x02\x90`\x04\x90\x81\x16\x03a\x0F\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[_a\x10\x01\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_\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa'X\x90PV[\x90P\x84\x83\x14a\x10qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a[ _9_Q\x90_R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\x087V[_[\x83\x81\x10\x15a\x14zW_\x85\x85\x83\x81\x81\x10a\x10\x8EWa\x10\x8EaS\xD5V[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P_\x89\x89\x85\x81\x81\x10a\x10\xAEWa\x10\xAEaS\xD5V[\x90P` \x02\x81\x01\x90a\x10\xC0\x91\x90aT\xF5V[`@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*W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11N\x91\x90aU:V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x11\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R_Q` a[ _9_Q\x90_R`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\x087V[_\x80[\x82\x81\x10\x15a\x14 W_\x84\x84\x83\x81\x81\x10a\x12\x07Wa\x12\x07aS\xD5V[\x90P` \x02\x01` \x81\x01\x90a\x12\x1C\x91\x90aIPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\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\x12fWa\x12faJrV[`\x02\x81\x11\x15a\x12wWa\x12waJrV[\x90RP\x80Q\x90\x91P_a\x12\x89\x82a\"5V[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13\x0CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a[ _9_Q\x90_R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x087V[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R_Q` a[ _9_Q\x90_R`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\x087V[Pa\x14\x13\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x13\xCD\x91\x90aUiV[\x92a\x13\xDA\x93\x92\x91\x90aU|V[\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_\x92\x01\x91\x90\x91RPa#e\x92PPPV[P\x90\x92PP`\x01\x01a\x11\xECV[P`\xFF\x84\x16_\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\x80`\x01\x01\x90Pa\x10sV[PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x14\xDBWa\x14\xDBaJrV[`\x02\x81\x11\x15a\x14\xECWa\x14\xECaJrV[\x90RP\x92\x91PPV[_T`@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\x15?W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15c\x91\x90aT\x8EV[a\x15\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aT\xADV[_\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\x15\xC5a%QV[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16EW`@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\x087V[a\x16O\x83\x83a'\xE8V[PPPV[`\x9C\x81\x81T\x81\x10a\x16cW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x16\xFCW`@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\x087V[a\x16O\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[a\x17Ca%QV[a\x17L_a,\xEEV[V[_a\x17\x8D\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\x0Fs\x96\x95\x94\x93\x92\x91\x90aU\xA3V[\x96\x95PPPPPPV[_a\x0Ed\x82a\"5V[_a\x17\xB4`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T_\x91\x90\x81\x16\x03a\x17\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[\x83\x89\x14a\x18bW`@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\x087V[_a\x18m3\x88a-?V[\x90Pa\x18\xCC3\x82\x88\x88\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x18\xC1Wa\x18\xB2`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aV(V[\x81R` \x01\x90`\x01\x01\x90a\x18\x95V[PPPPP\x87a.mV[_a\x19\x113\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_\x92\x01\x91\x90\x91RP\x8C\x92Pa/\xF8\x91PPV[\x90P_[\x8B\x81\x10\x15a\x1A\xCDW_`\x97_\x8F\x8F\x85\x81\x81\x10a\x193Wa\x193aS\xD5V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \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\x19\x9FWa\x19\x9FaS\xD5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1A\xC4Wa\x1A@\x8E\x8E\x84\x81\x81\x10a\x19\xC8Wa\x19\xC8aS\xD5V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x19\xEBWa\x19\xEBaS\xD5V[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1A\nWa\x1A\naS\xD5V[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A$Wa\x1A$aS\xD5V[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A:\x91\x90aV(V[\x86a4\xF5V[a\x1A\xC4\x89\x89\x84\x81\x81\x10a\x1AUWa\x1AUaS\xD5V[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1Am\x91\x90aIPV[\x8F\x8F\x85\x90\x86`\x01a\x1A~\x91\x90aUiV[\x92a\x1A\x8B\x93\x92\x91\x90aU|V[\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[P`\x01\x01a\x19\x15V[PPPPPPPPPPPPPV[`\x01\x80T_\x91\x90\x81\x16\x03a\x1B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[_a\x1B\r3\x85a-?V[\x90P_a\x1BT3\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_\x92\x01\x91\x90\x91RP\x8C\x92Pa/\xF8\x91PPV[Q\x90P_[\x88\x81\x10\x15a\x1CBW_\x8A\x8A\x83\x81\x81\x10a\x1BtWa\x1BtaS\xD5V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x97` R`@\x90 T\x85Q\x91\x93Pc\xFF\xFF\xFF\xFF\x16\x91P\x84\x90\x84\x90\x81\x10a\x1B\xA9Wa\x1B\xA9aS\xD5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C9W`@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\x087V[P`\x01\x01a\x1BYV[PPPPPPPPPPV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1CjWa\x1CjaG\xFAV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1C\x93W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1C\xF3Wa\x1C\xC4\x85\x85\x83\x81Q\x81\x10a\x1C\xB7Wa\x1C\xB7aS\xD5V[` \x02` \x01\x01Qa7\xC0V[\x82\x82\x81Q\x81\x10a\x1C\xD6Wa\x1C\xD6aS\xD5V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C\x98V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x03a\x1D!W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[a\x16O3\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[a\x1Dha%QV[a\x16O\x83\x83\x83a8\xEEV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1D\x91WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1D\xAAWP0;\x15\x80\x15a\x1D\xAAWP_T`\xFF\x16`\x01\x14[a\x1E\rW`@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\x087V[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E.W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E@WP\x81Q\x83Q\x14[a\x1E\xAAW`@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\x087V[a\x1E\xB3\x89a,\xEEV[a\x1E\xBD\x86\x86a:\xF6V[a\x1E\xC6\x88a%\xB0V[a\x1E\xCF\x87a&\x19V[`\x9C\x80T`\x01\x81\x81\x01\x83U_\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 \x15Wa \r\x85\x82\x81Q\x81\x10a\x1F\xCCWa\x1F\xCCaS\xD5V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a\x1F\xE6Wa\x1F\xE6aS\xD5V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \0Wa \0aS\xD5V[` \x02` \x01\x01Qa8\xEEV[`\x01\x01a\x1F\xAEV[P\x80\x15a [W_\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 na%QV[`\x01`\x01`\xA0\x1B\x03\x81\x16a \xD3W`@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\x087V[a\x0C\x9F\x81a,\xEEV[_`\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!,W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!P\x91\x90aT)V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a!\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aTDV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a!\xFEW`@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\x087V[`\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\x0B\xE7V[_\x81\x81R`\x98` R`@\x81 T\x80\x82\x03a\"RWP_\x92\x91PPV[_\x83\x81R`\x98` R`@\x90 a\"j`\x01\x83aVBV[\x81T\x81\x10a\"zWa\"zaS\xD5V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[``__a\"\xA9\x84a;\xE5V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xC4Wa\"\xC4aG\xFAV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"\xEEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a#\x05WPa\x01\0\x81\x10[\x15a#[W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#KW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#.Wa#.aS\xD5V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a#T\x81aVUV[\x90Pa\"\xF4V[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a#}Wa#}aJrV[\x14a#\x87WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\x1B\x81R_\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\x90cf\xAC\xFE\xFE\x90a#\xDB\x90\x88\x90\x86\x90\x88\x90`\x04\x01aVmV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a#\xF7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\x1B\x91\x90aV\x9CV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$GWa$G\x85a$B\x83`\x01`\x01`\xC0\x1B\x03\x16a\"\x9CV[a(\x94V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a$\xDCW`@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\x087V[_T`@\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_\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[3a%Za\x17\xA1V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17LW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x087V[`\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[_a\x0Eda&\x8Ea<\x0FV[\x83`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x83\x90R`B\x81\x01\x82\x90R_\x90`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_\x80\x80a&\xFB_Q` a[`_9_Q\x90_R\x86aV\xD6V[\x90P[a'\x07\x81a=5V[\x90\x93P\x91P_Q` a[`_9_Q\x90_R\x82\x83\t\x83\x03a'?W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a[`_9_Q\x90_R`\x01\x82\x08\x90Pa&\xFEV[__a'c\x84a=\xB1V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a'\xE1W`@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\x087V[\x93\x92PPPV[`\xFF\x82\x16_\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[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a(\xC7Wa(\xC7aJrV[\x14a)FW`@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\x087V[`\x96T_\x90a)Y\x90\x85\x90`\xFF\x16a'XV[\x90P_a)e\x83a\"5V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a)\xE3W`@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\x087V[a)\xFA`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a*\x92W`@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\x087V[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a*\xAB\x84\x82a?4V[`\x01`\x01`\xC0\x1B\x03\x81\x16a+tW`\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a+(W__\xFD[PZ\xF1\x15\x80\x15a+:W=__>=_\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_\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+\xC2\x90\x8A\x90\x8A\x90`\x04\x01aV\xE9V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a+\xD9W__\xFD[PZ\xF1\x15\x80\x15a+\xEBW=__>=_\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,=\x90\x87\x90\x8A\x90`\x04\x01aW\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a,TW__\xFD[PZ\xF1\x15\x80\x15a,fW=__>=_\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,\xB8\x90\x87\x90\x8A\x90`\x04\x01aW\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a,\xCFW__\xFD[PZ\xF1\x15\x80\x15a,\xE1W=__>=_\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_\x90\xA3PPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R_\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-\xA7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a-\xCB\x91\x90aW$V[\x90P_\x81\x90\x03a\x0EdW\x7F\0\0\0\0\0\0\0\0\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\x84a.\x0F\x87a\x0F\x15V[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a.-\x93\x92\x91\x90aW;V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a.IW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\xE1\x91\x90aW$V[` \x80\x82\x01Q_\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\x12W`@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\x087V[B\x81`@\x01Q\x10\x15a/\xA7W`@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\x087V[` \x80\x82\x01\x80Q_\x90\x81R`\x9A\x90\x92R`@\x91\x82\x90 \x80T`\xFF\x19\x16`\x01\x17\x90U`\x9DT\x90Q\x91\x83\x01Qa\t\x12\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a/\xF1\x91\x88\x91\x88\x91\x88\x91\x90a\x17NV[\x83Qa@\xF0V[a0\x1C`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_a0b\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_\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa'X\x90PV[\x90P_a0n\x88a\"5V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a0\xECW`@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\x087V[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a1\xA2W`@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\x087V[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a1\xBB\x89\x82a?4V[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa1\xEB\x91\x90aT\x17V[`@Q\x80\x91\x03\x90\xA2`\x01`\x01`\x01`\xA0\x1B\x03\x8B\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a2$Wa2$aJrV[\x14a36W`@\x80Q\x80\x82\x01\x82R\x8A\x81R`\x01` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x8F\x16_\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\x15a2~Wa2~aJrV[\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}\x90a2\xD3\x90\x8D\x90\x89\x90`\x04\x01aW\xABV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a2\xEAW__\xFD[PZ\xF1\x15\x80\x15a2\xFCW=__>=_\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_\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\x90a3\x86\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aX\x1DV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a3\x9DW__\xFD[PZ\xF1\x15\x80\x15a3\xAFW=__>=_\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\x91Pa4\x05\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aXAV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4 W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4G\x91\x90\x81\x01\x90aX\xCCV[`@\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\x90a4\xA4\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01aY/V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4\xBFW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4\xE6\x91\x90\x81\x01\x90aYHV[\x84RPPP\x96\x95PPPPPPV[` \x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x80\x82\x16_\x81\x81R`\x99\x90\x94R`@\x90\x93 T\x91\x92\x90\x87\x16\x03a5rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x087V[\x87`\xFF\x16\x84_\x01Q`\xFF\x16\x14a5\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01R\x7Frn: quorumNumber not the same as`d\x82\x01Rf\x08\x1C\xDAY\xDB\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x087V[`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`\xFF\x89\x16`$\x82\x01R_\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\x15a6[W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a6\x7F\x91\x90aY\xD7V[\x90Pa6\x8B\x81\x85aB\xA8V[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a7\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R_Q` a[@_9_Q\x90_R`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\x087V[a7'\x88\x85aB\xCBV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a [W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01R\x7Frn: cannot kick operator with mo`d\x82\x01R\x7Fre than kickBIPsOfTotalStake\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x087V[_\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a8DW`\x01a7\xE4\x82\x84aVBV[a7\xEE\x91\x90aVBV[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98_\x86\x81R` \x01\x90\x81R` \x01_ \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a8\x1FWa8\x1FaS\xD5V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a8=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a:mW__\xFD[PZ\xF1\x15\x80\x15a:\x7FW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a:\xE4W__\xFD[PZ\xF1\x15\x80\x15a [W=__>=_\xFD[_Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a;\x1CWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a;\x9EW`@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\x087V[`\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;\xE1\x82a$NV[PPV[_\x80[\x82\x15a\x0EdWa;\xF9`\x01\x84aVBV[\x90\x92\x16\x91\x80a<\x07\x81aZ\x89V[\x91PPa;\xE8V[_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\x16\x14\x80\x15a9W`@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\x087V[\x81Q_\x03a>HWP_\x91\x90PV[__\x83_\x81Q\x81\x10a>\\Wa>\\aS\xD5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a?+W\x84\x81\x81Q\x81\x10a>\x8AWa>\x8AaS\xD5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a?\x1FW`@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\x087V[\x91\x81\x17\x91`\x01\x01a>oV[P\x90\x93\x92PPPV[_\x82\x81R`\x98` R`@\x81 T\x90\x81\x90\x03a?\xDAW_\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[_\x83\x81R`\x98` R`@\x81 a?\xF2`\x01\x84aVBV[\x81T\x81\x10a@\x02Wa@\x02aS\xD5V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a@CW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t\x12V[\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_\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;\x15aB\x08W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA0\x90\x86\x90\x86\x90`\x04\x01aW\x0CV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aAKW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aAo\x91\x90aZ\xA9V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16OW`@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\x087V[\x82`\x01`\x01`\xA0\x1B\x03\x16aB\x1C\x83\x83aC\x8CV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16OW`@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\x087V[` \x81\x01Q_\x90a'\x10\x90aB\xC1\x90a\xFF\xFF\x16\x85aZ\xD0V[a'\xE1\x91\x90aZ\xF2V[`@\x81\x01Q_\x90a'\x10\x90aB\xC1\x90a\xFF\xFF\x16\x85aZ\xD0V[__aB\xEEaF\xE3V[aB\xF6aG\x01V[` \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\x80aC3W\xFE[P\x82aC\x81W`@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\x087V[PQ\x95\x94PPPPPV[___aC\x99\x85\x85aC\xA6V[\x91P\x91Pa\x1C\xF3\x81aD\x11V[__\x82Q`A\x03aC\xDAW` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1AaC\xCE\x87\x82\x85\x85aE\xC6V[\x94P\x94PPPPaD\nV[\x82Q`@\x03aD\x03W` \x83\x01Q`@\x84\x01QaC\xF8\x86\x83\x83aF\xABV[\x93P\x93PPPaD\nV[P_\x90P`\x02[\x92P\x92\x90PV[_\x81`\x04\x81\x11\x15aD$WaD$aJrV[\x03aD,WPV[`\x01\x81`\x04\x81\x11\x15aD@WaD@aJrV[\x03aD\x8DW`@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\x087V[`\x02\x81`\x04\x81\x11\x15aD\xA1WaD\xA1aJrV[\x03aD\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x087V[`\x03\x81`\x04\x81\x11\x15aE\x02WaE\x02aJrV[\x03aEZW`@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\x087V[`\x04\x81`\x04\x81\x11\x15aEnWaEnaJrV[\x03a\x0C\x9FW`@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\x087V[_\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\x15aE\xFBWP_\x90P`\x03aF\xA2V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aF\x13WP\x84`\xFF\x16`\x1C\x14\x15[\x15aF#WP_\x90P`\x04aF\xA2V[`@\x80Q_\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\x15aFtW=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aF\x9CW_`\x01\x92P\x92PPaF\xA2V[\x91P_\x90P[\x94P\x94\x92PPPV[_\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aF\xC7`\xFF\x86\x90\x1C`\x1BaUiV[\x90PaF\xD5\x87\x82\x88\x85aE\xC6V[\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[__\x83`\x1F\x84\x01\x12aG/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aGEW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aD\nW__\xFD[__` \x83\x85\x03\x12\x15aGpW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aG\x85W__\xFD[aG\x91\x85\x82\x86\x01aG\x1FV[\x90\x96\x90\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15aG\xADW__\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x9FW__\xFD[___``\x84\x86\x03\x12\x15aG\xD7W__\xFD[\x835\x92P` \x84\x015aG\xE9\x81aG\xB4V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH0WaH0aG\xFAV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH0WaH0aG\xFAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH\x80WaH\x80aG\xFAV[`@R\x91\x90PV[__`\x01`\x01`@\x1B\x03\x84\x11\x15aH\xA1WaH\xA1aG\xFAV[P`\x1F\x83\x01`\x1F\x19\x16` \x01aH\xB6\x81aHXV[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15aH\xCAW__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aH\xF0W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x05W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13aI\x15W__\xFD[aI$\x84\x825` \x84\x01aH\x88V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\x9FW__\xFD[\x805aIK\x81aI,V[\x91\x90PV[_` \x82\x84\x03\x12\x15aI`W__\xFD[\x815a'\xE1\x81aI,V[__`@\x83\x85\x03\x12\x15aI|W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aIKW__\xFD[_` \x82\x84\x03\x12\x15aI\xABW__\xFD[a'\xE1\x82aI\x8BV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0EdV[__\x83`\x1F\x84\x01\x12aI\xDBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xF1W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aD\nW__\xFD[____`@\x85\x87\x03\x12\x15aJ\x1BW__\xFD[\x845`\x01`\x01`@\x1B\x03\x81\x11\x15aJ0W__\xFD[aJ<\x87\x82\x88\x01aG\x1FV[\x90\x95P\x93PP` \x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aJZW__\xFD[aJf\x87\x82\x88\x01aI\xCBV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10aJ\xA2WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aJ\xC1\x90\x84\x01\x82aJ\x86V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aIKW__\xFD[_``\x82\x84\x03\x12\x15aJ\xE9W__\xFD[aJ\xF1aH\x0EV[\x90P\x815aJ\xFE\x81aG\xB4V[\x81RaK\x0C` \x83\x01aJ\xC8V[` \x82\x01RaK\x1D`@\x83\x01aJ\xC8V[`@\x82\x01R\x92\x91PPV[__`\x80\x83\x85\x03\x12\x15aK9W__\xFD[aKB\x83aI\x8BV[\x91PaKQ\x84` \x85\x01aJ\xD9V[\x90P\x92P\x92\x90PV[___`@\x84\x86\x03\x12\x15aKlW__\xFD[\x835aKw\x81aI,V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aK\x91W__\xFD[aK\x9D\x86\x82\x87\x01aI\xCBV[\x94\x97\x90\x96P\x93\x94PPPPV[_`\x01`\x01`@\x1B\x03\x82\x11\x15aK\xC2WaK\xC2aG\xFAV[P`\x05\x1B` \x01\x90V[_`@\x82\x84\x03\x12\x15aK\xDCW__\xFD[aK\xE4aH6V[\x90PaK\xEF\x82aI\x8BV[\x81R` \x82\x015aK\xFF\x81aI,V[` \x82\x01R\x92\x91PPV[_____`\xA0\x86\x88\x03\x12\x15aL\x1EW__\xFD[\x855aL)\x81aI,V[\x94P` \x86\x015\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aLJW__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aLZW__\xFD[\x805aLmaLh\x82aK\xAAV[aHXV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x85\x01\x01\x92P\x8A\x83\x11\x15aL\x8EW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aL\xBAWaL\xA7\x8B\x85aK\xCCV[\x82R` \x82\x01\x91P`@\x84\x01\x93PaL\x95V[\x97\x9A\x96\x99P\x96\x97``\x81\x015\x97P`\x80\x015\x95\x94PPPPPV[_a\x01\0\x82\x84\x03\x12\x15aL\xE6W__\xFD[P\x91\x90PV[__\x83`\x1F\x84\x01\x12aL\xFCW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x12W__\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aD\nW__\xFD[_``\x82\x84\x03\x12\x15aM=_\xFD[PPPP`@Qa\x03\x15\x90a ?V[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x03.W=__>=_\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`@Qa\x03[\x90a LV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x03tW=__>=_\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\x90a\x03\xB9\x90a ZV[a\x03\xC4\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x03\xDDW=__>=_\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_\x92a\x04\x10\x92\x86\x92\x86\x92\x16a\x0B\xD0V[\x90P`\x0E_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\xA0\x01Q\x84`\xC0\x01Q`@Qa\x04=\x90a hV[`\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_\xF0\x80\x15\x80\x15a\x04vW=__>=_\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\x94a\x05\n\x94\x93\x90\x91\x16\x92\x90\x91\x90`\x04\x01a! V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x05!W__\xFD[PZ\xF1\x15\x80\x15a\x053W=__>=_\xFD[PP`\x18T`@\x80Qc\x8D\xA5\xCB[`\xE0\x1B\x81R\x90Q_\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\x15a\x05\x80W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xA4\x91\x90a!KV[`\x01`\x01`\xA0\x1B\x03\x16\x03a\x05\xF5W`@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\x80a\x06\x06WPFa\x059\x14[\x15a\x07\xA3W`\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06yW__\xFD[PZ\xF1\x15\x80\x15a\x06\x8BW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\xFAW__\xFD[PZ\xF1\x15\x80\x15a\x07\x0CW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07\x82W__\xFD[PZ\xF1\x15\x80\x15a\x07\x94W=__>=_\xFD[PPPPa\x07\xA3\x84\x84\x83a\x18\x9EV[_Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07\xEBW__\xFD[PZ\xF1\x15\x80\x15a\x07\xFDW=__>=_\xFD[PPPPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R_\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_a\x08\x86`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\x1B\xA8V[\x90P_a\x08\xC8\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x1D\x8FV[\x90P_a\t\n\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x1D\x8FV[\x90P_a\tL\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x1D\x8FV[\x90P_a\t\x86\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\x1D\x8FV[\x90P_a\t\xC8\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x1D\x8FV[\x90P_a\t\xFF\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x1D\x8FV[\x90P_a\n%\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x01c``%\x919a\x1D\x8FV[`@\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_`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R\x90a\n\xA7\x83a\x1E\nV[\x90Pa\n\xD2`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91R\x90V[a\x0B\x06\x82`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q.communityMultisig`p\x1B\x81RPa\x1D\x8FV[`\x01`\x01`\xA0\x1B\x03\x16\x81R`@\x80Q\x80\x82\x01\x90\x91R`\x07\x81Rf\x1780\xBA\xB9\xB2\xB9`\xC9\x1B` \x82\x01Ra\x0B:\x90\x83\x90a\x1D\x8FV[\x81` \x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPa\x0B\x81\x82`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x171\xB4:\xB972\xB9`\xC1\x1B\x81RPa\x1D\x8FV[`\x01`\x01`\xA0\x1B\x03\x16`@\x80\x83\x01\x91\x90\x91R\x80Q\x80\x82\x01\x90\x91R`\x08\x81Rg\x172\xB52\xB1\xBA7\xB9`\xC1\x1B` \x82\x01Ra\x0B\xBB\x90\x83\x90a\x1D\x8FV[`\x01`\x01`\xA0\x1B\x03\x16``\x82\x01R\x93\x92PPPV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q`\x02\x80\x82R\x92\x81\x01\x90\x94R\x91\x92\x90\x81` \x01` \x82\x02\x806\x837\x01\x90PP\x90P\x84` \x01Q\x81_\x81Q\x81\x10a\x0C%Wa\x0C%a!\x85V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84_\x01Q\x81`\x01\x81Q\x81\x10a\x0C\\Wa\x0C\\a!\x85V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85_\x01Q`@Qa\x0C\x8D\x90a vV[a\x0C\x98\x92\x91\x90a!\x99V[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0C\xB1W=__>=_\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\x90a\x0C\xF0\x90a ZV[a\x0C\xFB\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\r\x14W=__>=_\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\x90a\rQ\x90a ZV[a\r\\\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\ruW=__>=_\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\x90a\r\xB2\x90a ZV[a\r\xBD\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\r\xD6W=__>=_\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\x90a\x0E\x13\x90a ZV[a\x0E\x1E\x92\x91\x90a \xCAV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0E7W=__>=_\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`@Qa\x0Ed\x90a \x84V[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0E}W=__>=_\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\x90a\x0E\xAC\x90a \x92V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0E\xD5W=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0FCW__\xFD[PZ\xF1\x15\x80\x15a\x0FUW=__>=_\xFD[PP`\x0ET`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pa\x0Ft\x91Pa \xA0V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x0F\x9DW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x10\x0BW__\xFD[PZ\xF1\x15\x80\x15a\x10\x1DW=__>=_\xFD[PP`\x0ET``\x88\x01Q`@Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x93P\x91Pa\x10B\x90a \xAEV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x10rW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x10\xE0W__\xFD[PZ\xF1\x15\x80\x15a\x10\xF2W=__>=_\xFD[PP`\x14T`\x10T`\x12T`@Q\x88\x95P`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94P\x91\x83\x16\x92\x16\x90a\x11\x1F\x90a \xBCV[`\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_\xF0\x80\x15\x80\x15a\x11`W=__>=_\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_\x80\x82R` \x82\x01\x90\x92R\x81\x90\x81a\x11\xC3V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R_\x19\x90\x92\x01\x91\x01\x81a\x11\x98W\x90P[P\x90P_[\x82\x81\x10\x15a\x12\x17W`@\x80Q``\x81\x01\x82Ra'\x10\x81Ra:\x98` \x82\x01R`d\x91\x81\x01\x91\x90\x91R\x82Q\x83\x90\x83\x90\x81\x10a\x12\x04Wa\x12\x04a!\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x11\xC8V[P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x122Wa\x122a!qV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12[W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12xWa\x12xa!qV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xABW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12\x96W\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_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x0F_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x82\x83\xF3`\xE0\x1B\x8C_\x01Q\x8D`@\x01Q\x8E``\x01Q\x8F` \x01Q_\x8C\x8C\x8C`@Q`$\x01a\x132\x98\x97\x96\x95\x94\x93\x92\x91\x90a\"\xE8V[`@\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\x82Ra\x13y\x93\x92\x91`\x04\x01a! V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x13\x90W__\xFD[PZ\xF1\x15\x80\x15a\x13\xA2W=__>=_\xFD[PP`\x0ET`@\x80Qc\x8D\xA5\xCB[`\xE0\x1B\x81R\x90Q_\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\x15a\x13\xF3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\x17\x91\x90a!KV[`\x01`\x01`\xA0\x1B\x03\x16\x03a\x14cW`@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\x01a\x05\xECV[`@\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\x91_Q` b\x01c@_9_Q\x90_R\x91c\x97,`b\x91a\x14\xF2\x91\x85\x91c\x01\0\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90`\x04\x01a#\xBBV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x15\rW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x154\x91\x90\x81\x01\x90a$\x08V[P`@QcK\x9601`\xE1\x1B\x81R_Q` b\x01c@_9_Q\x90_R\x90c\x97,`b\x90a\x15h\x90\x84\x90\x89\x90`\x04\x01a$\xBBV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x15\x83W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x15\xAA\x91\x90\x81\x01\x90a$\x08V[P`@QcK\x9601`\xE1\x1B\x81R_Q` b\x01c@_9_Q\x90_R\x90c\x97,`b\x90a\x15\xDE\x90\x84\x90\x88\x90`\x04\x01a%\x19V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x15\xF9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x16 \x91\x90\x81\x01\x90a$\x08V[P`\x0ET`@QcK\x9601`\xE1\x1B\x81R_Q` b\x01c@_9_Q\x90_R\x91c\x97,`b\x91a\x16a\x91\x85\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\x04\x01a%\x85V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x16|W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x16\xA3\x91\x90\x81\x01\x90a$\x08V[P`\x0FT`@QcK\x9601`\xE1\x1B\x81R_Q` b\x01c@_9_Q\x90_R\x91c\x97,`b\x91a\x16\xE4\x91\x85\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\x04\x01a%\xDBV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x16\xFFW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x17&\x91\x90\x81\x01\x90a$\x08V[P`\x16T`@QcK\x9601`\xE1\x1B\x81R_\x91_Q` b\x01c@_9_Q\x90_R\x91c\x97,`b\x91a\x17g\x91\x86\x91`\x01`\x01`\xA0\x1B\x03\x16\x90`\x04\x01a&EV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x17\x82W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x17\xA9\x91\x90\x81\x01\x90a$\x08V[`@Qc\x88\xDAm5`\xE0\x1B\x81R\x90\x91P_\x90_Q` b\x01c@_9_Q\x90_R\x90c\x88\xDAm5\x90a\x17\xE3\x90\x87\x90\x87\x90\x87\x90`\x04\x01a&\x9EV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x17\xFEW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x18%\x91\x90\x81\x01\x90a$\x08V[\x90Pa\x18f\x81`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7Fmockavs_deployment_output\0\0\0\0\0\0\0\x81RPa\x1E\x8FV[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<,(\x91a\x18\xCB\x91\x90`\x04\x01a&\xE0V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\xE2W__\xFD[PZ\xF1\x15\x80\x15a\x18\xF4W=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x19tW__\xFD[PZ\xF1\x15\x80\x15a\x19\x86W=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\x04W__\xFD[PZ\xF1\x15\x80\x15a\x1A\x16W=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\x8AW__\xFD[PZ\xF1\x15\x80\x15a\x1A\x9CW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1B\x0CW__\xFD[PZ\xF1\x15\x80\x15a\x1B\x1EW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1B\x8DW__\xFD[PZ\xF1\x15\x80\x15a\x1B\x9FW=__>=_\xFD[PPPPPPPV[``__Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xF6W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1C\x1D\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1C-\x91\x90a'EV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90_Q` b\x01c@_9_Q\x90_R\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\x85W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1C\xAC\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1C\xBC\x91\x90a'oV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x84`@Q` \x01a\x1C\xDF\x91\x90a'\x8BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91P_Q` b\x01c@_9_Q\x90_R\x90c`\xF9\xBB\x11\x90a\x1D\x1A\x90\x86\x90\x86\x90\x86\x90` \x01a'\xABV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1DE\x91\x90a'\xC8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D_W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D\x86\x91\x90\x81\x01\x90a$\x08V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R_\x90_Q` b\x01c@_9_Q\x90_R\x90c\x1E\x19\xE6W\x90a\x1D\xC4\x90\x86\x90\x86\x90`\x04\x01a'\xDAV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\xDFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\x03\x91\x90a!KV[\x93\x92PPPV[``__Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EXW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1E\x7F\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1C-\x91\x90a'\xFEV[__Q` b\x01c\x85_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xDBW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\x02\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1F\x12\x91\x90a'EV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90_Q` b\x01c@_9_Q\x90_R\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1FjW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\x91\x91\x90\x81\x01\x90a$\x08V[`@Q` \x01a\x1F\xA1\x91\x90a'oV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x82\x82\x85`@Q` \x01a\x1F\xC8\x93\x92\x91\x90a('V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rc\xE2<\xD1\x9F`\xE0\x1B\x82R\x91P_Q` b\x01c@_9_Q\x90_R\x90c\xE2<\xD1\x9F\x90a \x0B\x90\x88\x90\x85\x90`\x04\x01a'\xDAV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a \"W__\xFD[PZ\xF1\x15\x80\x15a 4W=__>=_\xFD[PPPPPPPPPV[`\x8D\x80b\0(P\x839\x01\x90V[a\x06\xC8\x80b\0(\xDD\x839\x01\x90V[a\x0C\xF2\x80b\0/\xA5\x839\x01\x90V[a<,\x80b\0<\x97\x839\x01\x90V[a\x076\x80b\0x\xC3\x839\x01\x90V[a\x19S\x80b\0\x7F\xF9\x839\x01\x90V[a\x1F\xD6\x80b\0\x99L\x839\x01\x90V[a\x13>\x80b\0\xB9\"\x839\x01\x90V[a7\x92\x80b\0\xCC`\x839\x01\x90V[a_N\x80b\x01\x03\xF2\x839\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R_\x90\x82\x01R`\x80\x01\x90V[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R_\x90a\x1D\x86\x90\x83\x01\x84a \xF2V[_` \x82\x84\x03\x12\x15a![W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1E\x03W__\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R_\x90` \x85\x01\x90``\x84\x01\x90\x83[\x81\x81\x10\x15a!\xDBW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a!\xB4V[PP`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16` \x93\x90\x93\x01\x92\x90\x92RP\x90\x92\x91PPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\"9W\x81Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\"\rV[P\x93\x94\x93PPPPV[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15a\"\xDCW\x84\x83\x03`\x1F\x19\x01\x88R\x81Q\x80Q\x80\x85R` \x91\x82\x01\x91\x85\x01\x90_[\x81\x81\x10\x15a\"\xC3W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x90\x81\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81\x85\x01R\x90\x93\x01\x92`@\x90\x92\x01\x91`\x01\x01a\"\x82V[PP` \x99\x8A\x01\x99\x90\x94P\x92\x90\x92\x01\x91P`\x01\x01a\"_V[P\x90\x96\x95PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x89\x81\x16\x82R\x88\x81\x16` \x80\x84\x01\x91\x90\x91R\x88\x82\x16`@\x84\x01R\x90\x87\x16``\x83\x01R`\xFF\x86\x16`\x80\x83\x01Ra\x01\0`\xA0\x83\x01\x81\x90R\x85Q\x90\x83\x01\x81\x90R_\x91a\x01 \x84\x01\x91\x83\x91\x88\x01\x82[\x82\x81\x10\x15a#\x82W\x81Qc\xFF\xFF\xFF\xFF\x81Q\x16\x86Ra\xFF\xFF` \x82\x01Q\x16` \x87\x01Ra\xFF\xFF`@\x82\x01Q\x16`@\x87\x01RP``\x85\x01\x94P` \x82\x01\x91P`\x01\x81\x01\x90Pa#:V[PPPP\x82\x81\x03`\xC0\x84\x01Ra#\x98\x81\x86a!\xFBV[\x90P\x82\x81\x03`\xE0\x84\x01Ra#\xAC\x81\x85a\"CV[\x9B\x9APPPPPPPPPPPV[``\x81R_a#\xCD``\x83\x01\x85a \xF2V[\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[_` \x82\x84\x03\x12\x15a$\x18W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$.W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a$>W__\xFD[\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$XWa$Xa!qV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\x87Wa$\x87a!qV[`@R\x81\x81R\x82\x82\x01` \x01\x86\x10\x15a$\x9EW__\xFD[\x81` \x84\x01` \x83\x01^_\x91\x81\x01` \x01\x91\x90\x91R\x94\x93PPPPV[``\x81R_a$\xCD``\x83\x01\x85a \xF2V[\x82\x81\x03` \x84\x01Ra%\x01\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_a%+``\x83\x01\x85a \xF2V[\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_a%\x97``\x83\x01\x85a \xF2V[\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_a%\xED``\x83\x01\x85a \xF2V[\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_a&W``\x83\x01\x85a \xF2V[\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_a&\xB0``\x83\x01\x86a \xF2V[\x82\x81\x03` \x84\x01Ra&\xC2\x81\x86a \xF2V[\x90P\x82\x81\x03`@\x84\x01Ra&\xD6\x81\x85a \xF2V[\x96\x95PPPPPPV[`@\x81R_a'\x14`@\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[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a'P\x82\x84a'.V[n/script/output/`\x88\x1B\x81R`\x0F\x01\x93\x92PPPV[_a'z\x82\x84a'.V[`/`\xF8\x1B\x81R`\x01\x01\x93\x92PPPV[_a'\x96\x82\x84a'.V[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x93\x92PPPV[_a\x1D\x86a'\xC2a'\xBC\x84\x88a'.V[\x86a'.V[\x84a'.V[` \x81R_a\x1E\x03` \x83\x01\x84a \xF2V[`@\x81R_a'\xEC`@\x83\x01\x85a \xF2V[\x82\x81\x03` \x84\x01Ra\x1D\x86\x81\x85a \xF2V[_a(\t\x82\x84a'.V[m/script/input/`\x90\x1B\x81R`\x0E\x01\x93\x92PPPV[_a(8a'\xC2a'\xBC\x84\x88a'.V[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x95\x94PPPPPV\xFE`\x80`@R4\x80\x15`\x0EW__\xFD[P`s\x80`\x1A_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xC2\x98Ux\x14`*W[__\xFD[_`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x11\xE6\x1F\xBF\x0E\xFE \xEF\xD2\xA4D)\x86\x98WPo\xF0\"\x9E\xAE\xA2\xD60\xF1\xF8#L\xA7SC\xA0dsolcC\0\x08\x1B\x003`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x163`\x1AV[`iV[_\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\x06R\x80a\0v_9_\xF3\xFE`\x80`@R`\x046\x10a\0yW_5`\xE0\x1C\x80c\x96#`\x9D\x11a\0LW\x80c\x96#`\x9D\x14a\x01\tW\x80c\x99\xA8\x8E\xC4\x14a\x01\x1CW\x80c\xF2\xFD\xE3\x8B\x14a\x01;W\x80c\xF3\xB7\xDE\xAD\x14a\x01ZW__\xFD[\x80c N\x1Cz\x14a\0}W\x80cqP\x18\xA6\x14a\0\xB8W\x80c~\xFF'^\x14a\0\xCEW\x80c\x8D\xA5\xCB[\x14a\0\xEDW[__\xFD[4\x80\x15a\0\x88W__\xFD[Pa\0\x9Ca\0\x976`\x04a\x04yV[a\x01yV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC3W__\xFD[Pa\0\xCCa\x02\x04V[\0[4\x80\x15a\0\xD9W__\xFD[Pa\0\xCCa\0\xE86`\x04a\x04\x9BV[a\x02\x17V[4\x80\x15a\0\xF8W__\xFD[P_T`\x01`\x01`\xA0\x1B\x03\x16a\0\x9CV[a\0\xCCa\x01\x176`\x04a\x04\xE6V[a\x02zV[4\x80\x15a\x01'W__\xFD[Pa\0\xCCa\x0166`\x04a\x04\x9BV[a\x02\xE5V[4\x80\x15a\x01FW__\xFD[Pa\0\xCCa\x01U6`\x04a\x04yV[a\x03\x1BV[4\x80\x15a\x01eW__\xFD[Pa\0\x9Ca\x01t6`\x04a\x04yV[a\x03\x99V[___\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\x9D\x90c\\`\xDA\x1B`\xE0\x1B\x81R`\x04\x01\x90V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\x01\xD5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x01\xDAV[``\x91P[P\x91P\x91P\x81a\x01\xE8W__\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\x01\xFC\x91\x90a\x05\xBDV[\x94\x93PPPPV[a\x02\x0Ca\x03\xBDV[a\x02\x15_a\x04\x16V[V[a\x02\x1Fa\x03\xBDV[`@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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02`W__\xFD[PZ\xF1\x15\x80\x15a\x02rW=__>=_\xFD[PPPPPPV[a\x02\x82a\x03\xBDV[`@Qc'\x8FyC`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90cO\x1E\xF2\x86\x904\x90a\x02\xB2\x90\x86\x90\x86\x90`\x04\x01a\x05\xD8V[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x02\xC9W__\xFD[PZ\xF1\x15\x80\x15a\x02\xDBW=__>=_\xFD[PPPPPPPPV[a\x02\xEDa\x03\xBDV[`@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\x02IV[a\x03#a\x03\xBDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\x8DW`@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\x96\x81a\x04\x16V[PV[___\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\x9D\x90c\x03\xE1F\x91`\xE6\x1B\x81R`\x04\x01\x90V[_T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x15W`@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\x84V[_\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\x96W__\xFD[_` \x82\x84\x03\x12\x15a\x04\x89W__\xFD[\x815a\x04\x94\x81a\x04eV[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x04\xACW__\xFD[\x825a\x04\xB7\x81a\x04eV[\x91P` \x83\x015a\x04\xC7\x81a\x04eV[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x04\xF8W__\xFD[\x835a\x05\x03\x81a\x04eV[\x92P` \x84\x015a\x05\x13\x81a\x04eV[\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05.W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x05>W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05XWa\x05Xa\x04\xD2V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x87Wa\x05\x87a\x04\xD2V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x05\x9EW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x05\xCDW__\xFD[\x81Qa\x04\x94\x81a\x04eV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q\x80`@\x84\x01R\x80` \x85\x01``\x85\x01^_``\x82\x85\x01\x01R```\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xA3:\tr\x1Fp\xDDj\xF8\\\x1E\x18e=\xF7J\xA9\xD4\xC6R\x86\x11w+\x1A\xF9\x16E]S\xB2\xA7dsolcC\0\x08\x1B\x003`\x80`@R`@Qa\x0C\xF28\x03\x80a\x0C\xF2\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x03\xB7V[\x82\x81a\0/\x82\x82_a\0CV[Pa\0;\x90P\x82a\0nV[PPPa\x04\xD3V[a\0L\x83a\0\xDBV[_\x82Q\x11\x80a\0XWP\x80[\x15a\0iWa\0g\x83\x83a\x01\x1AV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\0\xAD_Q` a\x0C\xAB_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\0\xD8\x81a\x01FV[PV[a\0\xE4\x81a\x01\xE1V[`@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_\x90\xA2PV[``a\x01?\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x0C\xCB`'\x919a\x02uV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xB0W`@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[\x80_Q` a\x0C\xAB_9_Q\x90_R[\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\x81\x16;a\x02NW`@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\x01\xA7V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xC0V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x02\xDDW`@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\x01\xA7V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xF7\x91\x90a\x04\x88V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x03/W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x034V[``\x91P[P\x90\x92P\x90Pa\x03E\x82\x82\x86a\x03OV[\x96\x95PPPPPPV[``\x83\x15a\x03^WP\x81a\x01?V[\x82Q\x15a\x03nW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xA7\x91\x90a\x04\x9EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x9EW__\xFD[\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x03\xC9W__\xFD[a\x03\xD2\x84a\x03\x88V[\x92Pa\x03\xE0` \x85\x01a\x03\x88V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\xFBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x04\x0BW__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04$Wa\x04$a\x03\xA3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x04RWa\x04Ra\x03\xA3V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x04iW__\xFD[\x81` \x84\x01` \x83\x01^_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[a\x07\xCB\x80a\x04\xE0_9_\xF3\xFE`\x80`@R`\x046\x10a\0MW_5`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0dW\x80cO\x1E\xF2\x86\x14a\0\x83W\x80c\\`\xDA\x1B\x14a\0\x96W\x80c\x8F(9p\x14a\0\xC6W\x80c\xF8Q\xA4@\x14a\0\xE5Wa\0\\V[6a\0\\Wa\0Za\0\xF9V[\0[a\0Za\0\xF9V[4\x80\x15a\0oW__\xFD[Pa\0Za\0~6`\x04a\x06\x8CV[a\x01\x13V[a\0Za\0\x916`\x04a\x06\xA5V[a\x01NV[4\x80\x15a\0\xA1W__\xFD[Pa\0\xAAa\x01\xB4V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD1W__\xFD[Pa\0Za\0\xE06`\x04a\x06\x8CV[a\x01\xE4V[4\x80\x15a\0\xF0W__\xFD[Pa\0\xAAa\x02\x04V[a\x01\x01a\x02$V[a\x01\x11a\x01\x0Ca\x02\xB9V[a\x02\xC2V[V[a\x01\x1Ba\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x03\x12V[PV[a\x01Ca\0\xF9V[a\x01Va\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xACWa\x01\xA7\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_\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x12\x91PPV[PPPV[a\x01\xA7a\0\xF9V[_a\x01\xBDa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xD9Wa\x01\xD4a\x02\xB9V[\x90P\x90V[a\x01\xE1a\0\xF9V[\x90V[a\x01\xECa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81a\x03\x80\x80\x15a\x02\xDCW=_\xF3[=_\xFD[_\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\x1B\x83a\x03\xB7V[_\x82Q\x11\x80a\x03'WP\x80[\x15a\x01\xA7Wa\x036\x83\x83a\x03\xF6V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03ea\x02\xE0V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01C\x81a\x04\"V[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x03V[a\x03\xC0\x81a\x04\xCBV[`@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_\x90\xA2PV[``a\x04\x1B\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x07o`'\x919a\x05_V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04\x87W`@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\x02\xB0V[\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[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x058W`@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\x02\xB0V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04\xAAV[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x05\xC7W`@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\x02\xB0V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05\xE1\x91\x90a\x07#V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x06\x19W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x06\x1EV[``\x91P[P\x91P\x91Pa\x06.\x82\x82\x86a\x068V[\x96\x95PPPPPPV[``\x83\x15a\x06GWP\x81a\x04\x1BV[\x82Q\x15a\x06WW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB0\x91\x90a\x079V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x87W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\x9CW__\xFD[a\x04\x1B\x82a\x06qV[___`@\x84\x86\x03\x12\x15a\x06\xB7W__\xFD[a\x06\xC0\x84a\x06qV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xDBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x06\xEBW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x01W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x07\x12W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xF7\xD2\xAB\x95a\x9B\xF8R\xF9-\xBB\x93]\\\x891\x9E\xD0\xB1/\xB2K\xC3\x10\xAD\xF1-s%\xF5/\xCBdsolcC\0\x08\x1B\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``@R4\x80\x15a\0\x10W__\xFD[P`@Qa<,8\x03\x80a<,\x839\x81\x01`@\x81\x90Ra\0/\x91a\x03\x11V[\x82\x82\x84\x85`\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\0nW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\x92\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\xC0R\x82\x81\x16`\x80R\x81\x16`\xA0Ra\0\xB3a\x02=V[PPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\xE0\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\x15a\0\xFEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\"\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01\0\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\x15a\x01xW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x9C\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01 \x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPa\x01\0Q`\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\x15a\x01\xF5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x19\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01@RPP`\x97\x80T`\xFF\x19\x16`\x01\x17\x90UPa\x03}\x90PV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x02\xA8W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x02\xF8W_\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\x14a\x03\x0EW__\xFD[PV[___``\x84\x86\x03\x12\x15a\x03#W__\xFD[\x83Qa\x03.\x81a\x02\xFAV[` \x85\x01Q\x90\x93Pa\x03?\x81a\x02\xFAV[`@\x85\x01Q\x90\x92Pa\x03P\x81a\x02\xFAV[\x80\x91PP\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x03kW__\xFD[\x81Qa\x03v\x81a\x02\xFAV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa7\xC4a\x04h_9_\x81\x81a\x02\xD4\x01Ra\x11m\x01R_\x81\x81a\x01~\x01Ra\x13I\x01R_\x81\x81a\x01\xBD\x01R\x81\x81a\x15\x1C\x01Ra\x16\xD1\x01R_\x81\x81a\x02\n\x01R\x81\x81a\t-\x01R\x81\x81a\x0EP\x01R\x81\x81a\x0F\xE1\x01Ra\x12\x07\x01R_\x81\x81a\x01\xE1\x01R\x81\x81a\x19\xDD\x01R\x81\x81a\x1A\xAC\x01Ra\x1B&\x01R_\x81\x81a\x06\x82\x01R\x81\x81a\x07\xCD\x01R\x81\x81a\x08a\x01R\x81\x81a\x1D-\x01R\x81\x81a\x1E\x9F\x01Ra\x1F;\x01R_\x81\x81a\x04\xB7\x01R\x81\x81a\x05C\x01R\x81\x81a\x05\xC1\x01R\x81\x81a\x19\x89\x01R\x81\x81a\x1AP\x01R\x81\x81a\x1Cm\x01Ra\x1D\xFD\x01Ra7\xC4_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x11W_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0\x9EW\x80c\xB9\x8D\t\x08\x11a\0nW\x80c\xB9\x8D\t\x08\x14a\x02\x9FW\x80c\xC4\xD6m\xE8\x14a\x02\xBCW\x80c\xDF\\\xF7#\x14a\x02\xCFW\x80c\xE4\x81\xAF\x9D\x14a\x02\xF6W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xFEW__\xFD[\x80c\x8D\xA5\xCB[\x14a\x02UW\x80c\x99&\xEE}\x14a\x02fW\x80c\xA3d\xF4\xDA\x14a\x02yW\x80c\xA9\x8F\xB3U\x14a\x02\x8CW__\xFD[\x80ch0H5\x11a\0\xE4W\x80ch0H5\x14a\x01\xB8W\x80ck:\xA7.\x14a\x01\xDFW\x80cm\x14\xA9\x87\x14a\x02\x05W\x80cn\xFBF6\x14a\x02,W\x80cqP\x18\xA6\x14a\x02MW__\xFD[\x80c\x17\x1F\x1D[\x14a\x01\x15W\x80c3\xCF\xB7\xB7\x14a\x01DW\x80cAl~^\x14a\x01dW\x80c]\xF4YF\x14a\x01yW[__\xFD[a\x01(a\x01#6`\x04a-\xEDV[a\x03\x11V[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01Wa\x01R6`\x04a.OV[a\x04\x93V[`@Qa\x01;\x91\x90a.jV[a\x01wa\x01r6`\x04a.\xAAV[a\t+V[\0[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\xA0\x7F\0\0\0\0\0\0\0\0\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[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\xA0V[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\x02?a\x02:6`\x04a1\x90V[a\n\xA3V[`@Qa\x01;\x92\x91\x90a2\x82V[a\x01wa\x19kV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x01\xA0V[a\x01wa\x02t6`\x04a3\"V[a\x19~V[a\x01wa\x02\x876`\x04a.OV[a\x1AEV[a\x01wa\x02\x9A6`\x04a3\xCAV[a\x1B\x07V[`\x97Ta\x02\xAC\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01;V[a\x01wa\x02\xCA6`\x04a.OV[a\x1B[V[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\x01Wa\x1ChV[a\x01wa\x03\x0C6`\x04a.OV[a \x01V[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x03TWa\x03Ta4\x16V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x03xWa\x03xa4\x16V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x03\x94Wa\x03\x94a4\x16V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x03\xF1\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 _\x1Ca\x04\x13\x91\x90a4*V[\x90Pa\x04\x85a\x04,a\x04%\x88\x84a zV[\x86\x90a!\tV[a\x044a!\x9CV[a\x04{a\x04l\x85a\x04f`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a zV[a\x04u\x8Ca\"\\V[\x90a!\tV[\x88b\x01\xD4\xC0a\"\xE6V[\x90\x98\x90\x97P\x95PPPPPPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91_\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xFCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05 \x91\x90a4IV[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P_\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\x88W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xAC\x91\x90a4`V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06DWP\x7F\0\0\0\0\0\0\0\0\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\x1BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a4\x86V[`\xFF\x16\x15[\x15a\x06_WPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x92\x91PPV[_a\x06r\x82`\x01`\x01`\xC0\x1B\x03\x16a$\xFAV[\x90P_\x80[\x82Q\x81\x10\x15a\x07;W\x7F\0\0\0\0\0\0\0\0\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\x06\xC1Wa\x06\xC1a4\x16V[\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\x07\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07'\x91\x90a4IV[a\x071\x90\x83a4\xBAV[\x91P`\x01\x01a\x06wV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07UWa\x07Ua,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07~W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x80[\x84Q\x81\x10\x15a\t\x1EW_\x85\x82\x81Q\x81\x10a\x07\xA0Wa\x07\xA0a4\x16V[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P_\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\x12W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x086\x91\x90a4IV[\x90P_[\x81\x81\x10\x15a\t\x13W`@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\x08\xADW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD1\x91\x90a4\xE3V[_\x01Q\x86\x86\x81Q\x81\x10a\x08\xE6Wa\x08\xE6a4\x16V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x08\x81a5\"V[\x95PP`\x01\x01a\x08:V[PPP`\x01\x01a\x07\x84V[P\x90\x97\x96PPPPPPPV[\x7F\0\0\0\0\0\0\0\0\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\t\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xAB\x91\x90a5:V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\\W`@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[`\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[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x0B\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[`@\x83\x01QQ\x85\x14\x80\x15a\x0B2WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x0BBWP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x0BRWP`\xE0\x83\x01QQ\x85\x14[a\x0B\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\nSV[\x82QQ` \x84\x01QQ\x14a\x0C2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a7o_9_Q\x90_R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\nSV[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x0C\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[`@\x80Q\x80\x82\x01\x82R_\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\x0C\xE0Wa\x0C\xE0a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\tW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r'Wa\r'a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rPW\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\x84Wa\r\x84a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xADW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xCDWa\r\xCDa,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xF6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\x0E\xC4\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_\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\x0E\x9BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xBF\x91\x90a4\x86V[a%\xB9V[\x90P_[\x87` \x01QQ\x81\x10\x15a\x11KWa\x0F\x0C\x88` \x01Q\x82\x81Q\x81\x10a\x0E\xEEWa\x0E\xEEa4\x16V[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x0F\"Wa\x0F\"a4\x16V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\x0F\xDFW` \x83\x01Qa\x0FC`\x01\x83a5UV[\x81Q\x81\x10a\x0FSWa\x0FSa4\x16V[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\x0FsWa\x0Fsa4\x16V[` \x02` \x01\x01Q_\x1C\x11a\x0F\xDFW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\nSV[\x7F\0\0\0\0\0\0\0\0\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$Wa\x10$a4\x16V[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\x10BWa\x10Ba4\x16V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10\x7F\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\x9AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xBE\x91\x90a4`V[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\x10\xDCWa\x10\xDCa4\x16V[` \x02` \x01\x01\x81\x81RPPa\x11Aa\x04%a\x11\x15\x84\x86_\x01Q\x85\x81Q\x81\x10a\x11\x07Wa\x11\x07a4\x16V[` \x02` \x01\x01Q\x16a&KV[\x8A` \x01Q\x84\x81Q\x81\x10a\x11+Wa\x11+a4\x16V[` \x02` \x01\x01Qa&u\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\x0E\xC8V[PPa\x11V\x83a'VV[`\x97T\x90\x93P`\xFF\x16_\x81a\x11kW_a\x11\xEBV[\x7F\0\0\0\0\0\0\0\0\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\x11\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\xEB\x91\x90a4IV[\x90P_[\x8A\x81\x10\x15a\x18>W\x82\x15a\x13GW\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\x12FWa\x12Fa4\x16V[`@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\x12\x84W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\xA8\x91\x90a4IV[a\x12\xB2\x91\x90a4\xBAV[\x11a\x13GW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\nSV[\x7F\0\0\0\0\0\0\0\0\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\x13\x88Wa\x13\x88a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\x13\xACWa\x13\xACa4\x16V[` \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\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14*\x91\x90a5hV[`\x01`\x01`@\x1B\x03\x19\x16a\x14M\x8A`@\x01Q\x83\x81Q\x81\x10a\x0E\xEEWa\x0E\xEEa4\x16V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x14\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R_Q` a7o_9_Q\x90_R`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\nSV[a\x15\x18\x89`@\x01Q\x82\x81Q\x81\x10a\x15\x01Wa\x15\x01a4\x16V[` \x02` \x01\x01Q\x87a!\t\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[Wa\x15[a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x15\x7FWa\x15\x7Fa4\x16V[` \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\x15\xD9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xFD\x91\x90a5\x90V[\x85` \x01Q\x82\x81Q\x81\x10a\x16\x13Wa\x16\x13a4\x16V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x16?Wa\x16?a4\x16V[` \x02` \x01\x01Q\x85_\x01Q\x82\x81Q\x81\x10a\x16\\Wa\x16\\a4\x16V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x8A` \x01QQ\x81\x10\x15a\x184Wa\x16\xCA\x86_\x01Q\x82\x81Q\x81\x10a\x16\x9CWa\x16\x9Ca4\x16V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x16\xB6Wa\x16\xB6a4\x16V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x18,W\x7F\0\0\0\0\0\0\0\0\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\x10Wa\x17\x10a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x174Wa\x174a4\x16V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x17RWa\x17Ra4\x16V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x17kWa\x17ka4\x16V[` \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\x17\xCDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xF1\x91\x90a5\x90V[\x87Q\x80Q\x85\x90\x81\x10a\x18\x05Wa\x18\x05a4\x16V[` \x02` \x01\x01\x81\x81Qa\x18\x19\x91\x90a5\xB0V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\x16wV[PP`\x01\x01a\x11\xEFV[PPP__a\x18W\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03\x11V[\x91P\x91P\x81a\x18\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\nSV[\x80a\x19'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[PP_\x87\x82` \x01Q`@Q` \x01a\x19A\x92\x91\x90a5\xCFV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[a\x19sa'\xECV[a\x19|_a(FV[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\x19\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\nS\x90a6\x15V[`@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\x90c\x99&\xEE}\x90a\x1A\x14\x90\x85\x90\x85\x90`\x04\x01a6\xBBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A+W__\xFD[PZ\xF1\x15\x80\x15a\x1A=W=__>=_\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\x1A\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\nS\x90a6\x15V[`@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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xEEW__\xFD[PZ\xF1\x15\x80\x15a\x1B\0W=__>=_\xFD[PPPPPV[a\x1B\x0Fa'\xECV[`@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\x1A\xD7\x90\x84\x90`\x04\x01a7\x05V[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1ByWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1B\x92WP0;\x15\x80\x15a\x1B\x92WP_T`\xFF\x16`\x01\x14[a\x1B\xF5W`@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\nSV[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1C\x16W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x1C\x1F\x82a(\x97V[\x80\x15a\x1CdW_\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[PPV[``_\x7F\0\0\0\0\0\0\0\0\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\x1C\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xEB\x91\x90a4\x86V[`\xFF\x16\x90P\x80_\x03a\x1D\nWPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x90V[_\x80[\x82\x81\x10\x15a\x1D\xB2W`@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\x1DzW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\x9E\x91\x90a4IV[a\x1D\xA8\x90\x83a4\xBAV[\x91P`\x01\x01a\x1D\rV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xCCWa\x1D\xCCa,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\xF5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x1EWW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E{\x91\x90a4\x86V[`\xFF\x16\x81\x10\x15a\x1F\xF7W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R_\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\x1E\xECW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\x10\x91\x90a4IV[\x90P_[\x81\x81\x10\x15a\x1F\xEDW`@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\x1F\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xAB\x91\x90a4\xE3V[_\x01Q\x85\x85\x81Q\x81\x10a\x1F\xC0Wa\x1F\xC0a4\x16V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\x1F\xE2\x81a5\"V[\x94PP`\x01\x01a\x1F\x14V[PP`\x01\x01a\x1D\xFBV[P\x90\x94\x93PPPPV[a \ta'\xECV[`\x01`\x01`\xA0\x1B\x03\x81\x16a nW`@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\nSV[a w\x81a(FV[PV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra \x95a+\xA8V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a \xC3W\xFE[P\x80a!\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\nSV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra!$a+\xC6V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a!^W\xFE[P\x80a!\x01W`@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\nSV[a!\xA4a+\xE4V[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_\x80\x82R` \x82\x01R_\x80\x80a\"\x89_Q` a7O_9_Q\x90_R\x86a4*V[\x90P[a\"\x95\x81a)\x01V[\x90\x93P\x91P_Q` a7O_9_Q\x90_R\x82\x83\t\x83\x03a\"\xCDW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a7O_9_Q\x90_R`\x01\x82\x08\x90Pa\"\x8CV[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a#\x17a,\tV[_[`\x02\x81\x10\x15a$\xCEW_a#.\x82`\x06a7\x17V[\x90P\x84\x82`\x02\x81\x10a#BWa#Ba4\x16V[` \x02\x01QQ\x83a#S\x83_a4\xBAV[`\x0C\x81\x10a#cWa#ca4\x16V[` \x02\x01R\x84\x82`\x02\x81\x10a#zWa#za4\x16V[` \x02\x01Q` \x01Q\x83\x82`\x01a#\x91\x91\x90a4\xBAV[`\x0C\x81\x10a#\xA1Wa#\xA1a4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a#\xB8Wa#\xB8a4\x16V[` \x02\x01QQQ\x83a#\xCB\x83`\x02a4\xBAV[`\x0C\x81\x10a#\xDBWa#\xDBa4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a#\xF2Wa#\xF2a4\x16V[` \x02\x01QQ`\x01` \x02\x01Q\x83a$\x0B\x83`\x03a4\xBAV[`\x0C\x81\x10a$\x1BWa$\x1Ba4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a$2Wa$2a4\x16V[` \x02\x01Q` \x01Q_`\x02\x81\x10a$LWa$La4\x16V[` \x02\x01Q\x83a$]\x83`\x04a4\xBAV[`\x0C\x81\x10a$mWa$ma4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a$\x84Wa$\x84a4\x16V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a$\x9FWa$\x9Fa4\x16V[` \x02\x01Q\x83a$\xB0\x83`\x05a4\xBAV[`\x0C\x81\x10a$\xC0Wa$\xC0a4\x16V[` \x02\x01RP`\x01\x01a#\x19V[Pa$\xD7a,(V[_` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[``__a%\x07\x84a&KV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a%\"Wa%\"a,\x82V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a%LW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a%cWPa\x01\0\x81\x10[\x15a\x1F\xF7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a%\xA9W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a%\x8CWa%\x8Ca4\x16V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a%\xB2\x81a5\"V[\x90Pa%RV[__a%\xC4\x84a)}V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a&BW`@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\nSV[\x90P[\x92\x91PPV[_\x80[\x82\x15a&EWa&_`\x01\x84a5UV[\x90\x92\x16\x91\x80a&m\x81a7.V[\x91PPa&NV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a&\xD0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\nSV[\x81a\xFF\xFF\x16`\x01\x03a&\xE3WP\x81a&EV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a'KW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x90\x03a'.Wa'+\x84\x84a!\tV[\x93P[a'8\x83\x84a!\tV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a&\xFEV[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a'zWP` \x82\x01Q\x15[\x15a'\x97WPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a7O_9_Q\x90_R\x84` \x01Qa'\xC8\x91\x90a4*V[a'\xDF\x90_Q` a7O_9_Q\x90_Ra5UV[\x90R\x92\x91PPV[\x91\x90PV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x19|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\nSV[`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_\x90\xA3PPV[_Ta\x01\0\x90\x04`\xFF\x16a nW`@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\nSV[_\x80\x80_Q` a7O_9_Q\x90_R`\x03_Q` a7O_9_Q\x90_R\x86_Q` a7O_9_Q\x90_R\x88\x89\t\t\x08\x90P_a)q\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R_Q` a7O_9_Q\x90_Ra+\0V[\x91\x95\x91\x94P\x90\x92PPPV[_a\x01\0\x82Q\x11\x15a*\x05W`@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\nSV[\x81Q_\x03a*\x14WP_\x91\x90PV[__\x83_\x81Q\x81\x10a*(Wa*(a4\x16V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a*\xF7W\x84\x81\x81Q\x81\x10a*VWa*Va4\x16V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a*\xEBW`@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\nSV[\x91\x81\x17\x91`\x01\x01a*;V[P\x90\x93\x92PPPV[__a+\na,(V[a+\x12a,FV[` \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\x80a+OW\xFE[P\x82a+\x9DW`@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\nSV[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+\xF7a,dV[\x81R` \x01a,\x04a,dV[\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_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-+Wa-+a,\x82V[`@R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-CW__\xFD[a-Ka,\x96V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a-qW__\xFD[a-ya,\x96V[\x80`@\x84\x01\x85\x81\x11\x15a-\x8AW__\xFD[\x84[\x81\x81\x10\x15a-\xA4W\x805\x84R` \x93\x84\x01\x93\x01a-\x8CV[P\x90\x95\x94PPPPPV[_`\x80\x82\x84\x03\x12\x15a-\xBFW__\xFD[a-\xC7a,\x96V[\x90Pa-\xD3\x83\x83a-bV[\x81Ra-\xE2\x83`@\x84\x01a-bV[` \x82\x01R\x92\x91PPV[____a\x01 \x85\x87\x03\x12\x15a.\x01W__\xFD[\x845\x93Pa.\x12\x86` \x87\x01a-3V[\x92Pa.!\x86``\x87\x01a-\xAFV[\x91Pa.0\x86`\xE0\x87\x01a-3V[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a wW__\xFD[_` \x82\x84\x03\x12\x15a._W__\xFD[\x815a&B\x81a.;V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a-\xA4W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a.\x83V[_` \x82\x84\x03\x12\x15a.\xBAW__\xFD[\x815\x80\x15\x15\x81\x14a&BW__\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a'\xE7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x11\x15a.\xF4Wa.\xF4a,\x82V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a/\rW__\xFD[\x815a/ a/\x1B\x82a.\xDCV[a-\x03V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/AW__\xFD[` \x85\x01[\x83\x81\x10\x15a/eWa/W\x81a.\xC9V[\x83R` \x92\x83\x01\x92\x01a/FV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a/~W__\xFD[\x815a/\x8Ca/\x1B\x82a.\xDCV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/\xADW__\xFD[` \x85\x01[\x83\x81\x10\x15a/eWa/\xC4\x87\x82a-3V[\x83R` \x90\x92\x01\x91`@\x01a/\xB2V[_\x82`\x1F\x83\x01\x12a/\xE3W__\xFD[\x815a/\xF1a/\x1B\x82a.\xDCV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a0\x12W__\xFD[` \x85\x01[\x83\x81\x10\x15a/eW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a04W__\xFD[a0C\x88` \x83\x8A\x01\x01a.\xFEV[\x84RP` \x92\x83\x01\x92\x01a0\x17V[_a\x01\x80\x82\x84\x03\x12\x15a0cW__\xFD[a0ka,\xBEV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x82W__\xFD[a0\x8E\x84\x82\x85\x01a.\xFEV[\x82RP` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xA9W__\xFD[a0\xB5\x84\x82\x85\x01a/oV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD3W__\xFD[a0\xDF\x84\x82\x85\x01a/oV[`@\x83\x01RPa0\xF2\x83``\x84\x01a-\xAFV[``\x82\x01Ra1\x04\x83`\xE0\x84\x01a-3V[`\x80\x82\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\"W__\xFD[a1.\x84\x82\x85\x01a.\xFEV[`\xA0\x83\x01RPa\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1MW__\xFD[a1Y\x84\x82\x85\x01a.\xFEV[`\xC0\x83\x01RPa\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1xW__\xFD[a1\x84\x84\x82\x85\x01a/\xD4V[`\xE0\x83\x01RP\x92\x91PPV[_____`\x80\x86\x88\x03\x12\x15a1\xA4W__\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xC0W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a1\xD0W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE5W__\xFD[\x88` \x82\x84\x01\x01\x11\x15a1\xF6W__\xFD[` \x91\x90\x91\x01\x94P\x92Pa2\x0C`@\x87\x01a.\xC9V[\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2&W__\xFD[a22\x88\x82\x89\x01a0RV[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a2xW\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a2QV[P\x93\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra2\x9C`\x80\x84\x01\x82a2?V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra2\xB9\x82\x82a2?V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[__`\x01`\x01`@\x1B\x03\x84\x11\x15a2\xE3Wa2\xE3a,\x82V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a2\xF8\x81a-\x03V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a3\x0CW__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a33W__\xFD[\x825a3>\x81a.;V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3XW__\xFD[\x83\x01``\x81\x86\x03\x12\x15a3iW__\xFD[a3qa,\xE1V[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x86W__\xFD[\x82\x01`\x1F\x81\x01\x87\x13a3\x96W__\xFD[a3\xA5\x87\x825` \x84\x01a2\xCAV[\x82RP` \x82\x81\x015\x90\x82\x01R`@\x91\x82\x015\x91\x81\x01\x91\x90\x91R\x91\x94\x91\x93P\x90\x91PPV[_` \x82\x84\x03\x12\x15a3\xDAW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xEFW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a3\xFFW__\xFD[a4\x0E\x84\x825` \x84\x01a2\xCAV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a4DWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_` \x82\x84\x03\x12\x15a4YW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a4pW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a&BW__\xFD[_` \x82\x84\x03\x12\x15a4\x96W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a&BW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a&EWa&Ea4\xA6V[\x80Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a'\xE7W__\xFD[_`@\x82\x84\x03\x12\x80\x15a4\xF4W__\xFD[Pa4\xFDa,\x96V[\x82Qa5\x08\x81a.;V[\x81Ra5\x16` \x84\x01a4\xCDV[` \x82\x01R\x93\x92PPPV[_`\x01\x82\x01a53Wa53a4\xA6V[P`\x01\x01\x90V[_` \x82\x84\x03\x12\x15a5JW__\xFD[\x81Qa&B\x81a.;V[\x81\x81\x03\x81\x81\x11\x15a&EWa&Ea4\xA6V[_` \x82\x84\x03\x12\x15a5xW__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a&BW__\xFD[_` \x82\x84\x03\x12\x15a5\xA0W__\xFD[a5\xA9\x82a4\xCDV[\x93\x92PPPV[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a&EWa&Ea4\xA6V[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a6\tW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a5\xEBV[P\x91\x96\x95PPPPPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q```@\x84\x01Ra6\xE4`\xA0\x84\x01\x82a6\x8DV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R_a5\xA9` \x83\x01\x84a6\x8DV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a&EWa&Ea4\xA6V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a7EWa7Ea4\xA6V[`\x01\x01\x92\x91PPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \xC4\xEDs\x8D\xEE\xF4\xF6\xCB\xEB<7M\xC3\xF2\x04\x82\x93!\xA3\xBD\x1A\xD3Z5&+\x9D\x917Z0\x08dsolcC\0\x08\x1B\x003`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x0768\x03\x80a\x076\x839\x81\x01`@\x81\x90Ra\0.\x91a\x02SV[_[\x82Q\x81\x10\x15a\0kWa\0c\x83\x82\x81Q\x81\x10a\0NWa\0Na\x03/V[` \x02` \x01\x01Q`\x01a\0|` \x1B` \x1CV[`\x01\x01a\x000V[Pa\0u\x81a\x01MV[PPa\x03CV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\0\xEDW`@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_\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\xBBW`@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\xE4V[`\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_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02NW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x02dW__\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02yW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x02\x89W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\xA2Wa\x02\xA2a\x02$V[`@Q`\x05\x82\x90\x1B\x90`?\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02\xD0Wa\x02\xD0a\x02$V[`@R\x91\x82R` \x81\x84\x01\x81\x01\x92\x90\x81\x01\x88\x84\x11\x15a\x02\xEDW__\xFD[` \x85\x01\x94P[\x83\x85\x10\x15a\x03\x13Wa\x03\x05\x85a\x028V[\x81R` \x94\x85\x01\x94\x01a\x02\xF4V[P\x94Pa\x03&\x92PPP` \x84\x01a\x028V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x03\xE6\x80a\x03P_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80cF\xFB\xF6\x8E\x14a\0NW\x80c\x85hR\x06\x14a\0\x85W\x80c\xCET\x84(\x14a\0\x9AW\x80c\xEA\xB6mz\x14a\0\xADW[__\xFD[a\0pa\0\\6`\x04a\x03\rV[_` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\x98a\0\x936`\x04a\x03-V[a\0\xD8V[\0[a\0\x98a\0\xA86`\x04a\x03\rV[a\x01\x19V[`\x01Ta\0\xC0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0|V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x02\x90a\x03fV[`@Q\x80\x91\x03\x90\xFD[a\x01\x15\x82\x82a\x01OV[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x02\x90a\x03fV[a\x01L\x81a\x02\x1BV[PV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x01\xBBW`@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\x02V[`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x89W`@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\x02V[`\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\x08W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x03\x1DW__\xFD[a\x03&\x82a\x02\xF2V[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x03>W__\xFD[a\x03G\x83a\x02\xF2V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x03[W__\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 \xBA\xD9\xBC~X@\xC04\xCE\x8E\xB3\xBF\x05)\xDB;\x11Cy\xED0g>\xF2\x86\rg3m\xC9\x0C.dsolcC\0\x08\x1B\x003`\x80`@R4\x80\x15`\x0EW__\xFD[Pa\x197\x80a\0\x1C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80c5c\xB0\xD1\x14a\0NW\x80cOs\x9Ft\x14a\0wW\x80c\\\x15Vb\x14a\0\x97W\x80c\xCE\xFD\xC1\xD4\x14a\0\xB7W[__\xFD[a\0aa\0\\6`\x04a\x10\xEAV[a\0\xD8V[`@Qa\0n\x91\x90a\x12KV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Aa\0\x856`\x04a\x12\xABV[a\x05@V[`@Qa\0n\x91\x90a\x13\xABV[a\0\xAAa\0\xA56`\x04a\x14\x83V[a\x0C:V[`@Qa\0n\x91\x90a\x152V[a\0\xCAa\0\xC56`\x04a\x15tV[a\r\xEFV[`@Qa\0n\x92\x91\x90a\x15\xB3V[``_\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\x01\x17W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01;\x91\x90a\x15\xD3V[\x90P_\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\x01zW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x9E\x91\x90a\x15\xD3V[\x90P_\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\x01\xDDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x01\x91\x90a\x15\xD3V[\x90P_\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x1DWa\x02\x1Da\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02PW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02;W\x90P[P\x90P_[\x87Q\x81\x10\x15a\x054W_\x88\x82\x81Q\x81\x10a\x02qWa\x02qa\x15\xEEV[\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_\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xCEW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x02\xF5\x91\x90\x81\x01\x90a\x16\x02V[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x10Wa\x03\x10a\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03YW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R_\x19\x90\x92\x01\x91\x01\x81a\x03.W\x90P[P\x84\x84\x81Q\x81\x10a\x03lWa\x03la\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x81Q\x81\x10\x15a\x05)W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xAEWa\x03\xAEa\x15\xEEV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xD4\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xEFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x13\x91\x90a\x15\xD3V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x043Wa\x043a\x15\xEEV[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04aWa\x04aa\x15\xEEV[` \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\x04\xBBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xDF\x91\x90a\x16\x92V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x04\xFDWa\x04\xFDa\x15\xEEV[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x05\x16Wa\x05\x16a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x03yV[PPP`\x01\x01a\x02UV[P\x97\x96PPPPPPPV[a\x05k`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_\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\x05\xA8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xCC\x91\x90a\x15\xD3V[\x90Pa\x05\xF9`@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\x06)\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x16\xB8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06CW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06j\x91\x90\x81\x01\x90a\x16\xFDV[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\x9C\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x17\xB4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xB6W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xDD\x91\x90\x81\x01\x90a\x16\xFDV[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xFAWa\x06\xFAa\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07-W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07\x18W\x90P[P``\x82\x01R_[`\xFF\x81\x16\x87\x11\x15a\x0BRW_\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07YWa\x07Ya\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x82W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\x9CWa\x07\x9Ca\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x86\x81\x10\x15a\n^W_\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x07\xD3Wa\x07\xD3a\x15\xEEV[\x90P` \x02\x015\x8E\x88_\x01Q\x86\x81Q\x81\x10a\x07\xF0Wa\x07\xF0a\x15\xEEV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08-\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\x08HW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08l\x91\x90a\x17\xDCV[\x90P\x80`\x01`\x01`\xC0\x1B\x03\x16_\x03a\t\x16W`@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\t+Wa\t+a\x15\xEEV[`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x91\x90\x93\x015`\xF8\x1C\x1C\x82\x16\x90\x91\x03\x90Pa\nUW\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\tlWa\tla\x15\xEEV[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\x88Wa\t\x88a\x15\xEEV[`@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\t\xDCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\0\x91\x90a\x18\x02V[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n\x19Wa\n\x19a\x15\xEEV[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\n2Wa\n2a\x15\xEEV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\nQ\x81a\x181V[\x93PP[P`\x01\x01a\x07\xA9V[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\nxWa\nxa\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xA1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x0B\x17W\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\n\xC7Wa\n\xC7a\x15\xEEV[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\n\xE0Wa\n\xE0a\x15\xEEV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\n\xFAWa\n\xFAa\x15\xEEV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\n\xA6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B2Wa\x0B2a\x15\xEEV[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0BJ\x90a\x18IV[\x91PPa\x075V[P_\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\x0B\x90W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xB4\x91\x90a\x15\xD3V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0B\xE7\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x18gV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x01W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C(\x91\x90\x81\x01\x90a\x16\xFDV[` \x83\x01RP\x98\x97PPPPPPPPV[``_\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ck\x92\x91\x90a\x18\x90V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x85W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\xAC\x91\x90\x81\x01\x90a\x16\xFDV[\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C\xC8Wa\x0C\xC8a\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\xF1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85Q\x81\x10\x15a\r\xE5W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r Wa\r a\x15\xEEV[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r;Wa\r;a\x15\xEEV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\rx\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\r\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xB7\x91\x90a\x17\xDCV[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\r\xD2Wa\r\xD2a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0C\xF6V[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81_\x81Q\x81\x10a\x0E(Wa\x0E(a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x0Ec\x90\x88\x90\x86\x90`\x04\x01a\x18\x90V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E}W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xA4\x91\x90\x81\x01\x90a\x16\xFDV[_\x81Q\x81\x10a\x0E\xB5Wa\x0E\xB5a\x15\xEEV[` \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_\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x1EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0FB\x91\x90a\x17\xDCV[`\x01`\x01`\xC0\x1B\x03\x16\x90P_a\x0FW\x82a\x0FuV[\x90P\x81a\x0Fe\x8A\x83\x8Aa\0\xD8V[\x95P\x95PPPPP\x93P\x93\x91PPV[``__a\x0F\x82\x84a\x10>V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\x9DWa\x0F\x9Da\x10\x85V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0F\xC7W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a\x0F\xDEWPa\x01\0\x81\x10[\x15a\x104W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10$W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x07Wa\x10\x07a\x15\xEEV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a\x10-\x81a\x181V[\x90Pa\x0F\xCDV[P\x90\x94\x93PPPPV[_\x80[\x82\x15a\x10hWa\x10R`\x01\x84a\x18\xD7V[\x90\x92\x16\x91\x80a\x10`\x81a\x18\xEAV[\x91PPa\x10AV[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x10\x82W__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x10\xC1Wa\x10\xC1a\x10\x85V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x10\x82W__\xFD[\x805a\x10\xE5\x81a\x10\xC9V[\x91\x90PV[___``\x84\x86\x03\x12\x15a\x10\xFCW__\xFD[\x835a\x11\x07\x81a\x10nV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11!W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x111W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11JWa\x11Ja\x10\x85V[a\x11]`\x1F\x82\x01`\x1F\x19\x16` \x01a\x10\x99V[\x81\x81R\x87` \x83\x85\x01\x01\x11\x15a\x11qW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x94PPPPa\x11\x95`@\x85\x01a\x10\xDAV[\x90P\x92P\x92P\x92V[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15a\x12?W\x84\x83\x03`\x1F\x19\x01\x88R\x81Q\x80Q\x80\x85R` \x91\x82\x01\x91\x85\x01\x90_[\x81\x81\x10\x15a\x12&W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x80\x82\x01Q\x81\x86\x01R`@\x91\x82\x01Q`\x01`\x01``\x1B\x03\x16\x91\x85\x01\x91\x90\x91R\x90\x93\x01\x92``\x90\x92\x01\x91`\x01\x01a\x11\xDDV[PP` \x99\x8A\x01\x99\x90\x94P\x92\x90\x92\x01\x91P`\x01\x01a\x11\xBAV[P\x90\x96\x95PPPPPPV[` \x81R_a\x12]` \x83\x01\x84a\x11\x9EV[\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a\x12tW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\x8AW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x12\xA4W__\xFD[\x92P\x92\x90PV[______`\x80\x87\x89\x03\x12\x15a\x12\xC0W__\xFD[\x865a\x12\xCB\x81a\x10nV[\x95P` \x87\x015a\x12\xDB\x81a\x10\xC9V[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xF5W__\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x13\x05W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x1AW__\xFD[\x89` \x82\x84\x01\x01\x11\x15a\x13+W__\xFD[` \x91\x90\x91\x01\x94P\x92P``\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13MW__\xFD[a\x13Y\x89\x82\x8A\x01a\x12dV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\x13\xA1W\x81Qc\xFF\xFF\xFF\xFF\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\x13}V[P\x93\x94\x93PPPPV[` \x81R_\x82Q`\x80` \x84\x01Ra\x13\xC6`\xA0\x84\x01\x82a\x13kV[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x13\xE3\x82\x82a\x13kV[\x91PP`@\x84\x01Q`\x1F\x19\x84\x83\x03\x01``\x85\x01Ra\x14\x01\x82\x82a\x13kV[``\x86\x01Q\x85\x82\x03`\x1F\x19\x01`\x80\x87\x01R\x80Q\x80\x83R\x91\x93P` \x90\x81\x01\x92P\x80\x84\x01\x91\x90`\x05\x82\x90\x1B\x85\x01\x01_[\x82\x81\x10\x15a\x054W`\x1F\x19\x86\x83\x03\x01\x84Ra\x14L\x82\x86Qa\x13kV[` \x95\x86\x01\x95\x94\x90\x94\x01\x93\x91P`\x01\x01a\x140V[_`\x01`\x01`@\x1B\x03\x82\x11\x15a\x14yWa\x14ya\x10\x85V[P`\x05\x1B` \x01\x90V[___``\x84\x86\x03\x12\x15a\x14\x95W__\xFD[\x835a\x14\xA0\x81a\x10nV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBAW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14\xCAW__\xFD[\x805a\x14\xDDa\x14\xD8\x82a\x14aV[a\x10\x99V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a\x14\xFEW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x15 W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x15\x05V[\x94Pa\x11\x95\x92PPP`@\x85\x01a\x10\xDAV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x15iW\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x15KV[P\x90\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a\x15\x86W__\xFD[\x835a\x15\x91\x81a\x10nV[\x92P` \x84\x015\x91P`@\x84\x015a\x15\xA8\x81a\x10\xC9V[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R_a\x15\xCB`@\x83\x01\x84a\x11\x9EV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x15\xE3W__\xFD[\x81Qa\x12]\x81a\x10nV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x16\x12W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16'W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x167W__\xFD[\x80Qa\x16Ea\x14\xD8\x82a\x14aV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x16fW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x16\x88W\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x16mV[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x16\xA2W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12]W__\xFD[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R_`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x16\xE3W__\xFD[\x82`\x05\x1B\x80\x85``\x85\x017\x91\x90\x91\x01``\x01\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x17\rW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\"W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x172W__\xFD[\x80Qa\x17@a\x14\xD8\x82a\x14aV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x17aW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x16\x88W\x83Qa\x17{\x81a\x10\xC9V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x17hV[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R_a\x17\xD3`@\x83\x01\x84\x86a\x17\x8CV[\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a\x17\xECW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12]W__\xFD[_` \x82\x84\x03\x12\x15a\x18\x12W__\xFD[\x81Qa\x12]\x81a\x10\xC9V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[_`\x01\x82\x01a\x18BWa\x18Ba\x18\x1DV[P`\x01\x01\x90V[_`\xFF\x82\x16`\xFF\x81\x03a\x18^Wa\x18^a\x18\x1DV[`\x01\x01\x92\x91PPV[`@\x81R_a\x18z`@\x83\x01\x85\x87a\x17\x8CV[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[_`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R`@` \x84\x01R\x80\x84Q\x80\x83R``\x85\x01\x91P` \x86\x01\x92P_[\x81\x81\x10\x15a\x12?W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x18\xB9V[\x81\x81\x03\x81\x81\x11\x15a\x10hWa\x10ha\x18\x1DV[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a\x18^Wa\x18^a\x18\x1DV\xFE\xA2dipfsX\"\x12 \x98:u\x07\xFF\xB0=h\xFF^BB44\xB1\x07\xB2\xA2Q*\x8E\x99\x89\x03r\x06\xF7\x87\x12\xFC\xD7\xEDdsolcC\0\x08\x1B\x003`\xA0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x1F\xD68\x03\x80a\x1F\xD6\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Da\0KV[PPa\x015V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB6W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x01\x06W_\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[_` \x82\x84\x03\x12\x15a\x01\x18W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01.W__\xFD[\x93\x92PPPV[`\x80Qa\x1Ema\x01i_9_\x81\x81a\x03\x03\x01R\x81\x81a\x04W\x01R\x81\x81a\x05\xAE\x01R\x81\x81a\t\xA7\x01Ra\x0F\xF3\x01Ra\x1Em_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x10W_5`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\x9EW\x80c\xBFy\xCEX\x11a\0nW\x80c\xBFy\xCEX\x14a\x03\xBFW\x80c\xD5%J\x8C\x14a\x03\xD2W\x80c\xDE)\xFA\xC0\x14a\x03\xF2W\x80c\xE8\xBB\x9A\xE6\x14a\x04\x11W\x80c\xF4\xE2O\xE5\x14a\x049W__\xFD[\x80cm\x14\xA9\x87\x14a\x02\xFEW\x80cy\x16\xCE\xA6\x14a\x03%W\x80c\x7F\xF8\x1A\x87\x14a\x03fW\x80c\xA3\xDB\x80\xE2\x14a\x03\x99W__\xFD[\x80c?\xB2yR\x11a\0\xE4W\x80c?\xB2yR\x14a\x01\xD6W\x80cG\xB3\x14\xE8\x14a\x01\xE9W\x80c_a\xA8\x84\x14a\x02)W\x80c`WG\xD5\x14a\x02\x83W\x80ch\xBC\xCA\xAC\x14a\x02\xD1W__\xFD[\x80b\xA1\xF4\xCB\x14a\x01\x14W\x80c\x13T*N\x14a\x01TW\x80c&\xD9A\xF2\x14a\x01\x8AW\x80c7~\xD9\x9D\x14a\x01\x9FW[__\xFD[a\x01:a\x01\"6`\x04a\x18\x99V[`\x03` R_\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|a\x01b6`\x04a\x18\x99V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01KV[a\x01\x9Da\x01\x986`\x04a\x18\xC9V[a\x04LV[\0[a\x01\xC1a\x01\xAD6`\x04a\x18\xC9V[`\xFF\x16_\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01KV[a\x01\x9Da\x01\xE46`\x04a\x19PV[a\x05\xA3V[a\x02\x11a\x01\xF76`\x04a\x19\xF5V[_\x90\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01KV[a\x02va\x0276`\x04a\x18\xC9V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01RP`\xFF\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01R\x90V[`@Qa\x01K\x91\x90a\x1A\x0CV[a\x02\x96a\x02\x916`\x04a\x1A#V[a\x06_V[`@\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\x01KV[a\x02\xE4a\x02\xDF6`\x04a\x1AKV[a\x06\xF0V[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01KV[a\x02\x11\x7F\0\0\0\0\0\0\0\0\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\x038a\x0336`\x04a\x1A#V[a\x08\x89V[`@\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\x01KV[a\x03ya\x03t6`\x04a\x18\x99V[a\x08\xD0V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01KV[a\x01:a\x03\xA76`\x04a\x18\xC9V[`\x05` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01|a\x03\xCD6`\x04a\x1A\x8FV[a\t\x9BV[a\x03\xE5a\x03\xE06`\x04a\x1A\xE7V[a\r\xE1V[`@Qa\x01K\x91\x90a\x1BYV[a\x01|a\x04\x006`\x04a\x18\x99V[`\x01` R_\x90\x81R`@\x90 T\x81V[a\x02\x11a\x04\x1F6`\x04a\x19\xF5V[`\x02` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\x9Da\x04G6`\x04a\x19PV[a\x0F\xE8V[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\x04\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16_\x90\x81R`\x04` R`@\x90 T\x15a\x05\x1BW`@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\x01a\x04\x94V[`\xFF\x16_\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[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\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\x05\xF5\x83a\x08\xD0V[P\x90Pa\x06\x02\x82\x82a\x10\x8FV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06B\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06R\x93\x92\x91\x90a\x1C\x15V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x81\x01\x82R_\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\x9BWa\x06\x9Ba\x1C`V[_\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_\x90\x81R`\x04` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x07\x16Wa\x07\x16a\x1C`V[_\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\x07\xDCW`@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\x94V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x02WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x80W`@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\x94V[Q\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x08\xA2W_\x80\xFD[_\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_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x91W`@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\x94V[\x90\x94\x90\x93P\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\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\n\x10a\t\xFA6\x86\x90\x03\x86\x01`@\x87\x01a\x1CtV[\x80Q_\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\x03a\n\x96W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\x94V[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x0B\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x94V[_\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\x94V[`@\x80Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0B\xF8\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\xA5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\x0C\x1A\x91\x90a\x1C\xE7V[\x90Pa\x0C\xB3a\x0CSa\x0C>\x83a\x0C86\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1CtV[\x90a\x12\xCBV[a\x0CM6\x89\x90\x03\x89\x01\x89a\x1CtV[\x90a\x13ZV[a\x0C[a\x13\xEDV[a\x0C\x9Ca\x0C\x8D\x85a\x0C8`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\x0CM6\x8A\x90\x03\x8A\x01\x8Aa\x1CtV[a\x0C\xAE6\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1DHV[a\x14\xADV[a\rMW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R_Q` a\x1E\x18_9_Q\x90_R`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\x94V[`\x01`\x01`\xA0\x1B\x03\x86\x16_\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\r\xD0\x91`\x80\x8A\x01\x90a\x1D\x87V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[``_\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xFDWa\r\xFDa\x18\xE2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E&W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0F\xDFW_\x86\x86\x83\x81\x81\x10a\x0EFWa\x0EFa\x1C`V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xA6WP`\xFF\x82\x16_\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\x8BWa\x0E\x8Ba\x1C`V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0F3W`@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\x94V[\x80[\x80\x15a\x0F\xD4W`\xFF\x83\x16_\x90\x81R`\x04` R`@\x90 \x87\x90a\x0FY`\x01\x84a\x1D\xC5V[\x81T\x81\x10a\x0FiWa\x0Fia\x1C`V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xC2Wa\x0F\x91`\x01\x82a\x1D\xC5V[\x85\x85\x81Q\x81\x10a\x0F\xA3Wa\x0F\xA3a\x1C`V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0F\xD4V[\x80a\x0F\xCC\x81a\x1D\xD8V[\x91PPa\x0F5V[PPP`\x01\x01a\x0E+V[P\x94\x93PPPPV[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\x100W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x94\x90a\x1B\xA1V[_a\x10:\x83a\x08\xD0V[P\x90Pa\x10O\x82a\x10J\x83a\x17\x0BV[a\x10\x8FV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06B\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_[\x83Q\x81\x10\x15a\x12\xC5W_\x84\x82\x81Q\x81\x10a\x10\xC0Wa\x10\xC0a\x1C`V[\x01` \x90\x81\x01Q`\xF8\x1C_\x81\x81R`\x04\x90\x92R`@\x82 T\x90\x92P\x90\x81\x90\x03a\x11QW`@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\x94V[`\xFF\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x11\x84\x90\x86a\x13ZV[`\xFF\x83\x16_\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\xCC\x90\x85a\x1D\xC5V[\x81T\x81\x10a\x11\xDCWa\x11\xDCa\x1C`V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x03a\x12\x1AW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xB5V[\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_\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[PP`\x01\x90\x92\x01\x91Pa\x10\xA4\x90PV[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\xE6a\x17\xC7V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\x14W\xFE[P\x80a\x13RW`@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\x94V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13ua\x17\xE5V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\xAFW\xFE[P\x80a\x13RW`@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\x94V[a\x13\xF5a\x18\x03V[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_\x91a\x14\xDBa\x18(V[_[`\x02\x81\x10\x15a\x16\x92W_a\x14\xF2\x82`\x06a\x1D\xEDV[\x90P\x84\x82`\x02\x81\x10a\x15\x06Wa\x15\x06a\x1C`V[` \x02\x01QQ\x83a\x15\x17\x83_a\x1E\x04V[`\x0C\x81\x10a\x15'Wa\x15'a\x1C`V[` \x02\x01R\x84\x82`\x02\x81\x10a\x15>Wa\x15>a\x1C`V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15U\x91\x90a\x1E\x04V[`\x0C\x81\x10a\x15eWa\x15ea\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15|Wa\x15|a\x1C`V[` \x02\x01QQQ\x83a\x15\x8F\x83`\x02a\x1E\x04V[`\x0C\x81\x10a\x15\x9FWa\x15\x9Fa\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xB6Wa\x15\xB6a\x1C`V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x15\xCF\x83`\x03a\x1E\x04V[`\x0C\x81\x10a\x15\xDFWa\x15\xDFa\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xF6Wa\x15\xF6a\x1C`V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x16\x10Wa\x16\x10a\x1C`V[` \x02\x01Q\x83a\x16!\x83`\x04a\x1E\x04V[`\x0C\x81\x10a\x161Wa\x161a\x1C`V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16HWa\x16Ha\x1C`V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16cWa\x16ca\x1C`V[` \x02\x01Q\x83a\x16t\x83`\x05a\x1E\x04V[`\x0C\x81\x10a\x16\x84Wa\x16\x84a\x1C`V[` \x02\x01RP`\x01\x01a\x14\xDDV[Pa\x16\x9Ba\x18GV[_` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x16\xB5W\xFE[P\x80a\x16\xFBW`@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\x94V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17/WP` \x82\x01Q\x15[\x15a\x17LWPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x17\x90\x91\x90a\x1C\xE7V[a\x17\xBA\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\xC5V[\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\x18\x16a\x18eV[\x81R` \x01a\x18#a\x18eV[\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\xC2W__\xFD[_` \x82\x84\x03\x12\x15a\x18\xA9W__\xFD[a\x18\xB2\x82a\x18\x83V[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x17\xC2W__\xFD[_` \x82\x84\x03\x12\x15a\x18\xD9W__\xFD[a\x18\xB2\x82a\x18\xB9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19\x19Wa\x19\x19a\x18\xE2V[`@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\x19HWa\x19Ha\x18\xE2V[`@R\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x19aW__\xFD[a\x19j\x83a\x18\x83V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\x85W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x19\x95W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xAFWa\x19\xAFa\x18\xE2V[a\x19\xC2`\x1F\x82\x01`\x1F\x19\x16` \x01a\x19\x1FV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a\x19\xD6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x1A\x05W__\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xEAV[__`@\x83\x85\x03\x12\x15a\x1A4W__\xFD[a\x1A=\x83a\x18\xB9V[\x94` \x93\x90\x93\x015\x93PPPV[___``\x84\x86\x03\x12\x15a\x1A]W__\xFD[a\x1Af\x84a\x18\xB9V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A~W__\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[___\x83\x85\x03a\x01`\x81\x12\x15a\x1A\xA3W__\xFD[a\x1A\xAC\x85a\x18\x83V[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1A\xC0W__\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1A\xD8W__\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a\x1A\xF9W__\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x0FW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x1B\x1FW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B5W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x1BFW__\xFD[` \x91\x82\x01\x97\x90\x96P\x94\x015\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x1B\x96W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1BrV[P\x90\x95\x94PPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R_\x82Q\x80``\x84\x01R\x80` \x85\x01`\x80\x85\x01^_`\x80\x82\x85\x01\x01R`\x80`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`@\x82\x84\x03\x12\x80\x15a\x1C\x85W__\xFD[Pa\x1C\x8Ea\x18\xF6V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`@\x84`\xC0\x83\x017a\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[_\x82a\x1D\x01WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_\x82`\x1F\x83\x01\x12a\x1D\x15W__\xFD[a\x1D\x1Da\x18\xF6V[\x80`@\x84\x01\x85\x81\x11\x15a\x1D.W__\xFD[\x84[\x81\x81\x10\x15a\x1B\x96W\x805\x84R` \x93\x84\x01\x93\x01a\x1D0V[_`\x80\x82\x84\x03\x12\x80\x15a\x1DYW__\xFD[Pa\x1Dba\x18\xF6V[a\x1Dl\x84\x84a\x1D\x06V[\x81Ra\x1D{\x84`@\x85\x01a\x1D\x06V[` \x82\x01R\x93\x92PPPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01`@\x83\x81\x84\x017`@\x80\x84\x01`\x80\x84\x017\x93\x92PPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x06\xEAWa\x06\xEAa\x1D\xB1V[_\x81a\x1D\xE6Wa\x1D\xE6a\x1D\xB1V[P_\x19\x01\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xEAWa\x06\xEAa\x1D\xB1V[\x80\x82\x01\x80\x82\x11\x15a\x06\xEAWa\x06\xEAa\x1D\xB1V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \xC1\x98d\xF29\xC7X\xEDI\xDA\xF0e\x94\x19b \x85\x84\xAE\xF0P\xE2\xA2\x8B\x0Ca\xF4\xF4\xB2\xA1Y\xDDdsolcC\0\x08\x1B\x003`\xA0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x13>8\x03\x80a\x13>\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Da\0KV[PPa\x015V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB6W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x01\x06W_\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[_` \x82\x84\x03\x12\x15a\x01\x18W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01.W__\xFD[\x93\x92PPPV[`\x80Qa\x11\xDCa\x01b_9_\x81\x81a\x01>\x01R\x81\x81a\x02o\x01R\x81\x81a\x04\x03\x01Ra\x07\xBD\x01Ra\x11\xDC_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c\x89\x02bE\x11a\0nW\x80c\x89\x02bE\x14a\x01\xAFW\x80c\xA4\x8B\xB0\xAC\x14a\x01\xCFW\x80c\xBD)\xB8\xCD\x14a\x01\xE2W\x80c\xCA\xA3\xCDv\x14a\x01\xF5W\x80c\xE2\xE6\x85\x80\x14a\x02\nW\x80c\xF3A\t\"\x14a\x02OW__\xFD[\x80b\xBF\xF0M\x14a\0\xB4W\x80c\x12\xD1\xD7M\x14a\0\xDDW\x80c&\xD9A\xF2\x14a\x01\x11W\x80c.\xD5\x83\xE5\x14a\x01&W\x80cm\x14\xA9\x87\x14a\x019W\x80c\x81!\x90o\x14a\x01xW[__\xFD[a\0\xC7a\0\xC26`\x04a\x0ErV[a\x02bV[`@Qa\0\xD4\x91\x90a\x0E\xE9V[`@Q\x80\x91\x03\x90\xF3[a\0\xF0a\0\xEB6`\x04a\x0FYV[a\x03\xB3V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92R\x01a\0\xD4V[a\x01$a\x01\x1F6`\x04a\x0F\x8AV[a\x03\xF8V[\0[a\0\xF0a\x0146`\x04a\x0F\xA3V[a\x05\x1AV[a\x01`\x7F\0\0\0\0\0\0\0\0\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\xD4V[a\x01\x8Ba\x01\x866`\x04a\x0F\x8AV[a\x05\x9DV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\0\xD4V[a\x01\xC2a\x01\xBD6`\x04a\x0FYV[a\x05\xE3V[`@Qa\0\xD4\x91\x90a\x0F\xE3V[a\x01\x8Ba\x01\xDD6`\x04a\x0FYV[a\x07>V[a\x01$a\x01\xF06`\x04a\x0ErV[a\x07\xB2V[a\x01\xFC_\x81V[`@Q\x90\x81R` \x01a\0\xD4V[a\x02:a\x02\x186`\x04a\x10\x1AV[`\x01` \x90\x81R_\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\xD4V[a\x02:a\x02]6`\x04a\x0F\x8AV[a\x08\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\x02\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[`@Q\x80\x91\x03\x90\xFD[_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\xCFWa\x02\xCFa\x10\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xF8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x03\xA8W_\x85\x85\x83\x81\x81\x10a\x03\x18Wa\x03\x18a\x10\xC9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x03` R`@\x81 T\x91\x93P\x90\x91P\x81\x90\x03a\x03SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10\xDDV[_a\x03]\x83a\x08\xD5V[\x90Pa\x03t\x89\x84a\x03o`\x01\x85a\x11FV[a\t\xCCV[\x80\x85\x85\x81Q\x81\x10a\x03\x87Wa\x03\x87a\x10\xC9V[c\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPPP`\x01\x01a\x02\xFDV[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x03\xD0\x83\x83a\nTV[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\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\x04@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[`\xFF\x81\x16_\x90\x81R`\x03` R`@\x90 T\x15a\x04\xB9W`@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\x02\xACV[`\xFF\x16_\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_\x80\x82R` \x82\x01R`\xFF\x84\x16_\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\x05eWa\x05ea\x10\xC9V[_\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_\x80\x82R` \x82\x01Ra\x05\xB9\x82a\n\xA9V[`@\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[``_a\x05\xF0\x84\x84a\n\xE8V[\x90P_\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x12Wa\x06\x12a\x10\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06;W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x075Wa\x06Y\x86\x82\x87a\x0C\x1AV[\x82\x82\x81Q\x81\x10a\x06kWa\x06ka\x10\xC9V[` \x02` \x01\x01\x81\x81RPP__\x1B\x82\x82\x81Q\x81\x10a\x06\x8CWa\x06\x8Ca\x10\xC9V[` \x02` \x01\x01Q\x03a\x07-W`@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\x02\xACV[`\x01\x01a\x06@V[P\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80Tc\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x10a\x07zWa\x07za\x10\xC9V[_\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[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\x07\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[_[\x81\x81\x10\x15a\x08\xB1W_\x83\x83\x83\x81\x81\x10a\x08\x17Wa\x08\x17a\x10\xC9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x03` R`@\x81 T\x91\x93P\x90\x91P\x81\x90\x03a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10\xDDV[`\xFF\x82\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x08\x7F\x84a\x0C\xEDV[\x90P_a\x08\x8C\x85\x83a\r%V[\x90P\x80\x89\x14a\x08\xA0Wa\x08\xA0\x81\x86\x85a\t\xCCV[PP`\x01\x90\x93\x01\x92Pa\x07\xFC\x91PPV[PPPPV[_a\x08\xC1\x82a\n\xA9V[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[__a\x08\xE0\x83a\n\xA9V[\x80T\x90\x91P_\x90a\x08\xFF\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11bV[\x90Pa\t\x0C\x84\x83\x83a\rMV[`\xFF\x84\x16_\x90\x81R`\x02` R`@\x81 \x90a\t)`\x01\x84a\x11FV[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_\x90\x81 T\x90\x03a\x03\xACW`\xFF\x84\x16_\x90\x81R`\x02` R`@\x81 \x90a\td`\x01\x84a\x11FV[c\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x83\x01\x93\x90\x93R`@\x91\x82\x01_\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[_a\t\xD7\x83\x83a\nTV[\x90Pa\t\xE5\x83\x83\x83\x87a\r\xEAV[`\xFF\x83\x16_\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_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x85\x16\x84R\x90\x91R\x81 \x80T\x90a\n\x84`\x01\x83a\x11~V[\x81T\x81\x10a\n\x94Wa\n\x94a\x10\xC9V[\x90_R` _ \x90`\x02\x02\x01\x91PP\x92\x91PPV[`\xFF\x81\x16_\x90\x81R`\x03` R`@\x81 \x80T\x90a\n\xC8`\x01\x83a\x11~V[\x81T\x81\x10a\n\xD8Wa\n\xD8a\x10\xC9V[\x90_R` _ \x01\x91PP\x91\x90PV[`\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 T\x80[\x80\x15a\x0B\x8DW`\xFF\x85\x16_\x90\x81R`\x03` R`@\x81 a\x0B\x1E`\x01\x84a\x11~V[\x81T\x81\x10a\x0B.Wa\x0B.a\x10\xC9V[_\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\x0BzW` \x01Q\x92Pa\x03\xF2\x91PPV[P\x80a\x0B\x85\x81a\x11\x91V[\x91PPa\n\xFCV[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\x02\xACV[`\xFF\x83\x16_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a\x0C\xE2W`\xFF\x86\x16_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x89\x16\x84R\x90\x91R\x81 a\x0Cr`\x01\x84a\x11~V[\x81T\x81\x10a\x0C\x82Wa\x0C\x82a\x10\xC9V[_\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\x0C\xCFW` \x01Q\x92Pa\x03\xAC\x91PPV[P\x80a\x0C\xDA\x81a\x11\x91V[\x91PPa\x0C?V[P_\x95\x94PPPPPV[__a\x0C\xF8\x83a\n\xA9V[\x80T\x90\x91P_\x90a\r\x18\x90`\x01\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16a\x11FV[\x90Pa\x03\xAC\x84\x83\x83a\rMV[__a\r1\x84\x84a\nTV[`\x01\x81\x01T\x90\x91Pa\rE\x85\x85\x84_a\r\xEAV[\x94\x93PPPPV[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\r\x82W\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_\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[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x0E\x07W`\x01\x82\x01\x81\x90Ua\x08\xB1V[`\xFF\x93\x90\x93\x16_\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[___`@\x84\x86\x03\x12\x15a\x0E\x84W__\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xA1W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x0E\xB1W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC7W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x0E\xD8W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0F&W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0F\x02V[P\x90\x95\x94PPPPPV[\x805`\xFF\x81\x16\x81\x14a\x0FAW__\xFD[\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0FAW__\xFD[__`@\x83\x85\x03\x12\x15a\x0FjW__\xFD[a\x0Fs\x83a\x0F1V[\x91Pa\x0F\x81` \x84\x01a\x0FFV[\x90P\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x0F\x9AW__\xFD[a\x03\xAC\x82a\x0F1V[___``\x84\x86\x03\x12\x15a\x0F\xB5W__\xFD[a\x0F\xBE\x84a\x0F1V[\x92Pa\x0F\xCC` \x85\x01a\x0FFV[\x91Pa\x0F\xDA`@\x85\x01a\x0FFV[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0F&W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0F\xFCV[__`@\x83\x85\x03\x12\x15a\x10+W__\xFD[a\x104\x83a\x0F1V[\x94` \x93\x90\x93\x015\x93PPPV[` \x80\x82R`M\x90\x82\x01R\x7FIndexRegistry.onlyRegistryCoordi`@\x82\x01R\x7Fnator: caller is not the registr``\x82\x01Rl<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x99\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\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_R`\x11`\x04R`$_\xFD[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[\x81\x81\x03\x81\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[_\x81a\x11\x9FWa\x11\x9Fa\x112V[P_\x19\x01\x90V\xFE\xA2dipfsX\"\x12 \xD0\xF0:\xD1\xC2E\xA9#&?\xA9\x03\x89b\x1F\x15\x9F\xB1Rv\x87\xF7\xF9\x81\x1D@\xCB4B\xADm\0dsolcC\0\x08\x1B\x003`\xC0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa7\x928\x03\x80a7\x92\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\\V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\xA0R\x16`\x80Ra\0\x94V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0YW__\xFD[PV[__`@\x83\x85\x03\x12\x15a\0mW__\xFD[\x82Qa\0x\x81a\0EV[` \x84\x01Q\x90\x92Pa\0\x89\x81a\0EV[\x80\x91PP\x92P\x92\x90PV[`\x80Q`\xA0Qa6\x9Ea\0\xF4_9_\x81\x81a\x03m\x01R\x81\x81a\x06 \x01R\x81\x81a\tK\x01R\x81\x81a\x0C\xA9\x01R\x81\x81a\x10\xB6\x01R\x81\x81a\x16|\x01R\x81\x81a\x17{\x01R\x81\x81a\x18\x8F\x01Ra\x1CB\x01R_\x81\x81a\x05\x1B\x01Ra\x1D\xFC\x01Ra6\x9E_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\xDCW_5`\xE0\x1C\x80c\x9F<\xCFe\x11a\x01\tW\x80c\xC8)LV\x11a\0\x9EW\x80c\xF2\xBE\x94\xAE\x11a\0nW\x80c\xF2\xBE\x94\xAE\x14a\x05=W\x80c\xF8Q\xE1\x98\x14a\x05PW\x80c\xFA(\xC6'\x14a\x05cW\x80c\xFFiJw\x14a\x05vW__\xFD[\x80c\xC8)LV\x14a\x04\xC8W\x80c\xD5\xEC\xCC\x05\x14a\x04\xDBW\x80c\xDD\x98F\xB9\x14a\x04\xEEW\x80c\xDF\\\xF7#\x14a\x05\x16W__\xFD[\x80c\xBC\x9A@\xC3\x11a\0\xD9W\x80c\xBC\x9A@\xC3\x14a\x04gW\x80c\xBD)\xB8\xCD\x14a\x04zW\x80c\xC4gx\xA5\x14a\x04\x8DW\x80c\xC6\x01R}\x14a\x04\xB5W__\xFD[\x80c\x9F<\xCFe\x14a\x03\xE1W\x80c\xACk\xFB\x03\x14a\x03\xF4W\x80c\xAD\xC8\x04\xDA\x14a\x04\x14W\x80c\xB6\x90Kx\x14a\x04TW__\xFD[\x80cK\xD2n\t\x11a\x01\x7FW\x80cf\xAC\xFE\xFE\x11a\x01OW\x80cf\xAC\xFE\xFE\x14a\x03=W\x80cm\x14\xA9\x87\x14a\x03hW\x80c|\x17#G\x14a\x03\xA7W\x80c\x81\xC0u\x02\x14a\x03\xC1W__\xFD[\x80cK\xD2n\t\x14a\x02\xD9W\x80cT\x01\xED'\x14a\x03\x08W\x80c^Zgu\x14a\x03\x1BW\x80c_\x1F-w\x14a\x03*W__\xFD[\x80c \xB6b\x98\x11a\x01\xBAW\x80c \xB6b\x98\x14a\x02aW\x80c%PGw\x14a\x02vW\x80c,\xD9Y@\x14a\x02\x97W\x80c<\xA5\xA5\xF5\x14a\x02\xB7W__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xE0W\x80c\x08s$a\x14a\x02\x15W\x80c\x1F\x9Bt\xE0\x14a\x026W[__\xFD[a\x02\x02a\x01\xEE6`\x04a++V[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02(a\x02#6`\x04a+DV[a\x05\x89V[`@Qa\x02\x0C\x92\x91\x90a+lV[a\x02Ia\x02D6`\x04a+\xA5V[a\x05\xCEV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x02ta\x02o6`\x04a,\x1AV[a\x06\x1EV[\0[a\x02\x89a\x02\x846`\x04a,\xD5V[a\t=V[`@Qa\x02\x0C\x92\x91\x90a-oV[a\x02\xAAa\x02\xA56`\x04a-\x93V[a\x0B\xF2V[`@Qa\x02\x0C\x91\x90a-\xBDV[a\x02\x02a\x02\xC56`\x04a++V[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\x02a\x02\xE76`\x04a-\x93V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ia\x03\x166`\x04a-\x93V[a\x0C\x8FV[a\x02\x02g\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02ta\x0386`\x04a.\xC4V[a\x0C\xA7V[a\x03Pa\x03K6`\x04a,\xD5V[a\x10\xAAV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\x8F\x7F\0\0\0\0\0\0\0\0\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\x0CV[a\x03\xAF` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\xD4a\x03\xCF6`\x04a/\x7FV[a\x12\0V[`@Qa\x02\x0C\x91\x90a/\xCDV[a\x03\x8Fa\x03\xEF6`\x04a+DV[a\x14\xACV[a\x04\x07a\x04\x026`\x04a0\nV[a\x14\xE0V[`@Qa\x02\x0C\x91\x90a0:V[a\x04'a\x04\"6`\x04a+DV[a\x15vV[`@\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\x0CV[a\x04\x07a\x04b6`\x04a+DV[a\x15\xEDV[a\x02ta\x04u6`\x04a0\x8AV[a\x16zV[a\x02ta\x04\x886`\x04a0\xB2V[a\x17pV[a\x02Ia\x04\x9B6`\x04a++V[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02ta\x04\xC36`\x04a1uV[a\x18\x8DV[a\x02Ia\x04\xD66`\x04a1\xBFV[a\x19~V[a\x02Ia\x04\xE96`\x04a++V[a\x19\xFAV[a\x05\x01a\x04\xFC6`\x04a1\xF9V[a\x1AKV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\x8F\x7F\0\0\0\0\0\0\0\0\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\x02Ia\x05K6`\x04a22V[a\x1A_V[a\x04\x07a\x05^6`\x04a-\x93V[a\x1A\xF2V[a\x02Ia\x05q6`\x04a1\xF9V[a\x1B\xD8V[a\x02ta\x05\x846`\x04a2qV[a\x1C7V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x05\xA2W_\x80\xFD[_\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[`\xFF\x82\x16_\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[`@Q\x80\x91\x03\x90\xFD[_a\x06\x12\x85\x85a\x1D\xA0V[P\x92PP[P\x92\x91PPV[\x7F\0\0\0\0\0\0\0\0\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\x06zW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x9E\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x84a\x06\xE9\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[\x83\x80a\x07{W`@\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\x01a\x05\xFEV[\x82\x81\x14a\x07\xF0W`@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\x05\xFEV[`\xFF\x87\x16_\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\t2W\x85\x85\x82\x81\x81\x10a\x08\x1DWa\x08\x1Da3\xB2V[\x90P` \x02\x01` \x81\x01\x90a\x082\x91\x90a3\xC6V[\x82\x89\x89\x84\x81\x81\x10a\x08EWa\x08Ea3\xB2V[\x90P` \x02\x015\x81T\x81\x10a\x08\\Wa\x08\\a3\xB2V[\x90_R` _ \x01_\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\x08\xC2Wa\x08\xC2a3\xB2V[\x90P` \x02\x015\x81T\x81\x10a\x08\xD9Wa\x08\xD9a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\xFFWa\x08\xFFa3\xB2V[\x90P` \x02\x01` \x81\x01\x90a\t\x14\x91\x90a3\xC6V[`@Qa\t\"\x92\x91\x90a+lV[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x08\x03V[PPPPPPPPPV[``\x803`\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\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA1Wa\t\xA1a.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xCAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE6Wa\t\xE6a.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x0FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\x0B\xE4W_\x87\x87\x83\x81\x81\x10a\n/Wa\n/a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x05\xFEV[__a\n\xC2\x83\x8Da\x1D\xA0V[\x91P\x91P\x80a\x0B_W`@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\x05\xFEV[_a\x0Bk\x8C\x85\x85a\x1F\x87V[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\x80Wa\x0B\x80a3\xB2V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xAA\x84\x82a\"\0V[\x86\x86\x81Q\x81\x10a\x0B\xBCWa\x0B\xBCa3\xB2V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\n\x14\x90PV[P\x90\x97\x90\x96P\x94PPPPPV[_\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\x0C\x82W_\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\x0C*V[PPPP\x90P[\x92\x91PPV[__a\x0C\x9B\x84\x84a\x1A\xF2V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\r\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r'\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rWW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\rr\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[\x81Q\x80a\x0E\x03W`@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\x05\xFEV[`\xFF\x84\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xA1W\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\x0EaWa\x0Eaa3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0EyWa\x0Eya3\xB2V[_\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\x0E\xD6Wa\x0E\xD6a3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xEEWa\x0E\xEEa3\xB2V[_\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\x0F-\x90`\x01\x90a4eV[\x81T\x81\x10a\x0F=Wa\x0F=a3\xB2V[\x90_R` _ \x01\x83\x87\x83\x81Q\x81\x10a\x0FXWa\x0FXa3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0FpWa\x0Fpa3\xB2V[_\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\x0F\xC2Wa\x0F\xC2a4xV[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x0F\xE8\x90`\x01\x90a4eV[\x81T\x81\x10a\x0F\xF8Wa\x0F\xF8a3\xB2V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10&Wa\x10&a3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x10>Wa\x10>a3\xB2V[\x90_R` _ \x01_a\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\x10yWa\x10ya4xV[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0E!V[PPPPPPPV[_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\xF3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_\x80[\x83\x81\x10\x15a\x11\xF6W_\x85\x85\x83\x81\x81\x10a\x11\x11Wa\x11\x11a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x05\xFEV[__a\x11\xAC\x83\x8Ba\x1D\xA0V[\x91P\x91P\x80a\x11\xCDW_\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[_a\x11\xD9\x8A\x85\x85a\x1F\x87V[\x90Pa\x11\xE5\x84\x82a\"\0V[PP`\x01\x90\x93\x01\x92Pa\x10\xF6\x91PPV[P\x95\x94PPPPPV[``_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\x1BWa\x12\x1Ba.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x14\xA1W_\x85\x85\x83\x81\x81\x10a\x12dWa\x12da3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x05\xFEV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13*Wa\x13*a3\xB2V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x13\xD5W`@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\x05\xFEV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x14\x96W`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14\x17\x84\x86a4eV[a\x14!\x91\x90a4eV[\x81T\x81\x10a\x141Wa\x141a3\xB2V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\x8EW`\x01a\x14S\x82\x84a4eV[a\x14]\x91\x90a4eV[\x85\x85\x81Q\x81\x10a\x14oWa\x14oa3\xB2V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x14\x96V[`\x01\x01a\x13\xE9V[PPP`\x01\x01a\x12IV[P\x90P[\x93\x92PPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x14\xC5W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R_\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\x15$Wa\x15$a3\xB2V[_\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_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x15\xACWa\x15\xACa3\xB2V[_\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_\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\x16)Wa\x16)a3\xB2V[_\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[\x7F\0\0\0\0\0\0\0\0\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\x16\xD6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xFA\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\x17E\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17aW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[a\x17k\x83\x83a#qV[PPPV[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\x17\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_[\x81\x81\x10\x15a\x18\x87W_\x83\x83\x83\x81\x81\x10a\x17\xD5Wa\x17\xD5a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x05\xFEV[_a\x18p\x86\x83_a\x1F\x87V[\x90Pa\x18|\x82\x82a\"\0V[PPP`\x01\x01a\x17\xBAV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x18\xE9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\r\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19=W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\x19X\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x19tW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[a\x17k\x83\x83a#\xD9V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x19\xA4Wa\x19\xA4a3\xB2V[_\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\x0C\x9B\x81\x85a'\xF6V[`\xFF\x81\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\x1A\x91a4eV[\x81T\x81\x10a\x1A*Wa\x1A*a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1AW\x84\x84\x84a)oV[\x94\x93PPPPV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\x8FWa\x1A\x8Fa3\xB2V[_\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\x1A\xE5\x81\x86a'\xF6V[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R_\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\x01\x81\x90R\x91\x92\x91\x82\x90\x03a\x1BNW\x91Pa\x0C\x89\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1Bt`\x01\x84a4eV[\x81T\x81\x10a\x1B\x84Wa\x1B\x84a3\xB2V[_\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\x0C\x89\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1B\xFE\x85\x85\x85a)oV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\x14Wa\x1C\x14a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1C\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x1C\xFCW`@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\x05\xFEV[a\x1D\x06\x83\x82a#\xD9V[a\x1D\x10\x83\x83a#qV[PP`\xFF\x16_\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[____a\x1D\xBC\x86`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90\x91P`\xFF\x87\x16_\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\x1E/\x92\x8C\x92\x01a4\x8CV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EIW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1Ep\x91\x90\x81\x01\x90a4\xEDV[\x90P_[\x83\x81\x10\x15a\x1FTW`\xFF\x89\x16_\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1E\x9FWa\x1E\x9Fa3\xB2V[_\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\x1E\xECWa\x1E\xECa3\xB2V[` \x02` \x01\x01Q\x11\x15a\x1FLWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F#Wa\x1F#a3\xB2V[` \x02` \x01\x01Qa\x1F5\x91\x90a5sV[a\x1F?\x91\x90a5\x8AV[a\x1FI\x90\x86a5\xA9V[\x94P[`\x01\x01a\x1EtV[PPP`\xFF\x86\x16_\x90\x81R` \x81\x90R`@\x90 T\x91\x93PP`\x01`\x01``\x1B\x03\x90\x81\x16\x90\x83\x16\x10\x15\x90P[\x92P\x92\x90PV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80\x82\x03a KW_\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!\xA6V[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a q`\x01\x84a4eV[\x81T\x81\x10a \x81Wa \x81a3\xB2V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a \xB7W_\x93PPPPa\x14\xA5V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a \xEFW\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua!\xA4V[\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_\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!\xF6\x82\x85a*\xD2V[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"#\x90\x84a4eV[\x81T\x81\x10a\"3Wa\"3a3\xB2V[\x90_R` _ \x01\x90P\x83_\x03a\"^WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\x89\x90PV[\x80T_\x90a\"|\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a*\xE9V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\"\xB7W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua#hV[\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_\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_\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[_\x81Q\x11a$V[P\x93\x94\x93PPPPV[`@\x81R_a-\x81`@\x83\x01\x85a-,V[\x82\x81\x03` \x84\x01Ra#h\x81\x85a-,V[__`@\x83\x85\x03\x12\x15a-\xA4W__\xFD[\x825\x91Pa-\xB4` \x84\x01a+\x16V[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a.+Wa.\x15\x83\x85Qc\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a-\xD6V[P\x90\x95\x94PPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.lWa.la.6V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x9AWa.\x9Aa.6V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a.\xBAWa.\xBAa.6V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a.\xD5W__\xFD[a.\xDE\x83a+\x16V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\x08W__\xFD[\x805a/\x1Ba/\x16\x82a.\xA2V[a.rV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a/?\xA9\xBC*%\x8C\xA4\xE9}\xBDu\x08xD\xA3K\x07SJ\x15\x07dsolcC\0\x08\x1B\x003a\x01\xC0`@R4\x80\x15a\0\x10W__\xFD[P`@Qa_N8\x03\x80a_N\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02BV[`@\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@\x0Fa\x01-\x81\x84\x84`@\x80Q` \x81\x01\x85\x90R\x90\x81\x01\x83\x90R``\x81\x01\x82\x90RF`\x80\x82\x01R0`\xA0\x82\x01R_\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\xA0Ra\x01ea\x01nV[PPPPa\x02\x9EV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x01\xD9W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x02)W_\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\x14a\x02?W__\xFD[PV[____`\x80\x85\x87\x03\x12\x15a\x02UW__\xFD[\x84Qa\x02`\x81a\x02+V[` \x86\x01Q\x90\x94Pa\x02q\x81a\x02+V[`@\x86\x01Q\x90\x93Pa\x02\x82\x81a\x02+V[``\x86\x01Q\x90\x92Pa\x02\x93\x81a\x02+V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qa[\xB5a\x03\x99_9_\x81\x81a\x06(\x01R\x81\x81a\x10\xDD\x01R\x81\x81a\x1F\x83\x01R\x81\x81a,\x7F\x01R\x81\x81a4l\x01Ra:\"\x01R_\x81\x81a\x05n\x01R\x81\x81a\x1F\x0E\x01R\x81\x81a#\xA2\x01R\x81\x81a,\x04\x01R\x81\x81a3\xC8\x01R\x81\x81a6\x0E\x01Ra9\xA6\x01R_\x81\x81a\x054\x01R\x81\x81a\x0E\x82\x01R\x81\x81a\x1FL\x01R\x81\x81a+\x8B\x01R\x81\x81a-`\x01R\x81\x81a-\xD7\x01R\x81\x81a3M\x01Ra:\x99\x01R_\x81\x81a\x04x\x01R\x81\x81a*\xE7\x01Ra2\x9B\x01R_a<\x98\x01R_a<\xE7\x01R_a<\xC2\x01R_a<\x1B\x01R_a\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xA2a\x06\x7F6`\x04aN\x9BV[a\x1A\xDCV[a\x06\x97a\x06\x926`\x04aODV[a\x1CNV[`@Qa\x02\xCD\x91\x90aO\xE9V[a\x02\xC3\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xA2a\x06\xD96`\x04aP1V[a\x1C\xFBV[`\x9CTa\x02\xC3V[a\x02\xA2a\x06\xF46`\x04aQ\x17V[a\x1D`V[a\x02\xA2a\x07\x076`\x04aR\xBAV[a\x1DsV[a\x07za\x07\x1A6`\x04aI\x9BV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xCDV[a\x02\xA2a\x07\xBC6`\x04aIPV[a fV[a\x02\xA2a\x07\xCF6`\x04aG\x9DV[a \xDCV[a\x08\x02a\x07\xE26`\x04aIPV[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xCD\x91\x90aS\x90V[`\x01T`\x02\x90`\x04\x90\x81\x16\x03a\x08@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\t\x12W_\x84\x84\x83\x81\x81\x10a\x08]Wa\x08]aS\xD5V[\x90P` \x02\x01` \x81\x01\x90a\x08r\x91\x90aIPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\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\x08\xBCWa\x08\xBCaJrV[`\x02\x81\x11\x15a\x08\xCDWa\x08\xCDaJrV[\x90RP\x80Q\x90\x91P_a\x08\xDF\x82a\"5V[\x90P_a\x08\xF4\x82`\x01`\x01`\xC0\x1B\x03\x16a\"\x9CV[\x90Pa\t\x01\x85\x85\x83a#eV[PP`\x01\x90\x93\x01\x92Pa\x08B\x91PPV[PPPPV[_\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\t:Wa\t:aS\xD5V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\n3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x087V[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nYWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x087V[`@\x01Q\x94\x93PPPPV[`\x013_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0B4Wa\x0B4aJrV[\x14a\x0B\xA7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x087V[3_\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0B\xE7\x90\x84\x90aT\x17V[`@Q\x80\x91\x03\x90\xA2PV[_`\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\x0CBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cf\x91\x90aT)V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aTDV[a\x0C\x9F\x81a$NV[PV[_T`@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\x0C\xECW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x10\x91\x90aT\x8EV[a\r,W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aT\xADV[`\x01T\x81\x81\x16\x14a\r\xA5W`@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\x087V[`\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\x0B\xE7V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_\x83\x81R`\x98` R`@\x90 \x80T\x83\x90\x81\x10a\x0E\x17Wa\x0E\x17aS\xD5V[_\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_\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\x0E\xCFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Ed\x91\x90aT)V[a\x0E\xFBa%QV[a\x0C\x9F\x81a%\xB0V[a\x0F\x0Ca%QV[a\x0C\x9F\x81a&\x19V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Eda\x0F\x8E\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\x0Fs\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&\x82V[a&\xCEV[`\x01T`\x02\x90`\x04\x90\x81\x16\x03a\x0F\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[_a\x10\x01\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_\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa'X\x90PV[\x90P\x84\x83\x14a\x10qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a[ _9_Q\x90_R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\x087V[_[\x83\x81\x10\x15a\x14zW_\x85\x85\x83\x81\x81\x10a\x10\x8EWa\x10\x8EaS\xD5V[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P_\x89\x89\x85\x81\x81\x10a\x10\xAEWa\x10\xAEaS\xD5V[\x90P` \x02\x81\x01\x90a\x10\xC0\x91\x90aT\xF5V[`@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*W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11N\x91\x90aU:V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x11\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R_Q` a[ _9_Q\x90_R`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\x087V[_\x80[\x82\x81\x10\x15a\x14 W_\x84\x84\x83\x81\x81\x10a\x12\x07Wa\x12\x07aS\xD5V[\x90P` \x02\x01` \x81\x01\x90a\x12\x1C\x91\x90aIPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\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\x12fWa\x12faJrV[`\x02\x81\x11\x15a\x12wWa\x12waJrV[\x90RP\x80Q\x90\x91P_a\x12\x89\x82a\"5V[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13\x0CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a[ _9_Q\x90_R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x087V[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R_Q` a[ _9_Q\x90_R`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\x087V[Pa\x14\x13\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x13\xCD\x91\x90aUiV[\x92a\x13\xDA\x93\x92\x91\x90aU|V[\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_\x92\x01\x91\x90\x91RPa#e\x92PPPV[P\x90\x92PP`\x01\x01a\x11\xECV[P`\xFF\x84\x16_\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\x80`\x01\x01\x90Pa\x10sV[PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x14\xDBWa\x14\xDBaJrV[`\x02\x81\x11\x15a\x14\xECWa\x14\xECaJrV[\x90RP\x92\x91PPV[_T`@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\x15?W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15c\x91\x90aT\x8EV[a\x15\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aT\xADV[_\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\x15\xC5a%QV[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16EW`@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\x087V[a\x16O\x83\x83a'\xE8V[PPPV[`\x9C\x81\x81T\x81\x10a\x16cW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x16\xFCW`@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\x087V[a\x16O\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[a\x17Ca%QV[a\x17L_a,\xEEV[V[_a\x17\x8D\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\x0Fs\x96\x95\x94\x93\x92\x91\x90aU\xA3V[\x96\x95PPPPPPV[_a\x0Ed\x82a\"5V[_a\x17\xB4`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T_\x91\x90\x81\x16\x03a\x17\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[\x83\x89\x14a\x18bW`@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\x087V[_a\x18m3\x88a-?V[\x90Pa\x18\xCC3\x82\x88\x88\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x18\xC1Wa\x18\xB2`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aV(V[\x81R` \x01\x90`\x01\x01\x90a\x18\x95V[PPPPP\x87a.mV[_a\x19\x113\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_\x92\x01\x91\x90\x91RP\x8C\x92Pa/\xF8\x91PPV[\x90P_[\x8B\x81\x10\x15a\x1A\xCDW_`\x97_\x8F\x8F\x85\x81\x81\x10a\x193Wa\x193aS\xD5V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \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\x19\x9FWa\x19\x9FaS\xD5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1A\xC4Wa\x1A@\x8E\x8E\x84\x81\x81\x10a\x19\xC8Wa\x19\xC8aS\xD5V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x19\xEBWa\x19\xEBaS\xD5V[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1A\nWa\x1A\naS\xD5V[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A$Wa\x1A$aS\xD5V[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A:\x91\x90aV(V[\x86a4\xF5V[a\x1A\xC4\x89\x89\x84\x81\x81\x10a\x1AUWa\x1AUaS\xD5V[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1Am\x91\x90aIPV[\x8F\x8F\x85\x90\x86`\x01a\x1A~\x91\x90aUiV[\x92a\x1A\x8B\x93\x92\x91\x90aU|V[\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[P`\x01\x01a\x19\x15V[PPPPPPPPPPPPPV[`\x01\x80T_\x91\x90\x81\x16\x03a\x1B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[_a\x1B\r3\x85a-?V[\x90P_a\x1BT3\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_\x92\x01\x91\x90\x91RP\x8C\x92Pa/\xF8\x91PPV[Q\x90P_[\x88\x81\x10\x15a\x1CBW_\x8A\x8A\x83\x81\x81\x10a\x1BtWa\x1BtaS\xD5V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x97` R`@\x90 T\x85Q\x91\x93Pc\xFF\xFF\xFF\xFF\x16\x91P\x84\x90\x84\x90\x81\x10a\x1B\xA9Wa\x1B\xA9aS\xD5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C9W`@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\x087V[P`\x01\x01a\x1BYV[PPPPPPPPPPV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1CjWa\x1CjaG\xFAV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1C\x93W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1C\xF3Wa\x1C\xC4\x85\x85\x83\x81Q\x81\x10a\x1C\xB7Wa\x1C\xB7aS\xD5V[` \x02` \x01\x01Qa7\xC0V[\x82\x82\x81Q\x81\x10a\x1C\xD6Wa\x1C\xD6aS\xD5V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C\x98V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x03a\x1D!W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[a\x16O3\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[a\x1Dha%QV[a\x16O\x83\x83\x83a8\xEEV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1D\x91WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1D\xAAWP0;\x15\x80\x15a\x1D\xAAWP_T`\xFF\x16`\x01\x14[a\x1E\rW`@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\x087V[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E.W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E@WP\x81Q\x83Q\x14[a\x1E\xAAW`@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\x087V[a\x1E\xB3\x89a,\xEEV[a\x1E\xBD\x86\x86a:\xF6V[a\x1E\xC6\x88a%\xB0V[a\x1E\xCF\x87a&\x19V[`\x9C\x80T`\x01\x81\x81\x01\x83U_\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 \x15Wa \r\x85\x82\x81Q\x81\x10a\x1F\xCCWa\x1F\xCCaS\xD5V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a\x1F\xE6Wa\x1F\xE6aS\xD5V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \0Wa \0aS\xD5V[` \x02` \x01\x01Qa8\xEEV[`\x01\x01a\x1F\xAEV[P\x80\x15a [W_\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 na%QV[`\x01`\x01`\xA0\x1B\x03\x81\x16a \xD3W`@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\x087V[a\x0C\x9F\x81a,\xEEV[_`\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!,W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!P\x91\x90aT)V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a!\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aTDV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a!\xFEW`@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\x087V[`\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\x0B\xE7V[_\x81\x81R`\x98` R`@\x81 T\x80\x82\x03a\"RWP_\x92\x91PPV[_\x83\x81R`\x98` R`@\x90 a\"j`\x01\x83aVBV[\x81T\x81\x10a\"zWa\"zaS\xD5V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[``__a\"\xA9\x84a;\xE5V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xC4Wa\"\xC4aG\xFAV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"\xEEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a#\x05WPa\x01\0\x81\x10[\x15a#[W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#KW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#.Wa#.aS\xD5V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a#T\x81aVUV[\x90Pa\"\xF4V[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a#}Wa#}aJrV[\x14a#\x87WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\x1B\x81R_\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\x90cf\xAC\xFE\xFE\x90a#\xDB\x90\x88\x90\x86\x90\x88\x90`\x04\x01aVmV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a#\xF7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\x1B\x91\x90aV\x9CV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$GWa$G\x85a$B\x83`\x01`\x01`\xC0\x1B\x03\x16a\"\x9CV[a(\x94V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a$\xDCW`@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\x087V[_T`@\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_\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[3a%Za\x17\xA1V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17LW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x087V[`\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[_a\x0Eda&\x8Ea<\x0FV[\x83`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x83\x90R`B\x81\x01\x82\x90R_\x90`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_\x80\x80a&\xFB_Q` a[`_9_Q\x90_R\x86aV\xD6V[\x90P[a'\x07\x81a=5V[\x90\x93P\x91P_Q` a[`_9_Q\x90_R\x82\x83\t\x83\x03a'?W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a[`_9_Q\x90_R`\x01\x82\x08\x90Pa&\xFEV[__a'c\x84a=\xB1V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a'\xE1W`@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\x087V[\x93\x92PPPV[`\xFF\x82\x16_\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[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a(\xC7Wa(\xC7aJrV[\x14a)FW`@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\x087V[`\x96T_\x90a)Y\x90\x85\x90`\xFF\x16a'XV[\x90P_a)e\x83a\"5V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a)\xE3W`@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\x087V[a)\xFA`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a*\x92W`@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\x087V[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a*\xAB\x84\x82a?4V[`\x01`\x01`\xC0\x1B\x03\x81\x16a+tW`\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a+(W__\xFD[PZ\xF1\x15\x80\x15a+:W=__>=_\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_\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+\xC2\x90\x8A\x90\x8A\x90`\x04\x01aV\xE9V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a+\xD9W__\xFD[PZ\xF1\x15\x80\x15a+\xEBW=__>=_\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,=\x90\x87\x90\x8A\x90`\x04\x01aW\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a,TW__\xFD[PZ\xF1\x15\x80\x15a,fW=__>=_\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,\xB8\x90\x87\x90\x8A\x90`\x04\x01aW\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a,\xCFW__\xFD[PZ\xF1\x15\x80\x15a,\xE1W=__>=_\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_\x90\xA3PPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R_\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-\xA7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a-\xCB\x91\x90aW$V[\x90P_\x81\x90\x03a\x0EdW\x7F\0\0\0\0\0\0\0\0\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\x84a.\x0F\x87a\x0F\x15V[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a.-\x93\x92\x91\x90aW;V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a.IW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\xE1\x91\x90aW$V[` \x80\x82\x01Q_\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\x12W`@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\x087V[B\x81`@\x01Q\x10\x15a/\xA7W`@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\x087V[` \x80\x82\x01\x80Q_\x90\x81R`\x9A\x90\x92R`@\x91\x82\x90 \x80T`\xFF\x19\x16`\x01\x17\x90U`\x9DT\x90Q\x91\x83\x01Qa\t\x12\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a/\xF1\x91\x88\x91\x88\x91\x88\x91\x90a\x17NV[\x83Qa@\xF0V[a0\x1C`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_a0b\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_\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa'X\x90PV[\x90P_a0n\x88a\"5V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a0\xECW`@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\x087V[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a1\xA2W`@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\x087V[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a1\xBB\x89\x82a?4V[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa1\xEB\x91\x90aT\x17V[`@Q\x80\x91\x03\x90\xA2`\x01`\x01`\x01`\xA0\x1B\x03\x8B\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a2$Wa2$aJrV[\x14a36W`@\x80Q\x80\x82\x01\x82R\x8A\x81R`\x01` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x8F\x16_\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\x15a2~Wa2~aJrV[\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}\x90a2\xD3\x90\x8D\x90\x89\x90`\x04\x01aW\xABV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a2\xEAW__\xFD[PZ\xF1\x15\x80\x15a2\xFCW=__>=_\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_\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\x90a3\x86\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aX\x1DV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a3\x9DW__\xFD[PZ\xF1\x15\x80\x15a3\xAFW=__>=_\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\x91Pa4\x05\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aXAV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4 W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4G\x91\x90\x81\x01\x90aX\xCCV[`@\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\x90a4\xA4\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01aY/V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4\xBFW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4\xE6\x91\x90\x81\x01\x90aYHV[\x84RPPP\x96\x95PPPPPPV[` \x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x80\x82\x16_\x81\x81R`\x99\x90\x94R`@\x90\x93 T\x91\x92\x90\x87\x16\x03a5rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x087V[\x87`\xFF\x16\x84_\x01Q`\xFF\x16\x14a5\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01R\x7Frn: quorumNumber not the same as`d\x82\x01Rf\x08\x1C\xDAY\xDB\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x087V[`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`\xFF\x89\x16`$\x82\x01R_\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\x15a6[W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a6\x7F\x91\x90aY\xD7V[\x90Pa6\x8B\x81\x85aB\xA8V[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a7\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R_Q` a[@_9_Q\x90_R`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\x087V[a7'\x88\x85aB\xCBV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a [W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01R\x7Frn: cannot kick operator with mo`d\x82\x01R\x7Fre than kickBIPsOfTotalStake\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x087V[_\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a8DW`\x01a7\xE4\x82\x84aVBV[a7\xEE\x91\x90aVBV[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98_\x86\x81R` \x01\x90\x81R` \x01_ \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a8\x1FWa8\x1FaS\xD5V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a8=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a:mW__\xFD[PZ\xF1\x15\x80\x15a:\x7FW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a:\xE4W__\xFD[PZ\xF1\x15\x80\x15a [W=__>=_\xFD[_Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a;\x1CWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a;\x9EW`@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\x087V[`\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;\xE1\x82a$NV[PPV[_\x80[\x82\x15a\x0EdWa;\xF9`\x01\x84aVBV[\x90\x92\x16\x91\x80a<\x07\x81aZ\x89V[\x91PPa;\xE8V[_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\x16\x14\x80\x15a9W`@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\x087V[\x81Q_\x03a>HWP_\x91\x90PV[__\x83_\x81Q\x81\x10a>\\Wa>\\aS\xD5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a?+W\x84\x81\x81Q\x81\x10a>\x8AWa>\x8AaS\xD5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a?\x1FW`@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\x087V[\x91\x81\x17\x91`\x01\x01a>oV[P\x90\x93\x92PPPV[_\x82\x81R`\x98` R`@\x81 T\x90\x81\x90\x03a?\xDAW_\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[_\x83\x81R`\x98` R`@\x81 a?\xF2`\x01\x84aVBV[\x81T\x81\x10a@\x02Wa@\x02aS\xD5V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a@CW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t\x12V[\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_\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;\x15aB\x08W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA0\x90\x86\x90\x86\x90`\x04\x01aW\x0CV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aAKW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aAo\x91\x90aZ\xA9V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16OW`@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\x087V[\x82`\x01`\x01`\xA0\x1B\x03\x16aB\x1C\x83\x83aC\x8CV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16OW`@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\x087V[` \x81\x01Q_\x90a'\x10\x90aB\xC1\x90a\xFF\xFF\x16\x85aZ\xD0V[a'\xE1\x91\x90aZ\xF2V[`@\x81\x01Q_\x90a'\x10\x90aB\xC1\x90a\xFF\xFF\x16\x85aZ\xD0V[__aB\xEEaF\xE3V[aB\xF6aG\x01V[` \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\x80aC3W\xFE[P\x82aC\x81W`@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\x087V[PQ\x95\x94PPPPPV[___aC\x99\x85\x85aC\xA6V[\x91P\x91Pa\x1C\xF3\x81aD\x11V[__\x82Q`A\x03aC\xDAW` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1AaC\xCE\x87\x82\x85\x85aE\xC6V[\x94P\x94PPPPaD\nV[\x82Q`@\x03aD\x03W` \x83\x01Q`@\x84\x01QaC\xF8\x86\x83\x83aF\xABV[\x93P\x93PPPaD\nV[P_\x90P`\x02[\x92P\x92\x90PV[_\x81`\x04\x81\x11\x15aD$WaD$aJrV[\x03aD,WPV[`\x01\x81`\x04\x81\x11\x15aD@WaD@aJrV[\x03aD\x8DW`@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\x087V[`\x02\x81`\x04\x81\x11\x15aD\xA1WaD\xA1aJrV[\x03aD\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x087V[`\x03\x81`\x04\x81\x11\x15aE\x02WaE\x02aJrV[\x03aEZW`@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\x087V[`\x04\x81`\x04\x81\x11\x15aEnWaEnaJrV[\x03a\x0C\x9FW`@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\x087V[_\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\x15aE\xFBWP_\x90P`\x03aF\xA2V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aF\x13WP\x84`\xFF\x16`\x1C\x14\x15[\x15aF#WP_\x90P`\x04aF\xA2V[`@\x80Q_\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\x15aFtW=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aF\x9CW_`\x01\x92P\x92PPaF\xA2V[\x91P_\x90P[\x94P\x94\x92PPPV[_\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aF\xC7`\xFF\x86\x90\x1C`\x1BaUiV[\x90PaF\xD5\x87\x82\x88\x85aE\xC6V[\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[__\x83`\x1F\x84\x01\x12aG/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aGEW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aD\nW__\xFD[__` \x83\x85\x03\x12\x15aGpW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aG\x85W__\xFD[aG\x91\x85\x82\x86\x01aG\x1FV[\x90\x96\x90\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15aG\xADW__\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x9FW__\xFD[___``\x84\x86\x03\x12\x15aG\xD7W__\xFD[\x835\x92P` \x84\x015aG\xE9\x81aG\xB4V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH0WaH0aG\xFAV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH0WaH0aG\xFAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH\x80WaH\x80aG\xFAV[`@R\x91\x90PV[__`\x01`\x01`@\x1B\x03\x84\x11\x15aH\xA1WaH\xA1aG\xFAV[P`\x1F\x83\x01`\x1F\x19\x16` \x01aH\xB6\x81aHXV[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15aH\xCAW__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aH\xF0W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x05W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13aI\x15W__\xFD[aI$\x84\x825` \x84\x01aH\x88V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\x9FW__\xFD[\x805aIK\x81aI,V[\x91\x90PV[_` \x82\x84\x03\x12\x15aI`W__\xFD[\x815a'\xE1\x81aI,V[__`@\x83\x85\x03\x12\x15aI|W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aIKW__\xFD[_` \x82\x84\x03\x12\x15aI\xABW__\xFD[a'\xE1\x82aI\x8BV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0EdV[__\x83`\x1F\x84\x01\x12aI\xDBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xF1W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aD\nW__\xFD[____`@\x85\x87\x03\x12\x15aJ\x1BW__\xFD[\x845`\x01`\x01`@\x1B\x03\x81\x11\x15aJ0W__\xFD[aJ<\x87\x82\x88\x01aG\x1FV[\x90\x95P\x93PP` \x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aJZW__\xFD[aJf\x87\x82\x88\x01aI\xCBV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10aJ\xA2WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aJ\xC1\x90\x84\x01\x82aJ\x86V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aIKW__\xFD[_``\x82\x84\x03\x12\x15aJ\xE9W__\xFD[aJ\xF1aH\x0EV[\x90P\x815aJ\xFE\x81aG\xB4V[\x81RaK\x0C` \x83\x01aJ\xC8V[` \x82\x01RaK\x1D`@\x83\x01aJ\xC8V[`@\x82\x01R\x92\x91PPV[__`\x80\x83\x85\x03\x12\x15aK9W__\xFD[aKB\x83aI\x8BV[\x91PaKQ\x84` \x85\x01aJ\xD9V[\x90P\x92P\x92\x90PV[___`@\x84\x86\x03\x12\x15aKlW__\xFD[\x835aKw\x81aI,V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aK\x91W__\xFD[aK\x9D\x86\x82\x87\x01aI\xCBV[\x94\x97\x90\x96P\x93\x94PPPPV[_`\x01`\x01`@\x1B\x03\x82\x11\x15aK\xC2WaK\xC2aG\xFAV[P`\x05\x1B` \x01\x90V[_`@\x82\x84\x03\x12\x15aK\xDCW__\xFD[aK\xE4aH6V[\x90PaK\xEF\x82aI\x8BV[\x81R` \x82\x015aK\xFF\x81aI,V[` \x82\x01R\x92\x91PPV[_____`\xA0\x86\x88\x03\x12\x15aL\x1EW__\xFD[\x855aL)\x81aI,V[\x94P` \x86\x015\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aLJW__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aLZW__\xFD[\x805aLmaLh\x82aK\xAAV[aHXV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x85\x01\x01\x92P\x8A\x83\x11\x15aL\x8EW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aL\xBAWaL\xA7\x8B\x85aK\xCCV[\x82R` \x82\x01\x91P`@\x84\x01\x93PaL\x95V[\x97\x9A\x96\x99P\x96\x97``\x81\x015\x97P`\x80\x015\x95\x94PPPPPV[_a\x01\0\x82\x84\x03\x12\x15aL\xE6W__\xFD[P\x91\x90PV[__\x83`\x1F\x84\x01\x12aL\xFCW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x12W__\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aD\nW__\xFD[_``\x82\x84\x03\x12\x15aM = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationCall {} + ///Container type for the return parameters of the [`blsApkRegistryImplementation()`](blsApkRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct emptyContractCall {} + ///Container type for the return parameters of the [`emptyContract()`](emptyContractCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct emptyContractReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryImplementationCall {} + ///Container type for the return parameters of the [`indexRegistryImplementation()`](indexRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockAvsPauserRegCall {} + ///Container type for the return parameters of the [`mockAvsPauserReg()`](mockAvsPauserRegCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockAvsPauserRegReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockAvsProxyAdminCall {} + ///Container type for the return parameters of the [`mockAvsProxyAdmin()`](mockAvsProxyAdminCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockAvsProxyAdminReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockAvsServiceManagerCall {} + ///Container type for the return parameters of the [`mockAvsServiceManager()`](mockAvsServiceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockAvsServiceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockAvsServiceManagerImplementationCall {} + ///Container type for the return parameters of the [`mockAvsServiceManagerImplementation()`](mockAvsServiceManagerImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockAvsServiceManagerImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorStateRetrieverCall {} + ///Container type for the return parameters of the [`operatorStateRetriever()`](operatorStateRetrieverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorStateRetrieverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationCall {} + ///Container type for the return parameters of the [`registryCoordinatorImplementation()`](registryCoordinatorImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryImplementationCall {} + ///Container type for the return parameters of the [`stakeRegistryImplementation()`](stakeRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/deploy/deploymockavsregistries.rs similarity index 90% rename from crates/utils/src/deploymockavsregistries.rs rename to crates/utils/src/deploy/deploymockavsregistries.rs index 8e1e9f5b..10ebdcc8 100644 --- a/crates/utils/src/deploymockavsregistries.rs +++ b/crates/utils/src/deploy/deploymockavsregistries.rs @@ -193,44 +193,54 @@ interface DeployMockAvsRegistries { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod DeployMockAvsRegistries { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50610235806100316000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806380e064d41161008c5780639e9923c2116100665780639e9923c2146101a3578063e18272c2146101b6578063e3a8b345146101c9578063f8ccbf47146101dc57600080fd5b806380e064d41461016a5780638b2c69eb1461017d5780639e3ba4371461019057600080fd5b80630331ed2a146100d457806339a5fcfa1461010b5780634ca22c3f1461011e5780635df459461461013157806368304835146101445780636d14a98714610157575b600080fd5b600c546100ee90630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600f546100ee906001600160a01b031681565b6016546100ee906001600160a01b031681565b6010546100ee906001600160a01b031681565b6014546100ee906001600160a01b031681565b600e546100ee906001600160a01b031681565b600d546100ee906001600160a01b031681565b6013546100ee906001600160a01b031681565b6011546100ee906001600160a01b031681565b6012546100ee906001600160a01b031681565b6015546100ee906001600160a01b031681565b6017546100ee906001600160a01b031681565b600c546101ef9062010000900460ff1681565b604051901515815260200161010256fea26469706673582212201453d4bf05f8c497d9ead2ee542204814abcb8c1aefed00926a25edb0de539a064736f6c634300080c0033 + ///0x6080604052600c805462ff00ff191662010001179055348015601f575f5ffd5b506102308061002d5f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806380e064d4116100885780639e9923c2116100635780639e9923c21461019e578063e18272c2146101b1578063e3a8b345146101c4578063f8ccbf47146101d7575f5ffd5b806380e064d4146101655780638b2c69eb146101785780639e3ba4371461018b575f5ffd5b80630331ed2a146100cf57806339a5fcfa146101065780634ca22c3f146101195780635df459461461012c578063683048351461013f5780636d14a98714610152575b5f5ffd5b600c546100e990630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600f546100e9906001600160a01b031681565b6016546100e9906001600160a01b031681565b6010546100e9906001600160a01b031681565b6014546100e9906001600160a01b031681565b600e546100e9906001600160a01b031681565b600d546100e9906001600160a01b031681565b6013546100e9906001600160a01b031681565b6011546100e9906001600160a01b031681565b6012546100e9906001600160a01b031681565b6015546100e9906001600160a01b031681565b6017546100e9906001600160a01b031681565b600c546101ea9062010000900460ff1681565b60405190151581526020016100fd56fea2646970667358221220bb1117bb4d4a668b5076febb1c94935aa103b52da50f5f3e395fbc63db27fca664736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15`\x1FW__\xFD[Pa\x020\x80a\0-_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xCBW_5`\xE0\x1C\x80c\x80\xE0d\xD4\x11a\0\x88W\x80c\x9E\x99#\xC2\x11a\0cW\x80c\x9E\x99#\xC2\x14a\x01\x9EW\x80c\xE1\x82r\xC2\x14a\x01\xB1W\x80c\xE3\xA8\xB3E\x14a\x01\xC4W\x80c\xF8\xCC\xBFG\x14a\x01\xD7W__\xFD[\x80c\x80\xE0d\xD4\x14a\x01eW\x80c\x8B,i\xEB\x14a\x01xW\x80c\x9E;\xA47\x14a\x01\x8BW__\xFD[\x80c\x031\xED*\x14a\0\xCFW\x80c9\xA5\xFC\xFA\x14a\x01\x06W\x80cL\xA2,?\x14a\x01\x19W\x80c]\xF4YF\x14a\x01,W\x80ch0H5\x14a\x01?W\x80cm\x14\xA9\x87\x14a\x01RW[__\xFD[`\x0CTa\0\xE9\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\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x16Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x10Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x14Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0ETa\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\rTa\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x13Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x11Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x12Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x15Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x17Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0CTa\x01\xEA\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xFDV\xFE\xA2dipfsX\"\x12 \xBB\x11\x17\xBBMJf\x8BPv\xFE\xBB\x1C\x94\x93Z\xA1\x03\xB5-\xA5\x0F_>9_\xBCc\xDB'\xFC\xA6dsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806380e064d41161008c5780639e9923c2116100665780639e9923c2146101a3578063e18272c2146101b6578063e3a8b345146101c9578063f8ccbf47146101dc57600080fd5b806380e064d41461016a5780638b2c69eb1461017d5780639e3ba4371461019057600080fd5b80630331ed2a146100d457806339a5fcfa1461010b5780634ca22c3f1461011e5780635df459461461013157806368304835146101445780636d14a98714610157575b600080fd5b600c546100ee90630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600f546100ee906001600160a01b031681565b6016546100ee906001600160a01b031681565b6010546100ee906001600160a01b031681565b6014546100ee906001600160a01b031681565b600e546100ee906001600160a01b031681565b600d546100ee906001600160a01b031681565b6013546100ee906001600160a01b031681565b6011546100ee906001600160a01b031681565b6012546100ee906001600160a01b031681565b6015546100ee906001600160a01b031681565b6017546100ee906001600160a01b031681565b600c546101ef9062010000900460ff1681565b604051901515815260200161010256fea26469706673582212201453d4bf05f8c497d9ead2ee542204814abcb8c1aefed00926a25edb0de539a064736f6c634300080c0033 + ///0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806380e064d4116100885780639e9923c2116100635780639e9923c21461019e578063e18272c2146101b1578063e3a8b345146101c4578063f8ccbf47146101d7575f5ffd5b806380e064d4146101655780638b2c69eb146101785780639e3ba4371461018b575f5ffd5b80630331ed2a146100cf57806339a5fcfa146101065780634ca22c3f146101195780635df459461461012c578063683048351461013f5780636d14a98714610152575b5f5ffd5b600c546100e990630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600f546100e9906001600160a01b031681565b6016546100e9906001600160a01b031681565b6010546100e9906001600160a01b031681565b6014546100e9906001600160a01b031681565b600e546100e9906001600160a01b031681565b600d546100e9906001600160a01b031681565b6013546100e9906001600160a01b031681565b6011546100e9906001600160a01b031681565b6012546100e9906001600160a01b031681565b6015546100e9906001600160a01b031681565b6017546100e9906001600160a01b031681565b600c546101ea9062010000900460ff1681565b60405190151581526020016100fd56fea2646970667358221220bb1117bb4d4a668b5076febb1c94935aa103b52da50f5f3e395fbc63db27fca664736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xCBW_5`\xE0\x1C\x80c\x80\xE0d\xD4\x11a\0\x88W\x80c\x9E\x99#\xC2\x11a\0cW\x80c\x9E\x99#\xC2\x14a\x01\x9EW\x80c\xE1\x82r\xC2\x14a\x01\xB1W\x80c\xE3\xA8\xB3E\x14a\x01\xC4W\x80c\xF8\xCC\xBFG\x14a\x01\xD7W__\xFD[\x80c\x80\xE0d\xD4\x14a\x01eW\x80c\x8B,i\xEB\x14a\x01xW\x80c\x9E;\xA47\x14a\x01\x8BW__\xFD[\x80c\x031\xED*\x14a\0\xCFW\x80c9\xA5\xFC\xFA\x14a\x01\x06W\x80cL\xA2,?\x14a\x01\x19W\x80c]\xF4YF\x14a\x01,W\x80ch0H5\x14a\x01?W\x80cm\x14\xA9\x87\x14a\x01RW[__\xFD[`\x0CTa\0\xE9\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\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x16Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x10Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x14Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0ETa\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\rTa\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x13Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x11Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x12Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x15Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x17Ta\0\xE9\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0CTa\x01\xEA\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xFDV\xFE\xA2dipfsX\"\x12 \xBB\x11\x17\xBBMJf\x8BPv\xFE\xBB\x1C\x94\x93Z\xA1\x03\xB5-\xA5\x0F_>9_\xBCc\xDB'\xFC\xA6dsolcC\0\x08\x1B\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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -326,16 +336,21 @@ pub mod DeployMockAvsRegistries { ```solidity function blsApkRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryCall {} ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -431,16 +446,21 @@ pub mod DeployMockAvsRegistries { ```solidity function blsApkRegistryImplementation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryImplementationCall {} ///Container type for the return parameters of the [`blsApkRegistryImplementation()`](blsApkRegistryImplementationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryImplementationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -536,16 +556,21 @@ pub mod DeployMockAvsRegistries { ```solidity function emptyContract() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct emptyContractCall {} ///Container type for the return parameters of the [`emptyContract()`](emptyContractCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct emptyContractReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -641,16 +666,21 @@ pub mod DeployMockAvsRegistries { ```solidity function indexRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryCall {} ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -746,16 +776,21 @@ pub mod DeployMockAvsRegistries { ```solidity function indexRegistryImplementation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryImplementationCall {} ///Container type for the return parameters of the [`indexRegistryImplementation()`](indexRegistryImplementationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryImplementationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -851,16 +886,21 @@ pub mod DeployMockAvsRegistries { ```solidity function mockAvsPauserReg() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct mockAvsPauserRegCall {} ///Container type for the return parameters of the [`mockAvsPauserReg()`](mockAvsPauserRegCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct mockAvsPauserRegReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -956,16 +996,21 @@ pub mod DeployMockAvsRegistries { ```solidity function mockAvsProxyAdmin() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct mockAvsProxyAdminCall {} ///Container type for the return parameters of the [`mockAvsProxyAdmin()`](mockAvsProxyAdminCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct mockAvsProxyAdminReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1061,16 +1106,21 @@ pub mod DeployMockAvsRegistries { ```solidity function operatorStateRetriever() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorStateRetrieverCall {} ///Container type for the return parameters of the [`operatorStateRetriever()`](operatorStateRetrieverCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorStateRetrieverReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1166,16 +1216,21 @@ pub mod DeployMockAvsRegistries { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1271,16 +1326,21 @@ pub mod DeployMockAvsRegistries { ```solidity function registryCoordinatorImplementation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorImplementationCall {} ///Container type for the return parameters of the [`registryCoordinatorImplementation()`](registryCoordinatorImplementationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorImplementationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1376,16 +1436,21 @@ pub mod DeployMockAvsRegistries { ```solidity function stakeRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryCall {} ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1481,16 +1546,21 @@ pub mod DeployMockAvsRegistries { ```solidity function stakeRegistryImplementation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryImplementationCall {} ///Container type for the return parameters of the [`stakeRegistryImplementation()`](stakeRegistryImplementationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryImplementationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/deploy/deploytokensstrategiescreatequorums.rs b/crates/utils/src/deploy/deploytokensstrategiescreatequorums.rs new file mode 100644 index 00000000..ce35d837 --- /dev/null +++ b/crates/utils/src/deploy/deploytokensstrategiescreatequorums.rs @@ -0,0 +1,582 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod DeployTokensStrategiesCreateQuorums { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905569010f0cf064dd59200000600d55348015602d575f5ffd5b50612e468061003b5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063c040622614610038578063f8ccbf4714610042575b5f5ffd5b610040610069565b005b600c546100559062010000900460ff1681565b604051901515815260200160405180910390f35b735fbdb2315678afecb367f032d93f642f64180aa35f61008761032c565b90505f61009261059f565b90505f5f5f516020612dcd5f395f51905f525f1c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156100dd575f5ffd5b505af11580156100ef573d5f5f3e3d5ffd5b505050505f5f516020612dcd5f395f51905f525f1c6001600160a01b03166342cbb15c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561013f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101639190611179565b905046617a691480610176575046610539145b1561022157610196855f015186602001518760e001518860400151610847565b60408051630fe7858560e31b81526004810191909152601160448201527065726332304d6f636b537472617465677960781b60648201526001600160a01b038083166024830152919550919350871690637f3c2c28906084015f604051808303815f87803b158015610206575f5ffd5b505af1158015610218573d5f5f3e3d5ffd5b505050506102b9565b466142680361025d57735c8b55722f421556a2aafb7a3ea63d4c3e5143129250733f1c547b21f65e10480de3ad8e19faac46c9503491506102b9565b60405162461bcd60e51b815260206004820152602660248201527f436f6e66696775726520546f6b656e20616e6420537472617465677920666f726044820152651021b430b4b760d11b60648201526084015b60405180910390fd5b6102c7846020015184610c58565b5f516020612dcd5f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561030e575f5ffd5b505af1158015610320573d5f5f3e3d5ffd5b50505050505050505050565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525f6103ab6040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610d65565b90505f6103ed826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e00815250610f57565b90505f61042f836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c617965725061757365725265670000815250610f57565b90505f610471846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e61676572000000000000815250610f57565b90505f6104ab85604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b815250610f57565b90505f6104ed866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f7279000000000000000000815250610f57565b90505f61052487604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b815250610f57565b90505f61054988604051806060016040528060258152602001612d8760259139610f57565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a08301525f60c083015290911660e082015292915050565b604080516060810182525f80825260208201819052918101919091525f6105fa6040518060400160405280601981526020017f6d6f636b6176735f6465706c6f796d656e745f6f757470757400000000000000815250610d65565b90505f61063c826040518060400160405280602081526020017f2e6164647265737365732e6d6f636b417673536572766963654d616e61676572815250610f57565b90506001600160a01b0381166106ba5760405162461bcd60e51b815260206004820152603a60248201527f4d6f636b417673436f6e7472616374735061727365723a206d6f636b4176735360448201527f6572766963654d616e616765722061646472657373206973203000000000000060648201526084016102b0565b5f6106fa836040518060400160405280601e81526020017f2e6164647265737365732e7265676973747279436f6f7264696e61746f720000815250610f57565b90506001600160a01b0381166107785760405162461bcd60e51b815260206004820152603860248201527f4d6f636b417673436f6e7472616374735061727365723a20726567697374727960448201527f436f6f7264696e61746f7220616464726573732069732030000000000000000060648201526084016102b0565b5f61079b84604051806060016040528060218152602001612dac60219139610f57565b90506001600160a01b0381166108195760405162461bcd60e51b815260206004820152603b60248201527f4d6f636b417673436f6e7472616374735061727365723a206f70657261746f7260448201527f537461746552657472696576657220616464726573732069732030000000000060648201526084016102b0565b604080516060810182526001600160a01b039485168152928416602084015292169181019190915292915050565b5f5f5f6040516108569061115f565b604051809103905ff08015801561086f573d5f5f3e3d5ffd5b50600d546040516340c10f1960e01b815232600482015260248101919091529091506001600160a01b038216906340c10f19906044015f604051808303815f87803b1580156108bc575f5ffd5b505af11580156108ce573d5f5f3e3d5ffd5b505060408051683635c9adc5dea000006024820181905260448201526001600160a01b0385811660648301528a166084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663019e272960e01b17905290515f93508892508a91906109449061116c565b610950939291906111be565b604051809103905ff080158015610969573d5f5f3e3d5ffd5b506040805160018082528183019092529192505f91906020808301908036833701905050905081815f815181106109a2576109a26111fd565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f918160200160208202803683370190505090505f815f815181106109f1576109f16111fd565b9115156020928302919091019091015260405163df5b354760e01b81526001600160a01b0388169063df5b354790610a2f9085908590600401611211565b5f604051808303815f87803b158015610a46575f5ffd5b505af1158015610a58573d5f5f3e3d5ffd5b5050604080518082018252600d81526c1c185c995b9d081bd89a9958dd609a1b60208083019190915282518084018452600981526861646472657373657360b81b918101919091529151634b96303160e11b8152909350909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c606290610ade9084908a9060040161129c565b5f604051808303815f875af1158015610af9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b2091908101906112e8565b50604051634b96303160e11b81525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c606290610b5c9085908a9060040161139b565b5f604051808303815f875af1158015610b77573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b9e91908101906112e8565b6040516388da6d3560e01b81529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d906388da6d3590610bde908790879087906004016113ef565b5f604051808303815f875af1158015610bf9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2091908101906112e8565b9050610c4481604051806060016040528060248152602001612ded60249139610fd8565b50959c949b50939950505050505050505050565b604080516060810182526127108152613a9860208201526064818301528151600180825281840190935290915f918291816020015b604080518082019091525f8082526020820152815260200190600190039081610c8d5790505090506040518060400160405280856001600160a01b03168152602001670de0b6b3a76400006001600160601b0316815250815f81518110610cf657610cf66111fd565b6020908102919091010152604051631aeb699160e31b81526001600160a01b0386169063d75b4c8890610d3190869086908690600401611431565b5f604051808303815f87803b158015610d48575f5ffd5b505af1158015610d5a573d5f5f3e3d5ffd5b505050505050505050565b60605f5f516020612dcd5f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015610db2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dd991908101906112e8565b604051602001610de991906114e6565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015610e47573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e6e91908101906112e8565b604051602001610e7e9190611510565b60405160208183030381529060405290505f84604051602001610ea1919061152c565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610ee29086908690869060200161154c565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610f0d9190611569565b5f60405180830381865afa158015610f27573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4e91908101906112e8565b95945050505050565b604051631e19e65760e01b81525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790610f92908690869060040161157b565b602060405180830381865afa158015610fad573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd1919061159f565b9392505050565b5f5f516020612dcd5f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015611023573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261104a91908101906112e8565b60405160200161105a91906114e6565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa1580156110b8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110df91908101906112e8565b6040516020016110ef9190611510565b60405160208183030381529060405290505f828285604051602001611116939291906115c5565b60408051601f198184030181529082905263e23cd19f60e01b82529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e23cd19f90610d31908890859060040161157b565b610aa7806115ee83390190565b610cf28061209583390190565b5f60208284031215611189575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038481168252831660208201526060604082018190525f90610f4e90830184611190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b604080825283519082018190525f9060208501906060840190835b818110156112535783516001600160a01b031683526020938401939092019160010161122c565b5050838103602080860191909152855180835291810192508501905f5b818110156112905782511515845260209384019390920191600101611270565b50919695505050505050565b606081525f6112ae6060830185611190565b828103602080850191909152600982526865726332306d6f636b60b81b908201526001600160a01b03939093166040928301525001919050565b5f602082840312156112f8575f5ffd5b815167ffffffffffffffff81111561130e575f5ffd5b8201601f8101841361131e575f5ffd5b805167ffffffffffffffff811115611338576113386111e9565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611367576113676111e9565b60405281815282820160200186101561137e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b606081525f6113ad6060830185611190565b828103602080850191909152601182527065726332306d6f636b737472617465677960781b908201526001600160a01b03939093166040928301525001919050565b606081525f6114016060830186611190565b82810360208401526114138186611190565b905082810360408401526114278185611190565b9695505050505050565b5f60a0820163ffffffff865116835261ffff602087015116602084015261ffff60408701511660408401526001600160601b038516606084015260a0608084015280845180835260c0850191506020860192505f5b818110156114c257835180516001600160a01b031684526020908101516001600160601b03168185015290930192604090920191600101611486565b5090979650505050505050565b5f81518060208401855e5f93019283525090919050565b5f6114f182846114cf565b6e2f7363726970742f6f75747075742f60881b8152600f019392505050565b5f61151b82846114cf565b602f60f81b81526001019392505050565b5f61153782846114cf565b64173539b7b760d91b81526005019392505050565b5f610f4e61156361155d84886114cf565b866114cf565b846114cf565b602081525f610fd16020830184611190565b604081525f61158d6040830185611190565b8281036020840152610f4e8185611190565b5f602082840312156115af575f5ffd5b81516001600160a01b0381168114610fd1575f5ffd5b5f6115d661156361155d84886114cf565b64173539b7b760d91b81526005019594505050505056fe608060405234801561000f575f5ffd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b815250604051806040016040528060038152602001624d434b60e81b815250816003908161005e919061010b565b50600461006b828261010b565b5050506101c5565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061009b57607f821691505b6020821081036100b957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561010657805f5260205f20601f840160051c810160208510156100e45750805b601f840160051c820191505b81811015610103575f81556001016100f0565b50505b505050565b81516001600160401b0381111561012457610124610073565b610138816101328454610087565b846100bf565b6020601f82116001811461016a575f83156101535750848201515b5f19600385901b1c1916600184901b178455610103565b5f84815260208120601f198516915b828110156101995787850151825560209485019460019092019101610179565b50848210156101b657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6108d5806101d25f395ff3fe608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c806340c10f191161006e57806340c10f191461013d57806370a082311461015257806395d89b411461017a578063a457c2d714610182578063a9059cbb14610195578063dd62ed3e146101a8575f5ffd5b806306fdde03146100b5578063095ea7b3146100d357806318160ddd146100f657806323b872dd14610108578063313ce5671461011b578063395093511461012a575b5f5ffd5b6100bd6101bb565b6040516100ca9190610745565b60405180910390f35b6100e66100e1366004610795565b61024b565b60405190151581526020016100ca565b6002545b6040519081526020016100ca565b6100e66101163660046107bd565b610264565b604051601281526020016100ca565b6100e6610138366004610795565b61027a565b61015061014b366004610795565b61029b565b005b6100fa6101603660046107f7565b6001600160a01b03165f9081526020819052604090205490565b6100bd6102a9565b6100e6610190366004610795565b6102b8565b6100e66101a3366004610795565b610342565b6100fa6101b6366004610817565b61034f565b6060600380546101ca90610848565b80601f01602080910402602001604051908101604052809291908181526020018280546101f690610848565b80156102415780601f1061021857610100808354040283529160200191610241565b820191905f5260205f20905b81548152906001019060200180831161022457829003601f168201915b5050505050905090565b5f33610258818585610379565b60019150505b92915050565b5f61027084848461049c565b5060019392505050565b5f3361025881858561028c838361034f565b6102969190610880565b610379565b6102a58282610669565b5050565b6060600480546101ca90610848565b5f33816102c5828661034f565b90508381101561032a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6103378286868403610379565b506001949350505050565b5f3361025881858561049c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103db5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610321565b6001600160a01b03821661043c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610321565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610321565b6001600160a01b0382166105625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610321565b6001600160a01b0383165f90815260208190526040902054818110156105d95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610321565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061060f908490610880565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065b91815260200190565b60405180910390a350505050565b6001600160a01b0382166106bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610321565b8060025f8282546106d09190610880565b90915550506001600160a01b0382165f90815260208190526040812080548392906106fc908490610880565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610790575f5ffd5b919050565b5f5f604083850312156107a6575f5ffd5b6107af8361077a565b946020939093013593505050565b5f5f5f606084860312156107cf575f5ffd5b6107d88461077a565b92506107e66020850161077a565b929592945050506040919091013590565b5f60208284031215610807575f5ffd5b6108108261077a565b9392505050565b5f5f60408385031215610828575f5ffd5b6108318361077a565b915061083f6020840161077a565b90509250929050565b600181811c9082168061085c57607f821691505b60208210810361087a57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561025e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220531bb55a2a3d14d0f38b765009acde15b4643e9c9d83222a0a641807e6b860d864736f6c634300081b00336080604052604051610cf2380380610cf2833981016040819052610022916103b7565b828161002f82825f610043565b5061003b90508261006e565b5050506104d3565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610cab5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610ccb60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610cab5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60606001600160a01b0384163b6102dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101a7565b5f5f856001600160a01b0316856040516102f79190610488565b5f60405180830381855af49150503d805f811461032f576040519150601f19603f3d011682016040523d82523d5f602084013e610334565b606091505b50909250905061034582828661034f565b9695505050505050565b6060831561035e57508161013f565b82511561036e5782518084602001fd5b8160405162461bcd60e51b81526004016101a7919061049e565b80516001600160a01b038116811461039e575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103c9575f5ffd5b6103d284610388565b92506103e060208501610388565b60408501519092506001600160401b038111156103fb575f5ffd5b8401601f8101861361040b575f5ffd5b80516001600160401b03811115610424576104246103a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610452576104526103a3565b604052818152828201602001881015610469575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6107cb806104e05f395ff3fe60806040526004361061004d575f3560e01c80633659cfe6146100645780634f1ef286146100835780635c60da1b146100965780638f283970146100c6578063f851a440146100e55761005c565b3661005c5761005a6100f9565b005b61005a6100f9565b34801561006f575f5ffd5b5061005a61007e36600461068c565b610113565b61005a6100913660046106a5565b61014e565b3480156100a1575f5ffd5b506100aa6101b4565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d1575f5ffd5b5061005a6100e036600461068c565b6101e4565b3480156100f0575f5ffd5b506100aa610204565b610101610224565b61011161010c6102b9565b6102c2565b565b61011b6102e0565b6001600160a01b03163303610146576101438160405180602001604052805f8152505f610312565b50565b6101436100f9565b6101566102e0565b6001600160a01b031633036101ac576101a78383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610312915050565b505050565b6101a76100f9565b5f6101bd6102e0565b6001600160a01b031633036101d9576101d46102b9565b905090565b6101e16100f9565b90565b6101ec6102e0565b6001600160a01b03163303610146576101438161033c565b5f61020d6102e0565b6001600160a01b031633036101d9576101d46102e0565b61022c6102e0565b6001600160a01b031633036101115760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101d4610390565b365f5f375f5f365f845af43d5f5f3e8080156102dc573d5ff35b3d5ffd5b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61031b836103b7565b5f825111806103275750805b156101a75761033683836103f6565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103656102e0565b604080516001600160a01b03928316815291841660208301520160405180910390a161014381610422565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610303565b6103c0816104cb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061041b838360405180606001604052806027815260200161076f6027913961055f565b9392505050565b6001600160a01b0381166104875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b0565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6105385760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102b0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104aa565b60606001600160a01b0384163b6105c75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b0565b5f5f856001600160a01b0316856040516105e19190610723565b5f60405180830381855af49150503d805f8114610619576040519150601f19603f3d011682016040523d82523d5f602084013e61061e565b606091505b509150915061062e828286610638565b9695505050505050565b6060831561064757508161041b565b8251156106575782518084602001fd5b8160405162461bcd60e51b81526004016102b09190610739565b80356001600160a01b0381168114610687575f5ffd5b919050565b5f6020828403121561069c575f5ffd5b61041b82610671565b5f5f5f604084860312156106b7575f5ffd5b6106c084610671565b9250602084013567ffffffffffffffff8111156106db575f5ffd5b8401601f810186136106eb575f5ffd5b803567ffffffffffffffff811115610701575f5ffd5b866020828401011115610712575f5ffd5b939660209190910195509293505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f7d2ab95619bf852f92dbb935d5c89319ed0b12fb24bc310adf12d7325f52fcb64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65642e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e2e6164647265737365732e6f70657261746f725374617465526574726965766572885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220a7adc1ccdf4929abbb97b29347b1f0ebf65bf749d95640045c81143346e5dd2d64736f6c634300081b0033 + /// ``` + #[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\x15`-W__\xFD[Pa.F\x80a\0;_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x004W_5`\xE0\x1C\x80c\xC0@b&\x14a\08W\x80c\xF8\xCC\xBFG\x14a\0BW[__\xFD[a\0@a\0iV[\0[`\x0CTa\0U\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_a\0\x87a\x03,V[\x90P_a\0\x92a\x05\x9FV[\x90P___Q` a-\xCD_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\0\xDDW__\xFD[PZ\xF1\x15\x80\x15a\0\xEFW=__>=_\xFD[PPPP__Q` a-\xCD_9_Q\x90_R_\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\x15a\x01?W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01c\x91\x90a\x11yV[\x90PFazi\x14\x80a\x01vWPFa\x059\x14[\x15a\x02!Wa\x01\x96\x85_\x01Q\x86` \x01Q\x87`\xE0\x01Q\x88`@\x01Qa\x08GV[`@\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x06W__\xFD[PZ\xF1\x15\x80\x15a\x02\x18W=__>=_\xFD[PPPPa\x02\xB9V[FaBh\x03a\x02]Ws\\\x8BUr/B\x15V\xA2\xAA\xFBz>\xA6=L>QC\x12\x92Ps?\x1CT{!\xF6^\x10H\r\xE3\xAD\x8E\x19\xFA\xACF\xC9P4\x91Pa\x02\xB9V[`@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[a\x02\xC7\x84` \x01Q\x84a\x0CXV[_Q` a-\xCD_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\x0EW__\xFD[PZ\xF1\x15\x80\x15a\x03 W=__>=_\xFD[PPPPPPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R_\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_a\x03\xAB`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\reV[\x90P_a\x03\xED\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x0FWV[\x90P_a\x04/\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x0FWV[\x90P_a\x04q\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x0FWV[\x90P_a\x04\xAB\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\x0FWV[\x90P_a\x04\xED\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x0FWV[\x90P_a\x05$\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x0FWV[\x90P_a\x05I\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a-\x87`%\x919a\x0FWV[`@\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_`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_a\x05\xFA`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7Fmockavs_deployment_output\0\0\0\0\0\0\0\x81RPa\reV[\x90P_a\x06<\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7F.addresses.mockAvsServiceManager\x81RPa\x0FWV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xBAW`@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\x01a\x02\xB0V[_a\x06\xFA\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.registryCoordinator\0\0\x81RPa\x0FWV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07xW`@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\x01a\x02\xB0V[_a\x07\x9B\x84`@Q\x80``\x01`@R\x80`!\x81R` \x01a-\xAC`!\x919a\x0FWV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08\x19W`@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\x01a\x02\xB0V[`@\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[___`@Qa\x08V\x90a\x11_V[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x08oW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08\xBCW__\xFD[PZ\xF1\x15\x80\x15a\x08\xCEW=__>=_\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_\x93P\x88\x92P\x8A\x91\x90a\tD\x90a\x11lV[a\tP\x93\x92\x91\x90a\x11\xBEV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\tiW=__>=_\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x81\x81_\x81Q\x81\x10a\t\xA2Wa\t\xA2a\x11\xFDV[`\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_\x91\x81` \x01` \x82\x02\x806\x837\x01\x90PP\x90P_\x81_\x81Q\x81\x10a\t\xF1Wa\t\xF1a\x11\xFDV[\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\x90a\n/\x90\x85\x90\x85\x90`\x04\x01a\x12\x11V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\nFW__\xFD[PZ\xF1\x15\x80\x15a\nXW=__>=_\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\x90a\n\xDE\x90\x84\x90\x8A\x90`\x04\x01a\x12\x9CV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\n\xF9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0B \x91\x90\x81\x01\x90a\x12\xE8V[P`@QcK\x9601`\xE1\x1B\x81R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90a\x0B\\\x90\x85\x90\x8A\x90`\x04\x01a\x13\x9BV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x0BwW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0B\x9E\x91\x90\x81\x01\x90a\x12\xE8V[`@Qc\x88\xDAm5`\xE0\x1B\x81R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x88\xDAm5\x90a\x0B\xDE\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x13\xEFV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x0B\xF9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C \x91\x90\x81\x01\x90a\x12\xE8V[\x90Pa\x0CD\x81`@Q\x80``\x01`@R\x80`$\x81R` \x01a-\xED`$\x919a\x0F\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_\x91\x82\x91\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x0C\x8DW\x90PP\x90P`@Q\x80`@\x01`@R\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01g\r\xE0\xB6\xB3\xA7d\0\0`\x01`\x01``\x1B\x03\x16\x81RP\x81_\x81Q\x81\x10a\x0C\xF6Wa\x0C\xF6a\x11\xFDV[` \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\x90a\r1\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x141V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\rHW__\xFD[PZ\xF1\x15\x80\x15a\rZW=__>=_\xFD[PPPPPPPPPV[``__Q` a-\xCD_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xB2W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\xD9\x91\x90\x81\x01\x90a\x12\xE8V[`@Q` \x01a\r\xE9\x91\x90a\x14\xE6V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EGW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0En\x91\x90\x81\x01\x90a\x12\xE8V[`@Q` \x01a\x0E~\x91\x90a\x15\x10V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x84`@Q` \x01a\x0E\xA1\x91\x90a\x15,V[`@\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\xE2\x90\x86\x90\x86\x90\x86\x90` \x01a\x15LV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\r\x91\x90a\x15iV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F'W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0FN\x91\x90\x81\x01\x90a\x12\xE8V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x0F\x92\x90\x86\x90\x86\x90`\x04\x01a\x15{V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xADW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xD1\x91\x90a\x15\x9FV[\x93\x92PPPV[__Q` a-\xCD_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10#W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10J\x91\x90\x81\x01\x90a\x12\xE8V[`@Q` \x01a\x10Z\x91\x90a\x14\xE6V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10\xDF\x91\x90\x81\x01\x90a\x12\xE8V[`@Q` \x01a\x10\xEF\x91\x90a\x15\x10V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x82\x82\x85`@Q` \x01a\x11\x16\x93\x92\x91\x90a\x15\xC5V[`@\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\x90a\r1\x90\x88\x90\x85\x90`\x04\x01a\x15{V[a\n\xA7\x80a\x15\xEE\x839\x01\x90V[a\x0C\xF2\x80a \x95\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x11\x89W__\xFD[PQ\x91\x90PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R_\x90a\x0FN\x90\x83\x01\x84a\x11\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R_\x90` \x85\x01\x90``\x84\x01\x90\x83[\x81\x81\x10\x15a\x12SW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x12,V[PP\x83\x81\x03` \x80\x86\x01\x91\x90\x91R\x85Q\x80\x83R\x91\x81\x01\x92P\x85\x01\x90_[\x81\x81\x10\x15a\x12\x90W\x82Q\x15\x15\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x12pV[P\x91\x96\x95PPPPPPV[``\x81R_a\x12\xAE``\x83\x01\x85a\x11\x90V[\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[_` \x82\x84\x03\x12\x15a\x12\xF8W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x0EW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x13\x1EW__\xFD[\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x138Wa\x138a\x11\xE9V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x13gWa\x13ga\x11\xE9V[`@R\x81\x81R\x82\x82\x01` \x01\x86\x10\x15a\x13~W__\xFD[\x81` \x84\x01` \x83\x01^_\x91\x81\x01` \x01\x91\x90\x91R\x94\x93PPPPV[``\x81R_a\x13\xAD``\x83\x01\x85a\x11\x90V[\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_a\x14\x01``\x83\x01\x86a\x11\x90V[\x82\x81\x03` \x84\x01Ra\x14\x13\x81\x86a\x11\x90V[\x90P\x82\x81\x03`@\x84\x01Ra\x14'\x81\x85a\x11\x90V[\x96\x95PPPPPPV[_`\xA0\x82\x01c\xFF\xFF\xFF\xFF\x86Q\x16\x83Ra\xFF\xFF` \x87\x01Q\x16` \x84\x01Ra\xFF\xFF`@\x87\x01Q\x16`@\x84\x01R`\x01`\x01``\x1B\x03\x85\x16``\x84\x01R`\xA0`\x80\x84\x01R\x80\x84Q\x80\x83R`\xC0\x85\x01\x91P` \x86\x01\x92P_[\x81\x81\x10\x15a\x14\xC2W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x90\x81\x01Q`\x01`\x01``\x1B\x03\x16\x81\x85\x01R\x90\x93\x01\x92`@\x90\x92\x01\x91`\x01\x01a\x14\x86V[P\x90\x97\x96PPPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a\x14\xF1\x82\x84a\x14\xCFV[n/script/output/`\x88\x1B\x81R`\x0F\x01\x93\x92PPPV[_a\x15\x1B\x82\x84a\x14\xCFV[`/`\xF8\x1B\x81R`\x01\x01\x93\x92PPPV[_a\x157\x82\x84a\x14\xCFV[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x93\x92PPPV[_a\x0FNa\x15ca\x15]\x84\x88a\x14\xCFV[\x86a\x14\xCFV[\x84a\x14\xCFV[` \x81R_a\x0F\xD1` \x83\x01\x84a\x11\x90V[`@\x81R_a\x15\x8D`@\x83\x01\x85a\x11\x90V[\x82\x81\x03` \x84\x01Ra\x0FN\x81\x85a\x11\x90V[_` \x82\x84\x03\x12\x15a\x15\xAFW__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xD1W__\xFD[_a\x15\xD6a\x15ca\x15]\x84\x88a\x14\xCFV[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x95\x94PPPPPV\xFE`\x80`@R4\x80\x15a\0\x0FW__\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\x81a\0^\x91\x90a\x01\x0BV[P`\x04a\0k\x82\x82a\x01\x0BV[PPPa\x01\xC5V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80a\0\x9BW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\0\xB9WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x01\x06W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\0\xE4WP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x01\x03W_\x81U`\x01\x01a\0\xF0V[PP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01$Wa\x01$a\0sV[a\x018\x81a\x012\x84Ta\0\x87V[\x84a\0\xBFV[` `\x1F\x82\x11`\x01\x81\x14a\x01jW_\x83\x15a\x01SWP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\x01\x03V[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x01\x99W\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x01yV[P\x84\x82\x10\x15a\x01\xB6W\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x08\xD5\x80a\x01\xD2_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xB1W_5`\xE0\x1C\x80c@\xC1\x0F\x19\x11a\0nW\x80c@\xC1\x0F\x19\x14a\x01=W\x80cp\xA0\x821\x14a\x01RW\x80c\x95\xD8\x9BA\x14a\x01zW\x80c\xA4W\xC2\xD7\x14a\x01\x82W\x80c\xA9\x05\x9C\xBB\x14a\x01\x95W\x80c\xDDb\xED>\x14a\x01\xA8W__\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB5W\x80c\t^\xA7\xB3\x14a\0\xD3W\x80c\x18\x16\r\xDD\x14a\0\xF6W\x80c#\xB8r\xDD\x14a\x01\x08W\x80c1<\xE5g\x14a\x01\x1BW\x80c9P\x93Q\x14a\x01*W[__\xFD[a\0\xBDa\x01\xBBV[`@Qa\0\xCA\x91\x90a\x07EV[`@Q\x80\x91\x03\x90\xF3[a\0\xE6a\0\xE16`\x04a\x07\x95V[a\x02KV[`@Q\x90\x15\x15\x81R` \x01a\0\xCAV[`\x02T[`@Q\x90\x81R` \x01a\0\xCAV[a\0\xE6a\x01\x166`\x04a\x07\xBDV[a\x02dV[`@Q`\x12\x81R` \x01a\0\xCAV[a\0\xE6a\x0186`\x04a\x07\x95V[a\x02zV[a\x01Pa\x01K6`\x04a\x07\x95V[a\x02\x9BV[\0[a\0\xFAa\x01`6`\x04a\x07\xF7V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xBDa\x02\xA9V[a\0\xE6a\x01\x906`\x04a\x07\x95V[a\x02\xB8V[a\0\xE6a\x01\xA36`\x04a\x07\x95V[a\x03BV[a\0\xFAa\x01\xB66`\x04a\x08\x17V[a\x03OV[```\x03\x80Ta\x01\xCA\x90a\x08HV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xF6\x90a\x08HV[\x80\x15a\x02AW\x80`\x1F\x10a\x02\x18Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02AV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02$W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_3a\x02X\x81\x85\x85a\x03yV[`\x01\x91PP[\x92\x91PPV[_a\x02p\x84\x84\x84a\x04\x9CV[P`\x01\x93\x92PPPV[_3a\x02X\x81\x85\x85a\x02\x8C\x83\x83a\x03OV[a\x02\x96\x91\x90a\x08\x80V[a\x03yV[a\x02\xA5\x82\x82a\x06iV[PPV[```\x04\x80Ta\x01\xCA\x90a\x08HV[_3\x81a\x02\xC5\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\x037\x82\x86\x86\x84\x03a\x03yV[P`\x01\x94\x93PPPPV[_3a\x02X\x81\x85\x85a\x04\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16_\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\xDBW`@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\x9C\x9D\x83\"*\nd\x18\x07\xE6\xB8`\xD8dsolcC\0\x08\x1B\x003`\x80`@R`@Qa\x0C\xF28\x03\x80a\x0C\xF2\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x03\xB7V[\x82\x81a\0/\x82\x82_a\0CV[Pa\0;\x90P\x82a\0nV[PPPa\x04\xD3V[a\0L\x83a\0\xDBV[_\x82Q\x11\x80a\0XWP\x80[\x15a\0iWa\0g\x83\x83a\x01\x1AV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\0\xAD_Q` a\x0C\xAB_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\0\xD8\x81a\x01FV[PV[a\0\xE4\x81a\x01\xE1V[`@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_\x90\xA2PV[``a\x01?\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x0C\xCB`'\x919a\x02uV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xB0W`@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[\x80_Q` a\x0C\xAB_9_Q\x90_R[\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\x81\x16;a\x02NW`@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\x01\xA7V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xC0V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x02\xDDW`@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\x01\xA7V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xF7\x91\x90a\x04\x88V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x03/W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x034V[``\x91P[P\x90\x92P\x90Pa\x03E\x82\x82\x86a\x03OV[\x96\x95PPPPPPV[``\x83\x15a\x03^WP\x81a\x01?V[\x82Q\x15a\x03nW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xA7\x91\x90a\x04\x9EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x9EW__\xFD[\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x03\xC9W__\xFD[a\x03\xD2\x84a\x03\x88V[\x92Pa\x03\xE0` \x85\x01a\x03\x88V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\xFBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x04\x0BW__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04$Wa\x04$a\x03\xA3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x04RWa\x04Ra\x03\xA3V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x04iW__\xFD[\x81` \x84\x01` \x83\x01^_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[a\x07\xCB\x80a\x04\xE0_9_\xF3\xFE`\x80`@R`\x046\x10a\0MW_5`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0dW\x80cO\x1E\xF2\x86\x14a\0\x83W\x80c\\`\xDA\x1B\x14a\0\x96W\x80c\x8F(9p\x14a\0\xC6W\x80c\xF8Q\xA4@\x14a\0\xE5Wa\0\\V[6a\0\\Wa\0Za\0\xF9V[\0[a\0Za\0\xF9V[4\x80\x15a\0oW__\xFD[Pa\0Za\0~6`\x04a\x06\x8CV[a\x01\x13V[a\0Za\0\x916`\x04a\x06\xA5V[a\x01NV[4\x80\x15a\0\xA1W__\xFD[Pa\0\xAAa\x01\xB4V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD1W__\xFD[Pa\0Za\0\xE06`\x04a\x06\x8CV[a\x01\xE4V[4\x80\x15a\0\xF0W__\xFD[Pa\0\xAAa\x02\x04V[a\x01\x01a\x02$V[a\x01\x11a\x01\x0Ca\x02\xB9V[a\x02\xC2V[V[a\x01\x1Ba\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x03\x12V[PV[a\x01Ca\0\xF9V[a\x01Va\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xACWa\x01\xA7\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_\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x12\x91PPV[PPPV[a\x01\xA7a\0\xF9V[_a\x01\xBDa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xD9Wa\x01\xD4a\x02\xB9V[\x90P\x90V[a\x01\xE1a\0\xF9V[\x90V[a\x01\xECa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81a\x03\x80\x80\x15a\x02\xDCW=_\xF3[=_\xFD[_\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\x1B\x83a\x03\xB7V[_\x82Q\x11\x80a\x03'WP\x80[\x15a\x01\xA7Wa\x036\x83\x83a\x03\xF6V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03ea\x02\xE0V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01C\x81a\x04\"V[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x03V[a\x03\xC0\x81a\x04\xCBV[`@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_\x90\xA2PV[``a\x04\x1B\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x07o`'\x919a\x05_V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04\x87W`@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\x02\xB0V[\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[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x058W`@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\x02\xB0V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04\xAAV[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x05\xC7W`@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\x02\xB0V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05\xE1\x91\x90a\x07#V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x06\x19W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x06\x1EV[``\x91P[P\x91P\x91Pa\x06.\x82\x82\x86a\x068V[\x96\x95PPPPPPV[``\x83\x15a\x06GWP\x81a\x04\x1BV[\x82Q\x15a\x06WW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB0\x91\x90a\x079V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x87W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\x9CW__\xFD[a\x04\x1B\x82a\x06qV[___`@\x84\x86\x03\x12\x15a\x06\xB7W__\xFD[a\x06\xC0\x84a\x06qV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xDBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x06\xEBW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x01W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x07\x12W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xF7\xD2\xAB\x95a\x9B\xF8R\xF9-\xBB\x93]\\\x891\x9E\xD0\xB1/\xB2K\xC3\x10\xAD\xF1-s%\xF5/\xCBdsolcC\0\x08\x1B\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 \xA7\xAD\xC1\xCC\xDFI)\xAB\xBB\x97\xB2\x93G\xB1\xF0\xEB\xF6[\xF7I\xD9V@\x04\\\x81\x143F\xE5\xDD-dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063c040622614610038578063f8ccbf4714610042575b5f5ffd5b610040610069565b005b600c546100559062010000900460ff1681565b604051901515815260200160405180910390f35b735fbdb2315678afecb367f032d93f642f64180aa35f61008761032c565b90505f61009261059f565b90505f5f5f516020612dcd5f395f51905f525f1c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156100dd575f5ffd5b505af11580156100ef573d5f5f3e3d5ffd5b505050505f5f516020612dcd5f395f51905f525f1c6001600160a01b03166342cbb15c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561013f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101639190611179565b905046617a691480610176575046610539145b1561022157610196855f015186602001518760e001518860400151610847565b60408051630fe7858560e31b81526004810191909152601160448201527065726332304d6f636b537472617465677960781b60648201526001600160a01b038083166024830152919550919350871690637f3c2c28906084015f604051808303815f87803b158015610206575f5ffd5b505af1158015610218573d5f5f3e3d5ffd5b505050506102b9565b466142680361025d57735c8b55722f421556a2aafb7a3ea63d4c3e5143129250733f1c547b21f65e10480de3ad8e19faac46c9503491506102b9565b60405162461bcd60e51b815260206004820152602660248201527f436f6e66696775726520546f6b656e20616e6420537472617465677920666f726044820152651021b430b4b760d11b60648201526084015b60405180910390fd5b6102c7846020015184610c58565b5f516020612dcd5f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561030e575f5ffd5b505af1158015610320573d5f5f3e3d5ffd5b50505050505050505050565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525f6103ab6040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610d65565b90505f6103ed826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e00815250610f57565b90505f61042f836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c617965725061757365725265670000815250610f57565b90505f610471846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e61676572000000000000815250610f57565b90505f6104ab85604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b815250610f57565b90505f6104ed866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f7279000000000000000000815250610f57565b90505f61052487604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b815250610f57565b90505f61054988604051806060016040528060258152602001612d8760259139610f57565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a08301525f60c083015290911660e082015292915050565b604080516060810182525f80825260208201819052918101919091525f6105fa6040518060400160405280601981526020017f6d6f636b6176735f6465706c6f796d656e745f6f757470757400000000000000815250610d65565b90505f61063c826040518060400160405280602081526020017f2e6164647265737365732e6d6f636b417673536572766963654d616e61676572815250610f57565b90506001600160a01b0381166106ba5760405162461bcd60e51b815260206004820152603a60248201527f4d6f636b417673436f6e7472616374735061727365723a206d6f636b4176735360448201527f6572766963654d616e616765722061646472657373206973203000000000000060648201526084016102b0565b5f6106fa836040518060400160405280601e81526020017f2e6164647265737365732e7265676973747279436f6f7264696e61746f720000815250610f57565b90506001600160a01b0381166107785760405162461bcd60e51b815260206004820152603860248201527f4d6f636b417673436f6e7472616374735061727365723a20726567697374727960448201527f436f6f7264696e61746f7220616464726573732069732030000000000000000060648201526084016102b0565b5f61079b84604051806060016040528060218152602001612dac60219139610f57565b90506001600160a01b0381166108195760405162461bcd60e51b815260206004820152603b60248201527f4d6f636b417673436f6e7472616374735061727365723a206f70657261746f7260448201527f537461746552657472696576657220616464726573732069732030000000000060648201526084016102b0565b604080516060810182526001600160a01b039485168152928416602084015292169181019190915292915050565b5f5f5f6040516108569061115f565b604051809103905ff08015801561086f573d5f5f3e3d5ffd5b50600d546040516340c10f1960e01b815232600482015260248101919091529091506001600160a01b038216906340c10f19906044015f604051808303815f87803b1580156108bc575f5ffd5b505af11580156108ce573d5f5f3e3d5ffd5b505060408051683635c9adc5dea000006024820181905260448201526001600160a01b0385811660648301528a166084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663019e272960e01b17905290515f93508892508a91906109449061116c565b610950939291906111be565b604051809103905ff080158015610969573d5f5f3e3d5ffd5b506040805160018082528183019092529192505f91906020808301908036833701905050905081815f815181106109a2576109a26111fd565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f918160200160208202803683370190505090505f815f815181106109f1576109f16111fd565b9115156020928302919091019091015260405163df5b354760e01b81526001600160a01b0388169063df5b354790610a2f9085908590600401611211565b5f604051808303815f87803b158015610a46575f5ffd5b505af1158015610a58573d5f5f3e3d5ffd5b5050604080518082018252600d81526c1c185c995b9d081bd89a9958dd609a1b60208083019190915282518084018452600981526861646472657373657360b81b918101919091529151634b96303160e11b8152909350909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c606290610ade9084908a9060040161129c565b5f604051808303815f875af1158015610af9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b2091908101906112e8565b50604051634b96303160e11b81525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c606290610b5c9085908a9060040161139b565b5f604051808303815f875af1158015610b77573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b9e91908101906112e8565b6040516388da6d3560e01b81529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d906388da6d3590610bde908790879087906004016113ef565b5f604051808303815f875af1158015610bf9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2091908101906112e8565b9050610c4481604051806060016040528060248152602001612ded60249139610fd8565b50959c949b50939950505050505050505050565b604080516060810182526127108152613a9860208201526064818301528151600180825281840190935290915f918291816020015b604080518082019091525f8082526020820152815260200190600190039081610c8d5790505090506040518060400160405280856001600160a01b03168152602001670de0b6b3a76400006001600160601b0316815250815f81518110610cf657610cf66111fd565b6020908102919091010152604051631aeb699160e31b81526001600160a01b0386169063d75b4c8890610d3190869086908690600401611431565b5f604051808303815f87803b158015610d48575f5ffd5b505af1158015610d5a573d5f5f3e3d5ffd5b505050505050505050565b60605f5f516020612dcd5f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015610db2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dd991908101906112e8565b604051602001610de991906114e6565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015610e47573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e6e91908101906112e8565b604051602001610e7e9190611510565b60405160208183030381529060405290505f84604051602001610ea1919061152c565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610ee29086908690869060200161154c565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610f0d9190611569565b5f60405180830381865afa158015610f27573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4e91908101906112e8565b95945050505050565b604051631e19e65760e01b81525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790610f92908690869060040161157b565b602060405180830381865afa158015610fad573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd1919061159f565b9392505050565b5f5f516020612dcd5f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015611023573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261104a91908101906112e8565b60405160200161105a91906114e6565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa1580156110b8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110df91908101906112e8565b6040516020016110ef9190611510565b60405160208183030381529060405290505f828285604051602001611116939291906115c5565b60408051601f198184030181529082905263e23cd19f60e01b82529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e23cd19f90610d31908890859060040161157b565b610aa7806115ee83390190565b610cf28061209583390190565b5f60208284031215611189575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038481168252831660208201526060604082018190525f90610f4e90830184611190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b604080825283519082018190525f9060208501906060840190835b818110156112535783516001600160a01b031683526020938401939092019160010161122c565b5050838103602080860191909152855180835291810192508501905f5b818110156112905782511515845260209384019390920191600101611270565b50919695505050505050565b606081525f6112ae6060830185611190565b828103602080850191909152600982526865726332306d6f636b60b81b908201526001600160a01b03939093166040928301525001919050565b5f602082840312156112f8575f5ffd5b815167ffffffffffffffff81111561130e575f5ffd5b8201601f8101841361131e575f5ffd5b805167ffffffffffffffff811115611338576113386111e9565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611367576113676111e9565b60405281815282820160200186101561137e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b606081525f6113ad6060830185611190565b828103602080850191909152601182527065726332306d6f636b737472617465677960781b908201526001600160a01b03939093166040928301525001919050565b606081525f6114016060830186611190565b82810360208401526114138186611190565b905082810360408401526114278185611190565b9695505050505050565b5f60a0820163ffffffff865116835261ffff602087015116602084015261ffff60408701511660408401526001600160601b038516606084015260a0608084015280845180835260c0850191506020860192505f5b818110156114c257835180516001600160a01b031684526020908101516001600160601b03168185015290930192604090920191600101611486565b5090979650505050505050565b5f81518060208401855e5f93019283525090919050565b5f6114f182846114cf565b6e2f7363726970742f6f75747075742f60881b8152600f019392505050565b5f61151b82846114cf565b602f60f81b81526001019392505050565b5f61153782846114cf565b64173539b7b760d91b81526005019392505050565b5f610f4e61156361155d84886114cf565b866114cf565b846114cf565b602081525f610fd16020830184611190565b604081525f61158d6040830185611190565b8281036020840152610f4e8185611190565b5f602082840312156115af575f5ffd5b81516001600160a01b0381168114610fd1575f5ffd5b5f6115d661156361155d84886114cf565b64173539b7b760d91b81526005019594505050505056fe608060405234801561000f575f5ffd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b815250604051806040016040528060038152602001624d434b60e81b815250816003908161005e919061010b565b50600461006b828261010b565b5050506101c5565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061009b57607f821691505b6020821081036100b957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561010657805f5260205f20601f840160051c810160208510156100e45750805b601f840160051c820191505b81811015610103575f81556001016100f0565b50505b505050565b81516001600160401b0381111561012457610124610073565b610138816101328454610087565b846100bf565b6020601f82116001811461016a575f83156101535750848201515b5f19600385901b1c1916600184901b178455610103565b5f84815260208120601f198516915b828110156101995787850151825560209485019460019092019101610179565b50848210156101b657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6108d5806101d25f395ff3fe608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c806340c10f191161006e57806340c10f191461013d57806370a082311461015257806395d89b411461017a578063a457c2d714610182578063a9059cbb14610195578063dd62ed3e146101a8575f5ffd5b806306fdde03146100b5578063095ea7b3146100d357806318160ddd146100f657806323b872dd14610108578063313ce5671461011b578063395093511461012a575b5f5ffd5b6100bd6101bb565b6040516100ca9190610745565b60405180910390f35b6100e66100e1366004610795565b61024b565b60405190151581526020016100ca565b6002545b6040519081526020016100ca565b6100e66101163660046107bd565b610264565b604051601281526020016100ca565b6100e6610138366004610795565b61027a565b61015061014b366004610795565b61029b565b005b6100fa6101603660046107f7565b6001600160a01b03165f9081526020819052604090205490565b6100bd6102a9565b6100e6610190366004610795565b6102b8565b6100e66101a3366004610795565b610342565b6100fa6101b6366004610817565b61034f565b6060600380546101ca90610848565b80601f01602080910402602001604051908101604052809291908181526020018280546101f690610848565b80156102415780601f1061021857610100808354040283529160200191610241565b820191905f5260205f20905b81548152906001019060200180831161022457829003601f168201915b5050505050905090565b5f33610258818585610379565b60019150505b92915050565b5f61027084848461049c565b5060019392505050565b5f3361025881858561028c838361034f565b6102969190610880565b610379565b6102a58282610669565b5050565b6060600480546101ca90610848565b5f33816102c5828661034f565b90508381101561032a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6103378286868403610379565b506001949350505050565b5f3361025881858561049c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103db5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610321565b6001600160a01b03821661043c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610321565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610321565b6001600160a01b0382166105625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610321565b6001600160a01b0383165f90815260208190526040902054818110156105d95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610321565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061060f908490610880565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065b91815260200190565b60405180910390a350505050565b6001600160a01b0382166106bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610321565b8060025f8282546106d09190610880565b90915550506001600160a01b0382165f90815260208190526040812080548392906106fc908490610880565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610790575f5ffd5b919050565b5f5f604083850312156107a6575f5ffd5b6107af8361077a565b946020939093013593505050565b5f5f5f606084860312156107cf575f5ffd5b6107d88461077a565b92506107e66020850161077a565b929592945050506040919091013590565b5f60208284031215610807575f5ffd5b6108108261077a565b9392505050565b5f5f60408385031215610828575f5ffd5b6108318361077a565b915061083f6020840161077a565b90509250929050565b600181811c9082168061085c57607f821691505b60208210810361087a57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561025e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220531bb55a2a3d14d0f38b765009acde15b4643e9c9d83222a0a641807e6b860d864736f6c634300081b00336080604052604051610cf2380380610cf2833981016040819052610022916103b7565b828161002f82825f610043565b5061003b90508261006e565b5050506104d3565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610cab5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610ccb60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610cab5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60606001600160a01b0384163b6102dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101a7565b5f5f856001600160a01b0316856040516102f79190610488565b5f60405180830381855af49150503d805f811461032f576040519150601f19603f3d011682016040523d82523d5f602084013e610334565b606091505b50909250905061034582828661034f565b9695505050505050565b6060831561035e57508161013f565b82511561036e5782518084602001fd5b8160405162461bcd60e51b81526004016101a7919061049e565b80516001600160a01b038116811461039e575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103c9575f5ffd5b6103d284610388565b92506103e060208501610388565b60408501519092506001600160401b038111156103fb575f5ffd5b8401601f8101861361040b575f5ffd5b80516001600160401b03811115610424576104246103a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610452576104526103a3565b604052818152828201602001881015610469575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6107cb806104e05f395ff3fe60806040526004361061004d575f3560e01c80633659cfe6146100645780634f1ef286146100835780635c60da1b146100965780638f283970146100c6578063f851a440146100e55761005c565b3661005c5761005a6100f9565b005b61005a6100f9565b34801561006f575f5ffd5b5061005a61007e36600461068c565b610113565b61005a6100913660046106a5565b61014e565b3480156100a1575f5ffd5b506100aa6101b4565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d1575f5ffd5b5061005a6100e036600461068c565b6101e4565b3480156100f0575f5ffd5b506100aa610204565b610101610224565b61011161010c6102b9565b6102c2565b565b61011b6102e0565b6001600160a01b03163303610146576101438160405180602001604052805f8152505f610312565b50565b6101436100f9565b6101566102e0565b6001600160a01b031633036101ac576101a78383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610312915050565b505050565b6101a76100f9565b5f6101bd6102e0565b6001600160a01b031633036101d9576101d46102b9565b905090565b6101e16100f9565b90565b6101ec6102e0565b6001600160a01b03163303610146576101438161033c565b5f61020d6102e0565b6001600160a01b031633036101d9576101d46102e0565b61022c6102e0565b6001600160a01b031633036101115760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101d4610390565b365f5f375f5f365f845af43d5f5f3e8080156102dc573d5ff35b3d5ffd5b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61031b836103b7565b5f825111806103275750805b156101a75761033683836103f6565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103656102e0565b604080516001600160a01b03928316815291841660208301520160405180910390a161014381610422565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610303565b6103c0816104cb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061041b838360405180606001604052806027815260200161076f6027913961055f565b9392505050565b6001600160a01b0381166104875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b0565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6105385760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102b0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104aa565b60606001600160a01b0384163b6105c75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b0565b5f5f856001600160a01b0316856040516105e19190610723565b5f60405180830381855af49150503d805f8114610619576040519150601f19603f3d011682016040523d82523d5f602084013e61061e565b606091505b509150915061062e828286610638565b9695505050505050565b6060831561064757508161041b565b8251156106575782518084602001fd5b8160405162461bcd60e51b81526004016102b09190610739565b80356001600160a01b0381168114610687575f5ffd5b919050565b5f6020828403121561069c575f5ffd5b61041b82610671565b5f5f5f604084860312156106b7575f5ffd5b6106c084610671565b9250602084013567ffffffffffffffff8111156106db575f5ffd5b8401601f810186136106eb575f5ffd5b803567ffffffffffffffff811115610701575f5ffd5b866020828401011115610712575f5ffd5b939660209190910195509293505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f7d2ab95619bf852f92dbb935d5c89319ed0b12fb24bc310adf12d7325f52fcb64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65642e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e2e6164647265737365732e6f70657261746f725374617465526574726965766572885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220a7adc1ccdf4929abbb97b29347b1f0ebf65bf749d95640045c81143346e5dd2d64736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\x004W_5`\xE0\x1C\x80c\xC0@b&\x14a\08W\x80c\xF8\xCC\xBFG\x14a\0BW[__\xFD[a\0@a\0iV[\0[`\x0CTa\0U\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_a\0\x87a\x03,V[\x90P_a\0\x92a\x05\x9FV[\x90P___Q` a-\xCD_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\0\xDDW__\xFD[PZ\xF1\x15\x80\x15a\0\xEFW=__>=_\xFD[PPPP__Q` a-\xCD_9_Q\x90_R_\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\x15a\x01?W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01c\x91\x90a\x11yV[\x90PFazi\x14\x80a\x01vWPFa\x059\x14[\x15a\x02!Wa\x01\x96\x85_\x01Q\x86` \x01Q\x87`\xE0\x01Q\x88`@\x01Qa\x08GV[`@\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x06W__\xFD[PZ\xF1\x15\x80\x15a\x02\x18W=__>=_\xFD[PPPPa\x02\xB9V[FaBh\x03a\x02]Ws\\\x8BUr/B\x15V\xA2\xAA\xFBz>\xA6=L>QC\x12\x92Ps?\x1CT{!\xF6^\x10H\r\xE3\xAD\x8E\x19\xFA\xACF\xC9P4\x91Pa\x02\xB9V[`@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[a\x02\xC7\x84` \x01Q\x84a\x0CXV[_Q` a-\xCD_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\x0EW__\xFD[PZ\xF1\x15\x80\x15a\x03 W=__>=_\xFD[PPPPPPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R_\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_a\x03\xAB`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\reV[\x90P_a\x03\xED\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x0FWV[\x90P_a\x04/\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x0FWV[\x90P_a\x04q\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x0FWV[\x90P_a\x04\xAB\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\x0FWV[\x90P_a\x04\xED\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x0FWV[\x90P_a\x05$\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x0FWV[\x90P_a\x05I\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a-\x87`%\x919a\x0FWV[`@\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_`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_a\x05\xFA`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7Fmockavs_deployment_output\0\0\0\0\0\0\0\x81RPa\reV[\x90P_a\x06<\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7F.addresses.mockAvsServiceManager\x81RPa\x0FWV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xBAW`@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\x01a\x02\xB0V[_a\x06\xFA\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.registryCoordinator\0\0\x81RPa\x0FWV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07xW`@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\x01a\x02\xB0V[_a\x07\x9B\x84`@Q\x80``\x01`@R\x80`!\x81R` \x01a-\xAC`!\x919a\x0FWV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08\x19W`@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\x01a\x02\xB0V[`@\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[___`@Qa\x08V\x90a\x11_V[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\x08oW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08\xBCW__\xFD[PZ\xF1\x15\x80\x15a\x08\xCEW=__>=_\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_\x93P\x88\x92P\x8A\x91\x90a\tD\x90a\x11lV[a\tP\x93\x92\x91\x90a\x11\xBEV[`@Q\x80\x91\x03\x90_\xF0\x80\x15\x80\x15a\tiW=__>=_\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x81\x81_\x81Q\x81\x10a\t\xA2Wa\t\xA2a\x11\xFDV[`\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_\x91\x81` \x01` \x82\x02\x806\x837\x01\x90PP\x90P_\x81_\x81Q\x81\x10a\t\xF1Wa\t\xF1a\x11\xFDV[\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\x90a\n/\x90\x85\x90\x85\x90`\x04\x01a\x12\x11V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\nFW__\xFD[PZ\xF1\x15\x80\x15a\nXW=__>=_\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\x90a\n\xDE\x90\x84\x90\x8A\x90`\x04\x01a\x12\x9CV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\n\xF9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0B \x91\x90\x81\x01\x90a\x12\xE8V[P`@QcK\x9601`\xE1\x1B\x81R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90a\x0B\\\x90\x85\x90\x8A\x90`\x04\x01a\x13\x9BV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x0BwW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0B\x9E\x91\x90\x81\x01\x90a\x12\xE8V[`@Qc\x88\xDAm5`\xE0\x1B\x81R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x88\xDAm5\x90a\x0B\xDE\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x13\xEFV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x0B\xF9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C \x91\x90\x81\x01\x90a\x12\xE8V[\x90Pa\x0CD\x81`@Q\x80``\x01`@R\x80`$\x81R` \x01a-\xED`$\x919a\x0F\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_\x91\x82\x91\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x0C\x8DW\x90PP\x90P`@Q\x80`@\x01`@R\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01g\r\xE0\xB6\xB3\xA7d\0\0`\x01`\x01``\x1B\x03\x16\x81RP\x81_\x81Q\x81\x10a\x0C\xF6Wa\x0C\xF6a\x11\xFDV[` \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\x90a\r1\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x141V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\rHW__\xFD[PZ\xF1\x15\x80\x15a\rZW=__>=_\xFD[PPPPPPPPPV[``__Q` a-\xCD_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xB2W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\xD9\x91\x90\x81\x01\x90a\x12\xE8V[`@Q` \x01a\r\xE9\x91\x90a\x14\xE6V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EGW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0En\x91\x90\x81\x01\x90a\x12\xE8V[`@Q` \x01a\x0E~\x91\x90a\x15\x10V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x84`@Q` \x01a\x0E\xA1\x91\x90a\x15,V[`@\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\xE2\x90\x86\x90\x86\x90\x86\x90` \x01a\x15LV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\r\x91\x90a\x15iV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F'W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0FN\x91\x90\x81\x01\x90a\x12\xE8V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x0F\x92\x90\x86\x90\x86\x90`\x04\x01a\x15{V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xADW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xD1\x91\x90a\x15\x9FV[\x93\x92PPPV[__Q` a-\xCD_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10#W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10J\x91\x90\x81\x01\x90a\x12\xE8V[`@Q` \x01a\x10Z\x91\x90a\x14\xE6V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10\xDF\x91\x90\x81\x01\x90a\x12\xE8V[`@Q` \x01a\x10\xEF\x91\x90a\x15\x10V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x82\x82\x85`@Q` \x01a\x11\x16\x93\x92\x91\x90a\x15\xC5V[`@\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\x90a\r1\x90\x88\x90\x85\x90`\x04\x01a\x15{V[a\n\xA7\x80a\x15\xEE\x839\x01\x90V[a\x0C\xF2\x80a \x95\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x11\x89W__\xFD[PQ\x91\x90PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R_\x90a\x0FN\x90\x83\x01\x84a\x11\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R_\x90` \x85\x01\x90``\x84\x01\x90\x83[\x81\x81\x10\x15a\x12SW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x12,V[PP\x83\x81\x03` \x80\x86\x01\x91\x90\x91R\x85Q\x80\x83R\x91\x81\x01\x92P\x85\x01\x90_[\x81\x81\x10\x15a\x12\x90W\x82Q\x15\x15\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x12pV[P\x91\x96\x95PPPPPPV[``\x81R_a\x12\xAE``\x83\x01\x85a\x11\x90V[\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[_` \x82\x84\x03\x12\x15a\x12\xF8W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x0EW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x13\x1EW__\xFD[\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x138Wa\x138a\x11\xE9V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x13gWa\x13ga\x11\xE9V[`@R\x81\x81R\x82\x82\x01` \x01\x86\x10\x15a\x13~W__\xFD[\x81` \x84\x01` \x83\x01^_\x91\x81\x01` \x01\x91\x90\x91R\x94\x93PPPPV[``\x81R_a\x13\xAD``\x83\x01\x85a\x11\x90V[\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_a\x14\x01``\x83\x01\x86a\x11\x90V[\x82\x81\x03` \x84\x01Ra\x14\x13\x81\x86a\x11\x90V[\x90P\x82\x81\x03`@\x84\x01Ra\x14'\x81\x85a\x11\x90V[\x96\x95PPPPPPV[_`\xA0\x82\x01c\xFF\xFF\xFF\xFF\x86Q\x16\x83Ra\xFF\xFF` \x87\x01Q\x16` \x84\x01Ra\xFF\xFF`@\x87\x01Q\x16`@\x84\x01R`\x01`\x01``\x1B\x03\x85\x16``\x84\x01R`\xA0`\x80\x84\x01R\x80\x84Q\x80\x83R`\xC0\x85\x01\x91P` \x86\x01\x92P_[\x81\x81\x10\x15a\x14\xC2W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x90\x81\x01Q`\x01`\x01``\x1B\x03\x16\x81\x85\x01R\x90\x93\x01\x92`@\x90\x92\x01\x91`\x01\x01a\x14\x86V[P\x90\x97\x96PPPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a\x14\xF1\x82\x84a\x14\xCFV[n/script/output/`\x88\x1B\x81R`\x0F\x01\x93\x92PPPV[_a\x15\x1B\x82\x84a\x14\xCFV[`/`\xF8\x1B\x81R`\x01\x01\x93\x92PPPV[_a\x157\x82\x84a\x14\xCFV[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x93\x92PPPV[_a\x0FNa\x15ca\x15]\x84\x88a\x14\xCFV[\x86a\x14\xCFV[\x84a\x14\xCFV[` \x81R_a\x0F\xD1` \x83\x01\x84a\x11\x90V[`@\x81R_a\x15\x8D`@\x83\x01\x85a\x11\x90V[\x82\x81\x03` \x84\x01Ra\x0FN\x81\x85a\x11\x90V[_` \x82\x84\x03\x12\x15a\x15\xAFW__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xD1W__\xFD[_a\x15\xD6a\x15ca\x15]\x84\x88a\x14\xCFV[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x95\x94PPPPPV\xFE`\x80`@R4\x80\x15a\0\x0FW__\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\x81a\0^\x91\x90a\x01\x0BV[P`\x04a\0k\x82\x82a\x01\x0BV[PPPa\x01\xC5V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80a\0\x9BW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\0\xB9WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x01\x06W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\0\xE4WP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x01\x03W_\x81U`\x01\x01a\0\xF0V[PP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01$Wa\x01$a\0sV[a\x018\x81a\x012\x84Ta\0\x87V[\x84a\0\xBFV[` `\x1F\x82\x11`\x01\x81\x14a\x01jW_\x83\x15a\x01SWP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\x01\x03V[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x01\x99W\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x01yV[P\x84\x82\x10\x15a\x01\xB6W\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x08\xD5\x80a\x01\xD2_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xB1W_5`\xE0\x1C\x80c@\xC1\x0F\x19\x11a\0nW\x80c@\xC1\x0F\x19\x14a\x01=W\x80cp\xA0\x821\x14a\x01RW\x80c\x95\xD8\x9BA\x14a\x01zW\x80c\xA4W\xC2\xD7\x14a\x01\x82W\x80c\xA9\x05\x9C\xBB\x14a\x01\x95W\x80c\xDDb\xED>\x14a\x01\xA8W__\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB5W\x80c\t^\xA7\xB3\x14a\0\xD3W\x80c\x18\x16\r\xDD\x14a\0\xF6W\x80c#\xB8r\xDD\x14a\x01\x08W\x80c1<\xE5g\x14a\x01\x1BW\x80c9P\x93Q\x14a\x01*W[__\xFD[a\0\xBDa\x01\xBBV[`@Qa\0\xCA\x91\x90a\x07EV[`@Q\x80\x91\x03\x90\xF3[a\0\xE6a\0\xE16`\x04a\x07\x95V[a\x02KV[`@Q\x90\x15\x15\x81R` \x01a\0\xCAV[`\x02T[`@Q\x90\x81R` \x01a\0\xCAV[a\0\xE6a\x01\x166`\x04a\x07\xBDV[a\x02dV[`@Q`\x12\x81R` \x01a\0\xCAV[a\0\xE6a\x0186`\x04a\x07\x95V[a\x02zV[a\x01Pa\x01K6`\x04a\x07\x95V[a\x02\x9BV[\0[a\0\xFAa\x01`6`\x04a\x07\xF7V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xBDa\x02\xA9V[a\0\xE6a\x01\x906`\x04a\x07\x95V[a\x02\xB8V[a\0\xE6a\x01\xA36`\x04a\x07\x95V[a\x03BV[a\0\xFAa\x01\xB66`\x04a\x08\x17V[a\x03OV[```\x03\x80Ta\x01\xCA\x90a\x08HV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xF6\x90a\x08HV[\x80\x15a\x02AW\x80`\x1F\x10a\x02\x18Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02AV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02$W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_3a\x02X\x81\x85\x85a\x03yV[`\x01\x91PP[\x92\x91PPV[_a\x02p\x84\x84\x84a\x04\x9CV[P`\x01\x93\x92PPPV[_3a\x02X\x81\x85\x85a\x02\x8C\x83\x83a\x03OV[a\x02\x96\x91\x90a\x08\x80V[a\x03yV[a\x02\xA5\x82\x82a\x06iV[PPV[```\x04\x80Ta\x01\xCA\x90a\x08HV[_3\x81a\x02\xC5\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\x037\x82\x86\x86\x84\x03a\x03yV[P`\x01\x94\x93PPPPV[_3a\x02X\x81\x85\x85a\x04\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16_\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\xDBW`@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\x9C\x9D\x83\"*\nd\x18\x07\xE6\xB8`\xD8dsolcC\0\x08\x1B\x003`\x80`@R`@Qa\x0C\xF28\x03\x80a\x0C\xF2\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x03\xB7V[\x82\x81a\0/\x82\x82_a\0CV[Pa\0;\x90P\x82a\0nV[PPPa\x04\xD3V[a\0L\x83a\0\xDBV[_\x82Q\x11\x80a\0XWP\x80[\x15a\0iWa\0g\x83\x83a\x01\x1AV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\0\xAD_Q` a\x0C\xAB_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\0\xD8\x81a\x01FV[PV[a\0\xE4\x81a\x01\xE1V[`@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_\x90\xA2PV[``a\x01?\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x0C\xCB`'\x919a\x02uV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xB0W`@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[\x80_Q` a\x0C\xAB_9_Q\x90_R[\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\x81\x16;a\x02NW`@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\x01\xA7V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xC0V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x02\xDDW`@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\x01\xA7V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xF7\x91\x90a\x04\x88V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x03/W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x034V[``\x91P[P\x90\x92P\x90Pa\x03E\x82\x82\x86a\x03OV[\x96\x95PPPPPPV[``\x83\x15a\x03^WP\x81a\x01?V[\x82Q\x15a\x03nW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xA7\x91\x90a\x04\x9EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x9EW__\xFD[\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x03\xC9W__\xFD[a\x03\xD2\x84a\x03\x88V[\x92Pa\x03\xE0` \x85\x01a\x03\x88V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\xFBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x04\x0BW__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04$Wa\x04$a\x03\xA3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x04RWa\x04Ra\x03\xA3V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x04iW__\xFD[\x81` \x84\x01` \x83\x01^_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[a\x07\xCB\x80a\x04\xE0_9_\xF3\xFE`\x80`@R`\x046\x10a\0MW_5`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0dW\x80cO\x1E\xF2\x86\x14a\0\x83W\x80c\\`\xDA\x1B\x14a\0\x96W\x80c\x8F(9p\x14a\0\xC6W\x80c\xF8Q\xA4@\x14a\0\xE5Wa\0\\V[6a\0\\Wa\0Za\0\xF9V[\0[a\0Za\0\xF9V[4\x80\x15a\0oW__\xFD[Pa\0Za\0~6`\x04a\x06\x8CV[a\x01\x13V[a\0Za\0\x916`\x04a\x06\xA5V[a\x01NV[4\x80\x15a\0\xA1W__\xFD[Pa\0\xAAa\x01\xB4V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD1W__\xFD[Pa\0Za\0\xE06`\x04a\x06\x8CV[a\x01\xE4V[4\x80\x15a\0\xF0W__\xFD[Pa\0\xAAa\x02\x04V[a\x01\x01a\x02$V[a\x01\x11a\x01\x0Ca\x02\xB9V[a\x02\xC2V[V[a\x01\x1Ba\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x03\x12V[PV[a\x01Ca\0\xF9V[a\x01Va\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xACWa\x01\xA7\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_\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x12\x91PPV[PPPV[a\x01\xA7a\0\xF9V[_a\x01\xBDa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xD9Wa\x01\xD4a\x02\xB9V[\x90P\x90V[a\x01\xE1a\0\xF9V[\x90V[a\x01\xECa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81a\x03\x80\x80\x15a\x02\xDCW=_\xF3[=_\xFD[_\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\x1B\x83a\x03\xB7V[_\x82Q\x11\x80a\x03'WP\x80[\x15a\x01\xA7Wa\x036\x83\x83a\x03\xF6V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03ea\x02\xE0V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01C\x81a\x04\"V[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x03V[a\x03\xC0\x81a\x04\xCBV[`@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_\x90\xA2PV[``a\x04\x1B\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x07o`'\x919a\x05_V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04\x87W`@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\x02\xB0V[\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[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x058W`@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\x02\xB0V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04\xAAV[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x05\xC7W`@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\x02\xB0V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05\xE1\x91\x90a\x07#V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x06\x19W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x06\x1EV[``\x91P[P\x91P\x91Pa\x06.\x82\x82\x86a\x068V[\x96\x95PPPPPPV[``\x83\x15a\x06GWP\x81a\x04\x1BV[\x82Q\x15a\x06WW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB0\x91\x90a\x079V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x87W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\x9CW__\xFD[a\x04\x1B\x82a\x06qV[___`@\x84\x86\x03\x12\x15a\x06\xB7W__\xFD[a\x06\xC0\x84a\x06qV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xDBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x06\xEBW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x01W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x07\x12W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xF7\xD2\xAB\x95a\x9B\xF8R\xF9-\xBB\x93]\\\x891\x9E\xD0\xB1/\xB2K\xC3\x10\xAD\xF1-s%\xF5/\xCBdsolcC\0\x08\x1B\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 \xA7\xAD\xC1\xCC\xDFI)\xAB\xBB\x97\xB2\x93G\xB1\xF0\xEB\xF6[\xF7I\xD9V@\x04\\\x81\x143F\xE5\xDD-dsolcC\0\x08\x1B\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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/deploy/ecdsa.rs b/crates/utils/src/deploy/ecdsa.rs new file mode 100644 index 00000000..8ef983b3 --- /dev/null +++ b/crates/utils/src/deploy/ecdsa.rs @@ -0,0 +1,221 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod ECDSA { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203c35e346f9edfd0e6104c00fee037871660f1463d6587f8d345d8ad7b42df53e64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 <5\xE3F\xF9\xED\xFD\x0Ea\x04\xC0\x0F\xEE\x03xqf\x0F\x14c\xD6X\x7F\x8D4]\x8A\xD7\xB4-\xF5>dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203c35e346f9edfd0e6104c00fee037871660f1463d6587f8d345d8ad7b42df53e64736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 <5\xE3F\xF9\xED\xFD\x0Ea\x04\xC0\x0F\xEE\x03xqf\x0F\x14c\xD6X\x7F\x8D4]\x8A\xD7\xB4-\xF5>dsolcC\0\x08\x1B\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/eigenlayercontractsparser.rs b/crates/utils/src/deploy/eigenlayercontractsparser.rs similarity index 90% rename from crates/utils/src/eigenlayercontractsparser.rs rename to crates/utils/src/deploy/eigenlayercontractsparser.rs index 96e753c9..26bb9f09 100644 --- a/crates/utils/src/eigenlayercontractsparser.rs +++ b/crates/utils/src/deploy/eigenlayercontractsparser.rs @@ -25,44 +25,54 @@ interface EigenlayerContractsParser { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod EigenlayerContractsParser { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212208681bca6b411d1a81852fda5d6e404a4249013a0bd1f6194a58406f68097612564736f6c634300080c0033 + ///0x6080604052600c805462ff00ff191662010001179055348015601f575f5ffd5b50608680602b5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063f8ccbf4714602a575b5f5ffd5b600c54603c9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220ce0ec4116f903e7abeb835c75bb5c03d0a5a03c08df0303ad25e5b30b5c3fe8064736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15`\x1FW__\xFD[P`\x86\x80`+_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`*W[__\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 \xCE\x0E\xC4\x11o\x90>z\xBE\xB85\xC7[\xB5\xC0=\nZ\x03\xC0\x8D\xF00:\xD2^[0\xB5\xC3\xFE\x80dsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212208681bca6b411d1a81852fda5d6e404a4249013a0bd1f6194a58406f68097612564736f6c634300080c0033 + ///0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063f8ccbf4714602a575b5f5ffd5b600c54603c9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220ce0ec4116f903e7abeb835c75bb5c03d0a5a03c08df0303ad25e5b30b5c3fe8064736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`*W[__\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 \xCE\x0E\xC4\x11o\x90>z\xBE\xB85\xC7[\xB5\xC0=\nZ\x03\xC0\x8D\xF00:\xD2^[0\xB5\xC3\xFE\x80dsolcC\0\x08\x1B\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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/deploy/eip1271signatureutils.rs b/crates/utils/src/deploy/eip1271signatureutils.rs new file mode 100644 index 00000000..7eea2ad6 --- /dev/null +++ b/crates/utils/src/deploy/eip1271signatureutils.rs @@ -0,0 +1,227 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod EIP1271SignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e34551a8d98a9685160d29bb56da7fc40fa9dc63108644405ee30981a39ca15664736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 \xE3EQ\xA8\xD9\x8A\x96\x85\x16\r)\xBBV\xDA\x7F\xC4\x0F\xA9\xDCc\x10\x86D@^\xE3\t\x81\xA3\x9C\xA1VdsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e34551a8d98a9685160d29bb56da7fc40fa9dc63108644405ee30981a39ca15664736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 \xE3EQ\xA8\xD9\x8A\x96\x85\x16\r)\xBBV\xDA\x7F\xC4\x0F\xA9\xDCc\x10\x86D@^\xE3\t\x81\xA3\x9C\xA1VdsolcC\0\x08\x1B\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/deploy/eip712.rs similarity index 98% rename from crates/utils/src/eip712.rs rename to crates/utils/src/deploy/eip712.rs index 941d4f1a..76f03eb4 100644 --- a/crates/utils/src/eip712.rs +++ b/crates/utils/src/deploy/eip712.rs @@ -9,7 +9,12 @@ interface EIP712 {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod EIP712 { use super::*; use alloy::sol_types as alloy_sol_types; diff --git a/crates/utils/src/deploy/emptycontract.rs b/crates/utils/src/deploy/emptycontract.rs new file mode 100644 index 00000000..33a026e6 --- /dev/null +++ b/crates/utils/src/deploy/emptycontract.rs @@ -0,0 +1,428 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod EmptyContract { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea264697066735822122011e61fbf0efe20efd2a44429869857506ff0229eaea2d630f1f8234ca75343a064736f6c634300081b0033 + /// ``` + #[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`\x0EW__\xFD[P`s\x80`\x1A_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xC2\x98Ux\x14`*W[__\xFD[_`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x11\xE6\x1F\xBF\x0E\xFE \xEF\xD2\xA4D)\x86\x98WPo\xF0\"\x9E\xAE\xA2\xD60\xF1\xF8#L\xA7SC\xA0dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea264697066735822122011e61fbf0efe20efd2a44429869857506ff0229eaea2d630f1f8234ca75343a064736f6c634300081b0033 + /// ``` + #[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`\x0EW__\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xC2\x98Ux\x14`*W[__\xFD[_`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x11\xE6\x1F\xBF\x0E\xFE \xEF\xD2\xA4D)\x86\x98WPo\xF0\"\x9E\xAE\xA2\xD60\xF1\xF8#L\xA7SC\xA0dsolcC\0\x08\x1B\x003", + ); + /**Function with signature `foo()` and selector `0xc2985578`. + ```solidity + function foo() external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct fooCall {} + ///Container type for the return parameters of the [`foo()`](fooCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct fooReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/deploy/endian.rs b/crates/utils/src/deploy/endian.rs new file mode 100644 index 00000000..bdd1133d --- /dev/null +++ b/crates/utils/src/deploy/endian.rs @@ -0,0 +1,223 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod Endian { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208e85bf729f4d0e686e702f494ae4fe7d4c0e32c85855bdf953d8c7c1a3ad8ea364736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 \x8E\x85\xBFr\x9FM\x0Ehnp/IJ\xE4\xFE}L\x0E2\xC8XU\xBD\xF9S\xD8\xC7\xC1\xA3\xAD\x8E\xA3dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208e85bf729f4d0e686e702f494ae4fe7d4c0e32c85855bdf953d8c7c1a3ad8ea364736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 \x8E\x85\xBFr\x9FM\x0Ehnp/IJ\xE4\xFE}L\x0E2\xC8XU\xBD\xF9S\xD8\xC7\xC1\xA3\xAD\x8E\xA3dsolcC\0\x08\x1B\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/deploy/erc1967proxy.rs b/crates/utils/src/deploy/erc1967proxy.rs new file mode 100644 index 00000000..1f5e4719 --- /dev/null +++ b/crates/utils/src/deploy/erc1967proxy.rs @@ -0,0 +1,820 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod ERC1967Proxy { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260405161049b38038061049b833981016040819052610022916102a4565b61002d82825f610034565b50506103be565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104746027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6101e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610133565b5f5f856001600160a01b0316856040516101ff9190610373565b5f60405180830381855af49150503d805f8114610237576040519150601f19603f3d011682016040523d82523d5f602084013e61023c565b606091505b50909250905061024d828286610257565b9695505050505050565b606083156102665750816100c3565b8251156102765782518084602001fd5b8160405162461bcd60e51b81526004016101339190610389565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156102b5575f5ffd5b82516001600160a01b03811681146102cb575f5ffd5b60208401519092506001600160401b038111156102e6575f5ffd5b8301601f810185136102f6575f5ffd5b80516001600160401b0381111561030f5761030f610290565b604051601f8201601f19908116603f011681016001600160401b038111828210171561033d5761033d610290565b604052818152828201602001871015610354575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60aa806103ca5f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212200c1da0f7bf8235226393ccee08e66106dbfdac0a177249faae57032fae24e7f364736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`@Qa\x04\x9B8\x03\x80a\x04\x9B\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x02\xA4V[a\0-\x82\x82_a\x004V[PPa\x03\xBEV[a\0=\x83a\0_V[_\x82Q\x11\x80a\0IWP\x80[\x15a\0ZWa\0X\x83\x83a\0\x9EV[P[PPPV[a\0h\x81a\0\xCAV[`@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_\x90\xA2PV[``a\0\xC3\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x04t`'\x919a\x01}V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x01 v\xCC75\xA9 \xA3\xCAP]8+\xBC\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\x84\x16;a\x01\xE5W`@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\x013V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01\xFF\x91\x90a\x03sV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x027W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02 v\xCC75\xA9 \xA3\xCAP]8+\xBCT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[6__7__6_\x84Z\xF4=__>\x80\x80\x15`pW=_\xF3[=_\xFD\xFE\xA2dipfsX\"\x12 \x0C\x1D\xA0\xF7\xBF\x825\"c\x93\xCC\xEE\x08\xE6a\x06\xDB\xFD\xAC\n\x17rI\xFA\xAEW\x03/\xAE$\xE7\xF3dsolcC\0\x08\x1B\x003Address: low-level delegate call failed", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212200c1da0f7bf8235226393ccee08e66106dbfdac0a177249faae57032fae24e7f364736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R6`\x10W`\x0E`\x13V[\0[`\x0E[`\x1F`\x1B`!V[`WV[V[_`R\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__7__6_\x84Z\xF4=__>\x80\x80\x15`pW=_\xF3[=_\xFD\xFE\xA2dipfsX\"\x12 \x0C\x1D\xA0\xF7\xBF\x825\"c\x93\xCC\xEE\x08\xE6a\x06\xDB\xFD\xAC\n\x17rI\xFA\xAEW\x03/\xAE$\xE7\xF3dsolcC\0\x08\x1B\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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/deploy/erc1967upgrade.rs similarity index 96% rename from crates/utils/src/erc1967upgrade.rs rename to crates/utils/src/deploy/erc1967upgrade.rs index 3f092a97..1c93da48 100644 --- a/crates/utils/src/erc1967upgrade.rs +++ b/crates/utils/src/deploy/erc1967upgrade.rs @@ -59,7 +59,12 @@ interface ERC1967Upgrade { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ERC1967Upgrade { use super::*; use alloy::sol_types as alloy_sol_types; @@ -87,7 +92,12 @@ pub mod ERC1967Upgrade { ```solidity event AdminChanged(address previousAdmin, address newAdmin); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct AdminChanged { #[allow(missing_docs)] @@ -95,7 +105,12 @@ pub mod ERC1967Upgrade { #[allow(missing_docs)] pub newAdmin: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -186,13 +201,23 @@ pub mod ERC1967Upgrade { ```solidity event BeaconUpgraded(address indexed beacon); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -276,13 +301,23 @@ pub mod ERC1967Upgrade { ```solidity event Upgraded(address indexed implementation); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] diff --git a/crates/utils/src/deploy/erc20.rs b/crates/utils/src/deploy/erc20.rs new file mode 100644 index 00000000..67d8a3ec --- /dev/null +++ b/crates/utils/src/deploy/erc20.rs @@ -0,0 +1,2650 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod ERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b50604051610ae0380380610ae083398101604081905261002e916100ec565b600361003a83826101d5565b50600461004782826101d5565b50505061028f565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610072575f5ffd5b81516001600160401b0381111561008b5761008b61004f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100b9576100b961004f565b6040528181528382016020018510156100d0575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f604083850312156100fd575f5ffd5b82516001600160401b03811115610112575f5ffd5b61011e85828601610063565b602085015190935090506001600160401b0381111561013b575f5ffd5b61014785828601610063565b9150509250929050565b600181811c9082168061016557607f821691505b60208210810361018357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101d057805f5260205f20601f840160051c810160208510156101ae5750805b601f840160051c820191505b818110156101cd575f81556001016101ba565b50505b505050565b81516001600160401b038111156101ee576101ee61004f565b610202816101fc8454610151565b84610189565b6020601f821160018114610234575f831561021d5750848201515b5f19600385901b1c1916600184901b1784556101cd565b5f84815260208120601f198516915b828110156102635787850151825560209485019460019092019101610243565b508482101561028057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6108448061029c5f395ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf91906106b4565b60405180910390f35b6100db6100d6366004610704565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b36600461072c565b610244565b604051601281526020016100bf565b6100db61012d366004610704565b610267565b6100ef610140366004610766565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db610170366004610704565b610297565b6100db610183366004610704565b610316565b6100ef610196366004610786565b610323565b6060600380546101aa906107b7565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107b7565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107ef565b61034d565b6060600480546101aa906107b7565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061065b9084906107ef565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106a791815260200190565b60405180910390a36104e2565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106ff575f5ffd5b919050565b5f5f60408385031215610715575f5ffd5b61071e836106e9565b946020939093013593505050565b5f5f5f6060848603121561073e575f5ffd5b610747846106e9565b9250610755602085016106e9565b929592945050506040919091013590565b5f60208284031215610776575f5ffd5b61077f826106e9565b9392505050565b5f5f60408385031215610797575f5ffd5b6107a0836106e9565b91506107ae602084016106e9565b90509250929050565b600181811c908216806107cb57607f821691505b6020821081036107e957634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220ab6bd75fe21d3b41f46206596556101f27f2bb92895fbb55e49db40dac5f026364736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`@Qa\n\xE08\x03\x80a\n\xE0\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\xECV[`\x03a\0:\x83\x82a\x01\xD5V[P`\x04a\0G\x82\x82a\x01\xD5V[PPPa\x02\x8FV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\0rW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\0\x8BWa\0\x8Ba\0OV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\0\xB9Wa\0\xB9a\0OV[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a\0\xD0W__\xFD[\x81` \x85\x01` \x83\x01^_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\0\xFDW__\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01\x12W__\xFD[a\x01\x1E\x85\x82\x86\x01a\0cV[` \x85\x01Q\x90\x93P\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01;W__\xFD[a\x01G\x85\x82\x86\x01a\0cV[\x91PP\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x01eW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x01\x83WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x01\xD0W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x01\xAEWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x01\xCDW_\x81U`\x01\x01a\x01\xBAV[PP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01\xEEWa\x01\xEEa\0OV[a\x02\x02\x81a\x01\xFC\x84Ta\x01QV[\x84a\x01\x89V[` `\x1F\x82\x11`\x01\x81\x14a\x024W_\x83\x15a\x02\x1DWP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\x01\xCDV[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x02cW\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x02CV[P\x84\x82\x10\x15a\x02\x80W\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x08D\x80a\x02\x9C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xA6W_5`\xE0\x1C\x80c9P\x93Q\x11a\0nW\x80c9P\x93Q\x14a\x01\x1FW\x80cp\xA0\x821\x14a\x012W\x80c\x95\xD8\x9BA\x14a\x01ZW\x80c\xA4W\xC2\xD7\x14a\x01bW\x80c\xA9\x05\x9C\xBB\x14a\x01uW\x80c\xDDb\xED>\x14a\x01\x88W__\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xAAW\x80c\t^\xA7\xB3\x14a\0\xC8W\x80c\x18\x16\r\xDD\x14a\0\xEBW\x80c#\xB8r\xDD\x14a\0\xFDW\x80c1<\xE5g\x14a\x01\x10W[__\xFD[a\0\xB2a\x01\x9BV[`@Qa\0\xBF\x91\x90a\x06\xB4V[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x07\x04V[a\x02+V[`@Q\x90\x15\x15\x81R` \x01a\0\xBFV[`\x02T[`@Q\x90\x81R` \x01a\0\xBFV[a\0\xDBa\x01\x0B6`\x04a\x07,V[a\x02DV[`@Q`\x12\x81R` \x01a\0\xBFV[a\0\xDBa\x01-6`\x04a\x07\x04V[a\x02gV[a\0\xEFa\x01@6`\x04a\x07fV[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xB2a\x02\x88V[a\0\xDBa\x01p6`\x04a\x07\x04V[a\x02\x97V[a\0\xDBa\x01\x836`\x04a\x07\x04V[a\x03\x16V[a\0\xEFa\x01\x966`\x04a\x07\x86V[a\x03#V[```\x03\x80Ta\x01\xAA\x90a\x07\xB7V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xD6\x90a\x07\xB7V[\x80\x15a\x02!W\x80`\x1F\x10a\x01\xF8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02!V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x04W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_3a\x028\x81\x85\x85a\x03MV[`\x01\x91PP[\x92\x91PPV[_3a\x02Q\x85\x82\x85a\x04pV[a\x02\\\x85\x85\x85a\x04\xE8V[P`\x01\x94\x93PPPPV[_3a\x028\x81\x85\x85a\x02y\x83\x83a\x03#V[a\x02\x83\x91\x90a\x07\xEFV[a\x03MV[```\x04\x80Ta\x01\xAA\x90a\x07\xB7V[_3\x81a\x02\xA4\x82\x86a\x03#V[\x90P\x83\x81\x10\x15a\x03\tW`@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\x02\\\x82\x86\x86\x84\x03a\x03MV[_3a\x028\x81\x85\x85a\x04\xE8V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16_\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\xAFW`@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\0V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04\x10W`@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\0V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\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[_a\x04{\x84\x84a\x03#V[\x90P_\x19\x81\x14a\x04\xE2W\x81\x81\x10\x15a\x04\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\0V[a\x04\xE2\x84\x84\x84\x84\x03a\x03MV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05LW`@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\0V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x05\xAEW`@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\0V[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06%W`@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\0V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R` \x81\x90R`@\x80\x82 \x85\x85\x03\x90U\x91\x85\x16\x81R\x90\x81 \x80T\x84\x92\x90a\x06[\x90\x84\x90a\x07\xEFV[\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\xA7\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x04\xE2V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xFFW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x07\x15W__\xFD[a\x07\x1E\x83a\x06\xE9V[\x94` \x93\x90\x93\x015\x93PPPV[___``\x84\x86\x03\x12\x15a\x07>W__\xFD[a\x07G\x84a\x06\xE9V[\x92Pa\x07U` \x85\x01a\x06\xE9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\x07vW__\xFD[a\x07\x7F\x82a\x06\xE9V[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x07\x97W__\xFD[a\x07\xA0\x83a\x06\xE9V[\x91Pa\x07\xAE` \x84\x01a\x06\xE9V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x07\xCBW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x07\xE9WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02>WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \xABk\xD7_\xE2\x1D;A\xF4b\x06YeV\x10\x1F'\xF2\xBB\x92\x89_\xBBU\xE4\x9D\xB4\r\xAC_\x02cdsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf91906106b4565b60405180910390f35b6100db6100d6366004610704565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b36600461072c565b610244565b604051601281526020016100bf565b6100db61012d366004610704565b610267565b6100ef610140366004610766565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db610170366004610704565b610297565b6100db610183366004610704565b610316565b6100ef610196366004610786565b610323565b6060600380546101aa906107b7565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107b7565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107ef565b61034d565b6060600480546101aa906107b7565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061065b9084906107ef565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106a791815260200190565b60405180910390a36104e2565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106ff575f5ffd5b919050565b5f5f60408385031215610715575f5ffd5b61071e836106e9565b946020939093013593505050565b5f5f5f6060848603121561073e575f5ffd5b610747846106e9565b9250610755602085016106e9565b929592945050506040919091013590565b5f60208284031215610776575f5ffd5b61077f826106e9565b9392505050565b5f5f60408385031215610797575f5ffd5b6107a0836106e9565b91506107ae602084016106e9565b90509250929050565b600181811c908216806107cb57607f821691505b6020821081036107e957634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220ab6bd75fe21d3b41f46206596556101f27f2bb92895fbb55e49db40dac5f026364736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\0\xA6W_5`\xE0\x1C\x80c9P\x93Q\x11a\0nW\x80c9P\x93Q\x14a\x01\x1FW\x80cp\xA0\x821\x14a\x012W\x80c\x95\xD8\x9BA\x14a\x01ZW\x80c\xA4W\xC2\xD7\x14a\x01bW\x80c\xA9\x05\x9C\xBB\x14a\x01uW\x80c\xDDb\xED>\x14a\x01\x88W__\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xAAW\x80c\t^\xA7\xB3\x14a\0\xC8W\x80c\x18\x16\r\xDD\x14a\0\xEBW\x80c#\xB8r\xDD\x14a\0\xFDW\x80c1<\xE5g\x14a\x01\x10W[__\xFD[a\0\xB2a\x01\x9BV[`@Qa\0\xBF\x91\x90a\x06\xB4V[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x07\x04V[a\x02+V[`@Q\x90\x15\x15\x81R` \x01a\0\xBFV[`\x02T[`@Q\x90\x81R` \x01a\0\xBFV[a\0\xDBa\x01\x0B6`\x04a\x07,V[a\x02DV[`@Q`\x12\x81R` \x01a\0\xBFV[a\0\xDBa\x01-6`\x04a\x07\x04V[a\x02gV[a\0\xEFa\x01@6`\x04a\x07fV[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xB2a\x02\x88V[a\0\xDBa\x01p6`\x04a\x07\x04V[a\x02\x97V[a\0\xDBa\x01\x836`\x04a\x07\x04V[a\x03\x16V[a\0\xEFa\x01\x966`\x04a\x07\x86V[a\x03#V[```\x03\x80Ta\x01\xAA\x90a\x07\xB7V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xD6\x90a\x07\xB7V[\x80\x15a\x02!W\x80`\x1F\x10a\x01\xF8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02!V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x04W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_3a\x028\x81\x85\x85a\x03MV[`\x01\x91PP[\x92\x91PPV[_3a\x02Q\x85\x82\x85a\x04pV[a\x02\\\x85\x85\x85a\x04\xE8V[P`\x01\x94\x93PPPPV[_3a\x028\x81\x85\x85a\x02y\x83\x83a\x03#V[a\x02\x83\x91\x90a\x07\xEFV[a\x03MV[```\x04\x80Ta\x01\xAA\x90a\x07\xB7V[_3\x81a\x02\xA4\x82\x86a\x03#V[\x90P\x83\x81\x10\x15a\x03\tW`@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\x02\\\x82\x86\x86\x84\x03a\x03MV[_3a\x028\x81\x85\x85a\x04\xE8V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16_\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\xAFW`@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\0V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04\x10W`@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\0V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\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[_a\x04{\x84\x84a\x03#V[\x90P_\x19\x81\x14a\x04\xE2W\x81\x81\x10\x15a\x04\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\0V[a\x04\xE2\x84\x84\x84\x84\x03a\x03MV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05LW`@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\0V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x05\xAEW`@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\0V[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06%W`@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\0V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R` \x81\x90R`@\x80\x82 \x85\x85\x03\x90U\x91\x85\x16\x81R\x90\x81 \x80T\x84\x92\x90a\x06[\x90\x84\x90a\x07\xEFV[\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\xA7\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x04\xE2V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xFFW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x07\x15W__\xFD[a\x07\x1E\x83a\x06\xE9V[\x94` \x93\x90\x93\x015\x93PPPV[___``\x84\x86\x03\x12\x15a\x07>W__\xFD[a\x07G\x84a\x06\xE9V[\x92Pa\x07U` \x85\x01a\x06\xE9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\x07vW__\xFD[a\x07\x7F\x82a\x06\xE9V[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x07\x97W__\xFD[a\x07\xA0\x83a\x06\xE9V[\x91Pa\x07\xAE` \x84\x01a\x06\xE9V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x07\xCBW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x07\xE9WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02>WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \xABk\xD7_\xE2\x1D;A\xF4b\x06YeV\x10\x1F'\xF2\xBB\x92\x89_\xBBU\xE4\x9D\xB4\r\xAC_\x02cdsolcC\0\x08\x1B\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decreaseAllowanceReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct increaseAllowanceReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/deploy/iavsdirectory.rs similarity index 85% rename from crates/utils/src/iavsdirectory.rs rename to crates/utils/src/deploy/iavsdirectory.rs index a468c131..e6090741 100644 --- a/crates/utils/src/iavsdirectory.rs +++ b/crates/utils/src/deploy/iavsdirectory.rs @@ -6,21 +6,31 @@ library ISignatureUtils { struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -370,7 +380,9 @@ interface IAVSDirectory { function OPERATOR_AVS_REGISTRATION_TYPEHASH() external view returns (bytes32); function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) external view returns (bytes32); + function cancelSalt(bytes32 salt) external; function deregisterOperatorFromAVS(address operator) external; + function domainSeparator() external view returns (bytes32); 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; @@ -427,6 +439,19 @@ interface IAVSDirectory { ], "stateMutability": "view" }, + { + "type": "function", + "name": "cancelSalt", + "inputs": [ + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "deregisterOperatorFromAVS", @@ -440,6 +465,19 @@ interface IAVSDirectory { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "domainSeparator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "operatorSaltIsSpent", @@ -558,7 +596,12 @@ interface IAVSDirectory { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IAVSDirectory { use super::*; use alloy::sol_types as alloy_sol_types; @@ -582,7 +625,7 @@ pub mod IAVSDirectory { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAVSRegistrationStatus(u8); const _: () = { @@ -695,7 +738,12 @@ pub mod IAVSDirectory { ```solidity event AVSMetadataURIUpdated(address indexed avs, string metadataURI); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct AVSMetadataURIUpdated { #[allow(missing_docs)] @@ -703,7 +751,12 @@ pub mod IAVSDirectory { #[allow(missing_docs)] pub metadataURI: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -794,7 +847,12 @@ pub mod IAVSDirectory { ```solidity event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, OperatorAVSRegistrationStatus status); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorAVSRegistrationStatusUpdated { #[allow(missing_docs)] @@ -804,7 +862,12 @@ pub mod IAVSDirectory { #[allow(missing_docs)] pub status: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -907,16 +970,21 @@ pub mod IAVSDirectory { ```solidity function OPERATOR_AVS_REGISTRATION_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1012,7 +1080,7 @@ pub mod IAVSDirectory { ```solidity function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateOperatorAVSRegistrationDigestHashCall { pub operator: alloy::sol_types::private::Address, @@ -1021,12 +1089,17 @@ pub mod IAVSDirectory { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateOperatorAVSRegistrationDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1160,20 +1233,139 @@ pub mod IAVSDirectory { } } }; + /**Function with signature `cancelSalt(bytes32)` and selector `0xec76f442`. + ```solidity + function cancelSalt(bytes32 salt) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct cancelSaltReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. ```solidity function deregisterOperatorFromAVS(address operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorFromAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1269,23 +1461,138 @@ pub mod IAVSDirectory { } } }; + /**Function with signature `domainSeparator()` and selector `0xf698da25`. + ```solidity + function domainSeparator() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorSaltIsSpentReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1400,7 +1707,7 @@ pub mod IAVSDirectory { ```solidity function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSCall { pub operator: alloy::sol_types::private::Address, @@ -1408,10 +1715,15 @@ pub mod IAVSDirectory { ::RustType, } ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1527,16 +1839,21 @@ pub mod IAVSDirectory { ```solidity function updateAVSMetadataURI(string memory metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1638,7 +1955,9 @@ pub mod IAVSDirectory { pub enum IAVSDirectoryCalls { OPERATOR_AVS_REGISTRATION_TYPEHASH(OPERATOR_AVS_REGISTRATION_TYPEHASHCall), calculateOperatorAVSRegistrationDigestHash(calculateOperatorAVSRegistrationDigestHashCall), + cancelSalt(cancelSaltCall), deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + domainSeparator(domainSeparatorCall), operatorSaltIsSpent(operatorSaltIsSpentCall), registerOperatorToAVS(registerOperatorToAVSCall), updateAVSMetadataURI(updateAVSMetadataURICall), @@ -1658,13 +1977,15 @@ pub mod IAVSDirectory { [163u8, 100u8, 244u8, 218u8], [169u8, 143u8, 179u8, 85u8], [215u8, 154u8, 206u8, 171u8], + [236u8, 118u8, 244u8, 66u8], + [246u8, 152u8, 218u8, 37u8], ]; } #[automatically_derived] impl alloy_sol_types::SolInterface for IAVSDirectoryCalls { const NAME: &'static str = "IAVSDirectoryCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 6usize; + const COUNT: usize = 8usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -1674,9 +1995,15 @@ pub mod IAVSDirectory { Self::calculateOperatorAVSRegistrationDigestHash(_) => { ::SELECTOR } + Self::cancelSalt(_) => { + ::SELECTOR + } Self::deregisterOperatorFromAVS(_) => { ::SELECTOR } + Self::domainSeparator(_) => { + ::SELECTOR + } Self::operatorSaltIsSpent(_) => { ::SELECTOR } @@ -1784,6 +2111,28 @@ pub mod IAVSDirectory { } OPERATOR_AVS_REGISTRATION_TYPEHASH }, + { + fn cancelSalt( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IAVSDirectoryCalls::cancelSalt) + } + cancelSalt + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IAVSDirectoryCalls::domainSeparator) + } + domainSeparator + }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { return Err(alloy_sol_types::Error::unknown_selector( @@ -1806,11 +2155,19 @@ pub mod IAVSDirectory { inner, ) } + Self::cancelSalt(inner) => { + ::abi_encoded_size(inner) + } Self::deregisterOperatorFromAVS(inner) => { ::abi_encoded_size( inner, ) } + Self::domainSeparator(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::operatorSaltIsSpent(inner) => { ::abi_encoded_size( inner, @@ -1843,12 +2200,24 @@ pub mod IAVSDirectory { out, ) } + Self::cancelSalt(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::deregisterOperatorFromAVS(inner) => { ::abi_encode_raw( inner, out, ) } + Self::domainSeparator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::operatorSaltIsSpent(inner) => { ::abi_encode_raw( inner, @@ -2150,6 +2519,13 @@ pub mod IAVSDirectory { 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 [`deregisterOperatorFromAVS`] function. pub fn deregisterOperatorFromAVS( &self, @@ -2157,6 +2533,12 @@ pub mod IAVSDirectory { ) -> 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 [`operatorSaltIsSpent`] function. pub fn operatorSaltIsSpent( &self, diff --git a/crates/utils/src/ibeacon.rs b/crates/utils/src/deploy/ibeacon.rs similarity index 97% rename from crates/utils/src/ibeacon.rs rename to crates/utils/src/deploy/ibeacon.rs index e5d059e7..d8b7f96f 100644 --- a/crates/utils/src/ibeacon.rs +++ b/crates/utils/src/deploy/ibeacon.rs @@ -25,7 +25,12 @@ interface IBeacon { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IBeacon { use super::*; use alloy::sol_types as alloy_sol_types; @@ -53,16 +58,21 @@ pub mod IBeacon { ```solidity function implementation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct implementationCall {} ///Container type for the return parameters of the [`implementation()`](implementationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct implementationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/iblsapkregistry.rs b/crates/utils/src/deploy/iblsapkregistry.rs similarity index 96% rename from crates/utils/src/iblsapkregistry.rs rename to crates/utils/src/deploy/iblsapkregistry.rs index 5599aa7c..805cc934 100644 --- a/crates/utils/src/iblsapkregistry.rs +++ b/crates/utils/src/deploy/iblsapkregistry.rs @@ -7,20 +7,30 @@ library BN254 { struct G2Point { uint256[2] X; uint256[2] Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -196,13 +206,18 @@ pub mod BN254 { /**```solidity struct G2Point { uint256[2] X; uint256[2] Y; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1064,7 +1079,12 @@ interface IBLSApkRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IBLSApkRegistry { use super::*; use alloy::sol_types as alloy_sol_types; @@ -1091,14 +1111,19 @@ pub mod IBLSApkRegistry { /**```solidity struct ApkUpdate { bytes24 apkHash; uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1311,14 +1336,19 @@ pub mod IBLSApkRegistry { /**```solidity struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PubkeyRegistrationParams { pub pubkeyRegistrationSignature: ::RustType, pub pubkeyG1: ::RustType, pub pubkeyG2: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1514,7 +1544,12 @@ pub mod IBLSApkRegistry { ```solidity event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct NewPubkeyRegistration { #[allow(missing_docs)] @@ -1524,7 +1559,12 @@ pub mod IBLSApkRegistry { #[allow(missing_docs)] pub pubkeyG2: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1616,7 +1656,12 @@ pub mod IBLSApkRegistry { ```solidity event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorAddedToQuorums { #[allow(missing_docs)] @@ -1626,7 +1671,12 @@ pub mod IBLSApkRegistry { #[allow(missing_docs)] pub quorumNumbers: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1722,7 +1772,12 @@ pub mod IBLSApkRegistry { ```solidity event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRemovedFromQuorums { #[allow(missing_docs)] @@ -1732,7 +1787,12 @@ pub mod IBLSApkRegistry { #[allow(missing_docs)] pub quorumNumbers: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1828,17 +1888,22 @@ pub mod IBLSApkRegistry { ```solidity function deregisterOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1953,18 +2018,23 @@ pub mod IBLSApkRegistry { ```solidity function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2067,7 +2137,7 @@ pub mod IBLSApkRegistry { ```solidity function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkHashAtBlockNumberAndIndexCall { pub quorumNumber: u8, @@ -2075,12 +2145,17 @@ pub mod IBLSApkRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkHashAtBlockNumberAndIndexReturn { pub _0: alloy::sol_types::private::FixedBytes<24>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2202,19 +2277,24 @@ pub mod IBLSApkRegistry { ```solidity function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2331,19 +2411,24 @@ pub mod IBLSApkRegistry { ```solidity function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (ApkUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2456,18 +2541,23 @@ pub mod IBLSApkRegistry { ```solidity function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorFromPubkeyHashReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2569,18 +2659,23 @@ pub mod IBLSApkRegistry { ```solidity function getOperatorId(address operator) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorIdReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2680,19 +2775,24 @@ pub mod IBLSApkRegistry { ```solidity function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2799,16 +2899,21 @@ pub mod IBLSApkRegistry { ```solidity function initializeQuorum(uint8 quorumNumber) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2910,18 +3015,23 @@ pub mod IBLSApkRegistry { ```solidity function operatorToPubkeyHash(address operator) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorToPubkeyHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3021,18 +3131,23 @@ pub mod IBLSApkRegistry { ```solidity function pubkeyHashToOperator(bytes32 pubkeyHash) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pubkeyHashToOperatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3134,7 +3249,7 @@ pub mod IBLSApkRegistry { ```solidity function registerBLSPublicKey(address operator, PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerBLSPublicKeyCall { pub operator: alloy::sol_types::private::Address, @@ -3142,12 +3257,17 @@ pub mod IBLSApkRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerBLSPublicKeyReturn { pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3273,17 +3393,22 @@ pub mod IBLSApkRegistry { ```solidity function registerOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3398,16 +3523,21 @@ pub mod IBLSApkRegistry { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/iblssignaturechecker.rs b/crates/utils/src/deploy/iblssignaturechecker.rs similarity index 97% rename from crates/utils/src/iblssignaturechecker.rs rename to crates/utils/src/deploy/iblssignaturechecker.rs index 504fa889..c139a78b 100644 --- a/crates/utils/src/iblssignaturechecker.rs +++ b/crates/utils/src/deploy/iblssignaturechecker.rs @@ -7,20 +7,30 @@ library BN254 { struct G2Point { uint256[2] X; uint256[2] Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -196,13 +206,18 @@ pub mod BN254 { /**```solidity struct G2Point { uint256[2] X; uint256[2] Y; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -771,7 +786,12 @@ interface IBLSSignatureChecker { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IBLSSignatureChecker { use super::*; use alloy::sol_types as alloy_sol_types; @@ -798,7 +818,7 @@ pub mod IBLSSignatureChecker { /**```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NonSignerStakesAndSignature { pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec, @@ -813,7 +833,12 @@ pub mod IBLSSignatureChecker { pub nonSignerStakeIndices: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1153,7 +1178,7 @@ pub mod IBLSSignatureChecker { /**```solidity struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct QuorumStakeTotals { pub signedStakeForQuorum: @@ -1161,7 +1186,12 @@ pub mod IBLSSignatureChecker { pub totalStakeForQuorum: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1354,13 +1384,23 @@ pub mod IBLSSignatureChecker { ```solidity event StaleStakesForbiddenUpdate(bool value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StaleStakesForbiddenUpdate { #[allow(missing_docs)] pub value: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1442,16 +1482,21 @@ pub mod IBLSSignatureChecker { ```solidity function blsApkRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryCall {} ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1547,7 +1592,7 @@ pub mod IBLSSignatureChecker { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct checkSignaturesCall { pub msgHash: alloy::sol_types::private::FixedBytes<32>, @@ -1557,13 +1602,18 @@ pub mod IBLSSignatureChecker { ::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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1709,16 +1759,21 @@ pub mod IBLSSignatureChecker { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1814,16 +1869,21 @@ pub mod IBLSSignatureChecker { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1919,16 +1979,21 @@ pub mod IBLSSignatureChecker { ```solidity function stakeRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryCall {} ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/idelegationmanager.rs b/crates/utils/src/deploy/idelegationmanager.rs similarity index 91% rename from crates/utils/src/idelegationmanager.rs rename to crates/utils/src/deploy/idelegationmanager.rs index cf993d57..b26a6328 100644 --- a/crates/utils/src/idelegationmanager.rs +++ b/crates/utils/src/deploy/idelegationmanager.rs @@ -6,20 +6,30 @@ library ISignatureUtils { struct SignatureWithExpiry { bytes signature; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -393,6 +403,7 @@ interface IDelegationManager { 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 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; @@ -404,6 +415,8 @@ interface IDelegationManager { 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 setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) 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); @@ -964,6 +977,30 @@ interface IDelegationManager { ], "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", @@ -1242,6 +1279,37 @@ interface IDelegationManager { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "setMinWithdrawalDelayBlocks", + "inputs": [ + { + "name": "newMinWithdrawalDelayBlocks", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "stakerNonce", @@ -1656,7 +1724,12 @@ interface IDelegationManager { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IDelegationManager { use super::*; use alloy::sol_types as alloy_sol_types; @@ -1683,14 +1756,19 @@ pub mod IDelegationManager { /**```solidity struct OperatorDetails { address __deprecated_earningsReceiver; address delegationApprover; uint32 stakerOptOutWindowBlocks; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1897,7 +1975,7 @@ pub mod IDelegationManager { /**```solidity struct QueuedWithdrawalParams { address[] strategies; uint256[] shares; address withdrawer; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct QueuedWithdrawalParams { pub strategies: alloy::sol_types::private::Vec, @@ -1905,7 +1983,12 @@ pub mod IDelegationManager { alloy::sol_types::private::Vec, pub withdrawer: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2110,7 +2193,7 @@ pub mod IDelegationManager { /**```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct Withdrawal { pub staker: alloy::sol_types::private::Address, @@ -2122,7 +2205,12 @@ pub mod IDelegationManager { pub shares: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2410,7 +2498,12 @@ pub mod IDelegationManager { ```solidity event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinWithdrawalDelayBlocksSet { #[allow(missing_docs)] @@ -2418,7 +2511,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub newValue: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2509,7 +2607,12 @@ pub mod IDelegationManager { ```solidity event OperatorDetailsModified(address indexed operator, OperatorDetails newOperatorDetails); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDetailsModified { #[allow(missing_docs)] @@ -2517,7 +2620,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub newOperatorDetails: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2607,7 +2715,12 @@ pub mod IDelegationManager { ```solidity event OperatorMetadataURIUpdated(address indexed operator, string metadataURI); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorMetadataURIUpdated { #[allow(missing_docs)] @@ -2615,7 +2728,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub metadataURI: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2706,7 +2824,12 @@ pub mod IDelegationManager { ```solidity event OperatorRegistered(address indexed operator, OperatorDetails operatorDetails); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -2714,7 +2837,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub operatorDetails: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2803,7 +2931,12 @@ pub mod IDelegationManager { ```solidity event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSharesDecreased { #[allow(missing_docs)] @@ -2815,7 +2948,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2919,7 +3057,12 @@ pub mod IDelegationManager { ```solidity event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSharesIncreased { #[allow(missing_docs)] @@ -2931,7 +3074,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3035,7 +3183,12 @@ pub mod IDelegationManager { ```solidity event StakerDelegated(address indexed staker, address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StakerDelegated { #[allow(missing_docs)] @@ -3043,7 +3196,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3138,7 +3296,12 @@ pub mod IDelegationManager { ```solidity event StakerForceUndelegated(address indexed staker, address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StakerForceUndelegated { #[allow(missing_docs)] @@ -3146,7 +3309,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3241,7 +3409,12 @@ pub mod IDelegationManager { ```solidity event StakerUndelegated(address indexed staker, address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StakerUndelegated { #[allow(missing_docs)] @@ -3249,7 +3422,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3344,7 +3522,12 @@ pub mod IDelegationManager { ```solidity event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyWithdrawalDelayBlocksSet { #[allow(missing_docs)] @@ -3354,7 +3537,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub newValue: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3451,13 +3639,23 @@ pub mod IDelegationManager { ```solidity event WithdrawalCompleted(bytes32 withdrawalRoot); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3541,7 +3739,12 @@ pub mod IDelegationManager { ```solidity event WithdrawalQueued(bytes32 withdrawalRoot, Withdrawal withdrawal); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct WithdrawalQueued { #[allow(missing_docs)] @@ -3549,7 +3752,12 @@ pub mod IDelegationManager { #[allow(missing_docs)] pub withdrawal: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3635,16 +3843,21 @@ pub mod IDelegationManager { ```solidity function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3740,16 +3953,21 @@ pub mod IDelegationManager { ```solidity function DOMAIN_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DOMAIN_TYPEHASHReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3845,16 +4063,21 @@ pub mod IDelegationManager { ```solidity function STAKER_DELEGATION_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3950,16 +4173,21 @@ pub mod IDelegationManager { ```solidity function beaconChainETHStrategy() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct beaconChainETHStrategyCall {} ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct beaconChainETHStrategyReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4055,7 +4283,7 @@ pub mod IDelegationManager { ```solidity function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateCurrentStakerDelegationDigestHashCall { pub staker: alloy::sol_types::private::Address, @@ -4063,12 +4291,17 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateCurrentStakerDelegationDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4199,7 +4432,7 @@ pub mod IDelegationManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateDelegationApprovalDigestHashCall { pub staker: alloy::sol_types::private::Address, @@ -4209,12 +4442,17 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateDelegationApprovalDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4361,7 +4599,7 @@ pub mod IDelegationManager { ```solidity function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateStakerDelegationDigestHashCall { pub staker: alloy::sol_types::private::Address, @@ -4370,12 +4608,17 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateStakerDelegationDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4510,18 +4753,23 @@ pub mod IDelegationManager { ```solidity function calculateWithdrawalRoot(Withdrawal memory withdrawal) external pure returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateWithdrawalRootReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4621,7 +4869,7 @@ pub mod IDelegationManager { ```solidity function completeQueuedWithdrawal(Withdrawal memory withdrawal, address[] memory tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct completeQueuedWithdrawalCall { pub withdrawal: ::RustType, @@ -4630,10 +4878,15 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct completeQueuedWithdrawalReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4765,7 +5018,7 @@ pub mod IDelegationManager { ```solidity function completeQueuedWithdrawals(Withdrawal[] memory withdrawals, address[][] memory tokens, uint256[] memory middlewareTimesIndexes, bool[] memory receiveAsTokens) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct completeQueuedWithdrawalsCall { pub withdrawals: @@ -4778,10 +5031,15 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct completeQueuedWithdrawalsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4927,18 +5185,23 @@ pub mod IDelegationManager { ```solidity function cumulativeWithdrawalsQueued(address staker) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct cumulativeWithdrawalsQueuedReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5038,7 +5301,7 @@ pub mod IDelegationManager { ```solidity function decreaseDelegatedShares(address staker, address strategy, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decreaseDelegatedSharesCall { pub staker: alloy::sol_types::private::Address, @@ -5046,10 +5309,15 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decreaseDelegatedSharesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5171,7 +5439,7 @@ pub mod IDelegationManager { ```solidity function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegateToCall { pub operator: alloy::sol_types::private::Address, @@ -5180,10 +5448,15 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegateToReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5309,7 +5582,7 @@ pub mod IDelegationManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegateToBySignatureCall { pub staker: alloy::sol_types::private::Address, @@ -5321,10 +5594,15 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegateToBySignatureReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5467,18 +5745,23 @@ pub mod IDelegationManager { ```solidity function delegatedTo(address staker) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegatedToReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5578,18 +5861,23 @@ pub mod IDelegationManager { ```solidity function delegationApprover(address operator) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationApproverReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5689,19 +5977,24 @@ pub mod IDelegationManager { ```solidity function delegationApproverSaltIsSpent(address _delegationApprover, bytes32 salt) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationApproverSaltIsSpentReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5816,16 +6109,21 @@ pub mod IDelegationManager { ```solidity function domainSeparator() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct domainSeparatorCall {} ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct domainSeparatorReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5917,24 +6215,161 @@ pub mod IDelegationManager { } } }; + /**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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorSharesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6055,18 +6490,23 @@ pub mod IDelegationManager { ```solidity function getWithdrawalDelay(address[] memory strategies) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getWithdrawalDelayReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6171,7 +6611,7 @@ pub mod IDelegationManager { ```solidity function increaseDelegatedShares(address staker, address strategy, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct increaseDelegatedSharesCall { pub staker: alloy::sol_types::private::Address, @@ -6179,10 +6619,15 @@ pub mod IDelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct increaseDelegatedSharesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6304,18 +6749,23 @@ pub mod IDelegationManager { ```solidity function isDelegated(address staker) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isDelegatedReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6415,18 +6865,23 @@ pub mod IDelegationManager { ```solidity function isOperator(address operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isOperatorReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6526,16 +6981,21 @@ pub mod IDelegationManager { ```solidity function minWithdrawalDelayBlocks() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minWithdrawalDelayBlocksCall {} ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minWithdrawalDelayBlocksReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6631,16 +7091,21 @@ pub mod IDelegationManager { ```solidity function modifyOperatorDetails(OperatorDetails memory newOperatorDetails) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct modifyOperatorDetailsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6741,18 +7206,23 @@ pub mod IDelegationManager { ```solidity function operatorDetails(address operator) external view returns (OperatorDetails memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorDetailsReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6853,19 +7323,24 @@ pub mod IDelegationManager { ```solidity function operatorShares(address operator, address strategy) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6980,7 +7455,7 @@ pub mod IDelegationManager { ```solidity function queueWithdrawals(QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct queueWithdrawalsCall { pub queuedWithdrawalParams: alloy::sol_types::private::Vec< @@ -6988,12 +7463,17 @@ pub mod IDelegationManager { >, } ///Container type for the return parameters of the [`queueWithdrawals((address[],uint256[],address)[])`](queueWithdrawalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct queueWithdrawalsReturn { pub _0: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7105,17 +7585,22 @@ pub mod IDelegationManager { ```solidity function registerAsOperator(OperatorDetails memory registeringOperatorDetails, string memory metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerAsOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7220,22 +7705,276 @@ pub mod IDelegationManager { } } }; + /**Function with signature `setMinWithdrawalDelayBlocks(uint256)` and selector `0x635bbd10`. + ```solidity + function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setMinWithdrawalDelayBlocksReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setStrategyWithdrawalDelayBlocks(address[],uint256[])` and selector `0x1522bf02`. + ```solidity + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWithdrawalDelayBlocksReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `stakerNonce(address)` and selector `0x29c77d4f`. ```solidity function stakerNonce(address staker) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerNonceReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7335,18 +8074,23 @@ pub mod IDelegationManager { ```solidity function stakerOptOutWindowBlocks(address operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerOptOutWindowBlocksReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7446,18 +8190,23 @@ pub mod IDelegationManager { ```solidity function strategyWithdrawalDelayBlocks(address strategy) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyWithdrawalDelayBlocksReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7557,19 +8306,24 @@ pub mod IDelegationManager { ```solidity function undelegate(address staker) external returns (bytes32[] memory withdrawalRoot); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct undelegateReturn { pub withdrawalRoot: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7674,16 +8428,21 @@ pub mod IDelegationManager { ```solidity function updateOperatorMetadataURI(string memory metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7801,6 +8560,7 @@ pub mod IDelegationManager { delegationApprover(delegationApproverCall), delegationApproverSaltIsSpent(delegationApproverSaltIsSpentCall), domainSeparator(domainSeparatorCall), + getDelegatableShares(getDelegatableSharesCall), getOperatorShares(getOperatorSharesCall), getWithdrawalDelay(getWithdrawalDelayCall), increaseDelegatedShares(increaseDelegatedSharesCall), @@ -7812,6 +8572,8 @@ pub mod IDelegationManager { operatorShares(operatorSharesCall), queueWithdrawals(queueWithdrawalsCall), registerAsOperator(registerAsOperatorCall), + setMinWithdrawalDelayBlocks(setMinWithdrawalDelayBlocksCall), + setStrategyWithdrawalDelayBlocks(setStrategyWithdrawalDelayBlocksCall), stakerNonce(stakerNonceCall), stakerOptOutWindowBlocks(stakerOptOutWindowBlocksCall), strategyWithdrawalDelayBlocks(strategyWithdrawalDelayBlocksCall), @@ -7833,6 +8595,7 @@ pub mod IDelegationManager { [13u8, 216u8, 221u8, 2u8], [15u8, 88u8, 158u8, 89u8], [19u8, 45u8, 73u8, 103u8], + [21u8, 34u8, 191u8, 2u8], [22u8, 146u8, 131u8, 101u8], [27u8, 188u8, 224u8, 145u8], [32u8, 96u8, 107u8, 112u8], @@ -7844,6 +8607,7 @@ pub mod IDelegationManager { [67u8, 55u8, 115u8, 130u8], [89u8, 123u8, 54u8, 218u8], [96u8, 215u8, 250u8, 237u8], + [99u8, 91u8, 189u8, 16u8], [101u8, 218u8, 18u8, 100u8], [109u8, 112u8, 247u8, 174u8], [119u8, 142u8, 85u8, 243u8], @@ -7857,6 +8621,7 @@ pub mod IDelegationManager { [196u8, 136u8, 55u8, 90u8], [197u8, 228u8, 128u8, 219u8], [201u8, 75u8, 81u8, 17u8], + [207u8, 128u8, 135u8, 62u8], [218u8, 139u8, 232u8, 100u8], [238u8, 169u8, 6u8, 75u8], [241u8, 97u8, 114u8, 176u8], @@ -7867,7 +8632,7 @@ pub mod IDelegationManager { impl alloy_sol_types::SolInterface for IDelegationManagerCalls { const NAME: &'static str = "IDelegationManagerCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 34usize; + const COUNT: usize = 37usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -7925,6 +8690,9 @@ pub mod IDelegationManager { Self::domainSeparator(_) => { ::SELECTOR } + Self::getDelegatableShares(_) => { + ::SELECTOR + } Self::getOperatorShares(_) => { ::SELECTOR } @@ -7958,6 +8726,12 @@ pub mod IDelegationManager { Self::registerAsOperator(_) => { ::SELECTOR } + Self::setMinWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::setStrategyWithdrawalDelayBlocks(_) => { + ::SELECTOR + } Self::stakerNonce(_) => { ::SELECTOR } @@ -8071,6 +8845,21 @@ pub mod IDelegationManager { } decreaseDelegatedShares }, + { + fn setStrategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IDelegationManagerCalls::setStrategyWithdrawalDelayBlocks, + ) + } + setStrategyWithdrawalDelayBlocks + }, { fn stakerOptOutWindowBlocks( data: &[u8], @@ -8207,6 +8996,19 @@ pub mod IDelegationManager { } completeQueuedWithdrawal }, + { + fn setMinWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IDelegationManagerCalls::setMinWithdrawalDelayBlocks) + } + setMinWithdrawalDelayBlocks + }, { fn delegatedTo( data: &[u8], @@ -8367,6 +9169,18 @@ pub mod IDelegationManager { } calculateStakerDelegationDigestHash }, + { + fn getDelegatableShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::getDelegatableShares) + } + getDelegatableShares + }, { fn undelegate( data: &[u8], @@ -8511,6 +9325,11 @@ pub mod IDelegationManager { inner, ) } + Self::getDelegatableShares(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getOperatorShares(inner) => { ::abi_encoded_size( inner, @@ -8564,6 +9383,16 @@ pub mod IDelegationManager { inner, ) } + Self::setMinWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStrategyWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::stakerNonce(inner) => { ::abi_encoded_size( inner, @@ -8700,6 +9529,12 @@ pub mod IDelegationManager { out, ) } + Self::getDelegatableShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getOperatorShares(inner) => { ::abi_encode_raw( inner, @@ -8766,6 +9601,18 @@ pub mod IDelegationManager { out, ) } + Self::setMinWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setStrategyWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::stakerNonce(inner) => { ::abi_encode_raw( inner, @@ -9426,6 +10273,13 @@ pub mod IDelegationManager { ) -> alloy_contract::SolCallBuilder { self.call_builder(&domainSeparatorCall {}) } + ///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, @@ -9521,6 +10375,29 @@ pub mod IDelegationManager { metadataURI, }) } + ///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 [`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 [`stakerNonce`] function. pub fn stakerNonce( &self, diff --git a/crates/utils/src/ieigenpod.rs b/crates/utils/src/deploy/ieigenpod.rs similarity index 72% rename from crates/utils/src/ieigenpod.rs rename to crates/utils/src/deploy/ieigenpod.rs index 91f3e831..622b7b12 100644 --- a/crates/utils/src/ieigenpod.rs +++ b/crates/utils/src/deploy/ieigenpod.rs @@ -3,24 +3,36 @@ ```solidity library BeaconChainProofs { + struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; } + struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; } 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; } + struct ValidatorProof { bytes32[] validatorFields; bytes proof; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod BeaconChainProofs { use super::*; use alloy::sol_types as alloy_sol_types; /**```solidity - struct StateRootProof { bytes32 beaconStateRoot; bytes proof; } + struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct StateRootProof { - pub beaconStateRoot: alloy::sol_types::private::FixedBytes<32>, + pub struct BalanceContainerProof { + pub balanceContainerRoot: alloy::sol_types::private::FixedBytes<32>, pub proof: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -44,33 +56,33 @@ pub mod BeaconChainProofs { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: StateRootProof) -> Self { - (value.beaconStateRoot, value.proof) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: BalanceContainerProof) -> Self { + (value.balanceContainerRoot, value.proof) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for StateRootProof { + impl ::core::convert::From> for BalanceContainerProof { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - beaconStateRoot: tuple.0, + balanceContainerRoot: tuple.0, proof: tuple.1, } } } #[automatically_derived] - impl alloy_sol_types::SolValue for StateRootProof { + impl alloy_sol_types::SolValue for BalanceContainerProof { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for StateRootProof { + impl alloy_sol_types::private::SolTypeValue for BalanceContainerProof { #[inline] fn stv_to_tokens(&self) -> ::Token<'_> { ( as alloy_sol_types::SolType>::tokenize(&self.beaconStateRoot), + > as alloy_sol_types::SolType>::tokenize(&self.balanceContainerRoot), ::tokenize( &self.proof, ), @@ -110,7 +122,7 @@ pub mod BeaconChainProofs { } } #[automatically_derived] - impl alloy_sol_types::SolType for StateRootProof { + impl alloy_sol_types::SolType for BalanceContainerProof { type RustType = Self; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; const SOL_NAME: &'static str = ::NAME; @@ -129,12 +141,12 @@ pub mod BeaconChainProofs { } } #[automatically_derived] - impl alloy_sol_types::SolStruct for StateRootProof { - const NAME: &'static str = "StateRootProof"; + impl alloy_sol_types::SolStruct for BalanceContainerProof { + const NAME: &'static str = "BalanceContainerProof"; #[inline] fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "StateRootProof(bytes32 beaconStateRoot,bytes proof)", + "BalanceContainerProof(bytes32 balanceContainerRoot,bytes proof)", ) } #[inline] @@ -153,7 +165,7 @@ pub mod BeaconChainProofs { as alloy_sol_types::SolType>::eip712_data_word( - &self.beaconStateRoot, + &self.balanceContainerRoot, ) .0, ::eip712_data_word( @@ -165,14 +177,14 @@ pub mod BeaconChainProofs { } } #[automatically_derived] - impl alloy_sol_types::EventTopic for StateRootProof { + impl alloy_sol_types::EventTopic for BalanceContainerProof { #[inline] fn topic_preimage_length(rust: &Self::RustType) -> usize { 0usize + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.beaconStateRoot, + &rust.balanceContainerRoot, ) + ::topic_preimage_length( &rust.proof, @@ -187,7 +199,7 @@ pub mod BeaconChainProofs { as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.beaconStateRoot, + &rust.balanceContainerRoot, out, ); ::encode_topic_preimage( @@ -204,56 +216,34 @@ pub mod BeaconChainProofs { } }; /**```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; } + struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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>, + pub struct BalanceProof { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + pub balanceRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, + alloy::sol_types::sol_data::Bytes, ); #[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>, + alloy::sol_types::private::Bytes, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -266,91 +256,40 @@ pub mod BeaconChainProofs { } #[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, - ) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: BalanceProof) -> Self { + (value.pubkeyHash, value.balanceRoot, value.proof) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for WithdrawalProof { + impl ::core::convert::From> for BalanceProof { 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, + pubkeyHash: tuple.0, + balanceRoot: tuple.1, + proof: tuple.2, } } } #[automatically_derived] - impl alloy_sol_types::SolValue for WithdrawalProof { + impl alloy_sol_types::SolValue for BalanceProof { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for WithdrawalProof { + impl alloy_sol_types::private::SolTypeValue for BalanceProof { #[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.pubkeyHash), as alloy_sol_types::SolType>::tokenize(&self.executionPayloadRoot), + > as alloy_sol_types::SolType>::tokenize(&self.balanceRoot), + ::tokenize( + &self.proof, + ), ) } #[inline] @@ -387,7 +326,7 @@ pub mod BeaconChainProofs { } } #[automatically_derived] - impl alloy_sol_types::SolType for WithdrawalProof { + impl alloy_sol_types::SolType for BalanceProof { type RustType = Self; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; const SOL_NAME: &'static str = ::NAME; @@ -406,12 +345,12 @@ pub mod BeaconChainProofs { } } #[automatically_derived] - impl alloy_sol_types::SolStruct for WithdrawalProof { - const NAME: &'static str = "WithdrawalProof"; + impl alloy_sol_types::SolStruct for BalanceProof { + const NAME: &'static str = "BalanceProof"; #[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)", + "BalanceProof(bytes32 pubkeyHash,bytes32 balanceRoot,bytes proof)", ) } #[inline] @@ -427,60 +366,16 @@ pub mod BeaconChainProofs { #[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) + > as alloy_sol_types::SolType>::eip712_data_word(&self.pubkeyHash) .0, as alloy_sol_types::SolType>::eip712_data_word(&self.timestampRoot) + > as alloy_sol_types::SolType>::eip712_data_word(&self.balanceRoot) .0, - as alloy_sol_types::SolType>::eip712_data_word( - &self.executionPayloadRoot, + ::eip712_data_word( + &self.proof, ) .0, ] @@ -488,59 +383,22 @@ pub mod BeaconChainProofs { } } #[automatically_derived] - impl alloy_sol_types::EventTopic for WithdrawalProof { + impl alloy_sol_types::EventTopic for BalanceProof { #[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, + &rust.pubkeyHash, ) + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.timestampRoot, + &rust.balanceRoot, ) - + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.executionPayloadRoot, + + ::topic_preimage_length( + &rust.proof, ) } #[inline] @@ -549,66 +407,20 @@ pub mod BeaconChainProofs { 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, + &rust.pubkeyHash, out, ); as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.timestampRoot, + &rust.balanceRoot, out, ); - as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.executionPayloadRoot, + ::encode_topic_preimage( + &rust.proof, out, ); } @@ -620,59 +432,454 @@ pub mod BeaconChainProofs { } } }; - 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.*/ + /**```solidity + struct StateRootProof { bytes32 beaconStateRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct BeaconChainProofsInstance { - address: alloy_sol_types::private::Address, - provider: P, - _network_transport: ::core::marker::PhantomData<(N, T)>, + pub struct StateRootProof { + pub beaconStateRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, } - #[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() + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + >(_) => {} + } } - } - /// 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] + #[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 ValidatorProof { bytes32[] validatorFields; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ValidatorProof { + pub validatorFields: + alloy::sol_types::private::Vec>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + 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: ValidatorProof) -> Self { + (value.validatorFields, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ValidatorProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorFields: tuple.0, + proof: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ValidatorProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ValidatorProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), + ::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 ValidatorProof { + 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 ValidatorProof { + const NAME: &'static str = "ValidatorProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ValidatorProof(bytes32[] validatorFields,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.validatorFields, + ) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ValidatorProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.validatorFields, + ) + + ::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.validatorFields, + 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)) + } + } + }; + 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, @@ -755,65 +962,72 @@ pub mod BeaconChainProofs { Generated by the following Solidity interface... ```solidity library BeaconChainProofs { + struct BalanceContainerProof { + bytes32 balanceContainerRoot; + bytes proof; + } + struct BalanceProof { + bytes32 pubkeyHash; + bytes32 balanceRoot; + bytes proof; + } 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; + struct ValidatorProof { + bytes32[] validatorFields; + bytes proof; } } interface IEigenPod { type VALIDATOR_STATUS is uint8; + struct Checkpoint { + bytes32 beaconBlockRoot; + uint24 proofsRemaining; + uint64 podBalanceGwei; + int128 balanceDeltasGwei; + } struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; - uint64 mostRecentBalanceUpdateTimestamp; + uint64 lastCheckpointedAt; VALIDATOR_STATUS status; } + event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount); + event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei); 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 ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter); event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount); - event RestakingActivated(address indexed podOwner); event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei); + event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); event ValidatorRestaked(uint40 validatorIndex); + event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); - function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() external view returns (uint64); - function activateRestaking() external; + function activeValidatorCount() external view returns (uint256); + function checkpointBalanceExitedGwei(uint64) external view returns (uint64); + function currentCheckpoint() external view returns (Checkpoint memory); + function currentCheckpointTimestamp() external view returns (uint64); function eigenPodManager() external view returns (address); - function hasRestaked() external view returns (bool); + function getParentBlockRoot(uint64 timestamp) external view returns (bytes32); function initialize(address owner) external; - function mostRecentWithdrawalTimestamp() external view returns (uint64); - function nonBeaconChainETHBalanceWei() external view returns (uint256); + function lastCheckpointTimestamp() external view returns (uint64); function podOwner() external view returns (address); - function provenWithdrawal(bytes32 validatorPubkeyHash, uint64 slot) external view returns (bool); + function proofSubmitter() external view returns (address); function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external; + function setProofSubmitter(address newProofSubmitter) external; function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + function startCheckpoint(bool revertIfNoBalance) external; 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 verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external; + function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external; + function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) external; function withdrawableRestakedExecutionLayerGwei() external view returns (uint64); } @@ -824,8 +1038,27 @@ interface IEigenPod { [ { "type": "function", - "name": "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR", + "name": "activeValidatorCount", "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "checkpointBalanceExitedGwei", + "inputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], "outputs": [ { "name": "", @@ -837,10 +1070,51 @@ interface IEigenPod { }, { "type": "function", - "name": "activateRestaking", + "name": "currentCheckpoint", "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.Checkpoint", + "components": [ + { + "name": "beaconBlockRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proofsRemaining", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "podBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "balanceDeltasGwei", + "type": "int128", + "internalType": "int128" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentCheckpointTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" }, { "type": "function", @@ -857,13 +1131,19 @@ interface IEigenPod { }, { "type": "function", - "name": "hasRestaked", - "inputs": [], + "name": "getParentBlockRoot", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + } + ], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "bytes32", + "internalType": "bytes32" } ], "stateMutability": "view" @@ -883,7 +1163,7 @@ interface IEigenPod { }, { "type": "function", - "name": "mostRecentWithdrawalTimestamp", + "name": "lastCheckpointTimestamp", "inputs": [], "outputs": [ { @@ -894,19 +1174,6 @@ interface IEigenPod { ], "stateMutability": "view" }, - { - "type": "function", - "name": "nonBeaconChainETHBalanceWei", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "podOwner", @@ -922,24 +1189,13 @@ interface IEigenPod { }, { "type": "function", - "name": "provenWithdrawal", - "inputs": [ - { - "name": "validatorPubkeyHash", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "slot", - "type": "uint64", - "internalType": "uint64" - } - ], + "name": "proofSubmitter", + "inputs": [], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "address", + "internalType": "address" } ], "stateMutability": "view" @@ -967,6 +1223,19 @@ interface IEigenPod { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "setProofSubmitter", + "inputs": [ + { + "name": "newProofSubmitter", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "stake", @@ -990,6 +1259,19 @@ interface IEigenPod { "outputs": [], "stateMutability": "payable" }, + { + "type": "function", + "name": "startCheckpoint", + "inputs": [ + { + "name": "revertIfNoBalance", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "validatorPubkeyHashToInfo", @@ -1017,7 +1299,7 @@ interface IEigenPod { "internalType": "uint64" }, { - "name": "mostRecentBalanceUpdateTimestamp", + "name": "lastCheckpointedAt", "type": "uint64", "internalType": "uint64" }, @@ -1058,7 +1340,7 @@ interface IEigenPod { "internalType": "uint64" }, { - "name": "mostRecentBalanceUpdateTimestamp", + "name": "lastCheckpointedAt", "type": "uint64", "internalType": "uint64" }, @@ -1112,20 +1394,15 @@ interface IEigenPod { }, { "type": "function", - "name": "verifyAndProcessWithdrawals", + "name": "verifyCheckpointProofs", "inputs": [ { - "name": "oracleTimestamp", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "stateRootProof", + "name": "balanceContainerProof", "type": "tuple", - "internalType": "struct BeaconChainProofs.StateRootProof", + "internalType": "struct BeaconChainProofs.BalanceContainerProof", "components": [ { - "name": "beaconStateRoot", + "name": "balanceContainerRoot", "type": "bytes32", "internalType": "bytes32" }, @@ -1137,86 +1414,26 @@ interface IEigenPod { ] }, { - "name": "withdrawalProofs", + "name": "proofs", "type": "tuple[]", - "internalType": "struct BeaconChainProofs.WithdrawalProof[]", + "internalType": "struct BeaconChainProofs.BalanceProof[]", "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", + "name": "pubkeyHash", "type": "bytes32", "internalType": "bytes32" }, { - "name": "timestampRoot", + "name": "balanceRoot", "type": "bytes32", "internalType": "bytes32" }, { - "name": "executionPayloadRoot", - "type": "bytes32", - "internalType": "bytes32" + "name": "proof", + "type": "bytes", + "internalType": "bytes" } ] - }, - { - "name": "validatorFieldsProofs", - "type": "bytes[]", - "internalType": "bytes[]" - }, - { - "name": "validatorFields", - "type": "bytes32[][]", - "internalType": "bytes32[][]" - }, - { - "name": "withdrawalFields", - "type": "bytes32[][]", - "internalType": "bytes32[][]" } ], "outputs": [], @@ -1224,18 +1441,13 @@ interface IEigenPod { }, { "type": "function", - "name": "verifyBalanceUpdates", + "name": "verifyStaleBalance", "inputs": [ { - "name": "oracleTimestamp", + "name": "beaconTimestamp", "type": "uint64", "internalType": "uint64" }, - { - "name": "validatorIndices", - "type": "uint40[]", - "internalType": "uint40[]" - }, { "name": "stateRootProof", "type": "tuple", @@ -1254,14 +1466,21 @@ interface IEigenPod { ] }, { - "name": "validatorFieldsProofs", - "type": "bytes[]", - "internalType": "bytes[]" - }, - { - "name": "validatorFields", - "type": "bytes32[][]", - "internalType": "bytes32[][]" + "name": "proof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.ValidatorProof", + "components": [ + { + "name": "validatorFields", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] } ], "outputs": [], @@ -1272,7 +1491,7 @@ interface IEigenPod { "name": "verifyWithdrawalCredentials", "inputs": [ { - "name": "oracleTimestamp", + "name": "beaconTimestamp", "type": "uint64", "internalType": "uint64" }, @@ -1299,39 +1518,14 @@ interface IEigenPod { "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" + "name": "validatorFieldsProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" } ], "outputs": [], @@ -1370,73 +1564,67 @@ interface IEigenPod { }, { "type": "event", - "name": "EigenPodStaked", + "name": "CheckpointCreated", "inputs": [ { - "name": "pubkey", - "type": "bytes", + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "beaconBlockRoot", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "validatorCount", + "type": "uint256", "indexed": false, - "internalType": "bytes" + "internalType": "uint256" } ], "anonymous": false }, { "type": "event", - "name": "FullWithdrawalRedeemed", + "name": "CheckpointFinalized", "inputs": [ { - "name": "validatorIndex", - "type": "uint40", - "indexed": false, - "internalType": "uint40" - }, - { - "name": "withdrawalTimestamp", + "name": "checkpointTimestamp", "type": "uint64", - "indexed": false, - "internalType": "uint64" - }, - { - "name": "recipient", - "type": "address", "indexed": true, - "internalType": "address" + "internalType": "uint64" }, { - "name": "withdrawalAmountGwei", - "type": "uint64", + "name": "totalShareDeltaWei", + "type": "int256", "indexed": false, - "internalType": "uint64" + "internalType": "int256" } ], "anonymous": false }, { "type": "event", - "name": "NonBeaconChainETHReceived", + "name": "EigenPodStaked", "inputs": [ { - "name": "amountReceived", - "type": "uint256", + "name": "pubkey", + "type": "bytes", "indexed": false, - "internalType": "uint256" + "internalType": "bytes" } ], "anonymous": false }, { "type": "event", - "name": "NonBeaconChainETHWithdrawn", + "name": "NonBeaconChainETHReceived", "inputs": [ { - "name": "recipient", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amountWithdrawn", + "name": "amountReceived", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -1446,31 +1634,19 @@ interface IEigenPod { }, { "type": "event", - "name": "PartialWithdrawalRedeemed", + "name": "ProofSubmitterUpdated", "inputs": [ { - "name": "validatorIndex", - "type": "uint40", - "indexed": false, - "internalType": "uint40" - }, - { - "name": "withdrawalTimestamp", - "type": "uint64", - "indexed": false, - "internalType": "uint64" - }, - { - "name": "recipient", + "name": "prevProofSubmitter", "type": "address", - "indexed": true, + "indexed": false, "internalType": "address" }, { - "name": "partialWithdrawalAmountGwei", - "type": "uint64", + "name": "newProofSubmitter", + "type": "address", "indexed": false, - "internalType": "uint64" + "internalType": "address" } ], "anonymous": false @@ -1494,19 +1670,6 @@ interface IEigenPod { ], "anonymous": false }, - { - "type": "event", - "name": "RestakingActivated", - "inputs": [ - { - "name": "podOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, { "type": "event", "name": "ValidatorBalanceUpdated", @@ -1532,6 +1695,25 @@ interface IEigenPod { ], "anonymous": false }, + { + "type": "event", + "name": "ValidatorCheckpointed", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "validatorIndex", + "type": "uint40", + "indexed": true, + "internalType": "uint40" + } + ], + "anonymous": false + }, { "type": "event", "name": "ValidatorRestaked", @@ -1544,10 +1726,34 @@ interface IEigenPod { } ], "anonymous": false + }, + { + "type": "event", + "name": "ValidatorWithdrawn", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "validatorIndex", + "type": "uint40", + "indexed": true, + "internalType": "uint40" + } + ], + "anonymous": false } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IEigenPod { use super::*; use alloy::sol_types as alloy_sol_types; @@ -1571,127 +1777,388 @@ pub mod IEigenPod { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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 { + 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 Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int128 balanceDeltasGwei; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Checkpoint { + pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>, + pub proofsRemaining: alloy::sol_types::private::primitives::aliases::U24, + pub podBalanceGwei: u64, + pub balanceDeltasGwei: i128, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<24>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Int<128>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U24, + u64, + i128, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Checkpoint) -> Self { + ( + value.beaconBlockRoot, + value.proofsRemaining, + value.podBalanceGwei, + value.balanceDeltasGwei, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Checkpoint { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconBlockRoot: tuple.0, + proofsRemaining: tuple.1, + podBalanceGwei: tuple.2, + balanceDeltasGwei: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Checkpoint { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Checkpoint { #[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) + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.beaconBlockRoot), + as alloy_sol_types::SolType>::tokenize(&self.proofsRemaining), + as alloy_sol_types::SolType>::tokenize(&self.podBalanceGwei), + as alloy_sol_types::SolType>::tokenize(&self.balanceDeltasGwei), + ) + } + #[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 { - as alloy_sol_types::SolType>::tokenize(self).0 + ::eip712_hash_struct(self) } #[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) + 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 { - as alloy_sol_types::SolType>::abi_encoded_size( - self, + 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 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. + impl alloy_sol_types::SolType for Checkpoint { + 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] - pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { - ::abi_encode(&self.0) + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) } - /// 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) + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) } } #[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; + impl alloy_sol_types::SolStruct for Checkpoint { + const NAME: &'static str = "Checkpoint"; #[inline] - fn valid_token(token: &Self::Token<'_>) -> bool { - Self::type_check(token).is_ok() + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Checkpoint(bytes32 beaconBlockRoot,uint24 proofsRemaining,uint64 podBalanceGwei,int128 balanceDeltasGwei)", + ) } #[inline] - fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { - as alloy_sol_types::SolType>::type_check(token) + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() } #[inline] - fn detokenize(token: Self::Token<'_>) -> Self::RustType { - as alloy_sol_types::SolType>::detokenize(token) + 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.beaconBlockRoot, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.proofsRemaining, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.podBalanceGwei, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.balanceDeltasGwei, + ) + .0, + ] + .concat() } } #[automatically_derived] - impl alloy_sol_types::EventTopic for VALIDATOR_STATUS { + impl alloy_sol_types::EventTopic for Checkpoint { #[inline] fn topic_preimage_length(rust: &Self::RustType) -> usize { - as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.beaconBlockRoot, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.proofsRemaining, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.podBalanceGwei, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceDeltasGwei, + ) } #[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.beaconBlockRoot, + out, + ); as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + 24, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.proofsRemaining, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.podBalanceGwei, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.balanceDeltasGwei, + out, + ); } #[inline] fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { - as alloy_sol_types::EventTopic>::encode_topic( - rust, - ) + 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 ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 mostRecentBalanceUpdateTimestamp; VALIDATOR_STATUS status; } + struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ValidatorInfo { pub validatorIndex: u64, pub restakedBalanceGwei: u64, - pub mostRecentBalanceUpdateTimestamp: u64, + pub lastCheckpointedAt: u64, pub status: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1724,7 +2191,7 @@ pub mod IEigenPod { ( value.validatorIndex, value.restakedBalanceGwei, - value.mostRecentBalanceUpdateTimestamp, + value.lastCheckpointedAt, value.status, ) } @@ -1736,7 +2203,7 @@ pub mod IEigenPod { Self { validatorIndex: tuple.0, restakedBalanceGwei: tuple.1, - mostRecentBalanceUpdateTimestamp: tuple.2, + lastCheckpointedAt: tuple.2, status: tuple.3, } } @@ -1757,7 +2224,7 @@ pub mod IEigenPod { &self.restakedBalanceGwei, ), as alloy_sol_types::SolType>::tokenize( - &self.mostRecentBalanceUpdateTimestamp, + &self.lastCheckpointedAt, ), ::tokenize(&self.status), ) @@ -1820,7 +2287,7 @@ pub mod IEigenPod { #[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)", + "ValidatorInfo(uint64 validatorIndex,uint64 restakedBalanceGwei,uint64 lastCheckpointedAt,uint8 status)", ) } #[inline] @@ -1851,7 +2318,7 @@ pub mod IEigenPod { as alloy_sol_types::SolType>::eip712_data_word( - &self.mostRecentBalanceUpdateTimestamp, + &self.lastCheckpointedAt, ) .0, ::eip712_data_word( @@ -1880,73 +2347,210 @@ pub mod IEigenPod { + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.mostRecentBalanceUpdateTimestamp, + &rust.lastCheckpointedAt, ) + ::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, - ); - , + ) { + 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.lastCheckpointedAt, + 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 `CheckpointCreated(uint64,bytes32,uint256)` and selector `0x575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076`. + ```solidity + event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct CheckpointCreated { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub validatorCount: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for CheckpointCreated { + 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<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "CheckpointCreated(uint64,bytes32,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8, 164u8, + 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8, 244u8, 183u8, + 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + beaconBlockRoot: topics.2, + validatorCount: 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.validatorCount, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.clone(), + self.beaconBlockRoot.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_preimage( - &rust.mostRecentBalanceUpdateTimestamp, - out, - ); - ::encode_topic_preimage( - &rust.status, - out, + > as alloy_sol_types::EventTopic>::encode_topic( + &self.checkpointTimestamp, ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.beaconBlockRoot); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for CheckpointCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&CheckpointCreated> for alloy_sol_types::private::LogData { #[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)) + fn from(this: &CheckpointCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `EigenPodStaked(bytes)` and selector `0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23`. + /**Event with signature `CheckpointFinalized(uint64,int256)` and selector `0x525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44`. ```solidity - event EigenPodStaked(bytes pubkey); + event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct EigenPodStaked { + pub struct CheckpointFinalized { #[allow(missing_docs)] - pub pubkey: alloy::sol_types::private::Bytes, + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub totalShareDeltaWei: alloy::sol_types::private::primitives::aliases::I256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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,); + impl alloy_sol_types::SolEvent for CheckpointFinalized { + 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>,); - const SIGNATURE: &'static str = "EigenPodStaked(bytes)"; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + ); + const SIGNATURE: &'static str = "CheckpointFinalized(uint64,int256)"; 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, + 82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8, 111u8, + 100u8, 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8, 59u8, 207u8, + 220u8, 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -1955,7 +2559,10 @@ pub mod IEigenPod { topics: ::RustType, data: as alloy_sol_types::SolType>::RustType, ) -> Self { - Self { pubkey: data.0 } + Self { + checkpointTimestamp: topics.1, + totalShareDeltaWei: data.0, + } } #[inline] fn check_signature( @@ -1973,14 +2580,17 @@ pub mod IEigenPod { #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( - ::tokenize( - &self.pubkey, + as alloy_sol_types::SolType>::tokenize( + &self.totalShareDeltaWei, ), ) } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(),) + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.clone(), + ) } #[inline] fn encode_topics_raw( @@ -1991,11 +2601,16 @@ pub mod IEigenPod { 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.checkpointTimestamp, + ); Ok(()) } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for EigenPodStaked { + impl alloy_sol_types::private::IntoLogData for CheckpointFinalized { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -2004,50 +2619,47 @@ pub mod IEigenPod { } } #[automatically_derived] - impl From<&EigenPodStaked> for alloy_sol_types::private::LogData { + impl From<&CheckpointFinalized> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &EigenPodStaked) -> alloy_sol_types::private::LogData { + fn from(this: &CheckpointFinalized) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `FullWithdrawalRedeemed(uint40,uint64,address,uint64)` and selector `0xb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a0963`. + /**Event with signature `EigenPodStaked(bytes)` and selector `0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23`. ```solidity - event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei); + event EigenPodStaked(bytes pubkey); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + pub struct EigenPodStaked { #[allow(missing_docs)] - pub withdrawalAmountGwei: u64, + pub pubkey: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, - ); + 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>, - alloy::sol_types::sol_data::Address, - ); - const SIGNATURE: &'static str = "FullWithdrawalRedeemed(uint40,uint64,address,uint64)"; + 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([ - 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, + 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)] @@ -2056,12 +2668,7 @@ pub mod IEigenPod { topics: ::RustType, data: as alloy_sol_types::SolType>::RustType, ) -> Self { - Self { - validatorIndex: data.0, - withdrawalTimestamp: data.1, - recipient: topics.1, - withdrawalAmountGwei: data.2, - } + Self { pubkey: data.0 } } #[inline] fn check_signature( @@ -2079,20 +2686,14 @@ pub mod IEigenPod { #[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, + ::tokenize( + &self.pubkey, ), ) } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(), self.recipient.clone()) + (Self::SIGNATURE_HASH.into(),) } #[inline] fn encode_topics_raw( @@ -2103,14 +2704,11 @@ pub mod IEigenPod { 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 { + impl alloy_sol_types::private::IntoLogData for EigenPodStaked { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -2119,9 +2717,9 @@ pub mod IEigenPod { } } #[automatically_derived] - impl From<&FullWithdrawalRedeemed> for alloy_sol_types::private::LogData { + impl From<&EigenPodStaked> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &FullWithdrawalRedeemed) -> alloy_sol_types::private::LogData { + fn from(this: &EigenPodStaked) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } @@ -2130,13 +2728,23 @@ pub mod IEigenPod { ```solidity event NonBeaconChainETHReceived(uint256 amountReceived); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2216,35 +2824,45 @@ pub mod IEigenPod { } } }; - /**Event with signature `NonBeaconChainETHWithdrawn(address,uint256)` and selector `0x30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f53096`. + /**Event with signature `ProofSubmitterUpdated(address,address)` and selector `0xfb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac`. ```solidity - event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn); + event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct NonBeaconChainETHWithdrawn { + pub struct ProofSubmitterUpdated { #[allow(missing_docs)] - pub recipient: alloy::sol_types::private::Address, + pub prevProofSubmitter: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub amountWithdrawn: alloy::sol_types::private::primitives::aliases::U256, + pub newProofSubmitter: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, + impl alloy_sol_types::SolEvent for ProofSubmitterUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::Address, ); - const SIGNATURE: &'static str = "NonBeaconChainETHWithdrawn(address,uint256)"; + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProofSubmitterUpdated(address,address)"; 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, + 251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8, 186u8, + 37u8, 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8, 99u8, 205u8, + 202u8, 74u8, 150u8, 154u8, 209u8, 154u8, 94u8, 172u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -2254,8 +2872,8 @@ pub mod IEigenPod { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - recipient: topics.1, - amountWithdrawn: data.0, + prevProofSubmitter: data.0, + newProofSubmitter: data.1, } } #[inline] @@ -2274,14 +2892,17 @@ pub mod IEigenPod { #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( - as alloy_sol_types::SolType>::tokenize( - &self.amountWithdrawn, + ::tokenize( + &self.prevProofSubmitter, + ), + ::tokenize( + &self.newProofSubmitter, ), ) } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(), self.recipient.clone()) + (Self::SIGNATURE_HASH.into(),) } #[inline] fn encode_topics_raw( @@ -2292,14 +2913,11 @@ pub mod IEigenPod { 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 { + impl alloy_sol_types::private::IntoLogData for ProofSubmitterUpdated { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -2308,51 +2926,52 @@ pub mod IEigenPod { } } #[automatically_derived] - impl From<&NonBeaconChainETHWithdrawn> for alloy_sol_types::private::LogData { + impl From<&ProofSubmitterUpdated> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &NonBeaconChainETHWithdrawn) -> alloy_sol_types::private::LogData { + fn from(this: &ProofSubmitterUpdated) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `PartialWithdrawalRedeemed(uint40,uint64,address,uint64)` and selector `0x8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e`. + /**Event with signature `RestakedBeaconChainETHWithdrawn(address,uint256)` and selector `0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e`. ```solidity - event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei); + event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + pub struct RestakedBeaconChainETHWithdrawn { #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub partialWithdrawalAmountGwei: u64, + pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, - ); + 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 = - "PartialWithdrawalRedeemed(uint40,uint64,address,uint64)"; + const SIGNATURE: &'static str = "RestakedBeaconChainETHWithdrawn(address,uint256)"; 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, + 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)] @@ -2362,10 +2981,8 @@ pub mod IEigenPod { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - validatorIndex: data.0, - withdrawalTimestamp: data.1, recipient: topics.1, - partialWithdrawalAmountGwei: data.2, + amount: data.0, } } #[inline] @@ -2384,14 +3001,8 @@ pub mod IEigenPod { #[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, + as alloy_sol_types::SolType>::tokenize( + &self.amount, ), ) } @@ -2415,7 +3026,7 @@ pub mod IEigenPod { } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for PartialWithdrawalRedeemed { + impl alloy_sol_types::private::IntoLogData for RestakedBeaconChainETHWithdrawn { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -2424,42 +3035,55 @@ pub mod IEigenPod { } } #[automatically_derived] - impl From<&PartialWithdrawalRedeemed> for alloy_sol_types::private::LogData { + impl From<&RestakedBeaconChainETHWithdrawn> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &PartialWithdrawalRedeemed) -> alloy_sol_types::private::LogData { + fn from(this: &RestakedBeaconChainETHWithdrawn) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `RestakedBeaconChainETHWithdrawn(address,uint256)` and selector `0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e`. + /**Event with signature `ValidatorBalanceUpdated(uint40,uint64,uint64)` and selector `0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df`. ```solidity - event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount); + event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct RestakedBeaconChainETHWithdrawn { + pub struct ValidatorBalanceUpdated { #[allow(missing_docs)] - pub recipient: alloy::sol_types::private::Address, + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, #[allow(missing_docs)] - pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub balanceTimestamp: u64, + #[allow(missing_docs)] + pub newValidatorBalanceGwei: u64, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + 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>, ); - const SIGNATURE: &'static str = "RestakedBeaconChainETHWithdrawn(address,uint256)"; + 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([ - 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, + 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)] @@ -2469,8 +3093,9 @@ pub mod IEigenPod { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - recipient: topics.1, - amount: data.0, + validatorIndex: data.0, + balanceTimestamp: data.1, + newValidatorBalanceGwei: data.2, } } #[inline] @@ -2489,14 +3114,20 @@ pub mod IEigenPod { #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( - as alloy_sol_types::SolType>::tokenize( - &self.amount, + 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(), self.recipient.clone()) + (Self::SIGNATURE_HASH.into(),) } #[inline] fn encode_topics_raw( @@ -2507,14 +3138,11 @@ pub mod IEigenPod { 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 { + impl alloy_sol_types::private::IntoLogData for ValidatorBalanceUpdated { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -2523,40 +3151,53 @@ pub mod IEigenPod { } } #[automatically_derived] - impl From<&RestakedBeaconChainETHWithdrawn> for alloy_sol_types::private::LogData { + impl From<&ValidatorBalanceUpdated> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &RestakedBeaconChainETHWithdrawn) -> alloy_sol_types::private::LogData { + fn from(this: &ValidatorBalanceUpdated) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `RestakingActivated(address)` and selector `0xca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd`. + /**Event with signature `ValidatorCheckpointed(uint64,uint40)` and selector `0xa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f`. ```solidity - event RestakingActivated(address indexed podOwner); + event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct RestakingActivated { + pub struct ValidatorCheckpointed { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, #[allow(missing_docs)] - pub podOwner: alloy::sol_types::private::Address, + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] - impl alloy_sol_types::SolEvent for RestakingActivated { + impl alloy_sol_types::SolEvent for ValidatorCheckpointed { 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::Uint<64>, + alloy::sol_types::sol_data::Uint<40>, ); - const SIGNATURE: &'static str = "RestakingActivated(address)"; + const SIGNATURE: &'static str = "ValidatorCheckpointed(uint64,uint40)"; 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, + 169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8, 172u8, + 236u8, 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8, 245u8, 244u8, + 202u8, 227u8, 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -2565,7 +3206,10 @@ pub mod IEigenPod { topics: ::RustType, data: as alloy_sol_types::SolType>::RustType, ) -> Self { - Self { podOwner: topics.1 } + Self { + checkpointTimestamp: topics.1, + validatorIndex: topics.2, + } } #[inline] fn check_signature( @@ -2586,7 +3230,11 @@ pub mod IEigenPod { } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(), self.podOwner.clone()) + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.clone(), + self.validatorIndex.clone(), + ) } #[inline] fn encode_topics_raw( @@ -2597,14 +3245,19 @@ pub mod IEigenPod { return Err(alloy_sol_types::Error::Overrun); } out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); - out[1usize] = ::encode_topic( - &self.podOwner, + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic( + &self.checkpointTimestamp, ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex); Ok(()) } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for RestakingActivated { + impl alloy_sol_types::private::IntoLogData for ValidatorCheckpointed { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -2613,45 +3266,47 @@ pub mod IEigenPod { } } #[automatically_derived] - impl From<&RestakingActivated> for alloy_sol_types::private::LogData { + impl From<&ValidatorCheckpointed> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &RestakingActivated) -> alloy_sol_types::private::LogData { + fn from(this: &ValidatorCheckpointed) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `ValidatorBalanceUpdated(uint40,uint64,uint64)` and selector `0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df`. + /**Event with signature `ValidatorRestaked(uint40)` and selector `0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449`. ```solidity - event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei); + event ValidatorRestaked(uint40 validatorIndex); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct ValidatorBalanceUpdated { + pub struct ValidatorRestaked { #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, - ); + 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 = "ValidatorBalanceUpdated(uint40,uint64,uint64)"; + const SIGNATURE: &'static str = "ValidatorRestaked(uint40)"; 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, + 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)] @@ -2662,8 +3317,6 @@ pub mod IEigenPod { ) -> Self { Self { validatorIndex: data.0, - balanceTimestamp: data.1, - newValidatorBalanceGwei: data.2, } } #[inline] @@ -2685,12 +3338,6 @@ pub mod IEigenPod { 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] @@ -2710,7 +3357,7 @@ pub mod IEigenPod { } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for ValidatorBalanceUpdated { + impl alloy_sol_types::private::IntoLogData for ValidatorRestaked { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -2719,37 +3366,53 @@ pub mod IEigenPod { } } #[automatically_derived] - impl From<&ValidatorBalanceUpdated> for alloy_sol_types::private::LogData { + impl From<&ValidatorRestaked> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &ValidatorBalanceUpdated) -> alloy_sol_types::private::LogData { + fn from(this: &ValidatorRestaked) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `ValidatorRestaked(uint40)` and selector `0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449`. + /**Event with signature `ValidatorWithdrawn(uint64,uint40)` and selector `0x2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a`. ```solidity - event ValidatorRestaked(uint40 validatorIndex); + event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct ValidatorRestaked { + pub struct ValidatorWithdrawn { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, #[allow(missing_docs)] pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>,); + impl alloy_sol_types::SolEvent for ValidatorWithdrawn { + type DataTuple<'a> = (); 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)"; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<40>, + ); + const SIGNATURE: &'static str = "ValidatorWithdrawn(uint64,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, + 42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8, 44u8, + 35u8, 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8, 230u8, 86u8, + 62u8, 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -2759,7 +3422,8 @@ pub mod IEigenPod { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - validatorIndex: data.0, + checkpointTimestamp: topics.1, + validatorIndex: topics.2, } } #[inline] @@ -2777,15 +3441,15 @@ pub mod IEigenPod { } #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { - ( - as alloy_sol_types::SolType>::tokenize( - &self.validatorIndex, - ), - ) + () } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(),) + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.clone(), + self.validatorIndex.clone(), + ) } #[inline] fn encode_topics_raw( @@ -2796,11 +3460,19 @@ pub mod IEigenPod { 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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex); Ok(()) } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for ValidatorRestaked { + impl alloy_sol_types::private::IntoLogData for ValidatorWithdrawn { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -2809,27 +3481,32 @@ pub mod IEigenPod { } } #[automatically_derived] - impl From<&ValidatorRestaked> for alloy_sol_types::private::LogData { + impl From<&ValidatorWithdrawn> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &ValidatorRestaked) -> alloy_sol_types::private::LogData { + fn from(this: &ValidatorWithdrawn) -> 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`. + /**Function with signature `activeValidatorCount()` and selector `0x2340e8d3`. ```solidity - function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() external view returns (uint64); + function activeValidatorCount() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + pub struct activeValidatorCountCall {} + ///Container type for the return parameters of the [`activeValidatorCount()`](activeValidatorCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORReturn { - pub _0: u64, + pub struct activeValidatorCountReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2848,23 +3525,131 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From - for UnderlyingRustTuple<'_> - { - fn from(value: MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: activeValidatorCountCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> - for MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall - { + impl ::core::convert::From> for activeValidatorCountCall { 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: activeValidatorCountReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activeValidatorCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for activeValidatorCountCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = activeValidatorCountReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "activeValidatorCount()"; + const SELECTOR: [u8; 4] = [35u8, 64u8, 232u8, 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 `checkpointBalanceExitedGwei(uint64)` and selector `0x52396a59`. + ```solidity + function checkpointBalanceExitedGwei(uint64) external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkpointBalanceExitedGweiCall { + pub _0: u64, + } + ///Container type for the return parameters of the [`checkpointBalanceExitedGwei(uint64)`](checkpointBalanceExitedGweiCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkpointBalanceExitedGweiReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: checkpointBalanceExitedGweiCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkpointBalanceExitedGweiCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); @@ -2881,32 +3666,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From - for UnderlyingRustTuple<'_> - { - fn from(value: MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkpointBalanceExitedGweiReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> - for MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORReturn - { + impl ::core::convert::From> for checkpointBalanceExitedGweiReturn { 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> = (); + impl alloy_sol_types::SolCall for checkpointBalanceExitedGweiCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORReturn; + type Return = checkpointBalanceExitedGweiReturn; 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]; + const SIGNATURE: &'static str = "checkpointBalanceExitedGwei(uint64)"; + const SELECTOR: [u8; 4] = [82u8, 57u8, 106u8, 89u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -2915,7 +3696,11 @@ pub mod IEigenPod { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) } #[inline] fn abi_decode_returns( @@ -2929,18 +3714,25 @@ pub mod IEigenPod { } } }; - /**Function with signature `activateRestaking()` and selector `0x0cd4649e`. + /**Function with signature `currentCheckpoint()` and selector `0x47d28372`. ```solidity - function activateRestaking() external; + function currentCheckpoint() external view returns (Checkpoint memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct activateRestakingCall {} - ///Container type for the return parameters of the [`activateRestaking()`](activateRestakingCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct currentCheckpointCall {} + ///Container type for the return parameters of the [`currentCheckpoint()`](currentCheckpointCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct activateRestakingReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct currentCheckpointReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2959,14 +3751,14 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: activateRestakingCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for activateRestakingCall { + impl ::core::convert::From> for currentCheckpointCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -2974,9 +3766,9 @@ pub mod IEigenPod { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (Checkpoint,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (::RustType,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2988,28 +3780,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: activateRestakingReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for activateRestakingReturn { + impl ::core::convert::From> for currentCheckpointReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for activateRestakingCall { + impl alloy_sol_types::SolCall for currentCheckpointCall { type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = activateRestakingReturn; - type ReturnTuple<'a> = (); + type Return = currentCheckpointReturn; + type ReturnTuple<'a> = (Checkpoint,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "activateRestaking()"; - const SELECTOR: [u8; 4] = [12u8, 212u8, 100u8, 158u8]; + const SIGNATURE: &'static str = "currentCheckpoint()"; + const SELECTOR: [u8; 4] = [71u8, 210u8, 131u8, 114u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -3032,20 +3824,25 @@ pub mod IEigenPod { } } }; - /**Function with signature `eigenPodManager()` and selector `0x4665bcda`. + /**Function with signature `currentCheckpointTimestamp()` and selector `0x42ecff2a`. ```solidity - function eigenPodManager() external view returns (address); + function currentCheckpointTimestamp() external view returns (uint64); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct eigenPodManagerCall {} - ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct currentCheckpointTimestampCall {} + ///Container type for the return parameters of the [`currentCheckpointTimestamp()`](currentCheckpointTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct eigenPodManagerReturn { - pub _0: alloy::sol_types::private::Address, + pub struct currentCheckpointTimestampReturn { + pub _0: u64, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3064,14 +3861,14 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: eigenPodManagerCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointTimestampCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for eigenPodManagerCall { + impl ::core::convert::From> for currentCheckpointTimestampCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -3079,9 +3876,9 @@ pub mod IEigenPod { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (u64,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3093,28 +3890,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: eigenPodManagerReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointTimestampReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for eigenPodManagerReturn { + impl ::core::convert::From> for currentCheckpointTimestampReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for eigenPodManagerCall { + impl alloy_sol_types::SolCall for currentCheckpointTimestampCall { 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 Return = currentCheckpointTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "eigenPodManager()"; - const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8]; + const SIGNATURE: &'static str = "currentCheckpointTimestamp()"; + const SELECTOR: [u8; 4] = [66u8, 236u8, 255u8, 42u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -3137,20 +3934,25 @@ pub mod IEigenPod { } } }; - /**Function with signature `hasRestaked()` and selector `0x3106ab53`. + /**Function with signature `eigenPodManager()` and selector `0x4665bcda`. ```solidity - function hasRestaked() external view returns (bool); + function eigenPodManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct hasRestakedCall {} - ///Container type for the return parameters of the [`hasRestaked()`](hasRestakedCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct hasRestakedReturn { - pub _0: bool, + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3169,14 +3971,14 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: hasRestakedCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for hasRestakedCall { + impl ::core::convert::From> for eigenPodManagerCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -3184,9 +3986,9 @@ pub mod IEigenPod { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (bool,); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3198,28 +4000,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: hasRestakedReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for hasRestakedReturn { + impl ::core::convert::From> for eigenPodManagerReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for hasRestakedCall { + impl alloy_sol_types::SolCall for eigenPodManagerCall { 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 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 = "hasRestaked()"; - const SELECTOR: [u8; 4] = [49u8, 6u8, 171u8, 83u8]; + const SIGNATURE: &'static str = "eigenPodManager()"; + const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -3242,27 +4044,34 @@ pub mod IEigenPod { } } }; - /**Function with signature `initialize(address)` and selector `0xc4d66de8`. + /**Function with signature `getParentBlockRoot(uint64)` and selector `0x6c0d2d5a`. ```solidity - function initialize(address owner) external; + function getParentBlockRoot(uint64 timestamp) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct initializeCall { - pub owner: alloy::sol_types::private::Address, + pub struct getParentBlockRootCall { + pub timestamp: u64, } - ///Container type for the return parameters of the [`initialize(address)`](initializeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`getParentBlockRoot(uint64)`](getParentBlockRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct getParentBlockRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (u64,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3274,24 +4083,24 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: initializeCall) -> Self { - (value.owner,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getParentBlockRootCall) -> Self { + (value.timestamp,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for initializeCall { + impl ::core::convert::From> for getParentBlockRootCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { owner: tuple.0 } + Self { timestamp: tuple.0 } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + 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) { @@ -3303,28 +4112,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: initializeReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getParentBlockRootReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for initializeReturn { + impl ::core::convert::From> for getParentBlockRootReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for initializeCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + impl alloy_sol_types::SolCall for getParentBlockRootCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = initializeReturn; - type ReturnTuple<'a> = (); + type Return = getParentBlockRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "initialize(address)"; - const SELECTOR: [u8; 4] = [196u8, 214u8, 109u8, 232u8]; + const SIGNATURE: &'static str = "getParentBlockRoot(uint64)"; + const SELECTOR: [u8; 4] = [108u8, 13u8, 45u8, 90u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -3334,8 +4143,8 @@ pub mod IEigenPod { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.owner, + as alloy_sol_types::SolType>::tokenize( + &self.timestamp, ), ) } @@ -3351,27 +4160,32 @@ pub mod IEigenPod { } } }; - /**Function with signature `mostRecentWithdrawalTimestamp()` and selector `0x87e0d289`. + /**Function with signature `initialize(address)` and selector `0xc4d66de8`. ```solidity - function mostRecentWithdrawalTimestamp() external view returns (uint64); + function initialize(address owner) external; ```*/ - #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct mostRecentWithdrawalTimestampReturn { - pub _0: u64, + pub struct initializeCall { + pub owner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + ///Container type for the return parameters of the [`initialize(address)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3383,24 +4197,24 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: mostRecentWithdrawalTimestampCall) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value.owner,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for mostRecentWithdrawalTimestampCall { + impl ::core::convert::From> for initializeCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { owner: tuple.0 } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (u64,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3412,28 +4226,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: mostRecentWithdrawalTimestampReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for mostRecentWithdrawalTimestampReturn { + impl ::core::convert::From> for initializeReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for mostRecentWithdrawalTimestampCall { - type Parameters<'a> = (); + 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 = mostRecentWithdrawalTimestampReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Return = initializeReturn; + type ReturnTuple<'a> = (); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "mostRecentWithdrawalTimestamp()"; - const SELECTOR: [u8; 4] = [135u8, 224u8, 210u8, 137u8]; + 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, @@ -3442,7 +4256,11 @@ pub mod IEigenPod { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + ::tokenize( + &self.owner, + ), + ) } #[inline] fn abi_decode_returns( @@ -3456,20 +4274,25 @@ pub mod IEigenPod { } } }; - /**Function with signature `nonBeaconChainETHBalanceWei()` and selector `0xfe80b087`. + /**Function with signature `lastCheckpointTimestamp()` and selector `0xee94d67c`. ```solidity - function nonBeaconChainETHBalanceWei() external view returns (uint256); + function lastCheckpointTimestamp() external view returns (uint64); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct nonBeaconChainETHBalanceWeiCall {} - ///Container type for the return parameters of the [`nonBeaconChainETHBalanceWei()`](nonBeaconChainETHBalanceWeiCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct lastCheckpointTimestampCall {} + ///Container type for the return parameters of the [`lastCheckpointTimestamp()`](lastCheckpointTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct nonBeaconChainETHBalanceWeiReturn { - pub _0: alloy::sol_types::private::primitives::aliases::U256, + pub struct lastCheckpointTimestampReturn { + pub _0: u64, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3488,14 +4311,14 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: nonBeaconChainETHBalanceWeiCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastCheckpointTimestampCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for nonBeaconChainETHBalanceWeiCall { + impl ::core::convert::From> for lastCheckpointTimestampCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -3503,9 +4326,9 @@ pub mod IEigenPod { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + type UnderlyingRustTuple<'a> = (u64,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3517,28 +4340,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: nonBeaconChainETHBalanceWeiReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastCheckpointTimestampReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for nonBeaconChainETHBalanceWeiReturn { + impl ::core::convert::From> for lastCheckpointTimestampReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for nonBeaconChainETHBalanceWeiCall { + impl alloy_sol_types::SolCall for lastCheckpointTimestampCall { 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 Return = lastCheckpointTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "nonBeaconChainETHBalanceWei()"; - const SELECTOR: [u8; 4] = [254u8, 128u8, 176u8, 135u8]; + const SIGNATURE: &'static str = "lastCheckpointTimestamp()"; + const SELECTOR: [u8; 4] = [238u8, 148u8, 214u8, 124u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -3565,16 +4388,21 @@ pub mod IEigenPod { ```solidity function podOwner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct podOwnerCall {} ///Container type for the return parameters of the [`podOwner()`](podOwnerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct podOwnerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3666,33 +4494,32 @@ pub mod IEigenPod { } } }; - /**Function with signature `provenWithdrawal(bytes32,uint64)` and selector `0x34bea20a`. + /**Function with signature `proofSubmitter()` and selector `0x58753357`. ```solidity - function provenWithdrawal(bytes32 validatorPubkeyHash, uint64 slot) external view returns (bool); + function proofSubmitter() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + pub struct proofSubmitterCall {} + ///Container type for the return parameters of the [`proofSubmitter()`](proofSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct provenWithdrawalReturn { - pub _0: bool, + pub struct proofSubmitterReturn { + pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, - ); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u64); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3704,27 +4531,24 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: provenWithdrawalCall) -> Self { - (value.validatorPubkeyHash, value.slot) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proofSubmitterCall) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for provenWithdrawalCall { + impl ::core::convert::From> for proofSubmitterCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - validatorPubkeyHash: tuple.0, - slot: tuple.1, - } + Self {} } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (bool,); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3736,31 +4560,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: provenWithdrawalReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proofSubmitterReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for provenWithdrawalReturn { + impl ::core::convert::From> for proofSubmitterReturn { 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>, - ); + impl alloy_sol_types::SolCall for proofSubmitterCall { + type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = provenWithdrawalReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type Return = proofSubmitterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); 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]; + const SIGNATURE: &'static str = "proofSubmitter()"; + const SELECTOR: [u8; 4] = [88u8, 117u8, 51u8, 87u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -3769,14 +4590,7 @@ pub mod IEigenPod { } #[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( @@ -3794,7 +4608,7 @@ pub mod IEigenPod { ```solidity function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct recoverTokensCall { pub tokenList: alloy::sol_types::private::Vec, @@ -3803,10 +4617,15 @@ pub mod IEigenPod { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct recoverTokensReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3926,37 +4745,32 @@ pub mod IEigenPod { } } }; - /**Function with signature `stake(bytes,bytes,bytes32)` and selector `0x9b4e4634`. + /**Function with signature `setProofSubmitter(address)` and selector `0xd06d5587`. ```solidity - function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + function setProofSubmitter(address newProofSubmitter) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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>, + pub struct setProofSubmitterCall { + pub newProofSubmitter: alloy::sol_types::private::Address, } - ///Container type for the return parameters of the [`stake(bytes,bytes,bytes32)`](stakeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`setProofSubmitter(address)`](setProofSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct stakeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct setProofSubmitterReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Bytes, - alloy::sol_types::private::Bytes, - alloy::sol_types::private::FixedBytes<32>, - ); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -3968,19 +4782,17 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: stakeCall) -> Self { - (value.pubkey, value.signature, value.depositDataRoot) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setProofSubmitterCall) -> Self { + (value.newProofSubmitter,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for stakeCall { + impl ::core::convert::From> for setProofSubmitterCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - pubkey: tuple.0, - signature: tuple.1, - depositDataRoot: tuple.2, + newProofSubmitter: tuple.0, } } } @@ -4001,32 +4813,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: stakeReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setProofSubmitterReturn) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for stakeReturn { + impl ::core::convert::From> for setProofSubmitterReturn { 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>, - ); + impl alloy_sol_types::SolCall for setProofSubmitterCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = stakeReturn; + type Return = setProofSubmitterReturn; 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]; + const SIGNATURE: &'static str = "setProofSubmitter(address)"; + const SELECTOR: [u8; 4] = [208u8, 109u8, 85u8, 135u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -4036,15 +4844,9 @@ pub mod IEigenPod { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.pubkey, - ), - ::tokenize( - &self.signature, + ::tokenize( + &self.newProofSubmitter, ), - as alloy_sol_types::SolType>::tokenize(&self.depositDataRoot), ) } #[inline] @@ -4059,29 +4861,42 @@ pub mod IEigenPod { } } }; - /**Function with signature `validatorPubkeyHashToInfo(bytes32)` and selector `0x6fcd0e53`. + /**Function with signature `stake(bytes,bytes,bytes32)` and selector `0x9b4e4634`. ```solidity - function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (ValidatorInfo memory); + function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct validatorPubkeyHashToInfoCall { - pub validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>, + 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 [`validatorPubkeyHashToInfo(bytes32)`](validatorPubkeyHashToInfoCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`stake(bytes,bytes,bytes32)`](stakeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct validatorPubkeyHashToInfoReturn { - pub _0: ::RustType, - } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct stakeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + 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::FixedBytes<32>,); + 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) { @@ -4093,27 +4908,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: validatorPubkeyHashToInfoCall) -> Self { - (value.validatorPubkeyHash,) + 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 validatorPubkeyHashToInfoCall { + impl ::core::convert::From> for stakeCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - validatorPubkeyHash: tuple.0, + pubkey: tuple.0, + signature: tuple.1, + depositDataRoot: tuple.2, } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (ValidatorInfo,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = - (::RustType,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4125,28 +4941,32 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: validatorPubkeyHashToInfoReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeReturn) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for validatorPubkeyHashToInfoReturn { + impl ::core::convert::From> for stakeReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for validatorPubkeyHashToInfoCall { - type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + 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 = validatorPubkeyHashToInfoReturn; - type ReturnTuple<'a> = (ValidatorInfo,); + type Return = stakeReturn; + type ReturnTuple<'a> = (); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "validatorPubkeyHashToInfo(bytes32)"; - const SELECTOR: [u8; 4] = [111u8, 205u8, 14u8, 83u8]; + 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, @@ -4156,9 +4976,15 @@ pub mod IEigenPod { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( + ::tokenize( + &self.pubkey, + ), + ::tokenize( + &self.signature, + ), as alloy_sol_types::SolType>::tokenize(&self.validatorPubkeyHash), + > as alloy_sol_types::SolType>::tokenize(&self.depositDataRoot), ) } #[inline] @@ -4173,29 +4999,32 @@ pub mod IEigenPod { } } }; - /**Function with signature `validatorPubkeyToInfo(bytes)` and selector `0xb522538a`. + /**Function with signature `startCheckpoint(bool)` and selector `0x88676cad`. ```solidity - function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (ValidatorInfo memory); + function startCheckpoint(bool revertIfNoBalance) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct validatorPubkeyToInfoCall { - pub validatorPubkey: alloy::sol_types::private::Bytes, + pub struct startCheckpointCall { + pub revertIfNoBalance: bool, } - ///Container type for the return parameters of the [`validatorPubkeyToInfo(bytes)`](validatorPubkeyToInfoCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`startCheckpoint(bool)`](startCheckpointCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct validatorPubkeyToInfoReturn { - pub _0: ::RustType, - } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct startCheckpointReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); + type UnderlyingRustTuple<'a> = (bool,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4207,27 +5036,26 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: validatorPubkeyToInfoCall) -> Self { - (value.validatorPubkey,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: startCheckpointCall) -> Self { + (value.revertIfNoBalance,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for validatorPubkeyToInfoCall { + impl ::core::convert::From> for startCheckpointCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - validatorPubkey: tuple.0, + revertIfNoBalance: tuple.0, } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (ValidatorInfo,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = - (::RustType,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4239,28 +5067,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: validatorPubkeyToInfoReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: startCheckpointReturn) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for validatorPubkeyToInfoReturn { + impl ::core::convert::From> for startCheckpointReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self {} } } } - #[automatically_derived] - impl alloy_sol_types::SolCall for validatorPubkeyToInfoCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,); + #[automatically_derived] + impl alloy_sol_types::SolCall for startCheckpointCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bool,); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = validatorPubkeyToInfoReturn; - type ReturnTuple<'a> = (ValidatorInfo,); + type Return = startCheckpointReturn; + type ReturnTuple<'a> = (); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "validatorPubkeyToInfo(bytes)"; - const SELECTOR: [u8; 4] = [181u8, 34u8, 83u8, 138u8]; + const SIGNATURE: &'static str = "startCheckpoint(bool)"; + const SELECTOR: [u8; 4] = [136u8, 103u8, 108u8, 173u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -4270,8 +5098,8 @@ pub mod IEigenPod { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.validatorPubkey, + ::tokenize( + &self.revertIfNoBalance, ), ) } @@ -4287,29 +5115,34 @@ pub mod IEigenPod { } } }; - /**Function with signature `validatorStatus(bytes)` and selector `0x58eaee79`. + /**Function with signature `validatorPubkeyHashToInfo(bytes32)` and selector `0x6fcd0e53`. ```solidity - function validatorStatus(bytes memory validatorPubkey) external view returns (VALIDATOR_STATUS); + function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (ValidatorInfo memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct validatorStatus_0Call { - pub validatorPubkey: alloy::sol_types::private::Bytes, + pub struct validatorPubkeyHashToInfoCall { + pub validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>, } - ///Container type for the return parameters of the [`validatorStatus(bytes)`](validatorStatus_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`validatorPubkeyHashToInfo(bytes32)`](validatorPubkeyHashToInfoCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct validatorStatus_0Return { - pub _0: ::RustType, + pub struct validatorPubkeyHashToInfoReturn { + pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); + 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) { @@ -4321,27 +5154,27 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: validatorStatus_0Call) -> Self { - (value.validatorPubkey,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorPubkeyHashToInfoCall) -> Self { + (value.validatorPubkeyHash,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for validatorStatus_0Call { + impl ::core::convert::From> for validatorPubkeyHashToInfoCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - validatorPubkey: tuple.0, + validatorPubkeyHash: tuple.0, } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (VALIDATOR_STATUS,); + type UnderlyingSolTuple<'a> = (ValidatorInfo,); #[doc(hidden)] type UnderlyingRustTuple<'a> = - (::RustType,); + (::RustType,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4353,28 +5186,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: validatorStatus_0Return) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorPubkeyHashToInfoReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for validatorStatus_0Return { + impl ::core::convert::From> for validatorPubkeyHashToInfoReturn { 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,); + 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 = validatorStatus_0Return; - type ReturnTuple<'a> = (VALIDATOR_STATUS,); + type Return = validatorPubkeyHashToInfoReturn; + type ReturnTuple<'a> = (ValidatorInfo,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "validatorStatus(bytes)"; - const SELECTOR: [u8; 4] = [88u8, 234u8, 238u8, 121u8]; + 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, @@ -4384,9 +5217,9 @@ pub mod IEigenPod { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.validatorPubkey, - ), + as alloy_sol_types::SolType>::tokenize(&self.validatorPubkeyHash), ) } #[inline] @@ -4401,29 +5234,34 @@ pub mod IEigenPod { } } }; - /**Function with signature `validatorStatus(bytes32)` and selector `0x7439841f`. + /**Function with signature `validatorPubkeyToInfo(bytes)` and selector `0xb522538a`. ```solidity - function validatorStatus(bytes32 pubkeyHash) external view returns (VALIDATOR_STATUS); + function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (ValidatorInfo memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct validatorStatus_1Call { - pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + pub struct validatorPubkeyToInfoCall { + pub validatorPubkey: alloy::sol_types::private::Bytes, } - ///Container type for the return parameters of the [`validatorStatus(bytes32)`](validatorStatus_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`validatorPubkeyToInfo(bytes)`](validatorPubkeyToInfoCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct validatorStatus_1Return { - pub _0: ::RustType, + pub struct validatorPubkeyToInfoReturn { + pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4435,27 +5273,27 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: validatorStatus_1Call) -> Self { - (value.pubkeyHash,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorPubkeyToInfoCall) -> Self { + (value.validatorPubkey,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for validatorStatus_1Call { + impl ::core::convert::From> for validatorPubkeyToInfoCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - pubkeyHash: tuple.0, + validatorPubkey: tuple.0, } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (VALIDATOR_STATUS,); + type UnderlyingSolTuple<'a> = (ValidatorInfo,); #[doc(hidden)] type UnderlyingRustTuple<'a> = - (::RustType,); + (::RustType,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4467,28 +5305,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: validatorStatus_1Return) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorPubkeyToInfoReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for validatorStatus_1Return { + impl ::core::convert::From> for validatorPubkeyToInfoReturn { 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>,); + 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 = validatorStatus_1Return; - type ReturnTuple<'a> = (VALIDATOR_STATUS,); + type Return = validatorPubkeyToInfoReturn; + type ReturnTuple<'a> = (ValidatorInfo,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "validatorStatus(bytes32)"; - const SELECTOR: [u8; 4] = [116u8, 57u8, 132u8, 31u8]; + 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, @@ -4498,9 +5336,9 @@ pub mod IEigenPod { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + ::tokenize( + &self.validatorPubkey, + ), ) } #[inline] @@ -4515,63 +5353,34 @@ pub mod IEigenPod { } } }; - /**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`. + /**Function with signature `validatorStatus(bytes)` and selector `0x58eaee79`. ```solidity - function verifyAndProcessWithdrawals(uint64 oracleTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.WithdrawalProof[] memory withdrawalProofs, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields, bytes32[][] memory withdrawalFields) external; + function validatorStatus(bytes memory validatorPubkey) external view returns (VALIDATOR_STATUS); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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>, - >, + pub struct validatorStatus_0Call { + pub validatorPubkey: alloy::sol_types::private::Bytes, } - ///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)] + ///Container type for the return parameters of the [`validatorStatus(bytes)`](validatorStatus_0Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct verifyAndProcessWithdrawalsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct validatorStatus_0Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, - >, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); #[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>, - >, - ); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4583,38 +5392,27 @@ pub mod IEigenPod { } #[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, - ) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorStatus_0Call) -> Self { + (value.validatorPubkey,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for verifyAndProcessWithdrawalsCall { + impl ::core::convert::From> for validatorStatus_0Call { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - oracleTimestamp: tuple.0, - stateRootProof: tuple.1, - withdrawalProofs: tuple.2, - validatorFieldsProofs: tuple.3, - validatorFields: tuple.4, - withdrawalFields: tuple.5, + validatorPubkey: tuple.0, } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (VALIDATOR_STATUS,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = + (::RustType,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4626,39 +5424,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: verifyAndProcessWithdrawalsReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorStatus_0Return) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for verifyAndProcessWithdrawalsReturn { + impl ::core::convert::From> for validatorStatus_0Return { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[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>, - >, - ); + 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 = verifyAndProcessWithdrawalsReturn; - type ReturnTuple<'a> = (); + type Return = validatorStatus_0Return; + type ReturnTuple<'a> = (VALIDATOR_STATUS,); 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]; + 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, @@ -4668,30 +5455,9 @@ pub mod IEigenPod { #[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, + ::tokenize( + &self.validatorPubkey, ), - , - >, - > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), - , - >, - > as alloy_sol_types::SolType>::tokenize(&self.withdrawalFields), ) } #[inline] @@ -4706,51 +5472,34 @@ pub mod IEigenPod { } } }; - /**Function with signature `verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])` and selector `0xa50600f4`. + /**Function with signature `validatorStatus(bytes32)` and selector `0x7439841f`. ```solidity - function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] memory validatorIndices, BeaconChainProofs.StateRootProof memory stateRootProof, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; + function validatorStatus(bytes32 pubkeyHash) external view returns (VALIDATOR_STATUS); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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>, - >, + pub struct validatorStatus_1Call { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, } - ///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)] + ///Container type for the return parameters of the [`validatorStatus(bytes32)`](validatorStatus_1Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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>, - >, - ); + pub struct validatorStatus_1Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { #[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>, - >, - ); + 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) { @@ -4762,36 +5511,27 @@ pub mod IEigenPod { } #[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, - ) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorStatus_1Call) -> Self { + (value.pubkeyHash,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for verifyBalanceUpdatesCall { + impl ::core::convert::From> for validatorStatus_1Call { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - oracleTimestamp: tuple.0, - validatorIndices: tuple.1, - stateRootProof: tuple.2, - validatorFieldsProofs: tuple.3, - validatorFields: tuple.4, + pubkeyHash: tuple.0, } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (VALIDATOR_STATUS,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = + (::RustType,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4803,37 +5543,28 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: verifyBalanceUpdatesReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorStatus_1Return) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for verifyBalanceUpdatesReturn { + impl ::core::convert::From> for validatorStatus_1Return { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[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>, - >, - ); + 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 = verifyBalanceUpdatesReturn; - type ReturnTuple<'a> = (); + type Return = validatorStatus_1Return; + type ReturnTuple<'a> = (VALIDATOR_STATUS,); 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]; + 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, @@ -4843,25 +5574,9 @@ pub mod IEigenPod { #[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), + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), ) } #[inline] @@ -4876,50 +5591,42 @@ pub mod IEigenPod { } } }; - /**Function with signature `verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])` and selector `0x3f65cf19`. + /**Function with signature `verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])` and selector `0xf074ba62`. ```solidity - function verifyWithdrawalCredentials(uint64 oracleTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory withdrawalCredentialProofs, bytes32[][] memory validatorFields) external; + function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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>, + pub struct verifyCheckpointProofsCall { + pub balanceContainerProof: + ::RustType, + pub proofs: alloy::sol_types::private::Vec< + ::RustType, >, } - ///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)] + ///Container type for the return parameters of the [`verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])`](verifyCheckpointProofsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct verifyWithdrawalCredentialsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct verifyCheckpointProofsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, - >, + BeaconChainProofs::BalanceContainerProof, + alloy::sol_types::sol_data::Array, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - u64, - ::RustType, - alloy::sol_types::private::Vec, - alloy::sol_types::private::Vec, + ::RustType, alloy::sol_types::private::Vec< - alloy::sol_types::private::Vec>, + ::RustType, >, ); #[cfg(test)] @@ -4933,27 +5640,18 @@ pub mod IEigenPod { } #[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, - ) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyCheckpointProofsCall) -> Self { + (value.balanceContainerProof, value.proofs) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for verifyWithdrawalCredentialsCall { + impl ::core::convert::From> for verifyCheckpointProofsCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - oracleTimestamp: tuple.0, - stateRootProof: tuple.1, - validatorIndices: tuple.2, - withdrawalCredentialProofs: tuple.3, - validatorFields: tuple.4, + balanceContainerProof: tuple.0, + proofs: tuple.1, } } } @@ -4974,37 +5672,32 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: verifyWithdrawalCredentialsReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyCheckpointProofsReturn) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for verifyWithdrawalCredentialsReturn { + impl ::core::convert::From> for verifyCheckpointProofsReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for verifyWithdrawalCredentialsCall { + impl alloy_sol_types::SolCall for verifyCheckpointProofsCall { 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>, - >, + BeaconChainProofs::BalanceContainerProof, + alloy::sol_types::sol_data::Array, ); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = verifyWithdrawalCredentialsReturn; + type Return = verifyCheckpointProofsReturn; 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]; + "verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])"; + const SELECTOR: [u8; 4] = [240u8, 116u8, 186u8, 98u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -5014,25 +5707,12 @@ pub mod IEigenPod { #[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, + ::tokenize( + &self.balanceContainerProof, ), , - >, - > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), + BeaconChainProofs::BalanceProof, + > as alloy_sol_types::SolType>::tokenize(&self.proofs), ) } #[inline] @@ -5047,25 +5727,43 @@ pub mod IEigenPod { } } }; - /**Function with signature `withdrawBeforeRestaking()` and selector `0xbaa7145a`. + /**Function with signature `verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))` and selector `0x039157d2`. ```solidity - function withdrawBeforeRestaking() external; + function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct withdrawBeforeRestakingCall {} - ///Container type for the return parameters of the [`withdrawBeforeRestaking()`](withdrawBeforeRestakingCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct verifyStaleBalanceCall { + pub beaconTimestamp: u64, + pub stateRootProof: + ::RustType, + pub proof: ::RustType, + } + ///Container type for the return parameters of the [`verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))`](verifyStaleBalanceCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct withdrawBeforeRestakingReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct verifyStaleBalanceReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + BeaconChainProofs::ValidatorProof, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = ( + u64, + ::RustType, + ::RustType, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -5077,16 +5775,20 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: withdrawBeforeRestakingCall) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyStaleBalanceCall) -> Self { + (value.beaconTimestamp, value.stateRootProof, value.proof) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for withdrawBeforeRestakingCall { + impl ::core::convert::From> for verifyStaleBalanceCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { + beaconTimestamp: tuple.0, + stateRootProof: tuple.1, + proof: tuple.2, + } } } } @@ -5106,28 +5808,33 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: withdrawBeforeRestakingReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyStaleBalanceReturn) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for withdrawBeforeRestakingReturn { + impl ::core::convert::From> for verifyStaleBalanceReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for withdrawBeforeRestakingCall { - type Parameters<'a> = (); + impl alloy_sol_types::SolCall for verifyStaleBalanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + BeaconChainProofs::ValidatorProof, + ); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = withdrawBeforeRestakingReturn; + type Return = verifyStaleBalanceReturn; 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]; + const SIGNATURE: &'static str = + "verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))"; + const SELECTOR: [u8; 4] = [3u8, 145u8, 87u8, 210u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -5136,7 +5843,17 @@ pub mod IEigenPod { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + as alloy_sol_types::SolType>::tokenize( + &self.beaconTimestamp, + ), + ::tokenize( + &self.stateRootProof, + ), + ::tokenize( + &self.proof, + ), + ) } #[inline] fn abi_decode_returns( @@ -5150,33 +5867,55 @@ pub mod IEigenPod { } } }; - /**Function with signature `withdrawNonBeaconChainETHBalanceWei(address,uint256)` and selector `0xe2c83445`. + /**Function with signature `verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])` and selector `0x3f65cf19`. ```solidity - function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) external; + function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct withdrawNonBeaconChainETHBalanceWeiCall { - pub recipient: alloy::sol_types::private::Address, - pub amountToWithdraw: alloy::sol_types::private::primitives::aliases::U256, + pub struct verifyWithdrawalCredentialsCall { + pub beaconTimestamp: u64, + pub stateRootProof: + ::RustType, + pub validatorIndices: + alloy::sol_types::private::Vec, + 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 [`withdrawNonBeaconChainETHBalanceWei(address,uint256)`](withdrawNonBeaconChainETHBalanceWeiCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///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, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct withdrawNonBeaconChainETHBalanceWeiReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct verifyWithdrawalCredentialsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::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> = ( - alloy::sol_types::private::Address, - alloy::sol_types::private::primitives::aliases::U256, + 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)] @@ -5189,18 +5928,27 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: withdrawNonBeaconChainETHBalanceWeiCall) -> Self { - (value.recipient, value.amountToWithdraw) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyWithdrawalCredentialsCall) -> Self { + ( + value.beaconTimestamp, + value.stateRootProof, + value.validatorIndices, + value.validatorFieldsProofs, + value.validatorFields, + ) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for withdrawNonBeaconChainETHBalanceWeiCall { + impl ::core::convert::From> for verifyWithdrawalCredentialsCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - recipient: tuple.0, - amountToWithdraw: tuple.1, + beaconTimestamp: tuple.0, + stateRootProof: tuple.1, + validatorIndices: tuple.2, + validatorFieldsProofs: tuple.3, + validatorFields: tuple.4, } } } @@ -5221,31 +5969,37 @@ pub mod IEigenPod { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: withdrawNonBeaconChainETHBalanceWeiReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyWithdrawalCredentialsReturn) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for withdrawNonBeaconChainETHBalanceWeiReturn { + impl ::core::convert::From> for verifyWithdrawalCredentialsReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for withdrawNonBeaconChainETHBalanceWeiCall { + impl alloy_sol_types::SolCall for verifyWithdrawalCredentialsCall { type Parameters<'a> = ( - alloy::sol_types::sol_data::Address, - alloy::sol_types::sol_data::Uint<256>, + 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 = withdrawNonBeaconChainETHBalanceWeiReturn; + type Return = verifyWithdrawalCredentialsReturn; 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]; + 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, @@ -5255,12 +6009,25 @@ pub mod IEigenPod { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.recipient, + as alloy_sol_types::SolType>::tokenize(&self.beaconTimestamp), + ::tokenize( + &self.stateRootProof, ), - as alloy_sol_types::SolType>::tokenize( - &self.amountToWithdraw, + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorIndices), + as alloy_sol_types::SolType>::tokenize( + &self.validatorFieldsProofs, ), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), ) } #[inline] @@ -5279,17 +6046,22 @@ pub mod IEigenPod { ```solidity function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawRestakedBeaconChainETHReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5404,16 +6176,21 @@ pub mod IEigenPod { ```solidity function withdrawableRestakedExecutionLayerGwei() external view returns (uint64); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawableRestakedExecutionLayerGweiCall {} ///Container type for the return parameters of the [`withdrawableRestakedExecutionLayerGwei()`](withdrawableRestakedExecutionLayerGweiCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawableRestakedExecutionLayerGweiReturn { pub _0: u64, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5511,26 +6288,27 @@ pub mod IEigenPod { }; ///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), + activeValidatorCount(activeValidatorCountCall), + checkpointBalanceExitedGwei(checkpointBalanceExitedGweiCall), + currentCheckpoint(currentCheckpointCall), + currentCheckpointTimestamp(currentCheckpointTimestampCall), eigenPodManager(eigenPodManagerCall), - hasRestaked(hasRestakedCall), + getParentBlockRoot(getParentBlockRootCall), initialize(initializeCall), - mostRecentWithdrawalTimestamp(mostRecentWithdrawalTimestampCall), - nonBeaconChainETHBalanceWei(nonBeaconChainETHBalanceWeiCall), + lastCheckpointTimestamp(lastCheckpointTimestampCall), podOwner(podOwnerCall), - provenWithdrawal(provenWithdrawalCall), + proofSubmitter(proofSubmitterCall), recoverTokens(recoverTokensCall), + setProofSubmitter(setProofSubmitterCall), stake(stakeCall), + startCheckpoint(startCheckpointCall), validatorPubkeyHashToInfo(validatorPubkeyHashToInfoCall), validatorPubkeyToInfo(validatorPubkeyToInfoCall), validatorStatus_0(validatorStatus_0Call), validatorStatus_1(validatorStatus_1Call), - verifyAndProcessWithdrawals(verifyAndProcessWithdrawalsCall), - verifyBalanceUpdates(verifyBalanceUpdatesCall), + verifyCheckpointProofs(verifyCheckpointProofsCall), + verifyStaleBalance(verifyStaleBalanceCall), verifyWithdrawalCredentials(verifyWithdrawalCredentialsCall), - withdrawBeforeRestaking(withdrawBeforeRestakingCall), - withdrawNonBeaconChainETHBalanceWei(withdrawNonBeaconChainETHBalanceWeiCall), withdrawRestakedBeaconChainETH(withdrawRestakedBeaconChainETHCall), withdrawableRestakedExecutionLayerGwei(withdrawableRestakedExecutionLayerGweiCall), } @@ -5543,67 +6321,77 @@ pub mod IEigenPod { /// /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [3u8, 145u8, 87u8, 210u8], [11u8, 24u8, 255u8, 102u8], - [12u8, 212u8, 100u8, 158u8], - [29u8, 144u8, 93u8, 92u8], - [49u8, 6u8, 171u8, 83u8], + [35u8, 64u8, 232u8, 211u8], [52u8, 116u8, 170u8, 22u8], - [52u8, 190u8, 162u8, 10u8], [63u8, 101u8, 207u8, 25u8], + [66u8, 236u8, 255u8, 42u8], [70u8, 101u8, 188u8, 218u8], + [71u8, 210u8, 131u8, 114u8], + [82u8, 57u8, 106u8, 89u8], + [88u8, 117u8, 51u8, 87u8], [88u8, 234u8, 238u8, 121u8], + [108u8, 13u8, 45u8, 90u8], [111u8, 205u8, 14u8, 83u8], [116u8, 57u8, 132u8, 31u8], - [135u8, 224u8, 210u8, 137u8], + [136u8, 103u8, 108u8, 173u8], [155u8, 78u8, 70u8, 52u8], - [165u8, 6u8, 0u8, 244u8], [181u8, 34u8, 83u8, 138u8], - [186u8, 167u8, 20u8, 90u8], [196u8, 144u8, 116u8, 66u8], [196u8, 214u8, 109u8, 232u8], + [208u8, 109u8, 85u8, 135u8], [221u8, 163u8, 52u8, 108u8], - [226u8, 81u8, 239u8, 82u8], - [226u8, 200u8, 52u8, 69u8], - [254u8, 128u8, 176u8, 135u8], + [238u8, 148u8, 214u8, 124u8], + [240u8, 116u8, 186u8, 98u8], ]; } #[automatically_derived] impl alloy_sol_types::SolInterface for IEigenPodCalls { const NAME: &'static str = "IEigenPodCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 22usize; + const COUNT: usize = 23usize; #[inline] fn selector(&self) -> [u8; 4] { match self { - Self::MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR(_) => { - ::SELECTOR + Self::activeValidatorCount(_) => { + ::SELECTOR + } + Self::checkpointBalanceExitedGwei(_) => { + ::SELECTOR } - Self::activateRestaking(_) => { - ::SELECTOR + Self::currentCheckpoint(_) => { + ::SELECTOR + } + Self::currentCheckpointTimestamp(_) => { + ::SELECTOR } Self::eigenPodManager(_) => { ::SELECTOR } - Self::hasRestaked(_) => { - ::SELECTOR + Self::getParentBlockRoot(_) => { + ::SELECTOR } Self::initialize(_) => { ::SELECTOR } - Self::mostRecentWithdrawalTimestamp(_) => { - ::SELECTOR - } - Self::nonBeaconChainETHBalanceWei(_) => { - ::SELECTOR + Self::lastCheckpointTimestamp(_) => { + ::SELECTOR } Self::podOwner(_) => ::SELECTOR, - Self::provenWithdrawal(_) => { - ::SELECTOR + Self::proofSubmitter(_) => { + ::SELECTOR } Self::recoverTokens(_) => { ::SELECTOR } + Self::setProofSubmitter(_) => { + ::SELECTOR + } Self::stake(_) => ::SELECTOR, + Self::startCheckpoint(_) => { + ::SELECTOR + } Self::validatorPubkeyHashToInfo(_) => { ::SELECTOR } @@ -5616,21 +6404,15 @@ pub mod IEigenPod { Self::validatorStatus_1(_) => { ::SELECTOR } - Self::verifyAndProcessWithdrawals(_) => { - ::SELECTOR + Self::verifyCheckpointProofs(_) => { + ::SELECTOR } - Self::verifyBalanceUpdates(_) => { - ::SELECTOR + Self::verifyStaleBalance(_) => { + ::SELECTOR } Self::verifyWithdrawalCredentials(_) => { ::SELECTOR } - Self::withdrawBeforeRestaking(_) => { - ::SELECTOR - } - Self::withdrawNonBeaconChainETHBalanceWei(_) => { - ::SELECTOR - } Self::withdrawRestakedBeaconChainETH(_) => { ::SELECTOR } @@ -5655,6 +6437,18 @@ pub mod IEigenPod { validate: bool, ) -> alloy_sol_types::Result { static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn verifyStaleBalance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::verifyStaleBalance) + } + verifyStaleBalance + }, { fn podOwner( data: &[u8], @@ -5666,91 +6460,104 @@ pub mod IEigenPod { podOwner }, { - fn activateRestaking( + fn activeValidatorCount( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ::abi_decode_raw( data, validate, ) - .map(IEigenPodCalls::activateRestaking) + .map(IEigenPodCalls::activeValidatorCount) } - activateRestaking + activeValidatorCount }, { - fn MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR( + fn withdrawableRestakedExecutionLayerGwei( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ::abi_decode_raw( data, validate, ) - .map(IEigenPodCalls::MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR) + .map(IEigenPodCalls::withdrawableRestakedExecutionLayerGwei) } - MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR + withdrawableRestakedExecutionLayerGwei }, { - fn hasRestaked( + fn verifyWithdrawalCredentials( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(IEigenPodCalls::hasRestaked) + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::verifyWithdrawalCredentials) } - hasRestaked + verifyWithdrawalCredentials }, { - fn withdrawableRestakedExecutionLayerGwei( + fn currentCheckpointTimestamp( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ::abi_decode_raw( data, validate, ) - .map(IEigenPodCalls::withdrawableRestakedExecutionLayerGwei) + .map(IEigenPodCalls::currentCheckpointTimestamp) } - withdrawableRestakedExecutionLayerGwei + currentCheckpointTimestamp + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::eigenPodManager) + } + eigenPodManager }, { - fn provenWithdrawal( + fn currentCheckpoint( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ::abi_decode_raw( data, validate, ) - .map(IEigenPodCalls::provenWithdrawal) + .map(IEigenPodCalls::currentCheckpoint) } - provenWithdrawal + currentCheckpoint }, { - fn verifyWithdrawalCredentials( + fn checkpointBalanceExitedGwei( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ::abi_decode_raw( data, validate, ) - .map(IEigenPodCalls::verifyWithdrawalCredentials) + .map(IEigenPodCalls::checkpointBalanceExitedGwei) } - verifyWithdrawalCredentials + checkpointBalanceExitedGwei }, { - fn eigenPodManager( + fn proofSubmitter( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ::abi_decode_raw( data, validate, ) - .map(IEigenPodCalls::eigenPodManager) + .map(IEigenPodCalls::proofSubmitter) } - eigenPodManager + proofSubmitter }, { fn validatorStatus_0( @@ -5764,6 +6571,18 @@ pub mod IEigenPod { } validatorStatus_0 }, + { + fn getParentBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::getParentBlockRoot) + } + getParentBlockRoot + }, { fn validatorPubkeyHashToInfo( data: &[u8], @@ -5789,17 +6608,16 @@ pub mod IEigenPod { validatorStatus_1 }, { - fn mostRecentWithdrawalTimestamp( + fn startCheckpoint( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map(IEigenPodCalls::mostRecentWithdrawalTimestamp) + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::startCheckpoint) } - mostRecentWithdrawalTimestamp + startCheckpoint }, { fn stake( @@ -5811,18 +6629,6 @@ pub mod IEigenPod { } stake }, - { - fn verifyBalanceUpdates( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(IEigenPodCalls::verifyBalanceUpdates) - } - verifyBalanceUpdates - }, { fn validatorPubkeyToInfo( data: &[u8], @@ -5835,18 +6641,6 @@ pub mod IEigenPod { } validatorPubkeyToInfo }, - { - fn withdrawBeforeRestaking( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(IEigenPodCalls::withdrawBeforeRestaking) - } - withdrawBeforeRestaking - }, { fn withdrawRestakedBeaconChainETH( data: &[u8], @@ -5871,55 +6665,52 @@ pub mod IEigenPod { initialize }, { - fn recoverTokens( + fn setProofSubmitter( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ::abi_decode_raw( data, validate, ) - .map(IEigenPodCalls::recoverTokens) + .map(IEigenPodCalls::setProofSubmitter) } - recoverTokens + setProofSubmitter }, { - fn verifyAndProcessWithdrawals( + fn recoverTokens( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map(IEigenPodCalls::verifyAndProcessWithdrawals) + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::recoverTokens) } - verifyAndProcessWithdrawals + recoverTokens }, { - fn withdrawNonBeaconChainETHBalanceWei( + fn lastCheckpointTimestamp( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map(IEigenPodCalls::withdrawNonBeaconChainETHBalanceWei) + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::lastCheckpointTimestamp) } - withdrawNonBeaconChainETHBalanceWei + lastCheckpointTimestamp }, { - fn nonBeaconChainETHBalanceWei( + fn verifyCheckpointProofs( data: &[u8], validate: bool, ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map(IEigenPodCalls::nonBeaconChainETHBalanceWei) + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::verifyCheckpointProofs) } - nonBeaconChainETHBalanceWei + verifyCheckpointProofs }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { @@ -5933,13 +6724,23 @@ pub mod IEigenPod { #[inline] fn abi_encoded_size(&self) -> usize { match self { - Self::MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR(inner) => { - ::abi_encoded_size( + Self::activeValidatorCount(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::checkpointBalanceExitedGwei(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentCheckpoint(inner) => { + ::abi_encoded_size( inner, ) } - Self::activateRestaking(inner) => { - ::abi_encoded_size( + Self::currentCheckpointTimestamp(inner) => { + ::abi_encoded_size( inner, ) } @@ -5948,29 +6749,24 @@ pub mod IEigenPod { inner, ) } - Self::hasRestaked(inner) => { - ::abi_encoded_size( + Self::getParentBlockRoot(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( + Self::lastCheckpointTimestamp(inner) => { + ::abi_encoded_size( inner, ) } Self::podOwner(inner) => { ::abi_encoded_size(inner) } - Self::provenWithdrawal(inner) => { - ::abi_encoded_size( + Self::proofSubmitter(inner) => { + ::abi_encoded_size( inner, ) } @@ -5979,9 +6775,19 @@ pub mod IEigenPod { inner, ) } + Self::setProofSubmitter(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::stake(inner) => { ::abi_encoded_size(inner) } + Self::startCheckpoint(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::validatorPubkeyHashToInfo(inner) => { ::abi_encoded_size( inner, @@ -6002,13 +6808,13 @@ pub mod IEigenPod { inner, ) } - Self::verifyAndProcessWithdrawals(inner) => { - ::abi_encoded_size( + Self::verifyCheckpointProofs(inner) => { + ::abi_encoded_size( inner, ) } - Self::verifyBalanceUpdates(inner) => { - ::abi_encoded_size( + Self::verifyStaleBalance(inner) => { + ::abi_encoded_size( inner, ) } @@ -6017,16 +6823,6 @@ pub mod IEigenPod { inner, ) } - Self::withdrawBeforeRestaking(inner) => { - ::abi_encoded_size( - inner, - ) - } - Self::withdrawNonBeaconChainETHBalanceWei(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::withdrawRestakedBeaconChainETH(inner) => { ::abi_encoded_size( inner, @@ -6042,44 +6838,50 @@ pub mod IEigenPod { #[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( + Self::activeValidatorCount(inner) => { + ::abi_encode_raw( inner, out, ) } - Self::activateRestaking(inner) => { - ::abi_encode_raw( + Self::checkpointBalanceExitedGwei(inner) => { + ::abi_encode_raw( inner, out, ) } - Self::eigenPodManager(inner) => { - ::abi_encode_raw( + Self::currentCheckpoint(inner) => { + ::abi_encode_raw( inner, out, ) } - Self::hasRestaked(inner) => { - ::abi_encode_raw( + Self::currentCheckpointTimestamp(inner) => { + ::abi_encode_raw( inner, out, ) } - Self::initialize(inner) => { - ::abi_encode_raw( + Self::eigenPodManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getParentBlockRoot(inner) => { + ::abi_encode_raw( inner, out, ) } - Self::mostRecentWithdrawalTimestamp(inner) => { - ::abi_encode_raw( + Self::initialize(inner) => { + ::abi_encode_raw( inner, out, ) } - Self::nonBeaconChainETHBalanceWei(inner) => { - ::abi_encode_raw( + Self::lastCheckpointTimestamp(inner) => { + ::abi_encode_raw( inner, out, ) @@ -6090,8 +6892,8 @@ pub mod IEigenPod { out, ) } - Self::provenWithdrawal(inner) => { - ::abi_encode_raw( + Self::proofSubmitter(inner) => { + ::abi_encode_raw( inner, out, ) @@ -6102,9 +6904,21 @@ pub mod IEigenPod { out, ) } + Self::setProofSubmitter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::stake(inner) => { ::abi_encode_raw(inner, out) } + Self::startCheckpoint(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::validatorPubkeyHashToInfo(inner) => { ::abi_encode_raw( inner, @@ -6129,14 +6943,14 @@ pub mod IEigenPod { out, ) } - Self::verifyAndProcessWithdrawals(inner) => { - ::abi_encode_raw( + Self::verifyCheckpointProofs(inner) => { + ::abi_encode_raw( inner, out, ) } - Self::verifyBalanceUpdates(inner) => { - ::abi_encode_raw( + Self::verifyStaleBalance(inner) => { + ::abi_encode_raw( inner, out, ) @@ -6147,18 +6961,6 @@ pub mod IEigenPod { out, ) } - Self::withdrawBeforeRestaking(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } - Self::withdrawNonBeaconChainETHBalanceWei(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::withdrawRestakedBeaconChainETH(inner) => { ::abi_encode_raw( inner, @@ -6176,15 +6978,16 @@ pub mod IEigenPod { } ///Container for all the [`IEigenPod`](self) events. pub enum IEigenPodEvents { + CheckpointCreated(CheckpointCreated), + CheckpointFinalized(CheckpointFinalized), EigenPodStaked(EigenPodStaked), - FullWithdrawalRedeemed(FullWithdrawalRedeemed), NonBeaconChainETHReceived(NonBeaconChainETHReceived), - NonBeaconChainETHWithdrawn(NonBeaconChainETHWithdrawn), - PartialWithdrawalRedeemed(PartialWithdrawalRedeemed), + ProofSubmitterUpdated(ProofSubmitterUpdated), RestakedBeaconChainETHWithdrawn(RestakedBeaconChainETHWithdrawn), - RestakingActivated(RestakingActivated), ValidatorBalanceUpdated(ValidatorBalanceUpdated), + ValidatorCheckpointed(ValidatorCheckpointed), ValidatorRestaked(ValidatorRestaked), + ValidatorWithdrawn(ValidatorWithdrawn), } #[automatically_derived] impl IEigenPodEvents { @@ -6200,15 +7003,25 @@ pub mod IEigenPod { 13u8, 143u8, 179u8, 180u8, 43u8, 55u8, 189u8, 28u8, 2u8, 94u8, 34u8, 194u8, 128u8, 250u8, 202u8, 214u8, 44u8, 50u8, 223u8, ], + [ + 42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8, 44u8, 35u8, + 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8, 230u8, 86u8, 62u8, + 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8, + ], [ 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, + 82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8, 111u8, 100u8, + 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8, 59u8, 207u8, 220u8, + 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8, + ], + [ + 87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8, 164u8, + 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8, 244u8, 183u8, + 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8, ], [ 96u8, 104u8, 101u8, 183u8, 147u8, 74u8, 37u8, 212u8, 174u8, 212u8, 63u8, 108u8, @@ -6226,61 +7039,56 @@ pub mod IEigenPod { 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, + 169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8, 172u8, 236u8, + 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8, 245u8, 244u8, 202u8, 227u8, + 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8, ], [ - 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, + 251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8, 186u8, 37u8, + 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8, 99u8, 205u8, 202u8, 74u8, + 150u8, 154u8, 209u8, 154u8, 94u8, 172u8, ], ]; } #[automatically_derived] impl alloy_sol_types::SolEventInterface for IEigenPodEvents { const NAME: &'static str = "IEigenPodEvents"; - const COUNT: usize = 9usize; + 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( + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( topics, data, validate, ) - .map(Self::EigenPodStaked) + .map(Self::CheckpointCreated) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( topics, data, validate, ) - .map(Self::FullWithdrawalRedeemed) + .map(Self::CheckpointFinalized) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( topics, data, validate, ) - .map(Self::NonBeaconChainETHReceived) + .map(Self::EigenPodStaked) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( topics, data, validate, ) - .map(Self::NonBeaconChainETHWithdrawn) + .map(Self::NonBeaconChainETHReceived) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( topics, data, validate, ) - .map(Self::PartialWithdrawalRedeemed) + .map(Self::ProofSubmitterUpdated) } Some( ::SIGNATURE_HASH, @@ -6290,24 +7098,30 @@ pub mod IEigenPod { ) .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::ValidatorCheckpointed) + } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, ) .map(Self::ValidatorRestaked) } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorWithdrawn) + } _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { name: ::NAME, log: alloy_sol_types::private::Box::new( @@ -6324,64 +7138,70 @@ pub mod IEigenPod { impl alloy_sol_types::private::IntoLogData for IEigenPodEvents { fn to_log_data(&self) -> alloy_sol_types::private::LogData { match self { - Self::EigenPodStaked(inner) => { + Self::CheckpointCreated(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } - Self::FullWithdrawalRedeemed(inner) => { + Self::CheckpointFinalized(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } - Self::NonBeaconChainETHReceived(inner) => { + Self::EigenPodStaked(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } - Self::NonBeaconChainETHWithdrawn(inner) => { + Self::NonBeaconChainETHReceived(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } - Self::PartialWithdrawalRedeemed(inner) => { + Self::ProofSubmitterUpdated(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) => { + Self::ValidatorBalanceUpdated(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } - Self::ValidatorBalanceUpdated(inner) => { + Self::ValidatorCheckpointed(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } Self::ValidatorRestaked(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::ValidatorWithdrawn(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) => { + Self::CheckpointCreated(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } - Self::FullWithdrawalRedeemed(inner) => { + Self::CheckpointFinalized(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } - Self::NonBeaconChainETHReceived(inner) => { + Self::EigenPodStaked(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } - Self::NonBeaconChainETHWithdrawn(inner) => { + Self::NonBeaconChainETHReceived(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } - Self::PartialWithdrawalRedeemed(inner) => { + Self::ProofSubmitterUpdated(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) => { + Self::ValidatorBalanceUpdated(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } - Self::ValidatorBalanceUpdated(inner) => { + Self::ValidatorCheckpointed(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } Self::ValidatorRestaked(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::ValidatorWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } } } } @@ -6549,18 +7369,30 @@ pub mod IEigenPod { ) -> 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( + ///Creates a new call builder for the [`activeValidatorCount`] function. + pub fn activeValidatorCount( &self, - ) -> alloy_contract::SolCallBuilder - { - self.call_builder(&MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall {}) + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&activeValidatorCountCall {}) + } + ///Creates a new call builder for the [`checkpointBalanceExitedGwei`] function. + pub fn checkpointBalanceExitedGwei( + &self, + _0: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&checkpointBalanceExitedGweiCall { _0 }) + } + ///Creates a new call builder for the [`currentCheckpoint`] function. + pub fn currentCheckpoint( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tCheckpointCall {}) } - ///Creates a new call builder for the [`activateRestaking`] function. - pub fn activateRestaking( + ///Creates a new call builder for the [`currentCheckpointTimestamp`] function. + pub fn currentCheckpointTimestamp( &self, - ) -> alloy_contract::SolCallBuilder { - self.call_builder(&activateRestakingCall {}) + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tCheckpointTimestampCall {}) } ///Creates a new call builder for the [`eigenPodManager`] function. pub fn eigenPodManager( @@ -6568,9 +7400,12 @@ pub mod IEigenPod { ) -> 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 [`getParentBlockRoot`] function. + pub fn getParentBlockRoot( + &self, + timestamp: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getParentBlockRootCall { timestamp }) } ///Creates a new call builder for the [`initialize`] function. pub fn initialize( @@ -6579,32 +7414,21 @@ pub mod IEigenPod { ) -> 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( + ///Creates a new call builder for the [`lastCheckpointTimestamp`] function. + pub fn lastCheckpointTimestamp( &self, - ) -> alloy_contract::SolCallBuilder { - self.call_builder(&nonBeaconChainETHBalanceWeiCall {}) + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&lastCheckpointTimestampCall {}) } ///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( + ///Creates a new call builder for the [`proofSubmitter`] function. + pub fn proofSubmitter( &self, - validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>, - slot: u64, - ) -> alloy_contract::SolCallBuilder { - self.call_builder(&provenWithdrawalCall { - validatorPubkeyHash, - slot, - }) + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&proofSubmitterCall {}) } ///Creates a new call builder for the [`recoverTokens`] function. pub fn recoverTokens( @@ -6621,6 +7445,13 @@ pub mod IEigenPod { recipient, }) } + ///Creates a new call builder for the [`setProofSubmitter`] function. + pub fn setProofSubmitter( + &self, + newProofSubmitter: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setProofSubmitterCall { newProofSubmitter }) + } ///Creates a new call builder for the [`stake`] function. pub fn stake( &self, @@ -6634,6 +7465,13 @@ pub mod IEigenPod { depositDataRoot, }) } + ///Creates a new call builder for the [`startCheckpoint`] function. + pub fn startCheckpoint( + &self, + revertIfNoBalance: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&startCheckpointCall { revertIfNoBalance }) + } ///Creates a new call builder for the [`validatorPubkeyHashToInfo`] function. pub fn validatorPubkeyHashToInfo( &self, @@ -6664,93 +7502,53 @@ pub mod IEigenPod { ) -> alloy_contract::SolCallBuilder { self.call_builder(&validatorStatus_1Call { pubkeyHash }) } - ///Creates a new call builder for the [`verifyAndProcessWithdrawals`] function. - pub fn verifyAndProcessWithdrawals( + ///Creates a new call builder for the [`verifyCheckpointProofs`] function. + pub fn verifyCheckpointProofs( &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>, + balanceContainerProof: ::RustType, + proofs: alloy::sol_types::private::Vec< + ::RustType, >, - ) -> alloy_contract::SolCallBuilder { - self.call_builder(&verifyAndProcessWithdrawalsCall { - oracleTimestamp, - stateRootProof, - withdrawalProofs, - validatorFieldsProofs, - validatorFields, - withdrawalFields, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyCheckpointProofsCall { + balanceContainerProof, + proofs, }) } - ///Creates a new call builder for the [`verifyBalanceUpdates`] function. - pub fn verifyBalanceUpdates( + ///Creates a new call builder for the [`verifyStaleBalance`] function. + pub fn verifyStaleBalance( &self, - oracleTimestamp: u64, - validatorIndices: alloy::sol_types::private::Vec< - alloy::sol_types::private::primitives::aliases::U40, - >, + beaconTimestamp: u64, 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, + proof: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyStaleBalanceCall { + beaconTimestamp, stateRootProof, - validatorFieldsProofs, - validatorFields, + proof, }) } ///Creates a new call builder for the [`verifyWithdrawalCredentials`] function. pub fn verifyWithdrawalCredentials( &self, - oracleTimestamp: u64, + beaconTimestamp: 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, - >, + validatorFieldsProofs: alloy::sol_types::private::Vec, validatorFields: alloy::sol_types::private::Vec< alloy::sol_types::private::Vec>, >, ) -> alloy_contract::SolCallBuilder { self.call_builder(&verifyWithdrawalCredentialsCall { - oracleTimestamp, + beaconTimestamp, stateRootProof, validatorIndices, - withdrawalCredentialProofs, + validatorFieldsProofs, 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, @@ -6784,33 +7582,33 @@ pub mod IEigenPod { ) -> alloy_contract::Event { alloy_contract::Event::new_sol(&self.provider, &self.address) } + ///Creates a new event filter for the [`CheckpointCreated`] event. + pub fn CheckpointCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`CheckpointFinalized`] event. + pub fn CheckpointFinalized_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } ///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( + ///Creates a new event filter for the [`ProofSubmitterUpdated`] event. + pub fn ProofSubmitterUpdated_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::() + ) -> alloy_contract::Event { + self.event_filter::() } ///Creates a new event filter for the [`RestakedBeaconChainETHWithdrawn`] event. pub fn RestakedBeaconChainETHWithdrawn_filter( @@ -6818,23 +7616,29 @@ pub mod IEigenPod { ) -> 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 [`ValidatorCheckpointed`] event. + pub fn ValidatorCheckpointed_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::() } + ///Creates a new event filter for the [`ValidatorWithdrawn`] event. + pub fn ValidatorWithdrawn_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } } } diff --git a/crates/utils/src/ieigenpodmanager.rs b/crates/utils/src/deploy/ieigenpodmanager.rs similarity index 81% rename from crates/utils/src/ieigenpodmanager.rs rename to crates/utils/src/deploy/ieigenpodmanager.rs index 43c13efc..ced323a6 100644 --- a/crates/utils/src/ieigenpodmanager.rs +++ b/crates/utils/src/deploy/ieigenpodmanager.rs @@ -5,8 +5,7 @@ Generated by the following Solidity interface... 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 NewTotalShares(address indexed podOwner, int256 newTotalShares); event Paused(address indexed account, uint256 newPausedStatus); event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); event PodDeployed(address indexed eigenPod, address indexed podOwner); @@ -15,12 +14,9 @@ interface IEigenPodManager { 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); @@ -33,13 +29,11 @@ interface IEigenPodManager { 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; } ``` @@ -84,19 +78,6 @@ interface IEigenPodManager { ], "stateMutability": "view" }, - { - "type": "function", - "name": "beaconChainOracle", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract IBeaconChainOracle" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "createPod", @@ -110,19 +91,6 @@ interface IEigenPodManager { ], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "denebForkTimestamp", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint64", - "internalType": "uint64" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "eigenPodBeacon", @@ -149,25 +117,6 @@ interface IEigenPodManager { ], "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", @@ -358,19 +307,6 @@ interface IEigenPodManager { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "setDenebForkTimestamp", - "inputs": [ - { - "name": "newDenebForkTimestamp", - "type": "uint64", - "internalType": "uint64" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, { "type": "function", "name": "setPauserRegistry", @@ -446,19 +382,6 @@ interface IEigenPodManager { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "updateBeaconChainOracle", - "inputs": [ - { - "name": "newBeaconChainOracle", - "type": "address", - "internalType": "contract IBeaconChainOracle" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, { "type": "function", "name": "withdrawSharesAsTokens", @@ -546,26 +469,19 @@ interface IEigenPodManager { }, { "type": "event", - "name": "BeaconOracleUpdated", + "name": "NewTotalShares", "inputs": [ { - "name": "newOracleAddress", + "name": "podOwner", "type": "address", "indexed": true, "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "DenebForkTimestampUpdated", - "inputs": [ + }, { - "name": "newValue", - "type": "uint64", + "name": "newTotalShares", + "type": "int256", "indexed": false, - "internalType": "uint64" + "internalType": "int256" } ], "anonymous": false @@ -667,7 +583,12 @@ interface IEigenPodManager { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IEigenPodManager { use super::*; use alloy::sol_types as alloy_sol_types; @@ -695,7 +616,12 @@ pub mod IEigenPodManager { ```solidity event BeaconChainETHDeposited(address indexed podOwner, uint256 amount); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct BeaconChainETHDeposited { #[allow(missing_docs)] @@ -703,7 +629,12 @@ pub mod IEigenPodManager { #[allow(missing_docs)] pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -794,7 +725,12 @@ pub mod IEigenPodManager { ```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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct BeaconChainETHWithdrawalCompleted { #[allow(missing_docs)] @@ -810,7 +746,12 @@ pub mod IEigenPodManager { #[allow(missing_docs)] pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -920,33 +861,45 @@ pub mod IEigenPodManager { } } }; - /**Event with signature `BeaconOracleUpdated(address)` and selector `0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6`. + /**Event with signature `NewTotalShares(address,int256)` and selector `0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098`. ```solidity - event BeaconOracleUpdated(address indexed newOracleAddress); + event NewTotalShares(address indexed podOwner, int256 newTotalShares); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct BeaconOracleUpdated { + pub struct NewTotalShares { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newOracleAddress: alloy::sol_types::private::Address, + pub newTotalShares: alloy::sol_types::private::primitives::aliases::I256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] - impl alloy_sol_types::SolEvent for BeaconOracleUpdated { - type DataTuple<'a> = (); + impl alloy_sol_types::SolEvent for NewTotalShares { + 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 = "BeaconOracleUpdated(address)"; + const SIGNATURE: &'static str = "NewTotalShares(address,int256)"; 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, + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, + 154u8, 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, + 67u8, 46u8, 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -956,95 +909,9 @@ pub mod IEigenPodManager { 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); + podOwner: topics.1, + newTotalShares: data.0, } - 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( @@ -1062,14 +929,14 @@ pub mod IEigenPodManager { #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( - as alloy_sol_types::SolType>::tokenize( - &self.newValue, + as alloy_sol_types::SolType>::tokenize( + &self.newTotalShares, ), ) } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(),) + (Self::SIGNATURE_HASH.into(), self.podOwner.clone()) } #[inline] fn encode_topics_raw( @@ -1080,11 +947,14 @@ pub mod IEigenPodManager { 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 DenebForkTimestampUpdated { + impl alloy_sol_types::private::IntoLogData for NewTotalShares { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -1093,9 +963,9 @@ pub mod IEigenPodManager { } } #[automatically_derived] - impl From<&DenebForkTimestampUpdated> for alloy_sol_types::private::LogData { + impl From<&NewTotalShares> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &DenebForkTimestampUpdated) -> alloy_sol_types::private::LogData { + fn from(this: &NewTotalShares) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } @@ -1104,7 +974,12 @@ pub mod IEigenPodManager { ```solidity event Paused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -1112,7 +987,12 @@ pub mod IEigenPodManager { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1203,7 +1083,12 @@ pub mod IEigenPodManager { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -1211,7 +1096,12 @@ pub mod IEigenPodManager { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1302,7 +1192,12 @@ pub mod IEigenPodManager { ```solidity event PodDeployed(address indexed eigenPod, address indexed podOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PodDeployed { #[allow(missing_docs)] @@ -1310,7 +1205,12 @@ pub mod IEigenPodManager { #[allow(missing_docs)] pub podOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1405,7 +1305,12 @@ pub mod IEigenPodManager { ```solidity event PodSharesUpdated(address indexed podOwner, int256 sharesDelta); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PodSharesUpdated { #[allow(missing_docs)] @@ -1413,7 +1318,12 @@ pub mod IEigenPodManager { #[allow(missing_docs)] pub sharesDelta: alloy::sol_types::private::primitives::aliases::I256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1504,7 +1414,12 @@ pub mod IEigenPodManager { ```solidity event Unpaused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -1512,7 +1427,12 @@ pub mod IEigenPodManager { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1603,19 +1523,24 @@ pub mod IEigenPodManager { ```solidity function addShares(address podOwner, uint256 shares) external returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1730,16 +1655,21 @@ pub mod IEigenPodManager { ```solidity function beaconChainETHStrategy() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct beaconChainETHStrategyCall {} ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct beaconChainETHStrategyReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1831,20 +1761,25 @@ pub mod IEigenPodManager { } } }; - /**Function with signature `beaconChainOracle()` and selector `0xc052bd61`. + /**Function with signature `createPod()` and selector `0x84d81062`. ```solidity - function beaconChainOracle() external view returns (address); + function createPod() external returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct beaconChainOracleCall {} - ///Container type for the return parameters of the [`beaconChainOracle()`](beaconChainOracleCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct createPodCall {} + ///Container type for the return parameters of the [`createPod()`](createPodCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct beaconChainOracleReturn { + pub struct createPodReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1863,14 +1798,14 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: beaconChainOracleCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createPodCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for beaconChainOracleCall { + impl ::core::convert::From> for createPodCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -1892,28 +1827,28 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: beaconChainOracleReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createPodReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for beaconChainOracleReturn { + impl ::core::convert::From> for createPodReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for beaconChainOracleCall { + impl alloy_sol_types::SolCall for createPodCall { type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = beaconChainOracleReturn; + 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 = "beaconChainOracle()"; - const SELECTOR: [u8; 4] = [192u8, 82u8, 189u8, 97u8]; + const SIGNATURE: &'static str = "createPod()"; + const SELECTOR: [u8; 4] = [132u8, 216u8, 16u8, 98u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1936,20 +1871,25 @@ pub mod IEigenPodManager { } } }; - /**Function with signature `createPod()` and selector `0x84d81062`. + /**Function with signature `eigenPodBeacon()` and selector `0x292b7b2b`. ```solidity - function createPod() external returns (address); + function eigenPodBeacon() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct createPodCall {} - ///Container type for the return parameters of the [`createPod()`](createPodCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct eigenPodBeaconCall {} + ///Container type for the return parameters of the [`eigenPodBeacon()`](eigenPodBeaconCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct createPodReturn { + pub struct eigenPodBeaconReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1968,14 +1908,14 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: createPodCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodBeaconCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for createPodCall { + impl ::core::convert::From> for eigenPodBeaconCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -1997,28 +1937,28 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: createPodReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodBeaconReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for createPodReturn { + impl ::core::convert::From> for eigenPodBeaconReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for createPodCall { + impl alloy_sol_types::SolCall for eigenPodBeaconCall { type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = createPodReturn; + 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 = "createPod()"; - const SELECTOR: [u8; 4] = [132u8, 216u8, 16u8, 98u8]; + const SIGNATURE: &'static str = "eigenPodBeacon()"; + const SELECTOR: [u8; 4] = [41u8, 43u8, 123u8, 43u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -2041,20 +1981,25 @@ pub mod IEigenPodManager { } } }; - /**Function with signature `denebForkTimestamp()` and selector `0x44e71c80`. + /**Function with signature `ethPOS()` and selector `0x74cdd798`. ```solidity - function denebForkTimestamp() external view returns (uint64); + function ethPOS() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct denebForkTimestampCall {} - ///Container type for the return parameters of the [`denebForkTimestamp()`](denebForkTimestampCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct ethPOSCall {} + ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct denebForkTimestampReturn { - pub _0: u64, + pub struct ethPOSReturn { + pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2073,14 +2018,14 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: denebForkTimestampCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ethPOSCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for denebForkTimestampCall { + impl ::core::convert::From> for ethPOSCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -2088,9 +2033,9 @@ pub mod IEigenPodManager { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (u64,); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2102,28 +2047,28 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: denebForkTimestampReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ethPOSReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for denebForkTimestampReturn { + impl ::core::convert::From> for ethPOSReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for denebForkTimestampCall { + impl alloy_sol_types::SolCall for ethPOSCall { 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 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 = "denebForkTimestamp()"; - const SELECTOR: [u8; 4] = [68u8, 231u8, 28u8, 128u8]; + const SIGNATURE: &'static str = "ethPOS()"; + const SELECTOR: [u8; 4] = [116u8, 205u8, 215u8, 152u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -2146,27 +2091,34 @@ pub mod IEigenPodManager { } } }; - /**Function with signature `eigenPodBeacon()` and selector `0x292b7b2b`. + /**Function with signature `getPod(address)` and selector `0xa38406a3`. ```solidity - function eigenPodBeacon() external view returns (address); + function getPod(address podOwner) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct eigenPodBeaconCall {} - ///Container type for the return parameters of the [`eigenPodBeacon()`](eigenPodBeaconCall) function. - #[allow(non_camel_case_types, non_snake_case)] + 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, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct eigenPodBeaconReturn { + pub struct getPodReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2178,16 +2130,16 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: eigenPodBeaconCall) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getPodCall) -> Self { + (value.podOwner,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for eigenPodBeaconCall { + impl ::core::convert::From> for getPodCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { podOwner: tuple.0 } } } } @@ -2207,351 +2159,28 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: eigenPodBeaconReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getPodReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for eigenPodBeaconReturn { + impl ::core::convert::From> for getPodReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for eigenPodBeaconCall { - type Parameters<'a> = (); + 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 = eigenPodBeaconReturn; + 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 = "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]; + 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, @@ -2582,18 +2211,23 @@ pub mod IEigenPodManager { ```solidity function hasPod(address podOwner) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct hasPodReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2693,16 +2327,21 @@ pub mod IEigenPodManager { ```solidity function numPods() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct numPodsCall {} ///Container type for the return parameters of the [`numPods()`](numPodsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct numPodsReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2798,18 +2437,23 @@ pub mod IEigenPodManager { ```solidity function ownerToPod(address podOwner) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerToPodReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2909,16 +2553,21 @@ pub mod IEigenPodManager { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3020,14 +2669,19 @@ pub mod IEigenPodManager { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3123,18 +2777,23 @@ pub mod IEigenPodManager { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3234,16 +2893,21 @@ pub mod IEigenPodManager { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3339,16 +3003,21 @@ pub mod IEigenPodManager { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3444,18 +3113,23 @@ pub mod IEigenPodManager { ```solidity function podOwnerShares(address podOwner) external view returns (int256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct podOwnerSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::I256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3555,17 +3229,22 @@ pub mod IEigenPodManager { ```solidity function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct recordBeaconChainETHBalanceUpdateReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3629,149 +3308,24 @@ pub mod IEigenPodManager { } #[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 { + impl ::core::convert::From> for recordBeaconChainETHBalanceUpdateReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for removeSharesCall { + impl alloy_sol_types::SolCall for recordBeaconChainETHBalanceUpdateCall { type Parameters<'a> = ( alloy::sol_types::sol_data::Address, - alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Int<256>, ); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = removeSharesReturn; + type Return = recordBeaconChainETHBalanceUpdateReturn; 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]; + 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, @@ -3784,8 +3338,8 @@ pub mod IEigenPodManager { ::tokenize( &self.podOwner, ), - as alloy_sol_types::SolType>::tokenize( - &self.shares, + as alloy_sol_types::SolType>::tokenize( + &self.sharesDelta, ), ) } @@ -3801,27 +3355,39 @@ pub mod IEigenPodManager { } } }; - /**Function with signature `setDenebForkTimestamp(uint64)` and selector `0x463db038`. + /**Function with signature `removeShares(address,uint256)` and selector `0xbeffbb89`. ```solidity - function setDenebForkTimestamp(uint64 newDenebForkTimestamp) external; + function removeShares(address podOwner, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct setDenebForkTimestampCall { - pub newDenebForkTimestamp: u64, + 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 [`setDenebForkTimestamp(uint64)`](setDenebForkTimestampCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`removeShares(address,uint256)`](removeSharesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct setDenebForkTimestampReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (u64,); + 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) { @@ -3833,17 +3399,18 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: setDenebForkTimestampCall) -> Self { - (value.newDenebForkTimestamp,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeSharesCall) -> Self { + (value.podOwner, value.shares) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for setDenebForkTimestampCall { + impl ::core::convert::From> for removeSharesCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - newDenebForkTimestamp: tuple.0, + podOwner: tuple.0, + shares: tuple.1, } } } @@ -3864,28 +3431,31 @@ pub mod IEigenPodManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: setDenebForkTimestampReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeSharesReturn) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for setDenebForkTimestampReturn { + impl ::core::convert::From> for removeSharesReturn { 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>,); + 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 = setDenebForkTimestampReturn; + type Return = removeSharesReturn; 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]; + 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, @@ -3895,8 +3465,11 @@ pub mod IEigenPodManager { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - as alloy_sol_types::SolType>::tokenize( - &self.newDenebForkTimestamp, + ::tokenize( + &self.podOwner, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, ), ) } @@ -3916,16 +3489,21 @@ pub mod IEigenPodManager { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4027,16 +3605,21 @@ pub mod IEigenPodManager { ```solidity function slasher() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct slasherCall {} ///Container type for the return parameters of the [`slasher()`](slasherCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct slasherReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4132,7 +3715,7 @@ pub mod IEigenPodManager { ```solidity function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeCall { pub pubkey: alloy::sol_types::private::Bytes, @@ -4140,10 +3723,15 @@ pub mod IEigenPodManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4265,16 +3853,21 @@ pub mod IEigenPodManager { ```solidity function strategyManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerCall {} ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4370,16 +3963,21 @@ pub mod IEigenPodManager { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4477,122 +4075,11 @@ pub mod IEigenPodManager { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawSharesAsTokensCall { pub podOwner: alloy::sol_types::private::Address, @@ -4600,10 +4087,15 @@ pub mod IEigenPodManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawSharesAsTokensReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4725,12 +4217,9 @@ pub mod IEigenPodManager { 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), @@ -4743,13 +4232,11 @@ pub mod IEigenPodManager { podOwnerShares(podOwnerSharesCall), recordBeaconChainETHBalanceUpdate(recordBeaconChainETHBalanceUpdateCall), removeShares(removeSharesCall), - setDenebForkTimestamp(setDenebForkTimestampCall), setPauserRegistry(setPauserRegistryCall), slasher(slasherCall), stake(stakeCall), strategyManager(strategyManagerCall), unpause(unpauseCall), - updateBeaconChainOracle(updateBeaconChainOracleCall), withdrawSharesAsTokens(withdrawSharesAsTokensCall), } #[automatically_derived] @@ -4767,8 +4254,6 @@ pub mod IEigenPodManager { [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], @@ -4783,10 +4268,7 @@ pub mod IEigenPodManager { [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], ]; @@ -4795,7 +4277,7 @@ pub mod IEigenPodManager { impl alloy_sol_types::SolInterface for IEigenPodManagerCalls { const NAME: &'static str = "IEigenPodManagerCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 28usize; + const COUNT: usize = 23usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -4803,20 +4285,11 @@ pub mod IEigenPodManager { 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, @@ -4835,9 +4308,6 @@ pub mod IEigenPodManager { ::SELECTOR } Self::removeShares(_) => ::SELECTOR, - Self::setDenebForkTimestamp(_) => { - ::SELECTOR - } Self::setPauserRegistry(_) => { ::SELECTOR } @@ -4847,9 +4317,6 @@ pub mod IEigenPodManager { ::SELECTOR } Self::unpause(_) => ::SELECTOR, - Self::updateBeaconChainOracle(_) => { - ::SELECTOR - } Self::withdrawSharesAsTokens(_) => { ::SELECTOR } @@ -4943,30 +4410,6 @@ pub mod IEigenPodManager { } 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], @@ -5115,30 +4558,6 @@ pub mod IEigenPodManager { } 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], @@ -5154,18 +4573,6 @@ pub mod IEigenPodManager { } recordBeaconChainETHBalanceUpdate }, - { - fn getBlockRootAtTimestamp( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(IEigenPodManagerCalls::getBlockRootAtTimestamp) - } - getBlockRootAtTimestamp - }, { fn hasPod( data: &[u8], @@ -5206,19 +4613,9 @@ pub mod IEigenPodManager { 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, @@ -5227,11 +4624,6 @@ pub mod IEigenPodManager { Self::ethPOS(inner) => { ::abi_encoded_size(inner) } - Self::getBlockRootAtTimestamp(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::getPod(inner) => { ::abi_encoded_size(inner) } @@ -5276,11 +4668,6 @@ pub mod IEigenPodManager { inner, ) } - Self::setDenebForkTimestamp(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::setPauserRegistry(inner) => { ::abi_encoded_size( inner, @@ -5300,11 +4687,6 @@ pub mod IEigenPodManager { Self::unpause(inner) => { ::abi_encoded_size(inner) } - Self::updateBeaconChainOracle(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::withdrawSharesAsTokens(inner) => { ::abi_encoded_size( inner, @@ -5327,24 +4709,12 @@ pub mod IEigenPodManager { 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, @@ -5354,12 +4724,6 @@ pub mod IEigenPodManager { Self::ethPOS(inner) => { ::abi_encode_raw(inner, out) } - Self::getBlockRootAtTimestamp(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::getPod(inner) => { ::abi_encode_raw(inner, out) } @@ -5420,12 +4784,6 @@ pub mod IEigenPodManager { out, ) } - Self::setDenebForkTimestamp(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::setPauserRegistry(inner) => { ::abi_encode_raw( inner, @@ -5447,12 +4805,6 @@ pub mod IEigenPodManager { Self::unpause(inner) => { ::abi_encode_raw(inner, out) } - Self::updateBeaconChainOracle(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::withdrawSharesAsTokens(inner) => { ::abi_encode_raw( inner, @@ -5466,8 +4818,7 @@ pub mod IEigenPodManager { pub enum IEigenPodManagerEvents { BeaconChainETHDeposited(BeaconChainETHDeposited), BeaconChainETHWithdrawalCompleted(BeaconChainETHWithdrawalCompleted), - BeaconOracleUpdated(BeaconOracleUpdated), - DenebForkTimestampUpdated(DenebForkTimestampUpdated), + NewTotalShares(NewTotalShares), Paused(Paused), PauserRegistrySet(PauserRegistrySet), PodDeployed(PodDeployed), @@ -5483,16 +4834,6 @@ pub mod IEigenPodManager { /// /// 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, @@ -5528,12 +4869,17 @@ pub mod IEigenPodManager { 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, ], + [ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, 154u8, + 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, 67u8, 46u8, + 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ], ]; } #[automatically_derived] impl alloy_sol_types::SolEventInterface for IEigenPodManagerEvents { const NAME: &'static str = "IEigenPodManagerEvents"; - const COUNT: usize = 9usize; + const COUNT: usize = 8usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -5560,25 +4906,13 @@ pub mod IEigenPodManager { ) .map(Self::BeaconChainETHWithdrawalCompleted) } - Some( - ::SIGNATURE_HASH, - ) => { - ::decode_raw_log( - topics, - data, - validate, - ) - .map(Self::BeaconOracleUpdated) - } - Some( - ::SIGNATURE_HASH, - ) => { - ::decode_raw_log( + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( topics, data, validate, ) - .map(Self::DenebForkTimestampUpdated) + .map(Self::NewTotalShares) } Some(::SIGNATURE_HASH) => { ::decode_raw_log( @@ -5646,10 +4980,7 @@ pub mod IEigenPodManager { 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) => { + Self::NewTotalShares(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), @@ -5673,10 +5004,7 @@ pub mod IEigenPodManager { 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) => { + Self::NewTotalShares(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), @@ -5875,22 +5203,10 @@ pub mod IEigenPodManager { ) -> 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, @@ -5901,13 +5217,6 @@ pub mod IEigenPodManager { 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, @@ -5988,15 +5297,6 @@ pub mod IEigenPodManager { ) -> 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, @@ -6034,15 +5334,6 @@ pub mod IEigenPodManager { ) -> 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, @@ -6086,17 +5377,9 @@ pub mod IEigenPodManager { ) -> 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 [`NewTotalShares`] event. + pub fn NewTotalShares_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 { diff --git a/crates/utils/src/ierc1271.rs b/crates/utils/src/deploy/ierc1271.rs similarity index 97% rename from crates/utils/src/ierc1271.rs rename to crates/utils/src/deploy/ierc1271.rs index 80b4026d..a99f1be2 100644 --- a/crates/utils/src/ierc1271.rs +++ b/crates/utils/src/deploy/ierc1271.rs @@ -36,7 +36,12 @@ interface IERC1271 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC1271 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -64,19 +69,24 @@ pub mod IERC1271 { ```solidity function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isValidSignatureReturn { pub magicValue: alloy::sol_types::private::FixedBytes<4>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc165.rs b/crates/utils/src/deploy/ierc165.rs similarity index 97% rename from crates/utils/src/ierc165.rs rename to crates/utils/src/deploy/ierc165.rs index e5503951..2f882cab 100644 --- a/crates/utils/src/ierc165.rs +++ b/crates/utils/src/deploy/ierc165.rs @@ -31,7 +31,12 @@ interface IERC165 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC165 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -59,18 +64,23 @@ pub mod IERC165 { ```solidity function supportsInterface(bytes4 interfaceID) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc1822proxiable.rs b/crates/utils/src/deploy/ierc1822proxiable.rs similarity index 97% rename from crates/utils/src/ierc1822proxiable.rs rename to crates/utils/src/deploy/ierc1822proxiable.rs index a18c2cd0..ba5622c4 100644 --- a/crates/utils/src/ierc1822proxiable.rs +++ b/crates/utils/src/deploy/ierc1822proxiable.rs @@ -25,7 +25,12 @@ interface IERC1822Proxiable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC1822Proxiable { use super::*; use alloy::sol_types as alloy_sol_types; @@ -53,16 +58,21 @@ pub mod IERC1822Proxiable { ```solidity function proxiableUUID() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct proxiableUUIDCall {} ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct proxiableUUIDReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc20.rs b/crates/utils/src/deploy/ierc20.rs similarity index 96% rename from crates/utils/src/ierc20.rs rename to crates/utils/src/deploy/ierc20.rs index c0d1d637..a24ced03 100644 --- a/crates/utils/src/ierc20.rs +++ b/crates/utils/src/deploy/ierc20.rs @@ -203,7 +203,12 @@ interface IERC20 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC20 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -231,7 +236,12 @@ pub mod IERC20 { ```solidity event Approval(address indexed owner, address indexed spender, uint256 value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -241,7 +251,12 @@ pub mod IERC20 { #[allow(missing_docs)] pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -341,7 +356,12 @@ pub mod IERC20 { ```solidity event Transfer(address indexed from, address indexed to, uint256 value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -351,7 +371,12 @@ pub mod IERC20 { #[allow(missing_docs)] pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -451,19 +476,24 @@ pub mod IERC20 { ```solidity function allowance(address owner, address spender) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -578,19 +608,24 @@ pub mod IERC20 { ```solidity function approve(address spender, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -705,18 +740,23 @@ pub mod IERC20 { ```solidity function balanceOf(address account) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -816,16 +856,21 @@ pub mod IERC20 { ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -921,19 +966,24 @@ pub mod IERC20 { ```solidity function transfer(address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1048,7 +1098,7 @@ pub mod IERC20 { ```solidity function transferFrom(address from, address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { pub from: alloy::sol_types::private::Address, @@ -1056,12 +1106,17 @@ pub mod IERC20 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc20metadata.rs b/crates/utils/src/deploy/ierc20metadata.rs similarity index 96% rename from crates/utils/src/ierc20metadata.rs rename to crates/utils/src/deploy/ierc20metadata.rs index 7fec36f8..42110a5f 100644 --- a/crates/utils/src/ierc20metadata.rs +++ b/crates/utils/src/deploy/ierc20metadata.rs @@ -245,7 +245,12 @@ interface IERC20Metadata { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC20Metadata { use super::*; use alloy::sol_types as alloy_sol_types; @@ -273,7 +278,12 @@ pub mod IERC20Metadata { ```solidity event Approval(address indexed owner, address indexed spender, uint256 value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -283,7 +293,12 @@ pub mod IERC20Metadata { #[allow(missing_docs)] pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -383,7 +398,12 @@ pub mod IERC20Metadata { ```solidity event Transfer(address indexed from, address indexed to, uint256 value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -393,7 +413,12 @@ pub mod IERC20Metadata { #[allow(missing_docs)] pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -493,19 +518,24 @@ pub mod IERC20Metadata { ```solidity function allowance(address owner, address spender) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -620,19 +650,24 @@ pub mod IERC20Metadata { ```solidity function approve(address spender, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -747,18 +782,23 @@ pub mod IERC20Metadata { ```solidity function balanceOf(address account) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -858,16 +898,21 @@ pub mod IERC20Metadata { ```solidity function decimals() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsCall {} ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsReturn { pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -963,16 +1008,21 @@ pub mod IERC20Metadata { ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1068,16 +1118,21 @@ pub mod IERC20Metadata { ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1173,16 +1228,21 @@ pub mod IERC20Metadata { ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1278,19 +1338,24 @@ pub mod IERC20Metadata { ```solidity function transfer(address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1405,7 +1470,7 @@ pub mod IERC20Metadata { ```solidity function transferFrom(address from, address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { pub from: alloy::sol_types::private::Address, @@ -1413,12 +1478,17 @@ pub mod IERC20Metadata { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc20permit.rs b/crates/utils/src/deploy/ierc20permit.rs similarity index 97% rename from crates/utils/src/ierc20permit.rs rename to crates/utils/src/deploy/ierc20permit.rs index ffbd16ce..2f1ddda8 100644 --- a/crates/utils/src/ierc20permit.rs +++ b/crates/utils/src/deploy/ierc20permit.rs @@ -89,7 +89,12 @@ interface IERC20Permit { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC20Permit { use super::*; use alloy::sol_types as alloy_sol_types; @@ -117,16 +122,21 @@ pub mod IERC20Permit { ```solidity function DOMAIN_SEPARATOR() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DOMAIN_SEPARATORReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -222,18 +232,23 @@ pub mod IERC20Permit { ```solidity function nonces(address owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct noncesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -333,7 +348,7 @@ pub mod IERC20Permit { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitCall { pub owner: alloy::sol_types::private::Address, @@ -345,10 +360,15 @@ pub mod IERC20Permit { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc721.rs b/crates/utils/src/deploy/ierc721.rs similarity index 96% rename from crates/utils/src/ierc721.rs rename to crates/utils/src/deploy/ierc721.rs index 72bf6510..7d1abeb1 100644 --- a/crates/utils/src/ierc721.rs +++ b/crates/utils/src/deploy/ierc721.rs @@ -310,7 +310,12 @@ interface IERC721 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC721 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -338,7 +343,12 @@ pub mod IERC721 { ```solidity event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -348,7 +358,12 @@ pub mod IERC721 { #[allow(missing_docs)] pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -449,7 +464,12 @@ pub mod IERC721 { ```solidity event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ApprovalForAll { #[allow(missing_docs)] @@ -459,7 +479,12 @@ pub mod IERC721 { #[allow(missing_docs)] pub _approved: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -559,7 +584,12 @@ pub mod IERC721 { ```solidity event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -569,7 +599,12 @@ pub mod IERC721 { #[allow(missing_docs)] pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -670,17 +705,22 @@ pub mod IERC721 { ```solidity function approve(address _approved, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -795,18 +835,23 @@ pub mod IERC721 { ```solidity function balanceOf(address _owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -906,18 +951,23 @@ pub mod IERC721 { ```solidity function getApproved(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1017,19 +1067,24 @@ pub mod IERC721 { ```solidity function isApprovedForAll(address _owner, address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1144,18 +1199,23 @@ pub mod IERC721 { ```solidity function ownerOf(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1255,7 +1315,7 @@ pub mod IERC721 { ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Call { pub _from: alloy::sol_types::private::Address, @@ -1263,10 +1323,15 @@ pub mod IERC721 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1388,7 +1453,7 @@ pub mod IERC721 { ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Call { pub _from: alloy::sol_types::private::Address, @@ -1397,10 +1462,15 @@ pub mod IERC721 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1529,17 +1599,22 @@ pub mod IERC721 { ```solidity function setApprovalForAll(address _operator, bool _approved) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1651,18 +1726,23 @@ pub mod IERC721 { ```solidity function supportsInterface(bytes4 interfaceID) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1764,7 +1844,7 @@ pub mod IERC721 { ```solidity function transferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { pub _from: alloy::sol_types::private::Address, @@ -1772,10 +1852,15 @@ pub mod IERC721 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc721enumerable.rs b/crates/utils/src/deploy/ierc721enumerable.rs similarity index 96% rename from crates/utils/src/ierc721enumerable.rs rename to crates/utils/src/deploy/ierc721enumerable.rs index b7d6838e..ae4000bd 100644 --- a/crates/utils/src/ierc721enumerable.rs +++ b/crates/utils/src/deploy/ierc721enumerable.rs @@ -369,7 +369,12 @@ interface IERC721Enumerable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC721Enumerable { use super::*; use alloy::sol_types as alloy_sol_types; @@ -397,7 +402,12 @@ pub mod IERC721Enumerable { ```solidity event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -407,7 +417,12 @@ pub mod IERC721Enumerable { #[allow(missing_docs)] pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -508,7 +523,12 @@ pub mod IERC721Enumerable { ```solidity event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ApprovalForAll { #[allow(missing_docs)] @@ -518,7 +538,12 @@ pub mod IERC721Enumerable { #[allow(missing_docs)] pub _approved: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -618,7 +643,12 @@ pub mod IERC721Enumerable { ```solidity event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -628,7 +658,12 @@ pub mod IERC721Enumerable { #[allow(missing_docs)] pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -729,17 +764,22 @@ pub mod IERC721Enumerable { ```solidity function approve(address _approved, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -854,18 +894,23 @@ pub mod IERC721Enumerable { ```solidity function balanceOf(address _owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -965,18 +1010,23 @@ pub mod IERC721Enumerable { ```solidity function getApproved(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1076,19 +1126,24 @@ pub mod IERC721Enumerable { ```solidity function isApprovedForAll(address _owner, address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1203,18 +1258,23 @@ pub mod IERC721Enumerable { ```solidity function ownerOf(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1314,7 +1374,7 @@ pub mod IERC721Enumerable { ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Call { pub _from: alloy::sol_types::private::Address, @@ -1322,10 +1382,15 @@ pub mod IERC721Enumerable { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1447,7 +1512,7 @@ pub mod IERC721Enumerable { ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Call { pub _from: alloy::sol_types::private::Address, @@ -1456,10 +1521,15 @@ pub mod IERC721Enumerable { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1588,17 +1658,22 @@ pub mod IERC721Enumerable { ```solidity function setApprovalForAll(address _operator, bool _approved) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1710,18 +1785,23 @@ pub mod IERC721Enumerable { ```solidity function supportsInterface(bytes4 interfaceID) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1823,18 +1903,23 @@ pub mod IERC721Enumerable { ```solidity function tokenByIndex(uint256 _index) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenByIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1934,19 +2019,24 @@ pub mod IERC721Enumerable { ```solidity function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenOfOwnerByIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2061,16 +2151,21 @@ pub mod IERC721Enumerable { ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2166,7 +2261,7 @@ pub mod IERC721Enumerable { ```solidity function transferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { pub _from: alloy::sol_types::private::Address, @@ -2174,10 +2269,15 @@ pub mod IERC721Enumerable { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc721metadata.rs b/crates/utils/src/deploy/ierc721metadata.rs similarity index 96% rename from crates/utils/src/ierc721metadata.rs rename to crates/utils/src/deploy/ierc721metadata.rs index 0659dfe8..3b458f76 100644 --- a/crates/utils/src/ierc721metadata.rs +++ b/crates/utils/src/deploy/ierc721metadata.rs @@ -358,7 +358,12 @@ interface IERC721Metadata { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC721Metadata { use super::*; use alloy::sol_types as alloy_sol_types; @@ -386,7 +391,12 @@ pub mod IERC721Metadata { ```solidity event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -396,7 +406,12 @@ pub mod IERC721Metadata { #[allow(missing_docs)] pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -497,7 +512,12 @@ pub mod IERC721Metadata { ```solidity event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ApprovalForAll { #[allow(missing_docs)] @@ -507,7 +527,12 @@ pub mod IERC721Metadata { #[allow(missing_docs)] pub _approved: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -607,7 +632,12 @@ pub mod IERC721Metadata { ```solidity event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -617,7 +647,12 @@ pub mod IERC721Metadata { #[allow(missing_docs)] pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -718,17 +753,22 @@ pub mod IERC721Metadata { ```solidity function approve(address _approved, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -843,18 +883,23 @@ pub mod IERC721Metadata { ```solidity function balanceOf(address _owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -954,18 +999,23 @@ pub mod IERC721Metadata { ```solidity function getApproved(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1065,19 +1115,24 @@ pub mod IERC721Metadata { ```solidity function isApprovedForAll(address _owner, address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1192,16 +1247,21 @@ pub mod IERC721Metadata { ```solidity function name() external view returns (string memory _name); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { pub _name: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1297,18 +1357,23 @@ pub mod IERC721Metadata { ```solidity function ownerOf(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1408,7 +1473,7 @@ pub mod IERC721Metadata { ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Call { pub _from: alloy::sol_types::private::Address, @@ -1416,10 +1481,15 @@ pub mod IERC721Metadata { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1541,7 +1611,7 @@ pub mod IERC721Metadata { ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Call { pub _from: alloy::sol_types::private::Address, @@ -1550,10 +1620,15 @@ pub mod IERC721Metadata { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1682,17 +1757,22 @@ pub mod IERC721Metadata { ```solidity function setApprovalForAll(address _operator, bool _approved) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1804,18 +1884,23 @@ pub mod IERC721Metadata { ```solidity function supportsInterface(bytes4 interfaceID) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1917,16 +2002,21 @@ pub mod IERC721Metadata { ```solidity function symbol() external view returns (string memory _symbol); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { pub _symbol: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2022,18 +2112,23 @@ pub mod IERC721Metadata { ```solidity function tokenURI(uint256 _tokenId) external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenURIReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2133,7 +2228,7 @@ pub mod IERC721Metadata { ```solidity function transferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { pub _from: alloy::sol_types::private::Address, @@ -2141,10 +2236,15 @@ pub mod IERC721Metadata { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ierc721tokenreceiver.rs b/crates/utils/src/deploy/ierc721tokenreceiver.rs similarity index 97% rename from crates/utils/src/ierc721tokenreceiver.rs rename to crates/utils/src/deploy/ierc721tokenreceiver.rs index b4147b3d..8a72e283 100644 --- a/crates/utils/src/ierc721tokenreceiver.rs +++ b/crates/utils/src/deploy/ierc721tokenreceiver.rs @@ -46,7 +46,12 @@ interface IERC721TokenReceiver { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC721TokenReceiver { use super::*; use alloy::sol_types as alloy_sol_types; @@ -74,7 +79,7 @@ pub mod IERC721TokenReceiver { ```solidity function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes memory _data) external returns (bytes4); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct onERC721ReceivedCall { pub _operator: alloy::sol_types::private::Address, @@ -83,12 +88,17 @@ pub mod IERC721TokenReceiver { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct onERC721ReceivedReturn { pub _0: alloy::sol_types::private::FixedBytes<4>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/iethposdeposit.rs b/crates/utils/src/deploy/iethposdeposit.rs similarity index 96% rename from crates/utils/src/iethposdeposit.rs rename to crates/utils/src/deploy/iethposdeposit.rs index f7d583d4..5630fd24 100644 --- a/crates/utils/src/iethposdeposit.rs +++ b/crates/utils/src/deploy/iethposdeposit.rs @@ -107,7 +107,12 @@ interface IETHPOSDeposit { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IETHPOSDeposit { use super::*; use alloy::sol_types as alloy_sol_types; @@ -135,7 +140,12 @@ pub mod IETHPOSDeposit { ```solidity event DepositEvent(bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct DepositEvent { #[allow(missing_docs)] @@ -149,7 +159,12 @@ pub mod IETHPOSDeposit { #[allow(missing_docs)] pub index: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -255,7 +270,7 @@ pub mod IETHPOSDeposit { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositCall { pub pubkey: alloy::sol_types::private::Bytes, @@ -264,10 +279,15 @@ pub mod IETHPOSDeposit { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -401,16 +421,21 @@ pub mod IETHPOSDeposit { ```solidity function get_deposit_count() external view returns (bytes memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct get_deposit_countReturn { pub _0: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -506,16 +531,21 @@ pub mod IETHPOSDeposit { ```solidity function get_deposit_root() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/iindexregistry.rs b/crates/utils/src/deploy/iindexregistry.rs similarity index 96% rename from crates/utils/src/iindexregistry.rs rename to crates/utils/src/deploy/iindexregistry.rs index 4b0d0232..af8f3158 100644 --- a/crates/utils/src/iindexregistry.rs +++ b/crates/utils/src/deploy/iindexregistry.rs @@ -312,7 +312,12 @@ interface IIndexRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IIndexRegistry { use super::*; use alloy::sol_types as alloy_sol_types; @@ -339,13 +344,18 @@ pub mod IIndexRegistry { /**```solidity struct OperatorUpdate { uint32 fromBlockNumber; bytes32 operatorId; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -532,13 +542,18 @@ pub mod IIndexRegistry { /**```solidity struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct QuorumUpdate { pub fromBlockNumber: u32, pub numOperators: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -726,7 +741,12 @@ pub mod IIndexRegistry { ```solidity event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumIndexUpdate { #[allow(missing_docs)] @@ -736,7 +756,12 @@ pub mod IIndexRegistry { #[allow(missing_docs)] pub newOperatorIndex: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -834,17 +859,22 @@ pub mod IIndexRegistry { ```solidity function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -959,19 +989,24 @@ pub mod IIndexRegistry { ```solidity function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (OperatorUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestOperatorUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1084,18 +1119,23 @@ pub mod IIndexRegistry { ```solidity function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (QuorumUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestQuorumUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1197,19 +1237,24 @@ pub mod IIndexRegistry { ```solidity function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorListAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1324,7 +1369,7 @@ pub mod IIndexRegistry { ```solidity function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (OperatorUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorUpdateAtIndexCall { pub quorumNumber: u8, @@ -1332,12 +1377,17 @@ pub mod IIndexRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1456,19 +1506,24 @@ pub mod IIndexRegistry { ```solidity function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (QuorumUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1580,16 +1635,21 @@ pub mod IIndexRegistry { ```solidity function initializeQuorum(uint8 quorumNumber) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1691,19 +1751,24 @@ pub mod IIndexRegistry { ```solidity function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1820,16 +1885,21 @@ pub mod IIndexRegistry { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1925,18 +1995,23 @@ pub mod IIndexRegistry { ```solidity function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalOperatorsForQuorumReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/deploy/indexregistry.rs b/crates/utils/src/deploy/indexregistry.rs new file mode 100644 index 00000000..aaff316c --- /dev/null +++ b/crates/utils/src/deploy/indexregistry.rs @@ -0,0 +1,3501 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct QuorumUpdate { + pub fromBlockNumber: u32, + pub numOperators: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style +)] +pub mod IndexRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561000f575f5ffd5b5060405161133e38038061133e83398101604081905261002e91610108565b6001600160a01b0381166080528061004461004b565b5050610135565b5f54610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161015610106575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610118575f5ffd5b81516001600160a01b038116811461012e575f5ffd5b9392505050565b6080516111dc6101625f395f818161013e0152818161026f0152818161040301526107bd01526111dc5ff3fe608060405234801561000f575f5ffd5b50600436106100b0575f3560e01c8063890262451161006e57806389026245146101af578063a48bb0ac146101cf578063bd29b8cd146101e2578063caa3cd76146101f5578063e2e685801461020a578063f34109221461024f575f5ffd5b8062bff04d146100b457806312d1d74d146100dd57806326d941f2146101115780632ed583e5146101265780636d14a987146101395780638121906f14610178575b5f5ffd5b6100c76100c2366004610e72565b610262565b6040516100d49190610ee9565b60405180910390f35b6100f06100eb366004610f59565b6103b3565b60408051825163ffffffff16815260209283015192810192909252016100d4565b61012461011f366004610f8a565b6103f8565b005b6100f0610134366004610fa3565b61051a565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d4565b61018b610186366004610f8a565b61059d565b60408051825163ffffffff90811682526020938401511692810192909252016100d4565b6101c26101bd366004610f59565b6105e3565b6040516100d49190610fe3565b61018b6101dd366004610f59565b61073e565b6101246101f0366004610e72565b6107b2565b6101fc5f81565b6040519081526020016100d4565b61023a61021836600461101a565b600160209081525f928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d4565b61023a61025d366004610f8a565b6108b7565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102b55760405162461bcd60e51b81526004016102ac90611042565b60405180910390fd5b5f8267ffffffffffffffff8111156102cf576102cf6110b5565b6040519080825280602002602001820160405280156102f8578160200160208202803683370190505b5090505f5b838110156103a8575f858583818110610318576103186110c9565b919091013560f81c5f818152600360205260408120549193509091508190036103535760405162461bcd60e51b81526004016102ac906110dd565b5f61035d836108d5565b9050610374898461036f600185611146565b6109cc565b80858581518110610387576103876110c9565b63ffffffff92909216602092830291909101909101525050506001016102fd565b5090505b9392505050565b604080518082019091525f80825260208201526103d08383610a54565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104405760405162461bcd60e51b81526004016102ac90611042565b60ff81165f90815260036020526040902054156104b95760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102ac565b60ff165f908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091525f808252602082015260ff84165f90815260026020908152604080832063ffffffff80881685529252909120805490918416908110610565576105656110c9565b5f91825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b604080518082019091525f80825260208201526105b982610aa9565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b60605f6105f08484610ae8565b90505f8163ffffffff1667ffffffffffffffff811115610612576106126110b5565b60405190808252806020026020018201604052801561063b578160200160208202803683370190505b5090505f5b8263ffffffff1681101561073557610659868287610c1a565b82828151811061066b5761066b6110c9565b6020026020010181815250505f5f1b82828151811061068c5761068c6110c9565b60200260200101510361072d5760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102ac565b600101610640565b50949350505050565b604080518082019091525f808252602082015260ff83165f908152600360205260409020805463ffffffff841690811061077a5761077a6110c9565b5f9182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107fa5760405162461bcd60e51b81526004016102ac90611042565b5f5b818110156108b1575f838383818110610817576108176110c9565b919091013560f81c5f818152600360205260408120549193509091508190036108525760405162461bcd60e51b81526004016102ac906110dd565b60ff82165f90815260016020908152604080832089845290915281205463ffffffff169061087f84610ced565b90505f61088c8583610d25565b90508089146108a0576108a08186856109cc565b5050600190930192506107fc915050565b50505050565b5f6108c182610aa9565b54600160201b900463ffffffff1692915050565b5f5f6108e083610aa9565b80549091505f906108ff90600160201b900463ffffffff166001611162565b905061090c848383610d4d565b60ff84165f90815260026020526040812090610929600184611146565b63ffffffff16815260208101919091526040015f9081205490036103ac5760ff84165f90815260026020526040812090610964600184611146565b63ffffffff908116825260208083019390935260409182015f908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b5f6109d78383610a54565b90506109e583838387610dea565b60ff83165f818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff82165f90815260026020908152604080832063ffffffff851684529091528120805490610a8460018361117e565b81548110610a9457610a946110c9565b905f5260205f20906002020191505092915050565b60ff81165f908152600360205260408120805490610ac860018361117e565b81548110610ad857610ad86110c9565b905f5260205f2001915050919050565b60ff82165f90815260036020526040812054805b8015610b8d5760ff85165f908152600360205260408120610b1e60018461117e565b81548110610b2e57610b2e6110c9565b5f9182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610b7a576020015192506103f2915050565b5080610b8581611191565b915050610afc565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102ac565b60ff83165f90815260026020908152604080832063ffffffff86168452909152812054805b8015610ce25760ff86165f90815260026020908152604080832063ffffffff891684529091528120610c7260018461117e565b81548110610c8257610c826110c9565b5f91825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610ccf576020015192506103ac915050565b5080610cda81611191565b915050610c3f565b505f95945050505050565b5f5f610cf883610aa9565b80549091505f90610d1890600190600160201b900463ffffffff16611146565b90506103ac848383610d4d565b5f5f610d318484610a54565b6001810154909150610d458585845f610dea565b949350505050565b815463ffffffff438116911603610d8257815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83165f908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e0757600182018190556108b1565b60ff939093165f90815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b5f5f5f60408486031215610e84575f5ffd5b83359250602084013567ffffffffffffffff811115610ea1575f5ffd5b8401601f81018613610eb1575f5ffd5b803567ffffffffffffffff811115610ec7575f5ffd5b866020828401011115610ed8575f5ffd5b939660209190910195509293505050565b602080825282518282018190525f918401906040840190835b81811015610f2657835163ffffffff16835260209384019390920191600101610f02565b509095945050505050565b803560ff81168114610f41575f5ffd5b919050565b803563ffffffff81168114610f41575f5ffd5b5f5f60408385031215610f6a575f5ffd5b610f7383610f31565b9150610f8160208401610f46565b90509250929050565b5f60208284031215610f9a575f5ffd5b6103ac82610f31565b5f5f5f60608486031215610fb5575f5ffd5b610fbe84610f31565b9250610fcc60208501610f46565b9150610fda60408501610f46565b90509250925092565b602080825282518282018190525f918401906040840190835b81811015610f26578351835260209384019390920191600101610ffc565b5f5f6040838503121561102b575f5ffd5b61103483610f31565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff82811682821603908111156103f2576103f2611132565b63ffffffff81811683821601908111156103f2576103f2611132565b818103818111156103f2576103f2611132565b5f8161119f5761119f611132565b505f19019056fea2646970667358221220d0f03ad1c245a923263fa90389621f159fb1527687f7f9811d40cb3442ad6d0064736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`@Qa\x13>8\x03\x80a\x13>\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Da\0KV[PPa\x015V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB6W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x01\x06W_\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[_` \x82\x84\x03\x12\x15a\x01\x18W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01.W__\xFD[\x93\x92PPPV[`\x80Qa\x11\xDCa\x01b_9_\x81\x81a\x01>\x01R\x81\x81a\x02o\x01R\x81\x81a\x04\x03\x01Ra\x07\xBD\x01Ra\x11\xDC_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c\x89\x02bE\x11a\0nW\x80c\x89\x02bE\x14a\x01\xAFW\x80c\xA4\x8B\xB0\xAC\x14a\x01\xCFW\x80c\xBD)\xB8\xCD\x14a\x01\xE2W\x80c\xCA\xA3\xCDv\x14a\x01\xF5W\x80c\xE2\xE6\x85\x80\x14a\x02\nW\x80c\xF3A\t\"\x14a\x02OW__\xFD[\x80b\xBF\xF0M\x14a\0\xB4W\x80c\x12\xD1\xD7M\x14a\0\xDDW\x80c&\xD9A\xF2\x14a\x01\x11W\x80c.\xD5\x83\xE5\x14a\x01&W\x80cm\x14\xA9\x87\x14a\x019W\x80c\x81!\x90o\x14a\x01xW[__\xFD[a\0\xC7a\0\xC26`\x04a\x0ErV[a\x02bV[`@Qa\0\xD4\x91\x90a\x0E\xE9V[`@Q\x80\x91\x03\x90\xF3[a\0\xF0a\0\xEB6`\x04a\x0FYV[a\x03\xB3V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92R\x01a\0\xD4V[a\x01$a\x01\x1F6`\x04a\x0F\x8AV[a\x03\xF8V[\0[a\0\xF0a\x0146`\x04a\x0F\xA3V[a\x05\x1AV[a\x01`\x7F\0\0\0\0\0\0\0\0\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\xD4V[a\x01\x8Ba\x01\x866`\x04a\x0F\x8AV[a\x05\x9DV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\0\xD4V[a\x01\xC2a\x01\xBD6`\x04a\x0FYV[a\x05\xE3V[`@Qa\0\xD4\x91\x90a\x0F\xE3V[a\x01\x8Ba\x01\xDD6`\x04a\x0FYV[a\x07>V[a\x01$a\x01\xF06`\x04a\x0ErV[a\x07\xB2V[a\x01\xFC_\x81V[`@Q\x90\x81R` \x01a\0\xD4V[a\x02:a\x02\x186`\x04a\x10\x1AV[`\x01` \x90\x81R_\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\xD4V[a\x02:a\x02]6`\x04a\x0F\x8AV[a\x08\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\x02\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[`@Q\x80\x91\x03\x90\xFD[_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\xCFWa\x02\xCFa\x10\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xF8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x03\xA8W_\x85\x85\x83\x81\x81\x10a\x03\x18Wa\x03\x18a\x10\xC9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x03` R`@\x81 T\x91\x93P\x90\x91P\x81\x90\x03a\x03SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10\xDDV[_a\x03]\x83a\x08\xD5V[\x90Pa\x03t\x89\x84a\x03o`\x01\x85a\x11FV[a\t\xCCV[\x80\x85\x85\x81Q\x81\x10a\x03\x87Wa\x03\x87a\x10\xC9V[c\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPPP`\x01\x01a\x02\xFDV[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x03\xD0\x83\x83a\nTV[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\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\x04@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[`\xFF\x81\x16_\x90\x81R`\x03` R`@\x90 T\x15a\x04\xB9W`@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\x02\xACV[`\xFF\x16_\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_\x80\x82R` \x82\x01R`\xFF\x84\x16_\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\x05eWa\x05ea\x10\xC9V[_\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_\x80\x82R` \x82\x01Ra\x05\xB9\x82a\n\xA9V[`@\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[``_a\x05\xF0\x84\x84a\n\xE8V[\x90P_\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x12Wa\x06\x12a\x10\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06;W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x075Wa\x06Y\x86\x82\x87a\x0C\x1AV[\x82\x82\x81Q\x81\x10a\x06kWa\x06ka\x10\xC9V[` \x02` \x01\x01\x81\x81RPP__\x1B\x82\x82\x81Q\x81\x10a\x06\x8CWa\x06\x8Ca\x10\xC9V[` \x02` \x01\x01Q\x03a\x07-W`@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\x02\xACV[`\x01\x01a\x06@V[P\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80Tc\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x10a\x07zWa\x07za\x10\xC9V[_\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[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\x07\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[_[\x81\x81\x10\x15a\x08\xB1W_\x83\x83\x83\x81\x81\x10a\x08\x17Wa\x08\x17a\x10\xC9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x03` R`@\x81 T\x91\x93P\x90\x91P\x81\x90\x03a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10\xDDV[`\xFF\x82\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x08\x7F\x84a\x0C\xEDV[\x90P_a\x08\x8C\x85\x83a\r%V[\x90P\x80\x89\x14a\x08\xA0Wa\x08\xA0\x81\x86\x85a\t\xCCV[PP`\x01\x90\x93\x01\x92Pa\x07\xFC\x91PPV[PPPPV[_a\x08\xC1\x82a\n\xA9V[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[__a\x08\xE0\x83a\n\xA9V[\x80T\x90\x91P_\x90a\x08\xFF\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11bV[\x90Pa\t\x0C\x84\x83\x83a\rMV[`\xFF\x84\x16_\x90\x81R`\x02` R`@\x81 \x90a\t)`\x01\x84a\x11FV[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_\x90\x81 T\x90\x03a\x03\xACW`\xFF\x84\x16_\x90\x81R`\x02` R`@\x81 \x90a\td`\x01\x84a\x11FV[c\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x83\x01\x93\x90\x93R`@\x91\x82\x01_\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[_a\t\xD7\x83\x83a\nTV[\x90Pa\t\xE5\x83\x83\x83\x87a\r\xEAV[`\xFF\x83\x16_\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_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x85\x16\x84R\x90\x91R\x81 \x80T\x90a\n\x84`\x01\x83a\x11~V[\x81T\x81\x10a\n\x94Wa\n\x94a\x10\xC9V[\x90_R` _ \x90`\x02\x02\x01\x91PP\x92\x91PPV[`\xFF\x81\x16_\x90\x81R`\x03` R`@\x81 \x80T\x90a\n\xC8`\x01\x83a\x11~V[\x81T\x81\x10a\n\xD8Wa\n\xD8a\x10\xC9V[\x90_R` _ \x01\x91PP\x91\x90PV[`\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 T\x80[\x80\x15a\x0B\x8DW`\xFF\x85\x16_\x90\x81R`\x03` R`@\x81 a\x0B\x1E`\x01\x84a\x11~V[\x81T\x81\x10a\x0B.Wa\x0B.a\x10\xC9V[_\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\x0BzW` \x01Q\x92Pa\x03\xF2\x91PPV[P\x80a\x0B\x85\x81a\x11\x91V[\x91PPa\n\xFCV[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\x02\xACV[`\xFF\x83\x16_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a\x0C\xE2W`\xFF\x86\x16_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x89\x16\x84R\x90\x91R\x81 a\x0Cr`\x01\x84a\x11~V[\x81T\x81\x10a\x0C\x82Wa\x0C\x82a\x10\xC9V[_\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\x0C\xCFW` \x01Q\x92Pa\x03\xAC\x91PPV[P\x80a\x0C\xDA\x81a\x11\x91V[\x91PPa\x0C?V[P_\x95\x94PPPPPV[__a\x0C\xF8\x83a\n\xA9V[\x80T\x90\x91P_\x90a\r\x18\x90`\x01\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16a\x11FV[\x90Pa\x03\xAC\x84\x83\x83a\rMV[__a\r1\x84\x84a\nTV[`\x01\x81\x01T\x90\x91Pa\rE\x85\x85\x84_a\r\xEAV[\x94\x93PPPPV[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\r\x82W\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_\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[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x0E\x07W`\x01\x82\x01\x81\x90Ua\x08\xB1V[`\xFF\x93\x90\x93\x16_\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[___`@\x84\x86\x03\x12\x15a\x0E\x84W__\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xA1W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x0E\xB1W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC7W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x0E\xD8W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0F&W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0F\x02V[P\x90\x95\x94PPPPPV[\x805`\xFF\x81\x16\x81\x14a\x0FAW__\xFD[\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0FAW__\xFD[__`@\x83\x85\x03\x12\x15a\x0FjW__\xFD[a\x0Fs\x83a\x0F1V[\x91Pa\x0F\x81` \x84\x01a\x0FFV[\x90P\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x0F\x9AW__\xFD[a\x03\xAC\x82a\x0F1V[___``\x84\x86\x03\x12\x15a\x0F\xB5W__\xFD[a\x0F\xBE\x84a\x0F1V[\x92Pa\x0F\xCC` \x85\x01a\x0FFV[\x91Pa\x0F\xDA`@\x85\x01a\x0FFV[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0F&W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0F\xFCV[__`@\x83\x85\x03\x12\x15a\x10+W__\xFD[a\x104\x83a\x0F1V[\x94` \x93\x90\x93\x015\x93PPPV[` \x80\x82R`M\x90\x82\x01R\x7FIndexRegistry.onlyRegistryCoordi`@\x82\x01R\x7Fnator: caller is not the registr``\x82\x01Rl<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x99\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\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_R`\x11`\x04R`$_\xFD[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[\x81\x81\x03\x81\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[_\x81a\x11\x9FWa\x11\x9Fa\x112V[P_\x19\x01\x90V\xFE\xA2dipfsX\"\x12 \xD0\xF0:\xD1\xC2E\xA9#&?\xA9\x03\x89b\x1F\x15\x9F\xB1Rv\x87\xF7\xF9\x81\x1D@\xCB4B\xADm\0dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b50600436106100b0575f3560e01c8063890262451161006e57806389026245146101af578063a48bb0ac146101cf578063bd29b8cd146101e2578063caa3cd76146101f5578063e2e685801461020a578063f34109221461024f575f5ffd5b8062bff04d146100b457806312d1d74d146100dd57806326d941f2146101115780632ed583e5146101265780636d14a987146101395780638121906f14610178575b5f5ffd5b6100c76100c2366004610e72565b610262565b6040516100d49190610ee9565b60405180910390f35b6100f06100eb366004610f59565b6103b3565b60408051825163ffffffff16815260209283015192810192909252016100d4565b61012461011f366004610f8a565b6103f8565b005b6100f0610134366004610fa3565b61051a565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d4565b61018b610186366004610f8a565b61059d565b60408051825163ffffffff90811682526020938401511692810192909252016100d4565b6101c26101bd366004610f59565b6105e3565b6040516100d49190610fe3565b61018b6101dd366004610f59565b61073e565b6101246101f0366004610e72565b6107b2565b6101fc5f81565b6040519081526020016100d4565b61023a61021836600461101a565b600160209081525f928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d4565b61023a61025d366004610f8a565b6108b7565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102b55760405162461bcd60e51b81526004016102ac90611042565b60405180910390fd5b5f8267ffffffffffffffff8111156102cf576102cf6110b5565b6040519080825280602002602001820160405280156102f8578160200160208202803683370190505b5090505f5b838110156103a8575f858583818110610318576103186110c9565b919091013560f81c5f818152600360205260408120549193509091508190036103535760405162461bcd60e51b81526004016102ac906110dd565b5f61035d836108d5565b9050610374898461036f600185611146565b6109cc565b80858581518110610387576103876110c9565b63ffffffff92909216602092830291909101909101525050506001016102fd565b5090505b9392505050565b604080518082019091525f80825260208201526103d08383610a54565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104405760405162461bcd60e51b81526004016102ac90611042565b60ff81165f90815260036020526040902054156104b95760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102ac565b60ff165f908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091525f808252602082015260ff84165f90815260026020908152604080832063ffffffff80881685529252909120805490918416908110610565576105656110c9565b5f91825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b604080518082019091525f80825260208201526105b982610aa9565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b60605f6105f08484610ae8565b90505f8163ffffffff1667ffffffffffffffff811115610612576106126110b5565b60405190808252806020026020018201604052801561063b578160200160208202803683370190505b5090505f5b8263ffffffff1681101561073557610659868287610c1a565b82828151811061066b5761066b6110c9565b6020026020010181815250505f5f1b82828151811061068c5761068c6110c9565b60200260200101510361072d5760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102ac565b600101610640565b50949350505050565b604080518082019091525f808252602082015260ff83165f908152600360205260409020805463ffffffff841690811061077a5761077a6110c9565b5f9182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107fa5760405162461bcd60e51b81526004016102ac90611042565b5f5b818110156108b1575f838383818110610817576108176110c9565b919091013560f81c5f818152600360205260408120549193509091508190036108525760405162461bcd60e51b81526004016102ac906110dd565b60ff82165f90815260016020908152604080832089845290915281205463ffffffff169061087f84610ced565b90505f61088c8583610d25565b90508089146108a0576108a08186856109cc565b5050600190930192506107fc915050565b50505050565b5f6108c182610aa9565b54600160201b900463ffffffff1692915050565b5f5f6108e083610aa9565b80549091505f906108ff90600160201b900463ffffffff166001611162565b905061090c848383610d4d565b60ff84165f90815260026020526040812090610929600184611146565b63ffffffff16815260208101919091526040015f9081205490036103ac5760ff84165f90815260026020526040812090610964600184611146565b63ffffffff908116825260208083019390935260409182015f908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b5f6109d78383610a54565b90506109e583838387610dea565b60ff83165f818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff82165f90815260026020908152604080832063ffffffff851684529091528120805490610a8460018361117e565b81548110610a9457610a946110c9565b905f5260205f20906002020191505092915050565b60ff81165f908152600360205260408120805490610ac860018361117e565b81548110610ad857610ad86110c9565b905f5260205f2001915050919050565b60ff82165f90815260036020526040812054805b8015610b8d5760ff85165f908152600360205260408120610b1e60018461117e565b81548110610b2e57610b2e6110c9565b5f9182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610b7a576020015192506103f2915050565b5080610b8581611191565b915050610afc565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102ac565b60ff83165f90815260026020908152604080832063ffffffff86168452909152812054805b8015610ce25760ff86165f90815260026020908152604080832063ffffffff891684529091528120610c7260018461117e565b81548110610c8257610c826110c9565b5f91825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610ccf576020015192506103ac915050565b5080610cda81611191565b915050610c3f565b505f95945050505050565b5f5f610cf883610aa9565b80549091505f90610d1890600190600160201b900463ffffffff16611146565b90506103ac848383610d4d565b5f5f610d318484610a54565b6001810154909150610d458585845f610dea565b949350505050565b815463ffffffff438116911603610d8257815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83165f908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e0757600182018190556108b1565b60ff939093165f90815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b5f5f5f60408486031215610e84575f5ffd5b83359250602084013567ffffffffffffffff811115610ea1575f5ffd5b8401601f81018613610eb1575f5ffd5b803567ffffffffffffffff811115610ec7575f5ffd5b866020828401011115610ed8575f5ffd5b939660209190910195509293505050565b602080825282518282018190525f918401906040840190835b81811015610f2657835163ffffffff16835260209384019390920191600101610f02565b509095945050505050565b803560ff81168114610f41575f5ffd5b919050565b803563ffffffff81168114610f41575f5ffd5b5f5f60408385031215610f6a575f5ffd5b610f7383610f31565b9150610f8160208401610f46565b90509250929050565b5f60208284031215610f9a575f5ffd5b6103ac82610f31565b5f5f5f60608486031215610fb5575f5ffd5b610fbe84610f31565b9250610fcc60208501610f46565b9150610fda60408501610f46565b90509250925092565b602080825282518282018190525f918401906040840190835b81811015610f26578351835260209384019390920191600101610ffc565b5f5f6040838503121561102b575f5ffd5b61103483610f31565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff82811682821603908111156103f2576103f2611132565b63ffffffff81811683821601908111156103f2576103f2611132565b818103818111156103f2576103f2611132565b5f8161119f5761119f611132565b505f19019056fea2646970667358221220d0f03ad1c245a923263fa90389621f159fb1527687f7f9811d40cb3442ad6d0064736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c\x89\x02bE\x11a\0nW\x80c\x89\x02bE\x14a\x01\xAFW\x80c\xA4\x8B\xB0\xAC\x14a\x01\xCFW\x80c\xBD)\xB8\xCD\x14a\x01\xE2W\x80c\xCA\xA3\xCDv\x14a\x01\xF5W\x80c\xE2\xE6\x85\x80\x14a\x02\nW\x80c\xF3A\t\"\x14a\x02OW__\xFD[\x80b\xBF\xF0M\x14a\0\xB4W\x80c\x12\xD1\xD7M\x14a\0\xDDW\x80c&\xD9A\xF2\x14a\x01\x11W\x80c.\xD5\x83\xE5\x14a\x01&W\x80cm\x14\xA9\x87\x14a\x019W\x80c\x81!\x90o\x14a\x01xW[__\xFD[a\0\xC7a\0\xC26`\x04a\x0ErV[a\x02bV[`@Qa\0\xD4\x91\x90a\x0E\xE9V[`@Q\x80\x91\x03\x90\xF3[a\0\xF0a\0\xEB6`\x04a\x0FYV[a\x03\xB3V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92R\x01a\0\xD4V[a\x01$a\x01\x1F6`\x04a\x0F\x8AV[a\x03\xF8V[\0[a\0\xF0a\x0146`\x04a\x0F\xA3V[a\x05\x1AV[a\x01`\x7F\0\0\0\0\0\0\0\0\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\xD4V[a\x01\x8Ba\x01\x866`\x04a\x0F\x8AV[a\x05\x9DV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\0\xD4V[a\x01\xC2a\x01\xBD6`\x04a\x0FYV[a\x05\xE3V[`@Qa\0\xD4\x91\x90a\x0F\xE3V[a\x01\x8Ba\x01\xDD6`\x04a\x0FYV[a\x07>V[a\x01$a\x01\xF06`\x04a\x0ErV[a\x07\xB2V[a\x01\xFC_\x81V[`@Q\x90\x81R` \x01a\0\xD4V[a\x02:a\x02\x186`\x04a\x10\x1AV[`\x01` \x90\x81R_\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\xD4V[a\x02:a\x02]6`\x04a\x0F\x8AV[a\x08\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\x02\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[`@Q\x80\x91\x03\x90\xFD[_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\xCFWa\x02\xCFa\x10\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xF8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x03\xA8W_\x85\x85\x83\x81\x81\x10a\x03\x18Wa\x03\x18a\x10\xC9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x03` R`@\x81 T\x91\x93P\x90\x91P\x81\x90\x03a\x03SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10\xDDV[_a\x03]\x83a\x08\xD5V[\x90Pa\x03t\x89\x84a\x03o`\x01\x85a\x11FV[a\t\xCCV[\x80\x85\x85\x81Q\x81\x10a\x03\x87Wa\x03\x87a\x10\xC9V[c\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPPP`\x01\x01a\x02\xFDV[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x03\xD0\x83\x83a\nTV[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\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\x04@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[`\xFF\x81\x16_\x90\x81R`\x03` R`@\x90 T\x15a\x04\xB9W`@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\x02\xACV[`\xFF\x16_\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_\x80\x82R` \x82\x01R`\xFF\x84\x16_\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\x05eWa\x05ea\x10\xC9V[_\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_\x80\x82R` \x82\x01Ra\x05\xB9\x82a\n\xA9V[`@\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[``_a\x05\xF0\x84\x84a\n\xE8V[\x90P_\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x12Wa\x06\x12a\x10\xB5V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06;W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x075Wa\x06Y\x86\x82\x87a\x0C\x1AV[\x82\x82\x81Q\x81\x10a\x06kWa\x06ka\x10\xC9V[` \x02` \x01\x01\x81\x81RPP__\x1B\x82\x82\x81Q\x81\x10a\x06\x8CWa\x06\x8Ca\x10\xC9V[` \x02` \x01\x01Q\x03a\x07-W`@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\x02\xACV[`\x01\x01a\x06@V[P\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80Tc\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x10a\x07zWa\x07za\x10\xC9V[_\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[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\x07\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10BV[_[\x81\x81\x10\x15a\x08\xB1W_\x83\x83\x83\x81\x81\x10a\x08\x17Wa\x08\x17a\x10\xC9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x03` R`@\x81 T\x91\x93P\x90\x91P\x81\x90\x03a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xAC\x90a\x10\xDDV[`\xFF\x82\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x08\x7F\x84a\x0C\xEDV[\x90P_a\x08\x8C\x85\x83a\r%V[\x90P\x80\x89\x14a\x08\xA0Wa\x08\xA0\x81\x86\x85a\t\xCCV[PP`\x01\x90\x93\x01\x92Pa\x07\xFC\x91PPV[PPPPV[_a\x08\xC1\x82a\n\xA9V[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[__a\x08\xE0\x83a\n\xA9V[\x80T\x90\x91P_\x90a\x08\xFF\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11bV[\x90Pa\t\x0C\x84\x83\x83a\rMV[`\xFF\x84\x16_\x90\x81R`\x02` R`@\x81 \x90a\t)`\x01\x84a\x11FV[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_\x90\x81 T\x90\x03a\x03\xACW`\xFF\x84\x16_\x90\x81R`\x02` R`@\x81 \x90a\td`\x01\x84a\x11FV[c\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x83\x01\x93\x90\x93R`@\x91\x82\x01_\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[_a\t\xD7\x83\x83a\nTV[\x90Pa\t\xE5\x83\x83\x83\x87a\r\xEAV[`\xFF\x83\x16_\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_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x85\x16\x84R\x90\x91R\x81 \x80T\x90a\n\x84`\x01\x83a\x11~V[\x81T\x81\x10a\n\x94Wa\n\x94a\x10\xC9V[\x90_R` _ \x90`\x02\x02\x01\x91PP\x92\x91PPV[`\xFF\x81\x16_\x90\x81R`\x03` R`@\x81 \x80T\x90a\n\xC8`\x01\x83a\x11~V[\x81T\x81\x10a\n\xD8Wa\n\xD8a\x10\xC9V[\x90_R` _ \x01\x91PP\x91\x90PV[`\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 T\x80[\x80\x15a\x0B\x8DW`\xFF\x85\x16_\x90\x81R`\x03` R`@\x81 a\x0B\x1E`\x01\x84a\x11~V[\x81T\x81\x10a\x0B.Wa\x0B.a\x10\xC9V[_\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\x0BzW` \x01Q\x92Pa\x03\xF2\x91PPV[P\x80a\x0B\x85\x81a\x11\x91V[\x91PPa\n\xFCV[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\x02\xACV[`\xFF\x83\x16_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a\x0C\xE2W`\xFF\x86\x16_\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x89\x16\x84R\x90\x91R\x81 a\x0Cr`\x01\x84a\x11~V[\x81T\x81\x10a\x0C\x82Wa\x0C\x82a\x10\xC9V[_\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\x0C\xCFW` \x01Q\x92Pa\x03\xAC\x91PPV[P\x80a\x0C\xDA\x81a\x11\x91V[\x91PPa\x0C?V[P_\x95\x94PPPPPV[__a\x0C\xF8\x83a\n\xA9V[\x80T\x90\x91P_\x90a\r\x18\x90`\x01\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16a\x11FV[\x90Pa\x03\xAC\x84\x83\x83a\rMV[__a\r1\x84\x84a\nTV[`\x01\x81\x01T\x90\x91Pa\rE\x85\x85\x84_a\r\xEAV[\x94\x93PPPPV[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\r\x82W\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_\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[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x0E\x07W`\x01\x82\x01\x81\x90Ua\x08\xB1V[`\xFF\x93\x90\x93\x16_\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[___`@\x84\x86\x03\x12\x15a\x0E\x84W__\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xA1W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x0E\xB1W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC7W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x0E\xD8W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0F&W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0F\x02V[P\x90\x95\x94PPPPPV[\x805`\xFF\x81\x16\x81\x14a\x0FAW__\xFD[\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0FAW__\xFD[__`@\x83\x85\x03\x12\x15a\x0FjW__\xFD[a\x0Fs\x83a\x0F1V[\x91Pa\x0F\x81` \x84\x01a\x0FFV[\x90P\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x0F\x9AW__\xFD[a\x03\xAC\x82a\x0F1V[___``\x84\x86\x03\x12\x15a\x0F\xB5W__\xFD[a\x0F\xBE\x84a\x0F1V[\x92Pa\x0F\xCC` \x85\x01a\x0FFV[\x91Pa\x0F\xDA`@\x85\x01a\x0FFV[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0F&W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0F\xFCV[__`@\x83\x85\x03\x12\x15a\x10+W__\xFD[a\x104\x83a\x0F1V[\x94` \x93\x90\x93\x015\x93PPPV[` \x80\x82R`M\x90\x82\x01R\x7FIndexRegistry.onlyRegistryCoordi`@\x82\x01R\x7Fnator: caller is not the registr``\x82\x01Rl<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x99\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\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_R`\x11`\x04R`$_\xFD[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[\x81\x81\x03\x81\x81\x11\x15a\x03\xF2Wa\x03\xF2a\x112V[_\x81a\x11\x9FWa\x11\x9Fa\x112V[P_\x19\x01\x90V\xFE\xA2dipfsX\"\x12 \xD0\xF0:\xD1\xC2E\xA9#&?\xA9\x03\x89b\x1F\x15\x9F\xB1Rv\x87\xF7\xF9\x81\x1D@\xCB4B\xADm\0dsolcC\0\x08\x1B\x003", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentOperatorIndexReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/deploy/indexregistrystorage.rs similarity index 96% rename from crates/utils/src/indexregistrystorage.rs rename to crates/utils/src/deploy/indexregistrystorage.rs index 325f9de1..46f37119 100644 --- a/crates/utils/src/indexregistrystorage.rs +++ b/crates/utils/src/deploy/indexregistrystorage.rs @@ -7,20 +7,30 @@ library IIndexRegistry { struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -207,13 +217,18 @@ pub mod IIndexRegistry { /**```solidity struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct QuorumUpdate { pub fromBlockNumber: u32, pub numOperators: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -896,7 +911,12 @@ interface IndexRegistryStorage { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IndexRegistryStorage { use super::*; use alloy::sol_types as alloy_sol_types; @@ -924,13 +944,23 @@ pub mod IndexRegistryStorage { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1012,7 +1042,12 @@ pub mod IndexRegistryStorage { ```solidity event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumIndexUpdate { #[allow(missing_docs)] @@ -1022,7 +1057,12 @@ pub mod IndexRegistryStorage { #[allow(missing_docs)] pub newOperatorIndex: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1120,16 +1160,21 @@ pub mod IndexRegistryStorage { ```solidity function OPERATOR_DOES_NOT_EXIST_ID() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1225,19 +1270,24 @@ pub mod IndexRegistryStorage { ```solidity function currentOperatorIndex(uint8, bytes32) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct currentOperatorIndexReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1349,17 +1399,22 @@ pub mod IndexRegistryStorage { ```solidity function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1474,19 +1529,24 @@ pub mod IndexRegistryStorage { ```solidity function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (IIndexRegistry.OperatorUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestOperatorUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1599,18 +1659,23 @@ pub mod IndexRegistryStorage { ```solidity function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (IIndexRegistry.QuorumUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestQuorumUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1713,19 +1778,24 @@ pub mod IndexRegistryStorage { ```solidity function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorListAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1840,7 +1910,7 @@ pub mod IndexRegistryStorage { ```solidity function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (IIndexRegistry.OperatorUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorUpdateAtIndexCall { pub quorumNumber: u8, @@ -1848,12 +1918,17 @@ pub mod IndexRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1972,19 +2047,24 @@ pub mod IndexRegistryStorage { ```solidity function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (IIndexRegistry.QuorumUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2097,16 +2177,21 @@ pub mod IndexRegistryStorage { ```solidity function initializeQuorum(uint8 quorumNumber) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2208,19 +2293,24 @@ pub mod IndexRegistryStorage { ```solidity function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2337,16 +2427,21 @@ pub mod IndexRegistryStorage { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2442,18 +2537,23 @@ pub mod IndexRegistryStorage { ```solidity function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalOperatorsForQuorumReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/initializable.rs b/crates/utils/src/deploy/initializable.rs similarity index 97% rename from crates/utils/src/initializable.rs rename to crates/utils/src/deploy/initializable.rs index 070a6d96..1d0e7c6a 100644 --- a/crates/utils/src/initializable.rs +++ b/crates/utils/src/deploy/initializable.rs @@ -25,7 +25,12 @@ interface Initializable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod Initializable { use super::*; use alloy::sol_types as alloy_sol_types; @@ -53,13 +58,23 @@ pub mod Initializable { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] diff --git a/crates/utils/src/ipausable.rs b/crates/utils/src/deploy/ipausable.rs similarity index 95% rename from crates/utils/src/ipausable.rs rename to crates/utils/src/deploy/ipausable.rs index 695a16ee..bce0231d 100644 --- a/crates/utils/src/ipausable.rs +++ b/crates/utils/src/deploy/ipausable.rs @@ -170,7 +170,12 @@ interface IPausable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IPausable { use super::*; use alloy::sol_types as alloy_sol_types; @@ -198,7 +203,12 @@ pub mod IPausable { ```solidity event Paused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -206,7 +216,12 @@ pub mod IPausable { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -297,7 +312,12 @@ pub mod IPausable { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -305,7 +325,12 @@ pub mod IPausable { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -396,7 +421,12 @@ pub mod IPausable { ```solidity event Unpaused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -404,7 +434,12 @@ pub mod IPausable { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -495,16 +530,21 @@ pub mod IPausable { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -606,14 +646,19 @@ pub mod IPausable { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -709,18 +754,23 @@ pub mod IPausable { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -820,16 +870,21 @@ pub mod IPausable { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -925,16 +980,21 @@ pub mod IPausable { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1030,16 +1090,21 @@ pub mod IPausable { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1141,16 +1206,21 @@ pub mod IPausable { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ipauserregistry.rs b/crates/utils/src/deploy/ipauserregistry.rs similarity index 96% rename from crates/utils/src/ipauserregistry.rs rename to crates/utils/src/deploy/ipauserregistry.rs index a9247a9c..7331f8c0 100644 --- a/crates/utils/src/ipauserregistry.rs +++ b/crates/utils/src/deploy/ipauserregistry.rs @@ -86,7 +86,12 @@ interface IPauserRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IPauserRegistry { use super::*; use alloy::sol_types as alloy_sol_types; @@ -114,7 +119,12 @@ pub mod IPauserRegistry { ```solidity event PauserStatusChanged(address pauser, bool canPause); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserStatusChanged { #[allow(missing_docs)] @@ -122,7 +132,12 @@ pub mod IPauserRegistry { #[allow(missing_docs)] pub canPause: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -213,7 +228,12 @@ pub mod IPauserRegistry { ```solidity event UnpauserChanged(address previousUnpauser, address newUnpauser); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UnpauserChanged { #[allow(missing_docs)] @@ -221,7 +241,12 @@ pub mod IPauserRegistry { #[allow(missing_docs)] pub newUnpauser: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -312,18 +337,23 @@ pub mod IPauserRegistry { ```solidity function isPauser(address pauser) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isPauserReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -423,16 +453,21 @@ pub mod IPauserRegistry { ```solidity function unpauser() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauserCall {} ///Container type for the return parameters of the [`unpauser()`](unpauserCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauserReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/iregistry.rs b/crates/utils/src/deploy/iregistry.rs similarity index 97% rename from crates/utils/src/iregistry.rs rename to crates/utils/src/deploy/iregistry.rs index 8a5c9b88..a696719c 100644 --- a/crates/utils/src/iregistry.rs +++ b/crates/utils/src/deploy/iregistry.rs @@ -25,7 +25,12 @@ interface IRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IRegistry { use super::*; use alloy::sol_types as alloy_sol_types; @@ -53,16 +58,21 @@ pub mod IRegistry { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/iregistrycoordinator.rs b/crates/utils/src/deploy/iregistrycoordinator.rs similarity index 96% rename from crates/utils/src/iregistrycoordinator.rs rename to crates/utils/src/deploy/iregistrycoordinator.rs index 3bee46eb..d5c13abc 100644 --- a/crates/utils/src/iregistrycoordinator.rs +++ b/crates/utils/src/deploy/iregistrycoordinator.rs @@ -6,20 +6,30 @@ library BN254 { struct G1Point { uint256 X; uint256 Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -935,7 +945,12 @@ interface IRegistryCoordinator { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IRegistryCoordinator { use super::*; use alloy::sol_types as alloy_sol_types; @@ -959,7 +974,7 @@ pub mod IRegistryCoordinator { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorStatus(u8); const _: () = { @@ -1071,13 +1086,18 @@ pub mod IRegistryCoordinator { /**```solidity struct OperatorInfo { bytes32 operatorId; OperatorStatus status; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1256,14 +1276,19 @@ pub mod IRegistryCoordinator { /**```solidity struct OperatorSetParam { uint32 maxOperatorCount; uint16 kickBIPsOfOperatorStake; uint16 kickBIPsOfTotalStake; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorSetParam { pub maxOperatorCount: u32, pub kickBIPsOfOperatorStake: u16, pub kickBIPsOfTotalStake: u16, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1478,14 +1503,19 @@ pub mod IRegistryCoordinator { /**```solidity struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1703,7 +1733,12 @@ pub mod IRegistryCoordinator { ```solidity event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ChurnApproverUpdated { #[allow(missing_docs)] @@ -1711,7 +1746,12 @@ pub mod IRegistryCoordinator { #[allow(missing_docs)] pub newChurnApprover: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1802,7 +1842,12 @@ pub mod IRegistryCoordinator { ```solidity event EjectorUpdated(address prevEjector, address newEjector); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct EjectorUpdated { #[allow(missing_docs)] @@ -1810,7 +1855,12 @@ pub mod IRegistryCoordinator { #[allow(missing_docs)] pub newEjector: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1901,7 +1951,12 @@ pub mod IRegistryCoordinator { ```solidity event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDeregistered { #[allow(missing_docs)] @@ -1909,7 +1964,12 @@ pub mod IRegistryCoordinator { #[allow(missing_docs)] pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2004,7 +2064,12 @@ pub mod IRegistryCoordinator { ```solidity event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -2012,7 +2077,12 @@ pub mod IRegistryCoordinator { #[allow(missing_docs)] pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2107,7 +2177,12 @@ pub mod IRegistryCoordinator { ```solidity event OperatorSetParamsUpdated(uint8 indexed quorumNumber, OperatorSetParam operatorSetParams); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSetParamsUpdated { #[allow(missing_docs)] @@ -2115,7 +2190,12 @@ pub mod IRegistryCoordinator { #[allow(missing_docs)] pub operatorSetParams: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2205,7 +2285,12 @@ pub mod IRegistryCoordinator { ```solidity event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumBlockNumberUpdated { #[allow(missing_docs)] @@ -2213,7 +2298,12 @@ pub mod IRegistryCoordinator { #[allow(missing_docs)] pub blocknumber: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2304,16 +2394,21 @@ pub mod IRegistryCoordinator { ```solidity function blsApkRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryCall {} ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2409,17 +2504,22 @@ pub mod IRegistryCoordinator { ```solidity function ejectOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2534,18 +2634,23 @@ pub mod IRegistryCoordinator { ```solidity function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentQuorumBitmapReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2647,18 +2752,23 @@ pub mod IRegistryCoordinator { ```solidity function getOperator(address operator) external view returns (OperatorInfo memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2758,18 +2868,23 @@ pub mod IRegistryCoordinator { ```solidity function getOperatorFromId(bytes32 operatorId) external view returns (address operator); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorFromIdReturn { pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2871,18 +2986,23 @@ pub mod IRegistryCoordinator { ```solidity function getOperatorId(address operator) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorIdReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2982,18 +3102,23 @@ pub mod IRegistryCoordinator { ```solidity function getOperatorSetParams(uint8 quorumNumber) external view returns (OperatorSetParam memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorSetParamsReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3096,18 +3221,23 @@ pub mod IRegistryCoordinator { ```solidity function getOperatorStatus(address operator) external view returns (OperatorStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorStatusReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3208,7 +3338,7 @@ pub mod IRegistryCoordinator { ```solidity function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapAtBlockNumberByIndexCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -3216,12 +3346,17 @@ pub mod IRegistryCoordinator { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapAtBlockNumberByIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3344,18 +3479,23 @@ pub mod IRegistryCoordinator { ```solidity function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapHistoryLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3457,19 +3597,24 @@ pub mod IRegistryCoordinator { ```solidity function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3586,19 +3731,24 @@ pub mod IRegistryCoordinator { ```solidity function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (QuorumBitmapUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapUpdateByIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3714,16 +3864,21 @@ pub mod IRegistryCoordinator { ```solidity function indexRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryCall {} ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3819,16 +3974,21 @@ pub mod IRegistryCoordinator { ```solidity function numRegistries() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct numRegistriesCall {} ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct numRegistriesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3924,16 +4084,21 @@ pub mod IRegistryCoordinator { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4029,18 +4194,23 @@ pub mod IRegistryCoordinator { ```solidity function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pubkeyRegistrationMessageHashReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4141,16 +4311,21 @@ pub mod IRegistryCoordinator { ```solidity function quorumCount() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCountCall {} ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCountReturn { pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4246,18 +4421,23 @@ pub mod IRegistryCoordinator { ```solidity function quorumUpdateBlockNumber(uint8 quorumNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumUpdateBlockNumberReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4359,18 +4539,23 @@ pub mod IRegistryCoordinator { ```solidity function registries(uint256) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registriesReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4470,16 +4655,21 @@ pub mod IRegistryCoordinator { ```solidity function stakeRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryCall {} ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/irewardscoordinator.rs b/crates/utils/src/deploy/irewardscoordinator.rs similarity index 87% rename from crates/utils/src/irewardscoordinator.rs rename to crates/utils/src/deploy/irewardscoordinator.rs index e4cb6fb2..999d7092 100644 --- a/crates/utils/src/irewardscoordinator.rs +++ b/crates/utils/src/deploy/irewardscoordinator.rs @@ -47,6 +47,7 @@ interface IRewardsCoordinator { 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 RewardsSubmissionForAllEarnersCreated(address indexed tokenHopper, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, RewardsSubmission rewardsSubmission); event RewardsUpdaterSet(address indexed oldRewardsUpdater, address indexed newRewardsUpdater); function CALCULATION_INTERVAL_SECONDS() external view returns (uint32); @@ -60,10 +61,13 @@ interface IRewardsCoordinator { function checkClaim(RewardsMerkleClaim memory claim) external view returns (bool); function claimerFor(address earner) external view returns (address); function createAVSRewardsSubmission(RewardsSubmission[] memory rewardsSubmissions) external; + function createRewardsForAllEarners(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 domainSeparator() external view returns (bytes32); + function getCurrentClaimableDistributionRoot() external view returns (DistributionRoot memory); function getCurrentDistributionRoot() external view returns (DistributionRoot memory); function getDistributionRootAtIndex(uint256 index) external view returns (DistributionRoot memory); function getDistributionRootsLength() external view returns (uint256); @@ -375,6 +379,58 @@ interface IRewardsCoordinator { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "createRewardsForAllEarners", + "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", @@ -477,6 +533,54 @@ interface IRewardsCoordinator { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "domainSeparator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentClaimableDistributionRoot", + "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": "getCurrentDistributionRoot", @@ -1117,6 +1221,76 @@ interface IRewardsCoordinator { ], "anonymous": false }, + { + "type": "event", + "name": "RewardsSubmissionForAllEarnersCreated", + "inputs": [ + { + "name": "tokenHopper", + "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", @@ -1138,7 +1312,12 @@ interface IRewardsCoordinator { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IRewardsCoordinator { use super::*; use alloy::sol_types as alloy_sol_types; @@ -1165,7 +1344,7 @@ pub mod IRewardsCoordinator { /**```solidity struct DistributionRoot { bytes32 root; uint32 rewardsCalculationEndTimestamp; uint32 activatedAt; bool disabled; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DistributionRoot { pub root: alloy::sol_types::private::FixedBytes<32>, @@ -1173,7 +1352,12 @@ pub mod IRewardsCoordinator { pub activatedAt: u32, pub disabled: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1401,13 +1585,18 @@ pub mod IRewardsCoordinator { /**```solidity struct EarnerTreeMerkleLeaf { address earner; bytes32 earnerTokenRoot; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1593,7 +1782,7 @@ pub mod IRewardsCoordinator { /**```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct RewardsMerkleClaim { pub rootIndex: u32, @@ -1606,7 +1795,12 @@ pub mod IRewardsCoordinator { ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1910,7 +2104,7 @@ pub mod IRewardsCoordinator { /**```solidity struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct RewardsSubmission { pub strategiesAndMultipliers: alloy::sol_types::private::Vec< @@ -1921,7 +2115,12 @@ pub mod IRewardsCoordinator { pub startTimestamp: u32, pub duration: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2185,13 +2384,18 @@ pub mod IRewardsCoordinator { /**```solidity struct StrategyAndMultiplier { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2375,13 +2579,18 @@ pub mod IRewardsCoordinator { /**```solidity struct TokenTreeMerkleLeaf { address token; uint256 cumulativeEarnings; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2568,7 +2777,12 @@ pub mod IRewardsCoordinator { ```solidity event AVSRewardsSubmissionCreated(address indexed avs, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, RewardsSubmission rewardsSubmission); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct AVSRewardsSubmissionCreated { #[allow(missing_docs)] @@ -2580,7 +2794,12 @@ pub mod IRewardsCoordinator { #[allow(missing_docs)] pub rewardsSubmission: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2686,7 +2905,12 @@ pub mod IRewardsCoordinator { ```solidity event ActivationDelaySet(uint32 oldActivationDelay, uint32 newActivationDelay); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ActivationDelaySet { #[allow(missing_docs)] @@ -2694,7 +2918,12 @@ pub mod IRewardsCoordinator { #[allow(missing_docs)] pub newActivationDelay: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2785,7 +3014,12 @@ pub mod IRewardsCoordinator { ```solidity event ClaimerForSet(address indexed earner, address indexed oldClaimer, address indexed claimer); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ClaimerForSet { #[allow(missing_docs)] @@ -2795,7 +3029,12 @@ pub mod IRewardsCoordinator { #[allow(missing_docs)] pub claimer: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2896,13 +3135,23 @@ pub mod IRewardsCoordinator { ```solidity event DistributionRootDisabled(uint32 indexed rootIndex); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct DistributionRootDisabled { #[allow(missing_docs)] pub rootIndex: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2988,7 +3237,12 @@ pub mod IRewardsCoordinator { ```solidity event DistributionRootSubmitted(uint32 indexed rootIndex, bytes32 indexed root, uint32 indexed rewardsCalculationEndTimestamp, uint32 activatedAt); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct DistributionRootSubmitted { #[allow(missing_docs)] @@ -3000,7 +3254,12 @@ pub mod IRewardsCoordinator { #[allow(missing_docs)] pub activatedAt: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3109,7 +3368,12 @@ pub mod IRewardsCoordinator { ```solidity event GlobalCommissionBipsSet(uint16 oldGlobalCommissionBips, uint16 newGlobalCommissionBips); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct GlobalCommissionBipsSet { #[allow(missing_docs)] @@ -3117,7 +3381,12 @@ pub mod IRewardsCoordinator { #[allow(missing_docs)] pub newGlobalCommissionBips: u16, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3208,7 +3477,12 @@ pub mod IRewardsCoordinator { ```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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct RewardsClaimed { #[allow(missing_docs)] @@ -3224,7 +3498,12 @@ pub mod IRewardsCoordinator { #[allow(missing_docs)] pub claimedAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3343,7 +3622,12 @@ pub mod IRewardsCoordinator { ```solidity event RewardsForAllSubmitterSet(address indexed rewardsForAllSubmitter, bool indexed oldValue, bool indexed newValue); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct RewardsForAllSubmitterSet { #[allow(missing_docs)] @@ -3353,7 +3637,12 @@ pub mod IRewardsCoordinator { #[allow(missing_docs)] pub newValue: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3456,7 +3745,12 @@ pub mod IRewardsCoordinator { ```solidity event RewardsSubmissionForAllCreated(address indexed submitter, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, RewardsSubmission rewardsSubmission); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct RewardsSubmissionForAllCreated { #[allow(missing_docs)] @@ -3468,7 +3762,12 @@ pub mod IRewardsCoordinator { #[allow(missing_docs)] pub rewardsSubmission: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3570,36 +3869,51 @@ pub mod IRewardsCoordinator { } } }; - /**Event with signature `RewardsUpdaterSet(address,address)` and selector `0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb`. + /**Event with signature `RewardsSubmissionForAllEarnersCreated(address,uint256,bytes32,((address,uint96)[],address,uint256,uint32,uint32))` and selector `0x5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b`. ```solidity - event RewardsUpdaterSet(address indexed oldRewardsUpdater, address indexed newRewardsUpdater); + event RewardsSubmissionForAllEarnersCreated(address indexed tokenHopper, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, RewardsSubmission rewardsSubmission); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct RewardsUpdaterSet { + pub struct RewardsSubmissionForAllEarnersCreated { #[allow(missing_docs)] - pub oldRewardsUpdater: alloy::sol_types::private::Address, + pub tokenHopper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newRewardsUpdater: alloy::sol_types::private::Address, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] - impl alloy_sol_types::SolEvent for RewardsUpdaterSet { - type DataTuple<'a> = (); + impl alloy_sol_types::SolEvent for RewardsSubmissionForAllEarnersCreated { + 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::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::FixedBytes<32>, ); - const SIGNATURE: &'static str = "RewardsUpdaterSet(address,address)"; + const SIGNATURE: &'static str = "RewardsSubmissionForAllEarnersCreated(address,uint256,bytes32,((address,uint96)[],address,uint256,uint32,uint32))"; 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, + 82u8, 81u8, 182u8, 253u8, 239u8, 203u8, 93u8, 129u8, 20u8, 78u8, 115u8, 95u8, + 105u8, 234u8, 76u8, 105u8, 95u8, 212u8, 59u8, 2u8, 137u8, 202u8, 83u8, 220u8, + 7u8, 80u8, 51u8, 245u8, 252u8, 128u8, 6u8, 139u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -3609,8 +3923,10 @@ pub mod IRewardsCoordinator { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - oldRewardsUpdater: topics.1, - newRewardsUpdater: topics.2, + tokenHopper: topics.1, + submissionNonce: topics.2, + rewardsSubmissionHash: topics.3, + rewardsSubmission: data.0, } } #[inline] @@ -3628,14 +3944,17 @@ pub mod IRewardsCoordinator { } #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { - () + (::tokenize( + &self.rewardsSubmission, + ),) } #[inline] fn topics(&self) -> ::RustType { ( Self::SIGNATURE_HASH.into(), - self.oldRewardsUpdater.clone(), - self.newRewardsUpdater.clone(), + self.tokenHopper.clone(), + self.submissionNonce.clone(), + self.rewardsSubmissionHash.clone(), ) } #[inline] @@ -3648,16 +3967,21 @@ pub mod IRewardsCoordinator { } out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); out[1usize] = ::encode_topic( - &self.oldRewardsUpdater, + &self.tokenHopper, ); - out[2usize] = ::encode_topic( - &self.newRewardsUpdater, + 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 RewardsUpdaterSet { + impl alloy_sol_types::private::IntoLogData for RewardsSubmissionForAllEarnersCreated { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -3666,60 +3990,180 @@ pub mod IRewardsCoordinator { } } #[automatically_derived] - impl From<&RewardsUpdaterSet> for alloy_sol_types::private::LogData { + impl From<&RewardsSubmissionForAllEarnersCreated> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &RewardsUpdaterSet) -> alloy_sol_types::private::LogData { + fn from( + this: &RewardsSubmissionForAllEarnersCreated, + ) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Function with signature `CALCULATION_INTERVAL_SECONDS()` and selector `0x9d45c281`. + /**Event with signature `RewardsUpdaterSet(address,address)` and selector `0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb`. ```solidity - function CALCULATION_INTERVAL_SECONDS() external view returns (uint32); + event RewardsUpdaterSet(address indexed oldRewardsUpdater, address indexed newRewardsUpdater); ```*/ - #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct CALCULATION_INTERVAL_SECONDSReturn { - pub _0: u32, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; - { - #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); - #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); - #[cfg(test)] - #[allow(dead_code, unreachable_patterns)] - fn _type_assertion(_t: alloy_sol_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)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CALCULATION_INTERVAL_SECONDSReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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,); @@ -3782,16 +4226,21 @@ pub mod IRewardsCoordinator { ```solidity function GENESIS_REWARDS_TIMESTAMP() external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct GENESIS_REWARDS_TIMESTAMPReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3887,16 +4336,21 @@ pub mod IRewardsCoordinator { ```solidity function MAX_FUTURE_LENGTH() external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MAX_FUTURE_LENGTHReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3992,16 +4446,21 @@ pub mod IRewardsCoordinator { ```solidity function MAX_RETROACTIVE_LENGTH() external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MAX_RETROACTIVE_LENGTHReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4097,16 +4556,21 @@ pub mod IRewardsCoordinator { ```solidity function MAX_REWARDS_DURATION() external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MAX_REWARDS_DURATIONReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4202,16 +4666,21 @@ pub mod IRewardsCoordinator { ```solidity function activationDelay() external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct activationDelayCall {} ///Container type for the return parameters of the [`activationDelay()`](activationDelayCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct activationDelayReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4307,18 +4776,23 @@ pub mod IRewardsCoordinator { ```solidity function calculateEarnerLeafHash(EarnerTreeMerkleLeaf memory leaf) external pure returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateEarnerLeafHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4415,18 +4889,23 @@ pub mod IRewardsCoordinator { ```solidity function calculateTokenLeafHash(TokenTreeMerkleLeaf memory leaf) external pure returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateTokenLeafHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4525,18 +5004,23 @@ pub mod IRewardsCoordinator { ```solidity function checkClaim(RewardsMerkleClaim memory claim) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct checkClaimReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4635,18 +5119,23 @@ pub mod IRewardsCoordinator { ```solidity function claimerFor(address earner) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct claimerForReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4746,7 +5235,7 @@ pub mod IRewardsCoordinator { ```solidity function createAVSRewardsSubmission(RewardsSubmission[] memory rewardsSubmissions) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct createAVSRewardsSubmissionCall { pub rewardsSubmissions: alloy::sol_types::private::Vec< @@ -4754,10 +5243,15 @@ pub mod IRewardsCoordinator { >, } ///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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct createAVSRewardsSubmissionReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4860,11 +5354,134 @@ pub mod IRewardsCoordinator { } } }; + /**Function with signature `createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xff9f6cce`. + ```solidity + function createRewardsForAllEarners(RewardsSubmission[] memory rewardsSubmissions) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createRewardsForAllEarnersCall { + pub rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[])`](createRewardsForAllEarnersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createRewardsForAllEarnersReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: createRewardsForAllEarnersCall) -> Self { + (value.rewardsSubmissions,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createRewardsForAllEarnersCall { + 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: createRewardsForAllEarnersReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createRewardsForAllEarnersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createRewardsForAllEarnersCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createRewardsForAllEarnersReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[])"; + const SELECTOR: [u8; 4] = [255u8, 159u8, 108u8, 206u8]; + #[inline] + fn new<'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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct createRewardsForAllSubmissionCall { pub rewardsSubmission: alloy::sol_types::private::Vec< @@ -4872,10 +5489,15 @@ pub mod IRewardsCoordinator { >, } ///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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct createRewardsForAllSubmissionReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4949,8 +5571,254 @@ pub mod IRewardsCoordinator { 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]; + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct cumulativeClaimedReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currRewardsCalculationEndTimestampCall {} + ///Container type for the return parameters of the [`currRewardsCalculationEndTimestamp()`](currRewardsCalculationEndTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currRewardsCalculationEndTimestampReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, @@ -4959,11 +5827,7 @@ pub mod IRewardsCoordinator { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( - as alloy_sol_types::SolType>::tokenize(&self.rewardsSubmission), - ) + () } #[inline] fn abi_decode_returns( @@ -4977,36 +5841,32 @@ pub mod IRewardsCoordinator { } } }; - /**Function with signature `cumulativeClaimed(address,address)` and selector `0x865c6953`. + /**Function with signature `disableRoot(uint32)` and selector `0xf96abf2e`. ```solidity - function cumulativeClaimed(address claimer, address token) external view returns (uint256); + function disableRoot(uint32 rootIndex) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct cumulativeClaimedCall { - pub claimer: alloy::sol_types::private::Address, - pub token: alloy::sol_types::private::Address, + pub struct disableRootCall { + pub rootIndex: u32, } - ///Container type for the return parameters of the [`cumulativeClaimed(address,address)`](cumulativeClaimedCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`disableRoot(uint32)`](disableRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct cumulativeClaimedReturn { - pub _0: alloy::sol_types::private::primitives::aliases::U256, - } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct disableRootReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Address, - alloy::sol_types::private::Address, - ); + type UnderlyingRustTuple<'a> = (u32,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -5018,27 +5878,24 @@ pub mod IRewardsCoordinator { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: cumulativeClaimedCall) -> Self { - (value.claimer, value.token) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: disableRootCall) -> Self { + (value.rootIndex,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for cumulativeClaimedCall { + impl ::core::convert::From> for disableRootCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - claimer: tuple.0, - token: tuple.1, - } + Self { rootIndex: tuple.0 } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -5050,31 +5907,28 @@ pub mod IRewardsCoordinator { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: cumulativeClaimedReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: disableRootReturn) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for cumulativeClaimedReturn { + impl ::core::convert::From> for disableRootReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for cumulativeClaimedCall { - type Parameters<'a> = ( - alloy::sol_types::sol_data::Address, - alloy::sol_types::sol_data::Address, - ); + 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 = cumulativeClaimedReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Return = disableRootReturn; + type ReturnTuple<'a> = (); 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]; + 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, @@ -5084,11 +5938,8 @@ pub mod IRewardsCoordinator { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.claimer, - ), - ::tokenize( - &self.token, + as alloy_sol_types::SolType>::tokenize( + &self.rootIndex, ), ) } @@ -5104,20 +5955,25 @@ pub mod IRewardsCoordinator { } } }; - /**Function with signature `currRewardsCalculationEndTimestamp()` and selector `0x4d18cc35`. + /**Function with signature `domainSeparator()` and selector `0xf698da25`. ```solidity - function currRewardsCalculationEndTimestamp() external view returns (uint32); + function domainSeparator() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct currRewardsCalculationEndTimestampCall {} - ///Container type for the return parameters of the [`currRewardsCalculationEndTimestamp()`](currRewardsCalculationEndTimestampCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct currRewardsCalculationEndTimestampReturn { - pub _0: u32, + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5136,14 +5992,14 @@ pub mod IRewardsCoordinator { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: currRewardsCalculationEndTimestampCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for currRewardsCalculationEndTimestampCall { + impl ::core::convert::From> for domainSeparatorCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -5151,9 +6007,9 @@ pub mod IRewardsCoordinator { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (u32,); + 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) { @@ -5165,28 +6021,28 @@ pub mod IRewardsCoordinator { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: currRewardsCalculationEndTimestampReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for currRewardsCalculationEndTimestampReturn { + impl ::core::convert::From> for domainSeparatorReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for currRewardsCalculationEndTimestampCall { + impl alloy_sol_types::SolCall for domainSeparatorCall { 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 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 = "currRewardsCalculationEndTimestamp()"; - const SELECTOR: [u8; 4] = [77u8, 24u8, 204u8, 53u8]; + const SIGNATURE: &'static str = "domainSeparator()"; + const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -5209,27 +6065,32 @@ pub mod IRewardsCoordinator { } } }; - /**Function with signature `disableRoot(uint32)` and selector `0xf96abf2e`. + /**Function with signature `getCurrentClaimableDistributionRoot()` and selector `0x0e9a53cf`. ```solidity - function disableRoot(uint32 rootIndex) external; + function getCurrentClaimableDistributionRoot() external view returns (DistributionRoot memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + pub struct getCurrentClaimableDistributionRootCall {} + ///Container type for the return parameters of the [`getCurrentClaimableDistributionRoot()`](getCurrentClaimableDistributionRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct disableRootReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct getCurrentClaimableDistributionRootReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (u32,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -5241,24 +6102,25 @@ pub mod IRewardsCoordinator { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: disableRootCall) -> Self { - (value.rootIndex,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentClaimableDistributionRootCall) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for disableRootCall { + impl ::core::convert::From> for getCurrentClaimableDistributionRootCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { rootIndex: tuple.0 } + Self {} } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (DistributionRoot,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = + (::RustType,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -5270,28 +6132,28 @@ pub mod IRewardsCoordinator { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: disableRootReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentClaimableDistributionRootReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for disableRootReturn { + impl ::core::convert::From> for getCurrentClaimableDistributionRootReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for disableRootCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + impl alloy_sol_types::SolCall for getCurrentClaimableDistributionRootCall { + type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = disableRootReturn; - type ReturnTuple<'a> = (); + type Return = getCurrentClaimableDistributionRootReturn; + type ReturnTuple<'a> = (DistributionRoot,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "disableRoot(uint32)"; - const SELECTOR: [u8; 4] = [249u8, 106u8, 191u8, 46u8]; + const SIGNATURE: &'static str = "getCurrentClaimableDistributionRoot()"; + const SELECTOR: [u8; 4] = [14u8, 154u8, 83u8, 207u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -5300,11 +6162,7 @@ pub mod IRewardsCoordinator { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( - as alloy_sol_types::SolType>::tokenize( - &self.rootIndex, - ), - ) + () } #[inline] fn abi_decode_returns( @@ -5322,16 +6180,21 @@ pub mod IRewardsCoordinator { ```solidity function getCurrentDistributionRoot() external view returns (DistributionRoot memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentDistributionRootCall {} ///Container type for the return parameters of the [`getCurrentDistributionRoot()`](getCurrentDistributionRootCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentDistributionRootReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5428,18 +6291,23 @@ pub mod IRewardsCoordinator { ```solidity function getDistributionRootAtIndex(uint256 index) external view returns (DistributionRoot memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getDistributionRootAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5540,16 +6408,21 @@ pub mod IRewardsCoordinator { ```solidity function getDistributionRootsLength() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getDistributionRootsLengthCall {} ///Container type for the return parameters of the [`getDistributionRootsLength()`](getDistributionRootsLengthCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getDistributionRootsLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5645,18 +6518,23 @@ pub mod IRewardsCoordinator { ```solidity function getRootIndexFromHash(bytes32 rootHash) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRootIndexFromHashReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5756,16 +6634,21 @@ pub mod IRewardsCoordinator { ```solidity function globalOperatorCommissionBips() external view returns (uint16); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct globalOperatorCommissionBipsCall {} ///Container type for the return parameters of the [`globalOperatorCommissionBips()`](globalOperatorCommissionBipsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct globalOperatorCommissionBipsReturn { pub _0: u16, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5861,19 +6744,24 @@ pub mod IRewardsCoordinator { ```solidity function operatorCommissionBips(address operator, address avs) external view returns (uint16); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorCommissionBipsReturn { pub _0: u16, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5988,17 +6876,22 @@ pub mod IRewardsCoordinator { ```solidity function processClaim(RewardsMerkleClaim memory claim, address recipient) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct processClaimReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6105,16 +6998,21 @@ pub mod IRewardsCoordinator { ```solidity function rewardsUpdater() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct rewardsUpdaterCall {} ///Container type for the return parameters of the [`rewardsUpdater()`](rewardsUpdaterCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct rewardsUpdaterReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6210,16 +7108,21 @@ pub mod IRewardsCoordinator { ```solidity function setActivationDelay(uint32 _activationDelay) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setActivationDelayReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6321,16 +7224,21 @@ pub mod IRewardsCoordinator { ```solidity function setClaimerFor(address claimer) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setClaimerForReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6430,16 +7338,21 @@ pub mod IRewardsCoordinator { ```solidity function setGlobalOperatorCommission(uint16 _globalCommissionBips) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setGlobalOperatorCommissionReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6541,17 +7454,22 @@ pub mod IRewardsCoordinator { ```solidity function setRewardsForAllSubmitter(address _submitter, bool _newValue) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setRewardsForAllSubmitterReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6663,16 +7581,21 @@ pub mod IRewardsCoordinator { ```solidity function setRewardsUpdater(address _rewardsUpdater) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setRewardsUpdaterReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6774,17 +7697,22 @@ pub mod IRewardsCoordinator { ```solidity function submitRoot(bytes32 root, uint32 rewardsCalculationEndTimestamp) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct submitRootReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6907,10 +7835,13 @@ pub mod IRewardsCoordinator { checkClaim(checkClaimCall), claimerFor(claimerForCall), createAVSRewardsSubmission(createAVSRewardsSubmissionCall), + createRewardsForAllEarners(createRewardsForAllEarnersCall), createRewardsForAllSubmission(createRewardsForAllSubmissionCall), cumulativeClaimed(cumulativeClaimedCall), currRewardsCalculationEndTimestamp(currRewardsCalculationEndTimestampCall), disableRoot(disableRootCall), + domainSeparator(domainSeparatorCall), + getCurrentClaimableDistributionRoot(getCurrentClaimableDistributionRootCall), getCurrentDistributionRoot(getCurrentDistributionRootCall), getDistributionRootAtIndex(getDistributionRootAtIndexCall), getDistributionRootsLength(getDistributionRootsLengthCall), @@ -6937,6 +7868,7 @@ pub mod IRewardsCoordinator { pub const SELECTORS: &'static [[u8; 4usize]] = &[ [4u8, 160u8, 197u8, 2u8], [9u8, 45u8, 176u8, 7u8], + [14u8, 154u8, 83u8, 207u8], [14u8, 179u8, 131u8, 69u8], [19u8, 20u8, 51u8, 180u8], [20u8, 155u8, 200u8, 114u8], @@ -6960,17 +7892,19 @@ pub mod IRewardsCoordinator { [222u8, 2u8, 229u8, 3u8], [226u8, 33u8, 178u8, 69u8], [232u8, 16u8, 206u8, 33u8], + [246u8, 152u8, 218u8, 37u8], [248u8, 205u8, 132u8, 72u8], [249u8, 106u8, 191u8, 46u8], [251u8, 241u8, 226u8, 193u8], [252u8, 227u8, 108u8, 125u8], + [255u8, 159u8, 108u8, 206u8], ]; } #[automatically_derived] impl alloy_sol_types::SolInterface for IRewardsCoordinatorCalls { const NAME: &'static str = "IRewardsCoordinatorCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 29usize; + const COUNT: usize = 32usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -7003,6 +7937,9 @@ pub mod IRewardsCoordinator { Self::createAVSRewardsSubmission(_) => { ::SELECTOR } + Self::createRewardsForAllEarners(_) => { + ::SELECTOR + } Self::createRewardsForAllSubmission(_) => { ::SELECTOR } @@ -7013,6 +7950,12 @@ pub mod IRewardsCoordinator { ::SELECTOR } Self::disableRoot(_) => ::SELECTOR, + Self::domainSeparator(_) => { + ::SELECTOR + } + Self::getCurrentClaimableDistributionRoot(_) => { + ::SELECTOR + } Self::getCurrentDistributionRoot(_) => { ::SELECTOR } @@ -7096,6 +8039,21 @@ pub mod IRewardsCoordinator { } globalOperatorCommissionBips }, + { + fn getCurrentClaimableDistributionRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IRewardsCoordinatorCalls::getCurrentClaimableDistributionRoot, + ) + } + getCurrentClaimableDistributionRoot + }, { fn setRewardsForAllSubmitter( data: &[u8], @@ -7375,6 +8333,18 @@ pub mod IRewardsCoordinator { } getRootIndexFromHash }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::domainSeparator) + } + domainSeparator + }, { fn calculateTokenLeafHash( data: &[u8], @@ -7424,6 +8394,19 @@ pub mod IRewardsCoordinator { } createAVSRewardsSubmission }, + { + fn createRewardsForAllEarners( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::createRewardsForAllEarners) + } + createRewardsForAllEarners + }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { return Err(alloy_sol_types::Error::unknown_selector( @@ -7487,6 +8470,11 @@ pub mod IRewardsCoordinator { inner, ) } + Self::createRewardsForAllEarners(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::createRewardsForAllSubmission(inner) => { ::abi_encoded_size( inner, @@ -7507,6 +8495,16 @@ pub mod IRewardsCoordinator { inner, ) } + Self::domainSeparator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentClaimableDistributionRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getCurrentDistributionRoot(inner) => { ::abi_encoded_size( inner, @@ -7646,6 +8644,12 @@ pub mod IRewardsCoordinator { out, ) } + Self::createRewardsForAllEarners(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::createRewardsForAllSubmission(inner) => { ::abi_encode_raw( inner, @@ -7670,6 +8674,18 @@ pub mod IRewardsCoordinator { out, ) } + Self::domainSeparator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentClaimableDistributionRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getCurrentDistributionRoot(inner) => { ::abi_encode_raw( inner, @@ -7768,6 +8784,7 @@ pub mod IRewardsCoordinator { RewardsClaimed(RewardsClaimed), RewardsForAllSubmitterSet(RewardsForAllSubmitterSet), RewardsSubmissionForAllCreated(RewardsSubmissionForAllCreated), + RewardsSubmissionForAllEarnersCreated(RewardsSubmissionForAllEarnersCreated), RewardsUpdaterSet(RewardsUpdaterSet), } #[automatically_derived] @@ -7799,6 +8816,11 @@ pub mod IRewardsCoordinator { 160u8, 52u8, 208u8, 21u8, 47u8, 206u8, 106u8, 248u8, 65u8, 93u8, 101u8, 27u8, 42u8, 71u8, 52u8, 191u8, 39u8, 4u8, 130u8, ], + [ + 82u8, 81u8, 182u8, 253u8, 239u8, 203u8, 93u8, 129u8, 20u8, 78u8, 115u8, 95u8, + 105u8, 234u8, 76u8, 105u8, 95u8, 212u8, 59u8, 2u8, 137u8, 202u8, 83u8, 220u8, 7u8, + 80u8, 51u8, 245u8, 252u8, 128u8, 6u8, 139u8, + ], [ 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, @@ -7834,7 +8856,7 @@ pub mod IRewardsCoordinator { #[automatically_derived] impl alloy_sol_types::SolEventInterface for IRewardsCoordinatorEvents { const NAME: &'static str = "IRewardsCoordinatorEvents"; - const COUNT: usize = 10usize; + const COUNT: usize = 11usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -7843,73 +8865,121 @@ pub mod IRewardsCoordinator { 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::AVSRewardsSubmissionCreated) + } + Some( + ::SIGNATURE_HASH, + ) => { ::decode_raw_log( - topics, data, validate, - ) - .map(Self::ActivationDelaySet) + topics, + data, + validate, + ) + .map(Self::ActivationDelaySet) } Some(::SIGNATURE_HASH) => { ::decode_raw_log( - topics, data, validate, - ) - .map(Self::ClaimerForSet) + topics, + data, + validate, + ) + .map(Self::ClaimerForSet) } - Some(::SIGNATURE_HASH) => { + Some( + ::SIGNATURE_HASH, + ) => { ::decode_raw_log( - topics, data, validate, - ) - .map(Self::DistributionRootDisabled) + topics, + data, + validate, + ) + .map(Self::DistributionRootDisabled) } - Some(::SIGNATURE_HASH) => { + Some( + ::SIGNATURE_HASH, + ) => { ::decode_raw_log( - topics, data, validate, - ) - .map(Self::DistributionRootSubmitted) + topics, + data, + validate, + ) + .map(Self::DistributionRootSubmitted) } - Some(::SIGNATURE_HASH) => { + Some( + ::SIGNATURE_HASH, + ) => { ::decode_raw_log( - topics, data, validate, - ) - .map(Self::GlobalCommissionBipsSet) + topics, + data, + validate, + ) + .map(Self::GlobalCommissionBipsSet) } Some(::SIGNATURE_HASH) => { ::decode_raw_log( - topics, data, validate, - ) - .map(Self::RewardsClaimed) + topics, + data, + validate, + ) + .map(Self::RewardsClaimed) } - Some(::SIGNATURE_HASH) => { + Some( + ::SIGNATURE_HASH, + ) => { ::decode_raw_log( - topics, data, validate, - ) - .map(Self::RewardsForAllSubmitterSet) + 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::RewardsSubmissionForAllCreated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::RewardsSubmissionForAllEarnersCreated) + } + 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(), + 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(), + ), ), - ), - }), + }) + } } } } @@ -7944,6 +9014,9 @@ pub mod IRewardsCoordinator { Self::RewardsSubmissionForAllCreated(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::RewardsSubmissionForAllEarnersCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::RewardsUpdaterSet(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -7978,6 +9051,9 @@ pub mod IRewardsCoordinator { Self::RewardsSubmissionForAllCreated(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::RewardsSubmissionForAllEarnersCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::RewardsUpdaterSet(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -8223,6 +9299,15 @@ pub mod IRewardsCoordinator { ) -> alloy_contract::SolCallBuilder { self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions }) } + ///Creates a new call builder for the [`createRewardsForAllEarners`] function. + pub fn createRewardsForAllEarners( + &self, + rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createRewardsForAllEarnersCall { rewardsSubmissions }) + } ///Creates a new call builder for the [`createRewardsForAllSubmission`] function. pub fn createRewardsForAllSubmission( &self, @@ -8254,6 +9339,19 @@ pub mod IRewardsCoordinator { ) -> alloy_contract::SolCallBuilder { self.call_builder(&disableRootCall { rootIndex }) } + ///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 [`getCurrentClaimableDistributionRoot`] function. + pub fn getCurrentClaimableDistributionRoot( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getCurrentClaimableDistributionRootCall {}) + } ///Creates a new call builder for the [`getCurrentDistributionRoot`] function. pub fn getCurrentDistributionRoot( &self, @@ -8428,6 +9526,12 @@ pub mod IRewardsCoordinator { ) -> alloy_contract::Event { self.event_filter::() } + ///Creates a new event filter for the [`RewardsSubmissionForAllEarnersCreated`] event. + pub fn RewardsSubmissionForAllEarnersCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } ///Creates a new event filter for the [`RewardsUpdaterSet`] event. pub fn RewardsUpdaterSet_filter( &self, diff --git a/crates/utils/src/iservicemanagerui.rs b/crates/utils/src/deploy/iservicemanager.rs similarity index 93% rename from crates/utils/src/iservicemanagerui.rs rename to crates/utils/src/deploy/iservicemanager.rs index 168142b2..310d80cc 100644 --- a/crates/utils/src/iservicemanagerui.rs +++ b/crates/utils/src/deploy/iservicemanager.rs @@ -6,21 +6,31 @@ library ISignatureUtils { struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -362,7 +372,7 @@ library ISignatureUtils { } } -interface IServiceManagerUI { +interface IServiceManager { function avsDirectory() external view returns (address); function deregisterOperatorFromAVS(address operator) external; function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); @@ -483,8 +493,13 @@ interface IServiceManagerUI { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] -pub mod IServiceManagerUI { +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IServiceManager { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. @@ -511,16 +526,21 @@ pub mod IServiceManagerUI { ```solidity function avsDirectory() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsDirectoryCall {} ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsDirectoryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -616,16 +636,21 @@ pub mod IServiceManagerUI { ```solidity function deregisterOperatorFromAVS(address operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorFromAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -725,18 +750,23 @@ pub mod IServiceManagerUI { ```solidity function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorRestakedStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -839,16 +869,21 @@ pub mod IServiceManagerUI { ```solidity function getRestakeableStrategies() external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesCall {} ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -947,7 +982,7 @@ pub mod IServiceManagerUI { ```solidity function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSCall { pub operator: alloy::sol_types::private::Address, @@ -955,10 +990,15 @@ pub mod IServiceManagerUI { ::RustType, } ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1074,16 +1114,21 @@ pub mod IServiceManagerUI { ```solidity function updateAVSMetadataURI(string memory _metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1181,8 +1226,8 @@ pub mod IServiceManagerUI { } } }; - ///Container for all the [`IServiceManagerUI`](self) function calls. - pub enum IServiceManagerUICalls { + ///Container for all the [`IServiceManager`](self) function calls. + pub enum IServiceManagerCalls { avsDirectory(avsDirectoryCall), deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), @@ -1191,7 +1236,7 @@ pub mod IServiceManagerUI { updateAVSMetadataURI(updateAVSMetadataURICall), } #[automatically_derived] - impl IServiceManagerUICalls { + impl IServiceManagerCalls { /// All the selectors of this enum. /// /// Note that the selectors might not be in the same order as the variants. @@ -1208,8 +1253,8 @@ pub mod IServiceManagerUI { ]; } #[automatically_derived] - impl alloy_sol_types::SolInterface for IServiceManagerUICalls { - const NAME: &'static str = "IServiceManagerUICalls"; + impl alloy_sol_types::SolInterface for IServiceManagerCalls { + const NAME: &'static str = "IServiceManagerCalls"; const MIN_DATA_LENGTH: usize = 0usize; const COUNT: usize = 6usize; #[inline] @@ -1252,17 +1297,17 @@ pub mod IServiceManagerUI { &[u8], bool, ) - -> alloy_sol_types::Result] = &[ + -> alloy_sol_types::Result] = &[ { fn getOperatorRestakedStrategies( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerUICalls::getOperatorRestakedStrategies) + .map(IServiceManagerCalls::getOperatorRestakedStrategies) } getOperatorRestakedStrategies }, @@ -1270,11 +1315,11 @@ pub mod IServiceManagerUI { fn avsDirectory( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerUICalls::avsDirectory) + .map(IServiceManagerCalls::avsDirectory) } avsDirectory }, @@ -1282,11 +1327,11 @@ pub mod IServiceManagerUI { fn registerOperatorToAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerUICalls::registerOperatorToAVS) + .map(IServiceManagerCalls::registerOperatorToAVS) } registerOperatorToAVS }, @@ -1294,11 +1339,11 @@ pub mod IServiceManagerUI { fn deregisterOperatorFromAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerUICalls::deregisterOperatorFromAVS) + .map(IServiceManagerCalls::deregisterOperatorFromAVS) } deregisterOperatorFromAVS }, @@ -1306,11 +1351,11 @@ pub mod IServiceManagerUI { fn updateAVSMetadataURI( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerUICalls::updateAVSMetadataURI) + .map(IServiceManagerCalls::updateAVSMetadataURI) } updateAVSMetadataURI }, @@ -1318,11 +1363,11 @@ pub mod IServiceManagerUI { fn getRestakeableStrategies( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerUICalls::getRestakeableStrategies) + .map(IServiceManagerCalls::getRestakeableStrategies) } getRestakeableStrategies }, @@ -1405,9 +1450,9 @@ pub mod IServiceManagerUI { } } use alloy::contract as alloy_contract; - /**Creates a new wrapper around an on-chain [`IServiceManagerUI`](self) contract instance. + /**Creates a new wrapper around an on-chain [`IServiceManager`](self) contract instance. - See the [wrapper's documentation](`IServiceManagerUIInstance`) for more details.*/ + See the [wrapper's documentation](`IServiceManagerInstance`) for more details.*/ #[inline] pub const fn new< T: alloy_contract::private::Transport + ::core::clone::Clone, @@ -1416,8 +1461,8 @@ pub mod IServiceManagerUI { >( address: alloy_sol_types::private::Address, provider: P, - ) -> IServiceManagerUIInstance { - IServiceManagerUIInstance::::new(address, provider) + ) -> IServiceManagerInstance { + IServiceManagerInstance::::new(address, provider) } /**Deploys this contract using the given `provider` and constructor arguments, if any. @@ -1431,9 +1476,9 @@ pub mod IServiceManagerUI { N: alloy_contract::private::Network, >( provider: P, - ) -> impl ::core::future::Future>> + ) -> impl ::core::future::Future>> { - IServiceManagerUIInstance::::deploy(provider) + IServiceManagerInstance::::deploy(provider) } /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` and constructor arguments, if any. @@ -1448,12 +1493,12 @@ pub mod IServiceManagerUI { >( provider: P, ) -> alloy_contract::RawCallBuilder { - IServiceManagerUIInstance::::deploy_builder(provider) + IServiceManagerInstance::::deploy_builder(provider) } - /**A [`IServiceManagerUI`](self) instance. + /**A [`IServiceManager`](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 + [`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!) @@ -1462,16 +1507,16 @@ pub mod IServiceManagerUI { See the [module-level documentation](self) for all the available methods.*/ #[derive(Clone)] - pub struct IServiceManagerUIInstance { + 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 IServiceManagerUIInstance { + impl ::core::fmt::Debug for IServiceManagerInstance { #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple("IServiceManagerUIInstance") + f.debug_tuple("IServiceManagerInstance") .field(&self.address) .finish() } @@ -1482,11 +1527,11 @@ pub mod IServiceManagerUI { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IServiceManagerUIInstance + > IServiceManagerInstance { - /**Creates a new wrapper around an on-chain [`IServiceManagerUI`](self) contract instance. + /**Creates a new wrapper around an on-chain [`IServiceManager`](self) contract instance. - See the [wrapper's documentation](`IServiceManagerUIInstance`) for more details.*/ + See the [wrapper's documentation](`IServiceManagerInstance`) for more details.*/ #[inline] pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { Self { @@ -1503,7 +1548,7 @@ pub mod IServiceManagerUI { #[inline] pub async fn deploy( provider: P, - ) -> alloy_contract::Result> { + ) -> 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)) @@ -1541,11 +1586,11 @@ pub mod IServiceManagerUI { &self.provider } } - impl IServiceManagerUIInstance { + impl IServiceManagerInstance { /// Clones the provider and returns a new instance with the cloned provider. #[inline] - pub fn with_cloned_provider(self) -> IServiceManagerUIInstance { - IServiceManagerUIInstance { + pub fn with_cloned_provider(self) -> IServiceManagerInstance { + IServiceManagerInstance { address: self.address, provider: ::core::clone::Clone::clone(&self.provider), _network_transport: ::core::marker::PhantomData, @@ -1558,7 +1603,7 @@ pub mod IServiceManagerUI { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IServiceManagerUIInstance + > IServiceManagerInstance { /// Creates a new call builder using this contract instance's provider and address. /// @@ -1619,7 +1664,7 @@ pub mod IServiceManagerUI { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IServiceManagerUIInstance + > IServiceManagerInstance { /// Creates a new event filter using this contract instance's provider and address. /// diff --git a/crates/utils/src/isignatureutils.rs b/crates/utils/src/deploy/isignatureutils.rs similarity index 98% rename from crates/utils/src/isignatureutils.rs rename to crates/utils/src/deploy/isignatureutils.rs index c02a47c6..d88bb748 100644 --- a/crates/utils/src/isignatureutils.rs +++ b/crates/utils/src/deploy/isignatureutils.rs @@ -9,7 +9,12 @@ interface ISignatureUtils {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ISignatureUtils { use super::*; use alloy::sol_types as alloy_sol_types; diff --git a/crates/utils/src/islasher.rs b/crates/utils/src/deploy/islasher.rs similarity index 96% rename from crates/utils/src/islasher.rs rename to crates/utils/src/deploy/islasher.rs index 7f9f3bfb..fd8d776d 100644 --- a/crates/utils/src/islasher.rs +++ b/crates/utils/src/deploy/islasher.rs @@ -578,7 +578,12 @@ interface ISlasher { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ISlasher { use super::*; use alloy::sol_types as alloy_sol_types; @@ -605,13 +610,18 @@ pub mod ISlasher { /**```solidity struct MiddlewareTimes { uint32 stalestUpdateBlock; uint32 latestServeUntilBlock; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MiddlewareTimes { pub stalestUpdateBlock: u32, pub latestServeUntilBlock: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -801,13 +811,23 @@ pub mod ISlasher { ```solidity event FrozenStatusReset(address indexed previouslySlashedAddress); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -896,7 +916,12 @@ pub mod ISlasher { ```solidity event MiddlewareTimesAdded(address operator, uint256 index, uint32 stalestUpdateBlock, uint32 latestServeUntilBlock); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MiddlewareTimesAdded { #[allow(missing_docs)] @@ -908,7 +933,12 @@ pub mod ISlasher { #[allow(missing_docs)] pub latestServeUntilBlock: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1009,7 +1039,12 @@ pub mod ISlasher { ```solidity event OperatorFrozen(address indexed slashedOperator, address indexed slashingContract); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorFrozen { #[allow(missing_docs)] @@ -1017,7 +1052,12 @@ pub mod ISlasher { #[allow(missing_docs)] pub slashingContract: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1112,7 +1152,12 @@ pub mod ISlasher { ```solidity event OptedIntoSlashing(address indexed operator, address indexed contractAddress); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OptedIntoSlashing { #[allow(missing_docs)] @@ -1120,7 +1165,12 @@ pub mod ISlasher { #[allow(missing_docs)] pub contractAddress: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1215,7 +1265,12 @@ pub mod ISlasher { ```solidity event SlashingAbilityRevoked(address indexed operator, address indexed contractAddress, uint32 contractCanSlashOperatorUntilBlock); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct SlashingAbilityRevoked { #[allow(missing_docs)] @@ -1225,7 +1280,12 @@ pub mod ISlasher { #[allow(missing_docs)] pub contractCanSlashOperatorUntilBlock: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1325,19 +1385,24 @@ pub mod ISlasher { ```solidity function canSlash(address toBeSlashed, address slashingContract) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct canSlashReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1452,7 +1517,7 @@ pub mod ISlasher { ```solidity function canWithdraw(address operator, uint32 withdrawalStartBlock, uint256 middlewareTimesIndex) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct canWithdrawCall { pub operator: alloy::sol_types::private::Address, @@ -1460,12 +1525,17 @@ pub mod ISlasher { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct canWithdrawReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1591,19 +1661,24 @@ pub mod ISlasher { ```solidity function contractCanSlashOperatorUntilBlock(address operator, address serviceContract) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct contractCanSlashOperatorUntilBlockReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1718,16 +1793,21 @@ pub mod ISlasher { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1823,16 +1903,21 @@ pub mod ISlasher { ```solidity function freezeOperator(address toBeFrozen) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct freezeOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1934,19 +2019,24 @@ pub mod ISlasher { ```solidity function getCorrectValueForInsertAfter(address operator, uint32 updateBlock) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCorrectValueForInsertAfterReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2058,19 +2148,24 @@ pub mod ISlasher { ```solidity function getMiddlewareTimesIndexServeUntilBlock(address operator, uint32 index) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getMiddlewareTimesIndexServeUntilBlockReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2187,19 +2282,24 @@ pub mod ISlasher { ```solidity function getMiddlewareTimesIndexStalestUpdateBlock(address operator, uint32 index) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getMiddlewareTimesIndexStalestUpdateBlockReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2320,18 +2420,23 @@ pub mod ISlasher { ```solidity function isFrozen(address staker) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isFrozenReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2431,19 +2536,24 @@ pub mod ISlasher { ```solidity function latestUpdateBlock(address operator, address serviceContract) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct latestUpdateBlockReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2558,18 +2668,23 @@ pub mod ISlasher { ```solidity function middlewareTimesLength(address operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct middlewareTimesLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2669,19 +2784,24 @@ pub mod ISlasher { ```solidity function operatorToMiddlewareTimes(address operator, uint256 arrayIndex) external view returns (MiddlewareTimes memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorToMiddlewareTimesReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2797,21 +2917,26 @@ pub mod ISlasher { ```solidity function operatorWhitelistedContractsLinkedListEntry(address operator, address node) external view returns (bool, uint256, uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2951,18 +3076,23 @@ pub mod ISlasher { ```solidity function operatorWhitelistedContractsLinkedListSize(address operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorWhitelistedContractsLinkedListSizeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3070,16 +3200,21 @@ pub mod ISlasher { ```solidity function optIntoSlashing(address contractAddress) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct optIntoSlashingReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3181,17 +3316,22 @@ pub mod ISlasher { ```solidity function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct recordFirstStakeUpdateReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3303,17 +3443,22 @@ pub mod ISlasher { ```solidity function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct recordLastStakeUpdateAndRevokeSlashingAbilityReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3434,7 +3579,7 @@ pub mod ISlasher { ```solidity function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 insertAfter) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct recordStakeUpdateCall { pub operator: alloy::sol_types::private::Address, @@ -3443,10 +3588,15 @@ pub mod ISlasher { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct recordStakeUpdateReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3580,16 +3730,21 @@ pub mod ISlasher { ```solidity function resetFrozenStatus(address[] memory frozenAddresses) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct resetFrozenStatusReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3694,16 +3849,21 @@ pub mod ISlasher { ```solidity function strategyManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerCall {} ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/isocketupdater.rs b/crates/utils/src/deploy/isocketupdater.rs similarity index 97% rename from crates/utils/src/isocketupdater.rs rename to crates/utils/src/deploy/isocketupdater.rs index f0cc1f6f..286ad736 100644 --- a/crates/utils/src/isocketupdater.rs +++ b/crates/utils/src/deploy/isocketupdater.rs @@ -46,7 +46,12 @@ interface ISocketUpdater { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ISocketUpdater { use super::*; use alloy::sol_types as alloy_sol_types; @@ -74,7 +79,12 @@ pub mod ISocketUpdater { ```solidity event OperatorSocketUpdate(bytes32 indexed operatorId, string socket); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSocketUpdate { #[allow(missing_docs)] @@ -82,7 +92,12 @@ pub mod ISocketUpdater { #[allow(missing_docs)] pub socket: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -173,16 +188,21 @@ pub mod ISocketUpdater { ```solidity function updateSocket(string memory socket) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateSocketReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/istakeregistry.rs b/crates/utils/src/deploy/istakeregistry.rs similarity index 96% rename from crates/utils/src/istakeregistry.rs rename to crates/utils/src/deploy/istakeregistry.rs index 0e57bae2..2945975c 100644 --- a/crates/utils/src/istakeregistry.rs +++ b/crates/utils/src/deploy/istakeregistry.rs @@ -874,7 +874,12 @@ interface IStakeRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IStakeRegistry { use super::*; use alloy::sol_types as alloy_sol_types; @@ -901,14 +906,19 @@ pub mod IStakeRegistry { /**```solidity struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1123,13 +1133,18 @@ pub mod IStakeRegistry { /**```solidity struct StrategyParams { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1314,7 +1329,12 @@ pub mod IStakeRegistry { ```solidity event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinimumStakeForQuorumUpdated { #[allow(missing_docs)] @@ -1322,7 +1342,12 @@ pub mod IStakeRegistry { #[allow(missing_docs)] pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1413,7 +1438,12 @@ pub mod IStakeRegistry { ```solidity event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorStakeUpdate { #[allow(missing_docs)] @@ -1423,7 +1453,12 @@ pub mod IStakeRegistry { #[allow(missing_docs)] pub stake: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1521,13 +1556,23 @@ pub mod IStakeRegistry { ```solidity event QuorumCreated(uint8 indexed quorumNumber); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumCreated { #[allow(missing_docs)] pub quorumNumber: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1613,7 +1658,12 @@ pub mod IStakeRegistry { ```solidity event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyAddedToQuorum { #[allow(missing_docs)] @@ -1621,7 +1671,12 @@ pub mod IStakeRegistry { #[allow(missing_docs)] pub strategy: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1712,7 +1767,12 @@ pub mod IStakeRegistry { ```solidity event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyMultiplierUpdated { #[allow(missing_docs)] @@ -1722,7 +1782,12 @@ pub mod IStakeRegistry { #[allow(missing_docs)] pub multiplier: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1820,7 +1885,12 @@ pub mod IStakeRegistry { ```solidity event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyRemovedFromQuorum { #[allow(missing_docs)] @@ -1828,7 +1898,12 @@ pub mod IStakeRegistry { #[allow(missing_docs)] pub strategy: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1919,16 +1994,21 @@ pub mod IStakeRegistry { ```solidity function WEIGHTING_DIVISOR() external pure returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2024,7 +2104,7 @@ pub mod IStakeRegistry { ```solidity function addStrategies(uint8 quorumNumber, StrategyParams[] memory strategyParams) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesCall { pub quorumNumber: u8, @@ -2032,10 +2112,15 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2152,16 +2237,21 @@ pub mod IStakeRegistry { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2257,17 +2347,22 @@ pub mod IStakeRegistry { ```solidity function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2382,19 +2477,24 @@ pub mod IStakeRegistry { ```solidity function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2506,18 +2606,23 @@ pub mod IStakeRegistry { ```solidity function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentTotalStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2619,19 +2724,24 @@ pub mod IStakeRegistry { ```solidity function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestStakeUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2743,7 +2853,7 @@ pub mod IStakeRegistry { ```solidity function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -2751,12 +2861,17 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2874,7 +2989,7 @@ pub mod IStakeRegistry { ```solidity function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberAndIndexCall { pub quorumNumber: u8, @@ -2883,12 +2998,17 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberAndIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3023,20 +3143,25 @@ pub mod IStakeRegistry { ```solidity function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (StakeUpdate[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeHistoryReturn { pub _0: alloy::sol_types::private::Vec<::RustType>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3152,7 +3277,7 @@ pub mod IStakeRegistry { ```solidity function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateAtIndexCall { pub quorumNumber: u8, @@ -3160,12 +3285,17 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3287,7 +3417,7 @@ pub mod IStakeRegistry { ```solidity function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateIndexAtBlockNumberCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -3295,12 +3425,17 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateIndexAtBlockNumberReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3419,7 +3554,7 @@ pub mod IStakeRegistry { ```solidity function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeAtBlockNumberFromIndexCall { pub quorumNumber: u8, @@ -3427,12 +3562,17 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeAtBlockNumberFromIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3555,18 +3695,23 @@ pub mod IStakeRegistry { ```solidity function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeHistoryLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3668,19 +3813,24 @@ pub mod IStakeRegistry { ```solidity function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3794,19 +3944,24 @@ pub mod IStakeRegistry { ```solidity function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3919,7 +4074,7 @@ pub mod IStakeRegistry { ```solidity function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, StrategyParams[] memory strategyParams) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumCall { pub quorumNumber: u8, @@ -3928,10 +4083,15 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4055,18 +4215,23 @@ pub mod IStakeRegistry { ```solidity function minimumStakeForQuorum(uint8 quorumNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumStakeForQuorumReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4168,7 +4333,7 @@ pub mod IStakeRegistry { ```solidity function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct modifyStrategyParamsCall { pub quorumNumber: u8, @@ -4178,10 +4343,15 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct modifyStrategyParamsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4309,7 +4479,7 @@ pub mod IStakeRegistry { ```solidity function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorCall { pub operator: alloy::sol_types::private::Address, @@ -4317,13 +4487,18 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4457,16 +4632,21 @@ pub mod IStakeRegistry { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4562,7 +4742,7 @@ pub mod IStakeRegistry { ```solidity function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeStrategiesCall { pub quorumNumber: u8, @@ -4570,10 +4750,15 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeStrategiesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4690,19 +4875,24 @@ pub mod IStakeRegistry { ```solidity function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (StrategyParams memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyParamsByIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4816,18 +5006,23 @@ pub mod IStakeRegistry { ```solidity function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyParamsLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4929,7 +5124,7 @@ pub mod IStakeRegistry { ```solidity function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorStakeCall { pub operator: alloy::sol_types::private::Address, @@ -4937,12 +5132,17 @@ pub mod IStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5064,19 +5264,24 @@ pub mod IStakeRegistry { ```solidity function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct weightOfOperatorForQuorumReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/istrategy.rs b/crates/utils/src/deploy/istrategy.rs similarity index 83% rename from crates/utils/src/istrategy.rs rename to crates/utils/src/deploy/istrategy.rs index 9e7d2201..b66bbf2a 100644 --- a/crates/utils/src/istrategy.rs +++ b/crates/utils/src/deploy/istrategy.rs @@ -3,6 +3,9 @@ Generated by the following Solidity interface... ```solidity interface IStrategy { + event ExchangeRateEmitted(uint256 rate); + event StrategyTokenSet(address token, uint8 decimals); + function deposit(address token, uint256 amount) external returns (uint256); function explanation() external view returns (string memory); function shares(address user) external view returns (uint256); @@ -239,10 +242,47 @@ interface IStrategy { ], "outputs": [], "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "ExchangeRateEmitted", + "inputs": [ + { + "name": "rate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyTokenSet", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "decimals", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IStrategy { use super::*; use alloy::sol_types as alloy_sol_types; @@ -266,23 +306,235 @@ pub mod IStrategy { pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( b"", ); + /**Event with signature `ExchangeRateEmitted(uint256)` and selector `0xd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be8`. + ```solidity + event ExchangeRateEmitted(uint256 rate); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ExchangeRateEmitted { + #[allow(missing_docs)] + pub rate: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ExchangeRateEmitted { + 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 = "ExchangeRateEmitted(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { rate: 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.rate, + ), + ) + } + #[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 ExchangeRateEmitted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ExchangeRateEmitted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ExchangeRateEmitted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyTokenSet(address,uint8)` and selector `0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507`. + ```solidity + event StrategyTokenSet(address token, uint8 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct StrategyTokenSet { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub decimals: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyTokenSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + 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 = "StrategyTokenSet(address,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 28u8, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, + 199u8, 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, + 50u8, 122u8, 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + token: data.0, + decimals: 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.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 StrategyTokenSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyTokenSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyTokenSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -397,16 +649,21 @@ pub mod IStrategy { ```solidity function explanation() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct explanationCall {} ///Container type for the return parameters of the [`explanation()`](explanationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct explanationReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -502,18 +759,23 @@ pub mod IStrategy { ```solidity function shares(address user) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -613,18 +875,23 @@ pub mod IStrategy { ```solidity function sharesToUnderlying(uint256 amountShares) external returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesToUnderlyingReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -726,18 +993,23 @@ pub mod IStrategy { ```solidity function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesToUnderlyingViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -839,16 +1111,21 @@ pub mod IStrategy { ```solidity function totalShares() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSharesCall {} ///Container type for the return parameters of the [`totalShares()`](totalSharesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -944,18 +1221,23 @@ pub mod IStrategy { ```solidity function underlyingToShares(uint256 amountUnderlying) external returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingToSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1057,18 +1339,23 @@ pub mod IStrategy { ```solidity function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingToSharesViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1170,16 +1457,21 @@ pub mod IStrategy { ```solidity function underlyingToken() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingTokenCall {} ///Container type for the return parameters of the [`underlyingToken()`](underlyingTokenCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingTokenReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1275,18 +1567,23 @@ pub mod IStrategy { ```solidity function userUnderlying(address user) external returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct userUnderlyingReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1386,18 +1683,23 @@ pub mod IStrategy { ```solidity function userUnderlyingView(address user) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct userUnderlyingViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1497,7 +1799,7 @@ pub mod IStrategy { ```solidity function withdraw(address recipient, address token, uint256 amountShares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawCall { pub recipient: alloy::sol_types::private::Address, @@ -1505,10 +1807,15 @@ pub mod IStrategy { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1954,6 +2261,89 @@ pub mod IStrategy { } } } + ///Container for all the [`IStrategy`](self) events. + pub enum IStrategyEvents { + ExchangeRateEmitted(ExchangeRateEmitted), + StrategyTokenSet(StrategyTokenSet), + } + #[automatically_derived] + impl IStrategyEvents { + /// 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, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, 199u8, + 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, 50u8, 122u8, + 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ], + [ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IStrategyEvents { + const NAME: &'static str = "IStrategyEvents"; + 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::ExchangeRateEmitted) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyTokenSet) + } + _ => 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 IStrategyEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyTokenSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyTokenSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`IStrategy`](self) contract instance. @@ -2220,5 +2610,15 @@ pub mod IStrategy { ) -> alloy_contract::Event { alloy_contract::Event::new_sol(&self.provider, &self.address) } + ///Creates a new event filter for the [`ExchangeRateEmitted`] event. + pub fn ExchangeRateEmitted_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyTokenSet`] event. + pub fn StrategyTokenSet_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } } } diff --git a/crates/utils/src/istrategymanager.rs b/crates/utils/src/deploy/istrategymanager.rs similarity index 85% rename from crates/utils/src/istrategymanager.rs rename to crates/utils/src/deploy/istrategymanager.rs index 693df865..33406b57 100644 --- a/crates/utils/src/istrategymanager.rs +++ b/crates/utils/src/deploy/istrategymanager.rs @@ -14,10 +14,13 @@ interface IStrategyManager { 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 removeShares(address staker, address strategy, uint256 shares) external; function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external; + function setStrategyWhitelister(address newStrategyWhitelister) external; + function setThirdPartyTransfersForbidden(address strategy, bool value) 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); @@ -163,6 +166,19 @@ interface IStrategyManager { ], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "domainSeparator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "eigenPodManager", @@ -236,6 +252,37 @@ interface IStrategyManager { "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", @@ -468,7 +515,12 @@ interface IStrategyManager { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IStrategyManager { use super::*; use alloy::sol_types as alloy_sol_types; @@ -496,7 +548,12 @@ pub mod IStrategyManager { ```solidity event Deposit(address staker, address token, address strategy, uint256 shares); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Deposit { #[allow(missing_docs)] @@ -508,7 +565,12 @@ pub mod IStrategyManager { #[allow(missing_docs)] pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -609,13 +671,23 @@ pub mod IStrategyManager { ```solidity event StrategyAddedToDepositWhitelist(address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -697,13 +769,23 @@ pub mod IStrategyManager { ```solidity event StrategyRemovedFromDepositWhitelist(address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -787,7 +869,12 @@ pub mod IStrategyManager { ```solidity event StrategyWhitelisterChanged(address previousAddress, address newAddress); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyWhitelisterChanged { #[allow(missing_docs)] @@ -795,7 +882,12 @@ pub mod IStrategyManager { #[allow(missing_docs)] pub newAddress: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -886,7 +978,12 @@ pub mod IStrategyManager { ```solidity event UpdatedThirdPartyTransfersForbidden(address strategy, bool value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UpdatedThirdPartyTransfersForbidden { #[allow(missing_docs)] @@ -894,7 +991,12 @@ pub mod IStrategyManager { #[allow(missing_docs)] pub value: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -987,7 +1089,7 @@ pub mod IStrategyManager { ```solidity function addShares(address staker, address token, address strategy, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addSharesCall { pub staker: alloy::sol_types::private::Address, @@ -996,10 +1098,15 @@ pub mod IStrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addSharesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1128,7 +1235,7 @@ pub mod IStrategyManager { ```solidity function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist, bool[] memory thirdPartyTransfersForbiddenValues) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesToDepositWhitelistCall { pub strategiesToWhitelist: @@ -1136,10 +1243,15 @@ pub mod IStrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesToDepositWhitelistReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1261,16 +1373,21 @@ pub mod IStrategyManager { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1366,7 +1483,7 @@ pub mod IStrategyManager { ```solidity function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 shares); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositIntoStrategyCall { pub strategy: alloy::sol_types::private::Address, @@ -1374,12 +1491,17 @@ pub mod IStrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositIntoStrategyReturn { pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1501,7 +1623,7 @@ pub mod IStrategyManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositIntoStrategyWithSignatureCall { pub strategy: alloy::sol_types::private::Address, @@ -1512,12 +1634,17 @@ pub mod IStrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositIntoStrategyWithSignatureReturn { pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1664,20 +1791,135 @@ pub mod IStrategyManager { } } }; + /**Function with signature `domainSeparator()` and selector `0xf698da25`. + ```solidity + function domainSeparator() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eigenPodManagerCall {} ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eigenPodManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1773,20 +2015,25 @@ pub mod IStrategyManager { ```solidity function getDeposits(address staker) external view returns (address[] memory, uint256[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1900,7 +2147,7 @@ pub mod IStrategyManager { ```solidity function removeShares(address staker, address strategy, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeSharesCall { pub staker: alloy::sol_types::private::Address, @@ -1908,10 +2155,15 @@ pub mod IStrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeSharesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2033,17 +2285,22 @@ pub mod IStrategyManager { ```solidity function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeStrategiesFromDepositWhitelistReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2144,20 +2401,268 @@ pub mod IStrategyManager { } } }; + /**Function with signature `setStrategyWhitelister(address)` and selector `0xc6656702`. + ```solidity + function setStrategyWhitelister(address newStrategyWhitelister) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWhitelisterReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setThirdPartyTransfersForbiddenReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct slasherCall {} ///Container type for the return parameters of the [`slasher()`](slasherCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct slasherReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2253,18 +2758,23 @@ pub mod IStrategyManager { ```solidity function stakerStrategyListLength(address staker) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerStrategyListLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2364,19 +2874,24 @@ pub mod IStrategyManager { ```solidity function stakerStrategyShares(address user, address strategy) external view returns (uint256 shares); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerStrategySharesReturn { pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2491,18 +3006,23 @@ pub mod IStrategyManager { ```solidity function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyIsWhitelistedForDepositReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2602,16 +3122,21 @@ pub mod IStrategyManager { ```solidity function strategyWhitelister() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyWhitelisterCall {} ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyWhitelisterReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2707,18 +3232,23 @@ pub mod IStrategyManager { ```solidity function thirdPartyTransfersForbidden(address strategy) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct thirdPartyTransfersForbiddenReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2818,7 +3348,7 @@ pub mod IStrategyManager { ```solidity function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawSharesAsTokensCall { pub recipient: alloy::sol_types::private::Address, @@ -2827,10 +3357,15 @@ pub mod IStrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawSharesAsTokensReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2963,10 +3498,13 @@ pub mod IStrategyManager { delegation(delegationCall), depositIntoStrategy(depositIntoStrategyCall), depositIntoStrategyWithSignature(depositIntoStrategyWithSignatureCall), + domainSeparator(domainSeparatorCall), eigenPodManager(eigenPodManagerCall), getDeposits(getDepositsCall), removeShares(removeSharesCall), removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall), + setStrategyWhitelister(setStrategyWhitelisterCall), + setThirdPartyTransfersForbidden(setThirdPartyTransfersForbiddenCall), slasher(slasherCall), stakerStrategyListLength(stakerStrategyListLengthCall), stakerStrategyShares(stakerStrategySharesCall), @@ -2986,6 +3524,7 @@ pub mod IStrategyManager { pub const SELECTORS: &'static [[u8; 4usize]] = &[ [50u8, 232u8, 154u8, 206u8], [70u8, 101u8, 188u8, 218u8], + [78u8, 90u8, 66u8, 99u8], [102u8, 60u8, 29u8, 228u8], [122u8, 126u8, 13u8, 146u8], [139u8, 138u8, 172u8, 60u8], @@ -2997,16 +3536,18 @@ pub mod IStrategyManager { [181u8, 216u8, 181u8, 184u8], [196u8, 98u8, 62u8, 161u8], [198u8, 8u8, 199u8, 243u8], + [198u8, 101u8, 103u8, 2u8], [223u8, 91u8, 53u8, 71u8], [223u8, 92u8, 247u8, 35u8], [231u8, 160u8, 80u8, 170u8], + [246u8, 152u8, 218u8, 37u8], ]; } #[automatically_derived] impl alloy_sol_types::SolInterface for IStrategyManagerCalls { const NAME: &'static str = "IStrategyManagerCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 16usize; + const COUNT: usize = 19usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -3021,6 +3562,9 @@ pub mod IStrategyManager { Self::depositIntoStrategyWithSignature(_) => { ::SELECTOR } + Self::domainSeparator(_) => { + ::SELECTOR + } Self::eigenPodManager(_) => { ::SELECTOR } @@ -3029,6 +3573,12 @@ pub mod IStrategyManager { Self::removeStrategiesFromDepositWhitelist(_) => { ::SELECTOR } + Self::setStrategyWhitelister(_) => { + ::SELECTOR + } + Self::setThirdPartyTransfersForbidden(_) => { + ::SELECTOR + } Self::slasher(_) => ::SELECTOR, Self::stakerStrategyListLength(_) => { ::SELECTOR @@ -3095,6 +3645,19 @@ pub mod IStrategyManager { } eigenPodManager }, + { + fn setThirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStrategyManagerCalls::setThirdPartyTransfersForbidden) + } + setThirdPartyTransfersForbidden + }, { fn strategyIsWhitelistedForDeposit( data: &[u8], @@ -3228,6 +3791,18 @@ pub mod IStrategyManager { } withdrawSharesAsTokens }, + { + fn setStrategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::setStrategyWhitelister) + } + setStrategyWhitelister + }, { fn addStrategiesToDepositWhitelist( data: &[u8], @@ -3263,6 +3838,18 @@ pub mod IStrategyManager { } depositIntoStrategy }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::domainSeparator) + } + domainSeparator + }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { return Err(alloy_sol_types::Error::unknown_selector( @@ -3296,6 +3883,11 @@ pub mod IStrategyManager { inner, ) } + Self::domainSeparator(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::eigenPodManager(inner) => { ::abi_encoded_size( inner, @@ -3316,6 +3908,16 @@ pub mod IStrategyManager { inner, ) } + Self::setStrategyWhitelister(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setThirdPartyTransfersForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::slasher(inner) => { ::abi_encoded_size(inner) } @@ -3384,6 +3986,12 @@ pub mod IStrategyManager { out, ) } + Self::domainSeparator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::eigenPodManager(inner) => { ::abi_encode_raw( inner, @@ -3408,6 +4016,18 @@ pub mod IStrategyManager { 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) } @@ -3834,6 +4454,12 @@ pub mod IStrategyManager { 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, @@ -3872,6 +4498,23 @@ pub mod IStrategyManager { strategiesToRemoveFromWhitelist, }) } + ///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 {}) diff --git a/crates/utils/src/deploy/merkle.rs b/crates/utils/src/deploy/merkle.rs new file mode 100644 index 00000000..d7b4ea38 --- /dev/null +++ b/crates/utils/src/deploy/merkle.rs @@ -0,0 +1,223 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod Merkle { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212201dd0aa7eb3c21ba253a9ade80cbdc851aa39c56ab04c48a82b79026102230a9164736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 \x1D\xD0\xAA~\xB3\xC2\x1B\xA2S\xA9\xAD\xE8\x0C\xBD\xC8Q\xAA9\xC5j\xB0LH\xA8+y\x02a\x02#\n\x91dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212201dd0aa7eb3c21ba253a9ade80cbdc851aa39c56ab04c48a82b79026102230a9164736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 \x1D\xD0\xAA~\xB3\xC2\x1B\xA2S\xA9\xAD\xE8\x0C\xBD\xC8Q\xAA9\xC5j\xB0LH\xA8+y\x02a\x02#\n\x91dsolcC\0\x08\x1B\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/deploy/mockavscontractsparser.rs similarity index 90% rename from crates/utils/src/mockavscontractsparser.rs rename to crates/utils/src/deploy/mockavscontractsparser.rs index a41c6907..0e4651bd 100644 --- a/crates/utils/src/mockavscontractsparser.rs +++ b/crates/utils/src/deploy/mockavscontractsparser.rs @@ -25,44 +25,54 @@ interface MockAvsContractsParser { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod MockAvsContractsParser { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220c65119aa8cc832d79ddc4ea20ab4e8f49f2a10485cfd987d42c351ca6cf9614a64736f6c634300080c0033 + ///0x6080604052600c805462ff00ff191662010001179055348015601f575f5ffd5b50608680602b5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063f8ccbf4714602a575b5f5ffd5b600c54603c9062010000900460ff1681565b604051901515815260200160405180910390f3fea264697066735822122094e042665602c257b81330da648ead9e86e400a3176872962d51e65f0f7129f464736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15`\x1FW__\xFD[P`\x86\x80`+_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`*W[__\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 \x94\xE0BfV\x02\xC2W\xB8\x130\xDAd\x8E\xAD\x9E\x86\xE4\0\xA3\x17hr\x96-Q\xE6_\x0Fq)\xF4dsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220c65119aa8cc832d79ddc4ea20ab4e8f49f2a10485cfd987d42c351ca6cf9614a64736f6c634300080c0033 + ///0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063f8ccbf4714602a575b5f5ffd5b600c54603c9062010000900460ff1681565b604051901515815260200160405180910390f3fea264697066735822122094e042665602c257b81330da648ead9e86e400a3176872962d51e65f0f7129f464736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R4\x80\x15`\x0EW__\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`*W[__\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 \x94\xE0BfV\x02\xC2W\xB8\x130\xDAd\x8E\xAD\x9E\x86\xE4\0\xA3\x17hr\x96-Q\xE6_\x0Fq)\xF4dsolcC\0\x08\x1B\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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/mockavsservicemanager.rs b/crates/utils/src/deploy/mockavsservicemanager.rs similarity index 53% rename from crates/utils/src/mockavsservicemanager.rs rename to crates/utils/src/deploy/mockavsservicemanager.rs index 30681c1c..a347fe34 100644 --- a/crates/utils/src/mockavsservicemanager.rs +++ b/crates/utils/src/deploy/mockavsservicemanager.rs @@ -7,20 +7,30 @@ library BN254 { struct G2Point { uint256[2] X; uint256[2] Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -196,13 +206,18 @@ pub mod BN254 { /**```solidity struct G2Point { uint256[2] X; uint256[2] Y; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -528,14 +543,19 @@ library IBLSSignatureChecker { struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NonSignerStakesAndSignature { pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec, @@ -550,7 +570,12 @@ pub mod IBLSSignatureChecker { pub nonSignerStakeIndices: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -890,7 +915,7 @@ pub mod IBLSSignatureChecker { /**```solidity struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct QuorumStakeTotals { pub signedStakeForQuorum: @@ -898,7 +923,12 @@ pub mod IBLSSignatureChecker { pub totalStakeForQuorum: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1220,634 +1250,36 @@ pub mod IBLSSignatureChecker { ///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)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2209,20 +1641,6 @@ library IBLSSignatureChecker { } } -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; @@ -2234,7 +1652,6 @@ library ISignatureUtils { 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); @@ -2242,7 +1659,6 @@ interface MockAvsServiceManager { 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); @@ -2252,8 +1668,6 @@ interface MockAvsServiceManager { 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); @@ -2454,58 +1868,6 @@ interface MockAvsServiceManager { ], "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", @@ -2645,32 +2007,6 @@ interface MockAvsServiceManager { "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", @@ -2843,25 +2179,6 @@ interface MockAvsServiceManager { ], "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", @@ -2877,41 +2194,56 @@ interface MockAvsServiceManager { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod MockAvsServiceManager { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6101806040523480156200001257600080fd5b50604051620044ed380380620044ed83398101604081905262000035916200033f565b82828285866001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000393565b6001600160a01b0380851660805280841660a05280831660c052811660e052620000c762000264565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b919062000393565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000393565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c919062000393565b6001600160a01b03166101605250620003ba92505050565b600054610100900460ff1615620002d15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000324576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200033c57600080fd5b50565b6000806000606084860312156200035557600080fd5b8351620003628162000326565b6020850151909350620003758162000326565b6040850151909250620003888162000326565b809150509250925092565b600060208284031215620003a657600080fd5b8151620003b38162000326565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051614025620004c86000396000818161030e01526112020152600081816101b801526113e40152600081816101f7015281816115ba015261177c015260008181610244015281816109e001528181610ecd01528181611065015261129f0152600081816106f501528181610850015281816108e701528181611e0801528181611f8b015261202a015260008181610520015281816105af0152818161062f01528181611a5001528181611b1c01528181611d460152611ee60152600081816122cb01528181612387015261247301526000818161021b01528181611aa401528181611b780152611bf701526140256000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063c4d66de81161007c578063c4d66de8146102f6578063df5cf72314610309578063e481af9d14610330578063f2fde38b14610338578063fc299dee1461034b578063fce36c7d1461035e57600080fd5b80638da5cb5b1461028f5780639926ee7d146102a0578063a364f4da146102b3578063a98fb355146102c6578063b98d0908146102d957600080fd5b806368304835116100ff57806368304835146101f25780636b3aa72e146102195780636d14a9871461023f5780636efb463614610266578063715018a61461028757600080fd5b8063171f1d5b1461013c57806333cfb7b71461016b5780633bc28c8c1461018b578063416c7e5e146101a05780635df45946146101b3575b600080fd5b61014f61014a3660046133ba565b610371565b6040805192151583529015156020830152015b60405180910390f35b61017e610179366004613420565b6104fb565b604051610162919061343d565b61019e610199366004613420565b6109ca565b005b61019e6101ae366004613498565b6109de565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610162565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101da565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61027961027436600461376b565b610b1a565b60405161016292919061385e565b61019e611a31565b6033546001600160a01b03166101da565b61019e6102ae3660046138fe565b611a45565b61019e6102c1366004613420565b611b11565b61019e6102d43660046139a8565b611bd8565b6097546102e69060ff1681565b6040519015158152602001610162565b61019e610304366004613420565b611c2c565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61017e611d40565b61019e610346366004613420565b612109565b6065546101da906001600160a01b031681565b61019e61036c3660046139f8565b61217f565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106103b9576103b9613a6c565b60200201518951600160200201518a602001516000600281106103de576103de613a6c565b60200201518b602001516001600281106103fa576103fa613a6c565b602090810291909101518c518d8301516040516104579a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61047a9190613a82565b90506104ed61049361048c88846124aa565b8690612541565b61049b6125d5565b6104e36104d4856104ce604080518082018252600080825260209182015281518083019092526001825260029082015290565b906124aa565b6104dd8c612695565b90612541565b886201d4c0612725565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190613aa4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156105f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613abd565b90506001600160c01b03811615806106b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190613ae6565b60ff16155b156106d057505060408051600081526020810190915292915050565b60006106e4826001600160c01b0316612949565b90506000805b82518110156107ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061073457610734613a6c565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c9190613aa4565b6107a69083613b1f565b9150806107b281613b37565b9150506106ea565b506000816001600160401b038111156107d5576107d5613247565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b5090506000805b84518110156109bd57600085828151811061082257610822613a6c565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190613aa4565b905060005b818110156109a7576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613b67565b6000015186868151811061096f5761096f613a6c565b6001600160a01b03909216602092830291909101909101528461099181613b37565b955050808061099f90613b37565b9150506108c0565b50505080806109b590613b37565b915050610805565b5090979650505050505050565b6109d2612a0b565b6109db81612a65565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190613ba8565b6001600160a01b0316336001600160a01b031614610b115760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6109db81612ace565b6040805180820190915260608082526020820152600084610b915760405162461bcd60e51b81526020600482015260376024820152600080516020613fd083398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610b08565b60408301515185148015610ba9575060a08301515185145b8015610bb9575060c08301515185145b8015610bc9575060e08301515185145b610c335760405162461bcd60e51b81526020600482015260416024820152600080516020613fd083398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610b08565b82515160208401515114610cab5760405162461bcd60e51b815260206004820152604460248201819052600080516020613fd0833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610b08565b4363ffffffff168463ffffffff1610610d1a5760405162461bcd60e51b815260206004820152603c6024820152600080516020613fd083398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610b08565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610d5b57610d5b613247565b604051908082528060200260200182016040528015610d84578160200160208202803683370190505b506020820152866001600160401b03811115610da257610da2613247565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610dff57610dff613247565b604051908082528060200260200182016040528015610e28578160200160208202803683370190505b5081526020860151516001600160401b03811115610e4857610e48613247565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b5081602001819052506000610f438a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ae6565b612b15565b905060005b8760200151518110156111de57610f8d88602001518281518110610f6e57610f6e613a6c565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110610fa357610fa3613a6c565b60209081029190910101528015611063576020830151610fc4600183613bc5565b81518110610fd457610fd4613a6c565b602002602001015160001c83602001518281518110610ff557610ff5613a6c565b602002602001015160001c11611063576040805162461bcd60e51b8152602060048201526024810191909152600080516020613fd083398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106110a8576110a8613a6c565b60200260200101518b8b6000015185815181106110c7576110c7613a6c565b60200260200101516040518463ffffffff1660e01b81526004016111049392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613abd565b6001600160c01b03168360000151828151811061116457611164613a6c565b6020026020010181815250506111ca61048c61119e848660000151858151811061119057611190613a6c565b602002602001015116612ba8565b8a6020015184815181106111b4576111b4613a6c565b6020026020010151612bd390919063ffffffff16565b9450806111d681613b37565b915050610f48565b50506111e983612cb7565b60975490935060ff16600081611200576000611282565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613aa4565b905060005b8a8110156119005782156113e2578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106112de576112de613a6c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190613aa4565b61134c9190613b1f565b116113e25760405162461bcd60e51b81526020600482015260666024820152600080516020613fd083398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061142357611423613a6c565b9050013560f81c60f81b60f81c8c8c60a00151858151811061144757611447613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613bdc565b6001600160401b0319166114ea8a604001518381518110610f6e57610f6e613a6c565b67ffffffffffffffff1916146115865760405162461bcd60e51b81526020600482015260616024820152600080516020613fd083398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610b08565b6115b68960400151828151811061159f5761159f613a6c565b60200260200101518761254190919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106115f9576115f9613a6c565b9050013560f81c60f81b60f81c8c8c60c00151858151811061161d5761161d613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190613c07565b856020015182815181106116b3576116b3613a6c565b6001600160601b039092166020928302919091018201528501518051829081106116df576116df613a6c565b6020026020010151856000015182815181106116fd576116fd613a6c565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156118eb576117758660000151828151811061174757611747613a6c565b60200260200101518f8f8681811061176157611761613a6c565b600192013560f81c9290921c811614919050565b156118d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106117bb576117bb613a6c565b9050013560f81c60f81b60f81c8e896020015185815181106117df576117df613a6c565b60200260200101518f60e0015188815181106117fd576117fd613a6c565b6020026020010151878151811061181657611816613a6c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190613c07565b87518051859081106118b2576118b2613a6c565b602002602001018181516118c69190613c24565b6001600160601b03169052506001909101905b806118e381613b37565b915050611721565b505080806118f890613b37565b915050611287565b50505060008061191a8c868a606001518b60800151610371565b915091508161198b5760405162461bcd60e51b81526020600482015260436024820152600080516020613fd083398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610b08565b806119ec5760405162461bcd60e51b81526020600482015260396024820152600080516020613fd083398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610b08565b50506000878260200151604051602001611a07929190613c4c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611a39612a0b565b611a436000612d52565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610b0890613c94565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611adb9085908590600401613d59565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b595760405162461bcd60e51b8152600401610b0890613c94565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015611bbd57600080fd5b505af1158015611bd1573d6000803e3d6000fd5b5050505050565b611be0612a0b565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ba3908490600401613da4565b600054610100900460ff1615808015611c4c5750600054600160ff909116105b80611c665750303b158015611c66575060005460ff166001145b611cc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b08565b6000805460ff191660011790558015611cec576000805461ff0019166101001790555b611cf68283612da4565b8015611d3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613ae6565b60ff16905080611de457505060408051600081526020810190915290565b6000805b82811015611e9957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613aa4565b611e859083613b1f565b915080611e9181613b37565b915050611de8565b506000816001600160401b03811115611eb457611eb4613247565b604051908082528060200260200182016040528015611edd578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613ae6565b60ff168110156120ff57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190613aa4565b905060005b818110156120ea576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613b67565b600001518585815181106120b2576120b2613a6c565b6001600160a01b0390921660209283029190910190910152836120d481613b37565b94505080806120e290613b37565b915050612003565b505080806120f790613b37565b915050611ee4565b5090949350505050565b612111612a0b565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b6109db81612d52565b612187612e21565b60005b8181101561245b578282828181106121a4576121a4613a6c565b90506020028101906121b69190613dbe565b6121c7906040810190602001613420565b6001600160a01b03166323b872dd33308686868181106121e9576121e9613a6c565b90506020028101906121fb9190613dbe565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015612252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122769190613de9565b50600083838381811061228b5761228b613a6c565b905060200281019061229d9190613dbe565b6122ae906040810190602001613420565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613aa4565b905083838381811061235457612354613a6c565b90506020028101906123669190613dbe565b612377906040810190602001613420565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106123b9576123b9613a6c565b90506020028101906123cb9190613dbe565b604001356123d99190613b1f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613de9565b50508061245490613b37565b905061218a565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90611adb9085908590600401613e61565b60408051808201909152600080825260208201526124c661316d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156124f9576124fb565bfe5b50806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610b08565b505092915050565b604080518082019091526000808252602082015261255d61318b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156124f95750806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610b08565b6125dd6131a9565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806126c5600080516020613fb083398151915286613a82565b90505b6126d181612eb6565b9093509150600080516020613fb083398151915282830983141561270b576040805180820190915290815260208101919091529392505050565b600080516020613fb08339815191526001820890506126c8565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906127576131ce565b60005b600281101561291c576000612770826006613f6e565b905084826002811061278457612784613a6c565b60200201515183612796836000613b1f565b600c81106127a6576127a6613a6c565b60200201528482600281106127bd576127bd613a6c565b602002015160200151838260016127d49190613b1f565b600c81106127e4576127e4613a6c565b60200201528382600281106127fb576127fb613a6c565b602002015151518361280e836002613b1f565b600c811061281e5761281e613a6c565b602002015283826002811061283557612835613a6c565b602002015151600160200201518361284e836003613b1f565b600c811061285e5761285e613a6c565b602002015283826002811061287557612875613a6c565b60200201516020015160006002811061289057612890613a6c565b6020020151836128a1836004613b1f565b600c81106128b1576128b1613a6c565b60200201528382600281106128c8576128c8613a6c565b6020020151602001516001600281106128e3576128e3613a6c565b6020020151836128f4836005613b1f565b600c811061290457612904613a6c565b6020020152508061291481613b37565b91505061275a565b506129256131ed565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b606060008061295784612ba8565b61ffff166001600160401b0381111561297257612972613247565b6040519080825280601f01601f19166020018201604052801561299c576020820181803683370190505b5090506000805b8251821080156129b4575061010081105b156120ff576001811b9350858416156129fb578060f81b8383815181106129dd576129dd613a6c565b60200101906001600160f81b031916908160001a9053508160010191505b612a0481613b37565b90506129a3565b6033546001600160a01b03163314611a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b08565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b600080612b2184612f38565b9050808360ff166001901b11612b9f5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610b08565b90505b92915050565b6000805b8215612ba257612bbd600184613bc5565b9092169180612bcb81613f8d565b915050612bac565b60408051808201909152600080825260208201526102008261ffff1610612c2f5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610b08565b8161ffff1660011415612c43575081612ba2565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612cac57600161ffff871660ff83161c81161415612c8f57612c8c8484612541565b93505b612c998384612541565b92506201fffe600192831b169101612c5f565b509195945050505050565b60408051808201909152600080825260208201528151158015612cdc57506020820151155b15612cfa575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613fb08339815191528460200151612d2d9190613a82565b612d4590600080516020613fb0833981519152613bc5565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e0f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b08565b612e1882612d52565b611d3c81612a65565b6065546001600160a01b03163314611a435760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610b08565b60008080600080516020613fb08339815191526003600080516020613fb083398151915286600080516020613fb0833981519152888909090890506000612f2c827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613fb08339815191526130c5565b91959194509092505050565b600061010082511115612fc15760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610b08565b8151612fcf57506000919050565b60008083600081518110612fe557612fe5613a6c565b0160200151600160f89190911c81901b92505b84518110156130bc5784818151811061301357613013613a6c565b0160200151600160f89190911c1b91508282116130a85760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610b08565b918117916130b581613b37565b9050612ff8565b50909392505050565b6000806130d06131ed565b6130d861320b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156124f95750826131625760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610b08565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806131bc613229565b81526020016131c9613229565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561327f5761327f613247565b60405290565b60405161010081016001600160401b038111828210171561327f5761327f613247565b604051606081016001600160401b038111828210171561327f5761327f613247565b604051601f8201601f191681016001600160401b03811182821017156132f2576132f2613247565b604052919050565b60006040828403121561330c57600080fd5b61331461325d565b9050813581526020820135602082015292915050565b600082601f83011261333b57600080fd5b61334361325d565b80604084018581111561335557600080fd5b845b8181101561336f578035845260209384019301613357565b509095945050505050565b60006080828403121561338c57600080fd5b61339461325d565b90506133a0838361332a565b81526133af836040840161332a565b602082015292915050565b60008060008061012085870312156133d157600080fd5b843593506133e286602087016132fa565b92506133f1866060870161337a565b91506134008660e087016132fa565b905092959194509250565b6001600160a01b03811681146109db57600080fd5b60006020828403121561343257600080fd5b8135612b9f8161340b565b6020808252825182820181905260009190848201906040850190845b8181101561347e5783516001600160a01b031683529284019291840191600101613459565b50909695505050505050565b80151581146109db57600080fd5b6000602082840312156134aa57600080fd5b8135612b9f8161348a565b803563ffffffff81168114612d4d57600080fd5b60006001600160401b038211156134e2576134e2613247565b5060051b60200190565b600082601f8301126134fd57600080fd5b8135602061351261350d836134c9565b6132ca565b82815260059290921b8401810191818101908684111561353157600080fd5b8286015b8481101561355357613546816134b5565b8352918301918301613535565b509695505050505050565b600082601f83011261356f57600080fd5b8135602061357f61350d836134c9565b82815260069290921b8401810191818101908684111561359e57600080fd5b8286015b84811015613553576135b488826132fa565b8352918301916040016135a2565b600082601f8301126135d357600080fd5b813560206135e361350d836134c9565b82815260059290921b8401810191818101908684111561360257600080fd5b8286015b848110156135535780356001600160401b038111156136255760008081fd5b6136338986838b01016134ec565b845250918301918301613606565b6000610180828403121561365457600080fd5b61365c613285565b905081356001600160401b038082111561367557600080fd5b613681858386016134ec565b8352602084013591508082111561369757600080fd5b6136a38583860161355e565b602084015260408401359150808211156136bc57600080fd5b6136c88583860161355e565b60408401526136da856060860161337a565b60608401526136ec8560e086016132fa565b608084015261012084013591508082111561370657600080fd5b613712858386016134ec565b60a084015261014084013591508082111561372c57600080fd5b613738858386016134ec565b60c084015261016084013591508082111561375257600080fd5b5061375f848285016135c2565b60e08301525092915050565b60008060008060006080868803121561378357600080fd5b8535945060208601356001600160401b03808211156137a157600080fd5b818801915088601f8301126137b557600080fd5b8135818111156137c457600080fd5b8960208285010111156137d657600080fd5b60208301965094506137ea604089016134b5565b9350606088013591508082111561380057600080fd5b5061380d88828901613641565b9150509295509295909350565b600081518084526020808501945080840160005b838110156138535781516001600160601b03168752958201959082019060010161382e565b509495945050505050565b6040815260008351604080840152613879608084018261381a565b90506020850151603f19848303016060850152613896828261381a565b925050508260208301529392505050565b60006001600160401b038311156138c0576138c0613247565b6138d3601f8401601f19166020016132ca565b90508281528383830111156138e757600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561391157600080fd5b823561391c8161340b565b915060208301356001600160401b038082111561393857600080fd5b908401906060828703121561394c57600080fd5b6139546132a8565b82358281111561396357600080fd5b83019150601f8201871361397657600080fd5b613985878335602085016138a7565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156139ba57600080fd5b81356001600160401b038111156139d057600080fd5b8201601f810184136139e157600080fd5b6139f0848235602084016138a7565b949350505050565b60008060208385031215613a0b57600080fd5b82356001600160401b0380821115613a2257600080fd5b818501915085601f830112613a3657600080fd5b813581811115613a4557600080fd5b8660208260051b8501011115613a5a57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b600082613a9f57634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215613ab657600080fd5b5051919050565b600060208284031215613acf57600080fd5b81516001600160c01b0381168114612b9f57600080fd5b600060208284031215613af857600080fd5b815160ff81168114612b9f57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613b3257613b32613b09565b500190565b6000600019821415613b4b57613b4b613b09565b5060010190565b6001600160601b03811681146109db57600080fd5b600060408284031215613b7957600080fd5b613b8161325d565b8251613b8c8161340b565b81526020830151613b9c81613b52565b60208201529392505050565b600060208284031215613bba57600080fd5b8151612b9f8161340b565b600082821015613bd757613bd7613b09565b500390565b600060208284031215613bee57600080fd5b815167ffffffffffffffff1981168114612b9f57600080fd5b600060208284031215613c1957600080fd5b8151612b9f81613b52565b60006001600160601b0383811690831681811015613c4457613c44613b09565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015613c8757815185529382019390820190600101613c6b565b5092979650505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613d3257602081850181015186830182015201613d16565b81811115613d44576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613d8360a0840182613d0c565b90506020840151606084015260408401516080840152809150509392505050565b602081526000613db76020830184613d0c565b9392505050565b60008235609e19833603018112613dd457600080fd5b9190910192915050565b8035612d4d8161340b565b600060208284031215613dfb57600080fd5b8151612b9f8161348a565b8183526000602080850194508260005b85811015613853578135613e298161340b565b6001600160a01b0316875281830135613e4181613b52565b6001600160601b0316878401526040968701969190910190600101613e16565b60208082528181018390526000906040808401600586901b8501820187855b88811015613f6057878303603f190184528135368b9003609e19018112613ea657600080fd5b8a0160a0813536839003601e19018112613ebf57600080fd5b820180356001600160401b03811115613ed757600080fd5b8060061b3603841315613ee957600080fd5b828752613efb838801828c8501613e06565b92505050613f0a888301613dde565b6001600160a01b03168886015281870135878601526060613f2c8184016134b5565b63ffffffff16908601526080613f438382016134b5565b63ffffffff16950194909452509285019290850190600101613e80565b509098975050505050505050565b6000816000190483118215151615613f8857613f88613b09565b500290565b600061ffff80831681811415613fa557613fa5613b09565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122004d14b0c67491c6f81fc686090c2b801587e5f7717760407a276dc8b517e6fc064736f6c634300080c0033 + ///0x610160604052348015610010575f5ffd5b50604051613c2c380380613c2c83398101604081905261002f91610311565b828284856001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610092919061035b565b6001600160a01b0380841660c052828116608052811660a0526100b361023d565b5050506001600160a01b03811660e081905260408051636830483560e01b815290516368304835916004808201926020929091908290030181865afa1580156100fe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610122919061035b565b6001600160a01b0316610100816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610178573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019c919061035b565b6001600160a01b0316610120816001600160a01b031681525050610100516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610219919061035b565b6001600160a01b03166101405250506097805460ff191660011790555061037d9050565b5f54610100900460ff16156102a85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811610156102f8575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461030e575f5ffd5b50565b5f5f5f60608486031215610323575f5ffd5b835161032e816102fa565b602085015190935061033f816102fa565b6040850151909250610350816102fa565b809150509250925092565b5f6020828403121561036b575f5ffd5b8151610376816102fa565b9392505050565b60805160a05160c05160e0516101005161012051610140516137c46104685f395f81816102d4015261116d01525f818161017e015261134901525f81816101bd0152818161151c01526116d101525f818161020a0152818161092d01528181610e5001528181610fe1015261120701525f81816101e1015281816119dd01528181611aac0152611b2601525f8181610682015281816107cd0152818161086101528181611d2d01528181611e9f0152611f3b01525f81816104b701528181610543015281816105c10152818161198901528181611a5001528181611c6d0152611dfd01526137c45ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80638da5cb5b1161009e578063b98d09081161006e578063b98d09081461029f578063c4d66de8146102bc578063df5cf723146102cf578063e481af9d146102f6578063f2fde38b146102fe575f5ffd5b80638da5cb5b146102555780639926ee7d14610266578063a364f4da14610279578063a98fb3551461028c575f5ffd5b806368304835116100e457806368304835146101b85780636b3aa72e146101df5780636d14a987146102055780636efb46361461022c578063715018a61461024d575f5ffd5b8063171f1d5b1461011557806333cfb7b714610144578063416c7e5e146101645780635df4594614610179575b5f5ffd5b610128610123366004612ded565b610311565b6040805192151583529015156020830152015b60405180910390f35b610157610152366004612e4f565b610493565b60405161013b9190612e6a565b610177610172366004612eaa565b61092b565b005b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161013b565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101a0565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b61023f61023a366004613190565b610aa3565b60405161013b929190613282565b61017761196b565b6033546001600160a01b03166101a0565b610177610274366004613322565b61197e565b610177610287366004612e4f565b611a45565b61017761029a3660046133ca565b611b07565b6097546102ac9060ff1681565b604051901515815260200161013b565b6101776102ca366004612e4f565b611b5b565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b610157611c68565b61017761030c366004612e4f565b612001565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f6002811061035457610354613416565b60200201518951600160200201518a602001515f6002811061037857610378613416565b60200201518b6020015160016002811061039457610394613416565b602090810291909101518c518d8301516040516103f19a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c610413919061342a565b905061048561042c610425888461207a565b8690612109565b61043461219c565b61047b61046c856104666040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061207a565b6104758c61225c565b90612109565b886201d4c06122e6565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060915f917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156104fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105209190613449565b60405163871ef04960e01b8152600481018290529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610588573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ac9190613460565b90506001600160c01b038116158061064457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063f9190613486565b60ff16155b1561065f575050604080515f81526020810190915292915050565b5f610672826001600160c01b03166124fa565b90505f805b825181101561073b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106106c1576106c1613416565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610703573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107279190613449565b61073190836134ba565b9150600101610677565b505f816001600160401b0381111561075557610755612c82565b60405190808252806020026020018201604052801561077e578160200160208202803683370190505b5090505f805b845181101561091e575f8582815181106107a0576107a0613416565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610812573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108369190613449565b90505f5b81811015610913576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156108ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d191906134e3565b5f01518686815181106108e6576108e6613416565b6001600160a01b03909216602092830291909101909101528461090881613522565b95505060010161083a565b505050600101610784565b5090979650505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610987573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ab919061353a565b6001600160a01b0316336001600160a01b031614610a5c5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60408051808201909152606080825260208201525f848103610b1a5760405162461bcd60e51b815260206004820152603760248201525f51602061376f5f395f51905f5260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610a53565b60408301515185148015610b32575060a08301515185145b8015610b42575060c08301515185145b8015610b52575060e08301515185145b610bbb5760405162461bcd60e51b815260206004820152604160248201525f51602061376f5f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610a53565b82515160208401515114610c325760405162461bcd60e51b8152602060048201526044602482018190525f51602061376f5f395f51905f52908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610a53565b4363ffffffff168463ffffffff1610610ca05760405162461bcd60e51b815260206004820152603c60248201525f51602061376f5f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610a53565b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610ce057610ce0612c82565b604051908082528060200260200182016040528015610d09578160200160208202803683370190505b506020820152866001600160401b03811115610d2757610d27612c82565b604051908082528060200260200182016040528015610d50578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610d8457610d84612c82565b604051908082528060200260200182016040528015610dad578160200160208202803683370190505b5081526020860151516001600160401b03811115610dcd57610dcd612c82565b604051908082528060200260200182016040528015610df6578160200160208202803683370190505b5081602001819052505f610ec48a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610e9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebf9190613486565b6125b9565b90505f5b87602001515181101561114b57610f0c88602001518281518110610eee57610eee613416565b602002602001015180515f9081526020918201519091526040902090565b83602001518281518110610f2257610f22613416565b60209081029190910101528015610fdf576020830151610f43600183613555565b81518110610f5357610f53613416565b60200260200101515f1c83602001518281518110610f7357610f73613416565b60200260200101515f1c11610fdf576040805162461bcd60e51b81526020600482015260248101919091525f51602061376f5f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610a53565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec63518460200151838151811061102457611024613416565b60200260200101518b8b5f0151858151811061104257611042613416565b60200260200101516040518463ffffffff1660e01b815260040161107f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561109a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be9190613460565b6001600160c01b0316835f015182815181106110dc576110dc613416565b60200260200101818152505061114161042561111584865f0151858151811061110757611107613416565b60200260200101511661264b565b8a60200151848151811061112b5761112b613416565b602002602001015161267590919063ffffffff16565b9450600101610ec8565b505061115683612756565b60975490935060ff165f8161116b575f6111eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190613449565b90505f5b8a81101561183e578215611347578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f8681811061124657611246613416565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015611284573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a89190613449565b6112b291906134ba565b116113475760405162461bcd60e51b815260206004820152606660248201525f51602061376f5f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610a53565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061138857611388613416565b9050013560f81c60f81b60f81c8c8c60a0015185815181106113ac576113ac613416565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611406573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142a9190613568565b6001600160401b03191661144d8a604001518381518110610eee57610eee613416565b67ffffffffffffffff1916146114e85760405162461bcd60e51b815260206004820152606160248201525f51602061376f5f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610a53565b6115188960400151828151811061150157611501613416565b60200260200101518761210990919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d8481811061155b5761155b613416565b9050013560f81c60f81b60f81c8c8c60c00151858151811061157f5761157f613416565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156115d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fd9190613590565b8560200151828151811061161357611613613416565b6001600160601b0390921660209283029190910182015285015180518290811061163f5761163f613416565b6020026020010151855f0151828151811061165c5761165c613416565b6001600160601b03909216602092830291909101909101525f805b8a6020015151811015611834576116ca865f0151828151811061169c5761169c613416565b60200260200101518f8f868181106116b6576116b6613416565b600192013560f81c9290921c811614919050565b1561182c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061171057611710613416565b9050013560f81c60f81b60f81c8e8960200151858151811061173457611734613416565b60200260200101518f60e00151888151811061175257611752613416565b6020026020010151878151811061176b5761176b613416565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156117cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f19190613590565b875180518590811061180557611805613416565b6020026020010181815161181991906135b0565b6001600160601b03169052506001909101905b600101611677565b50506001016111ef565b5050505f5f6118578c868a606001518b60800151610311565b91509150816118c75760405162461bcd60e51b815260206004820152604360248201525f51602061376f5f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610a53565b806119275760405162461bcd60e51b815260206004820152603960248201525f51602061376f5f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610a53565b50505f8782602001516040516020016119419291906135cf565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6119736127ec565b61197c5f612846565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119c65760405162461bcd60e51b8152600401610a5390613615565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611a1490859085906004016136bb565b5f604051808303815f87803b158015611a2b575f5ffd5b505af1158015611a3d573d5f5f3e3d5ffd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610a5390613615565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b5f604051808303815f87803b158015611aee575f5ffd5b505af1158015611b00573d5f5f3e3d5ffd5b5050505050565b611b0f6127ec565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ad7908490600401613705565b5f54610100900460ff1615808015611b7957505f54600160ff909116105b80611b925750303b158015611b9257505f5460ff166001145b611bf55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a53565b5f805460ff191660011790558015611c16575f805461ff0019166101001790555b611c1f82612897565b8015611c64575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190613486565b60ff169050805f03611d0a575050604080515f81526020810190915290565b5f805b82811015611db257604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611d7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9e9190613449565b611da890836134ba565b9150600101611d0d565b505f816001600160401b03811115611dcc57611dcc612c82565b604051908082528060200260200182016040528015611df5578160200160208202803683370190505b5090505f805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613486565b60ff16811015611ff757604051633ca5a5f560e01b815260ff821660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611eec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f109190613449565b90505f5b81811015611fed576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015611f87573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab91906134e3565b5f0151858581518110611fc057611fc0613416565b6001600160a01b039092166020928302919091019091015283611fe281613522565b945050600101611f14565b5050600101611dfb565b5090949350505050565b6120096127ec565b6001600160a01b03811661206e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a53565b61207781612846565b50565b604080518082019091525f8082526020820152612095612ba8565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806120c357fe5b50806121015760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610a53565b505092915050565b604080518082019091525f8082526020820152612124612bc6565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061215e57fe5b50806121015760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610a53565b6121a4612be4565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f80806122895f51602061374f5f395f51905f528661342a565b90505b61229581612901565b90935091505f51602061374f5f395f51905f5282830983036122cd576040805180820190915290815260208101919091529392505050565b5f51602061374f5f395f51905f5260018208905061228c565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190612317612c09565b5f5b60028110156124ce575f61232e826006613717565b905084826002811061234257612342613416565b60200201515183612353835f6134ba565b600c811061236357612363613416565b602002015284826002811061237a5761237a613416565b6020020151602001518382600161239191906134ba565b600c81106123a1576123a1613416565b60200201528382600281106123b8576123b8613416565b60200201515151836123cb8360026134ba565b600c81106123db576123db613416565b60200201528382600281106123f2576123f2613416565b602002015151600160200201518361240b8360036134ba565b600c811061241b5761241b613416565b602002015283826002811061243257612432613416565b6020020151602001515f6002811061244c5761244c613416565b60200201518361245d8360046134ba565b600c811061246d5761246d613416565b602002015283826002811061248457612484613416565b60200201516020015160016002811061249f5761249f613416565b6020020151836124b08360056134ba565b600c81106124c0576124c0613416565b602002015250600101612319565b506124d7612c28565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b60605f5f6125078461264b565b61ffff166001600160401b0381111561252257612522612c82565b6040519080825280601f01601f19166020018201604052801561254c576020820181803683370190505b5090505f805b825182108015612563575061010081105b15611ff7576001811b9350858416156125a9578060f81b83838151811061258c5761258c613416565b60200101906001600160f81b03191690815f1a9053508160010191505b6125b281613522565b9050612552565b5f5f6125c48461297d565b9050808360ff166001901b116126425760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610a53565b90505b92915050565b5f805b82156126455761265f600184613555565b909216918061266d8161372e565b91505061264e565b604080518082019091525f80825260208201526102008261ffff16106126d05760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610a53565b8161ffff166001036126e3575081612645565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff161061274b57600161ffff871660ff83161c8116900361272e5761272b8484612109565b93505b6127388384612109565b92506201fffe600192831b1691016126fe565b509195945050505050565b604080518082019091525f8082526020820152815115801561277a57506020820151155b15612797575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f51602061374f5f395f51905f5284602001516127c8919061342a565b6127df905f51602061374f5f395f51905f52613555565b905292915050565b919050565b6033546001600160a01b0316331461197c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a53565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661206e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a53565b5f80805f51602061374f5f395f51905f5260035f51602061374f5f395f51905f52865f51602061374f5f395f51905f52888909090890505f612971827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f51602061374f5f395f51905f52612b00565b91959194509092505050565b5f61010082511115612a055760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610a53565b81515f03612a1457505f919050565b5f5f835f81518110612a2857612a28613416565b0160200151600160f89190911c81901b92505b8451811015612af757848181518110612a5657612a56613416565b0160200151600160f89190911c1b9150828211612aeb5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610a53565b91811791600101612a3b565b50909392505050565b5f5f612b0a612c28565b612b12612c46565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280612b4f57fe5b5082612b9d5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610a53565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280612bf7612c64565b8152602001612c04612c64565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612cb857612cb8612c82565b60405290565b60405161010081016001600160401b0381118282101715612cb857612cb8612c82565b604051606081016001600160401b0381118282101715612cb857612cb8612c82565b604051601f8201601f191681016001600160401b0381118282101715612d2b57612d2b612c82565b604052919050565b5f60408284031215612d43575f5ffd5b612d4b612c96565b823581526020928301359281019290925250919050565b5f82601f830112612d71575f5ffd5b612d79612c96565b806040840185811115612d8a575f5ffd5b845b81811015612da4578035845260209384019301612d8c565b509095945050505050565b5f60808284031215612dbf575f5ffd5b612dc7612c96565b9050612dd38383612d62565b8152612de28360408401612d62565b602082015292915050565b5f5f5f5f6101208587031215612e01575f5ffd5b84359350612e128660208701612d33565b9250612e218660608701612daf565b9150612e308660e08701612d33565b905092959194509250565b6001600160a01b0381168114612077575f5ffd5b5f60208284031215612e5f575f5ffd5b813561264281612e3b565b602080825282518282018190525f918401906040840190835b81811015612da45783516001600160a01b0316835260209384019390920191600101612e83565b5f60208284031215612eba575f5ffd5b81358015158114612642575f5ffd5b803563ffffffff811681146127e7575f5ffd5b5f6001600160401b03821115612ef457612ef4612c82565b5060051b60200190565b5f82601f830112612f0d575f5ffd5b8135612f20612f1b82612edc565b612d03565b8082825260208201915060208360051b860101925085831115612f41575f5ffd5b602085015b83811015612f6557612f5781612ec9565b835260209283019201612f46565b5095945050505050565b5f82601f830112612f7e575f5ffd5b8135612f8c612f1b82612edc565b8082825260208201915060208360061b860101925085831115612fad575f5ffd5b602085015b83811015612f6557612fc48782612d33565b8352602090920191604001612fb2565b5f82601f830112612fe3575f5ffd5b8135612ff1612f1b82612edc565b8082825260208201915060208360051b860101925085831115613012575f5ffd5b602085015b83811015612f655780356001600160401b03811115613034575f5ffd5b613043886020838a0101612efe565b84525060209283019201613017565b5f6101808284031215613063575f5ffd5b61306b612cbe565b905081356001600160401b03811115613082575f5ffd5b61308e84828501612efe565b82525060208201356001600160401b038111156130a9575f5ffd5b6130b584828501612f6f565b60208301525060408201356001600160401b038111156130d3575f5ffd5b6130df84828501612f6f565b6040830152506130f28360608401612daf565b60608201526131048360e08401612d33565b60808201526101208201356001600160401b03811115613122575f5ffd5b61312e84828501612efe565b60a0830152506101408201356001600160401b0381111561314d575f5ffd5b61315984828501612efe565b60c0830152506101608201356001600160401b03811115613178575f5ffd5b61318484828501612fd4565b60e08301525092915050565b5f5f5f5f5f608086880312156131a4575f5ffd5b8535945060208601356001600160401b038111156131c0575f5ffd5b8601601f810188136131d0575f5ffd5b80356001600160401b038111156131e5575f5ffd5b8860208284010111156131f6575f5ffd5b6020919091019450925061320c60408701612ec9565b915060608601356001600160401b03811115613226575f5ffd5b61323288828901613052565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156132785781516001600160601b0316865260209586019590910190600101613251565b5093949350505050565b604081525f835160408084015261329c608084018261323f565b90506020850151603f198483030160608501526132b9828261323f565b925050508260208301529392505050565b5f5f6001600160401b038411156132e3576132e3612c82565b50601f8301601f19166020016132f881612d03565b91505082815283838301111561330c575f5ffd5b828260208301375f602084830101529392505050565b5f5f60408385031215613333575f5ffd5b823561333e81612e3b565b915060208301356001600160401b03811115613358575f5ffd5b830160608186031215613369575f5ffd5b613371612ce1565b81356001600160401b03811115613386575f5ffd5b8201601f81018713613396575f5ffd5b6133a5878235602084016132ca565b8252506020828101359082015260409182013591810191909152919491935090915050565b5f602082840312156133da575f5ffd5b81356001600160401b038111156133ef575f5ffd5b8201601f810184136133ff575f5ffd5b61340e848235602084016132ca565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f8261344457634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215613459575f5ffd5b5051919050565b5f60208284031215613470575f5ffd5b81516001600160c01b0381168114612642575f5ffd5b5f60208284031215613496575f5ffd5b815160ff81168114612642575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612645576126456134a6565b80516001600160601b03811681146127e7575f5ffd5b5f60408284031280156134f4575f5ffd5b506134fd612c96565b825161350881612e3b565b8152613516602084016134cd565b60208201529392505050565b5f60018201613533576135336134a6565b5060010190565b5f6020828403121561354a575f5ffd5b815161264281612e3b565b81810381811115612645576126456134a6565b5f60208284031215613578575f5ffd5b815167ffffffffffffffff1981168114612642575f5ffd5b5f602082840312156135a0575f5ffd5b6135a9826134cd565b9392505050565b6001600160601b038281168282160390811115612645576126456134a6565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b828110156136095781518452602093840193909101906001016135eb565b50919695505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0383168152604060208201525f8251606060408401526136e460a084018261368d565b90506020840151606084015260408401516080840152809150509392505050565b602081525f6135a9602083018461368d565b8082028115828204841417612645576126456134a6565b5f61ffff821661ffff8103613745576137456134a6565b6001019291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220c4ed738deef4f6cbeb3c374dc3f204829321a3bd1ad35a35262b9d91375a300864736f6c634300081b0033 /// ``` #[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", + b"a\x01``@R4\x80\x15a\0\x10W__\xFD[P`@Qa<,8\x03\x80a<,\x839\x81\x01`@\x81\x90Ra\0/\x91a\x03\x11V[\x82\x82\x84\x85`\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\0nW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\x92\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\xC0R\x82\x81\x16`\x80R\x81\x16`\xA0Ra\0\xB3a\x02=V[PPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\xE0\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\x15a\0\xFEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\"\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01\0\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\x15a\x01xW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x9C\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01 \x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPa\x01\0Q`\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\x15a\x01\xF5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x19\x91\x90a\x03[V[`\x01`\x01`\xA0\x1B\x03\x16a\x01@RPP`\x97\x80T`\xFF\x19\x16`\x01\x17\x90UPa\x03}\x90PV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x02\xA8W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x02\xF8W_\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\x14a\x03\x0EW__\xFD[PV[___``\x84\x86\x03\x12\x15a\x03#W__\xFD[\x83Qa\x03.\x81a\x02\xFAV[` \x85\x01Q\x90\x93Pa\x03?\x81a\x02\xFAV[`@\x85\x01Q\x90\x92Pa\x03P\x81a\x02\xFAV[\x80\x91PP\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x03kW__\xFD[\x81Qa\x03v\x81a\x02\xFAV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa7\xC4a\x04h_9_\x81\x81a\x02\xD4\x01Ra\x11m\x01R_\x81\x81a\x01~\x01Ra\x13I\x01R_\x81\x81a\x01\xBD\x01R\x81\x81a\x15\x1C\x01Ra\x16\xD1\x01R_\x81\x81a\x02\n\x01R\x81\x81a\t-\x01R\x81\x81a\x0EP\x01R\x81\x81a\x0F\xE1\x01Ra\x12\x07\x01R_\x81\x81a\x01\xE1\x01R\x81\x81a\x19\xDD\x01R\x81\x81a\x1A\xAC\x01Ra\x1B&\x01R_\x81\x81a\x06\x82\x01R\x81\x81a\x07\xCD\x01R\x81\x81a\x08a\x01R\x81\x81a\x1D-\x01R\x81\x81a\x1E\x9F\x01Ra\x1F;\x01R_\x81\x81a\x04\xB7\x01R\x81\x81a\x05C\x01R\x81\x81a\x05\xC1\x01R\x81\x81a\x19\x89\x01R\x81\x81a\x1AP\x01R\x81\x81a\x1Cm\x01Ra\x1D\xFD\x01Ra7\xC4_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x11W_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0\x9EW\x80c\xB9\x8D\t\x08\x11a\0nW\x80c\xB9\x8D\t\x08\x14a\x02\x9FW\x80c\xC4\xD6m\xE8\x14a\x02\xBCW\x80c\xDF\\\xF7#\x14a\x02\xCFW\x80c\xE4\x81\xAF\x9D\x14a\x02\xF6W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xFEW__\xFD[\x80c\x8D\xA5\xCB[\x14a\x02UW\x80c\x99&\xEE}\x14a\x02fW\x80c\xA3d\xF4\xDA\x14a\x02yW\x80c\xA9\x8F\xB3U\x14a\x02\x8CW__\xFD[\x80ch0H5\x11a\0\xE4W\x80ch0H5\x14a\x01\xB8W\x80ck:\xA7.\x14a\x01\xDFW\x80cm\x14\xA9\x87\x14a\x02\x05W\x80cn\xFBF6\x14a\x02,W\x80cqP\x18\xA6\x14a\x02MW__\xFD[\x80c\x17\x1F\x1D[\x14a\x01\x15W\x80c3\xCF\xB7\xB7\x14a\x01DW\x80cAl~^\x14a\x01dW\x80c]\xF4YF\x14a\x01yW[__\xFD[a\x01(a\x01#6`\x04a-\xEDV[a\x03\x11V[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01Wa\x01R6`\x04a.OV[a\x04\x93V[`@Qa\x01;\x91\x90a.jV[a\x01wa\x01r6`\x04a.\xAAV[a\t+V[\0[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\xA0\x7F\0\0\0\0\0\0\0\0\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[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\xA0V[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\x02?a\x02:6`\x04a1\x90V[a\n\xA3V[`@Qa\x01;\x92\x91\x90a2\x82V[a\x01wa\x19kV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x01\xA0V[a\x01wa\x02t6`\x04a3\"V[a\x19~V[a\x01wa\x02\x876`\x04a.OV[a\x1AEV[a\x01wa\x02\x9A6`\x04a3\xCAV[a\x1B\x07V[`\x97Ta\x02\xAC\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01;V[a\x01wa\x02\xCA6`\x04a.OV[a\x1B[V[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\x01Wa\x1ChV[a\x01wa\x03\x0C6`\x04a.OV[a \x01V[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x03TWa\x03Ta4\x16V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x03xWa\x03xa4\x16V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x03\x94Wa\x03\x94a4\x16V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x03\xF1\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 _\x1Ca\x04\x13\x91\x90a4*V[\x90Pa\x04\x85a\x04,a\x04%\x88\x84a zV[\x86\x90a!\tV[a\x044a!\x9CV[a\x04{a\x04l\x85a\x04f`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a zV[a\x04u\x8Ca\"\\V[\x90a!\tV[\x88b\x01\xD4\xC0a\"\xE6V[\x90\x98\x90\x97P\x95PPPPPPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91_\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xFCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05 \x91\x90a4IV[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P_\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\x88W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xAC\x91\x90a4`V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06DWP\x7F\0\0\0\0\0\0\0\0\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\x1BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a4\x86V[`\xFF\x16\x15[\x15a\x06_WPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x92\x91PPV[_a\x06r\x82`\x01`\x01`\xC0\x1B\x03\x16a$\xFAV[\x90P_\x80[\x82Q\x81\x10\x15a\x07;W\x7F\0\0\0\0\0\0\0\0\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\x06\xC1Wa\x06\xC1a4\x16V[\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\x07\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07'\x91\x90a4IV[a\x071\x90\x83a4\xBAV[\x91P`\x01\x01a\x06wV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07UWa\x07Ua,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07~W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x80[\x84Q\x81\x10\x15a\t\x1EW_\x85\x82\x81Q\x81\x10a\x07\xA0Wa\x07\xA0a4\x16V[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P_\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\x12W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x086\x91\x90a4IV[\x90P_[\x81\x81\x10\x15a\t\x13W`@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\x08\xADW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD1\x91\x90a4\xE3V[_\x01Q\x86\x86\x81Q\x81\x10a\x08\xE6Wa\x08\xE6a4\x16V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x08\x81a5\"V[\x95PP`\x01\x01a\x08:V[PPP`\x01\x01a\x07\x84V[P\x90\x97\x96PPPPPPPV[\x7F\0\0\0\0\0\0\0\0\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\t\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xAB\x91\x90a5:V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\\W`@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[`\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[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x0B\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[`@\x83\x01QQ\x85\x14\x80\x15a\x0B2WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x0BBWP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x0BRWP`\xE0\x83\x01QQ\x85\x14[a\x0B\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\nSV[\x82QQ` \x84\x01QQ\x14a\x0C2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a7o_9_Q\x90_R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\nSV[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x0C\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[`@\x80Q\x80\x82\x01\x82R_\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\x0C\xE0Wa\x0C\xE0a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\tW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r'Wa\r'a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rPW\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\x84Wa\r\x84a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xADW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xCDWa\r\xCDa,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xF6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\x0E\xC4\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_\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\x0E\x9BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xBF\x91\x90a4\x86V[a%\xB9V[\x90P_[\x87` \x01QQ\x81\x10\x15a\x11KWa\x0F\x0C\x88` \x01Q\x82\x81Q\x81\x10a\x0E\xEEWa\x0E\xEEa4\x16V[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x0F\"Wa\x0F\"a4\x16V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\x0F\xDFW` \x83\x01Qa\x0FC`\x01\x83a5UV[\x81Q\x81\x10a\x0FSWa\x0FSa4\x16V[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\x0FsWa\x0Fsa4\x16V[` \x02` \x01\x01Q_\x1C\x11a\x0F\xDFW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\nSV[\x7F\0\0\0\0\0\0\0\0\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$Wa\x10$a4\x16V[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\x10BWa\x10Ba4\x16V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10\x7F\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\x9AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xBE\x91\x90a4`V[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\x10\xDCWa\x10\xDCa4\x16V[` \x02` \x01\x01\x81\x81RPPa\x11Aa\x04%a\x11\x15\x84\x86_\x01Q\x85\x81Q\x81\x10a\x11\x07Wa\x11\x07a4\x16V[` \x02` \x01\x01Q\x16a&KV[\x8A` \x01Q\x84\x81Q\x81\x10a\x11+Wa\x11+a4\x16V[` \x02` \x01\x01Qa&u\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\x0E\xC8V[PPa\x11V\x83a'VV[`\x97T\x90\x93P`\xFF\x16_\x81a\x11kW_a\x11\xEBV[\x7F\0\0\0\0\0\0\0\0\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\x11\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\xEB\x91\x90a4IV[\x90P_[\x8A\x81\x10\x15a\x18>W\x82\x15a\x13GW\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\x12FWa\x12Fa4\x16V[`@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\x12\x84W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\xA8\x91\x90a4IV[a\x12\xB2\x91\x90a4\xBAV[\x11a\x13GW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\nSV[\x7F\0\0\0\0\0\0\0\0\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\x13\x88Wa\x13\x88a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\x13\xACWa\x13\xACa4\x16V[` \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\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14*\x91\x90a5hV[`\x01`\x01`@\x1B\x03\x19\x16a\x14M\x8A`@\x01Q\x83\x81Q\x81\x10a\x0E\xEEWa\x0E\xEEa4\x16V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x14\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R_Q` a7o_9_Q\x90_R`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\nSV[a\x15\x18\x89`@\x01Q\x82\x81Q\x81\x10a\x15\x01Wa\x15\x01a4\x16V[` \x02` \x01\x01Q\x87a!\t\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[Wa\x15[a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x15\x7FWa\x15\x7Fa4\x16V[` \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\x15\xD9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xFD\x91\x90a5\x90V[\x85` \x01Q\x82\x81Q\x81\x10a\x16\x13Wa\x16\x13a4\x16V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x16?Wa\x16?a4\x16V[` \x02` \x01\x01Q\x85_\x01Q\x82\x81Q\x81\x10a\x16\\Wa\x16\\a4\x16V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x8A` \x01QQ\x81\x10\x15a\x184Wa\x16\xCA\x86_\x01Q\x82\x81Q\x81\x10a\x16\x9CWa\x16\x9Ca4\x16V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x16\xB6Wa\x16\xB6a4\x16V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x18,W\x7F\0\0\0\0\0\0\0\0\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\x10Wa\x17\x10a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x174Wa\x174a4\x16V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x17RWa\x17Ra4\x16V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x17kWa\x17ka4\x16V[` \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\x17\xCDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xF1\x91\x90a5\x90V[\x87Q\x80Q\x85\x90\x81\x10a\x18\x05Wa\x18\x05a4\x16V[` \x02` \x01\x01\x81\x81Qa\x18\x19\x91\x90a5\xB0V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\x16wV[PP`\x01\x01a\x11\xEFV[PPP__a\x18W\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03\x11V[\x91P\x91P\x81a\x18\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\nSV[\x80a\x19'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[PP_\x87\x82` \x01Q`@Q` \x01a\x19A\x92\x91\x90a5\xCFV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[a\x19sa'\xECV[a\x19|_a(FV[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\x19\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\nS\x90a6\x15V[`@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\x90c\x99&\xEE}\x90a\x1A\x14\x90\x85\x90\x85\x90`\x04\x01a6\xBBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A+W__\xFD[PZ\xF1\x15\x80\x15a\x1A=W=__>=_\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\x1A\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\nS\x90a6\x15V[`@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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xEEW__\xFD[PZ\xF1\x15\x80\x15a\x1B\0W=__>=_\xFD[PPPPPV[a\x1B\x0Fa'\xECV[`@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\x1A\xD7\x90\x84\x90`\x04\x01a7\x05V[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1ByWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1B\x92WP0;\x15\x80\x15a\x1B\x92WP_T`\xFF\x16`\x01\x14[a\x1B\xF5W`@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\nSV[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1C\x16W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x1C\x1F\x82a(\x97V[\x80\x15a\x1CdW_\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[PPV[``_\x7F\0\0\0\0\0\0\0\0\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\x1C\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xEB\x91\x90a4\x86V[`\xFF\x16\x90P\x80_\x03a\x1D\nWPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x90V[_\x80[\x82\x81\x10\x15a\x1D\xB2W`@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\x1DzW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\x9E\x91\x90a4IV[a\x1D\xA8\x90\x83a4\xBAV[\x91P`\x01\x01a\x1D\rV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xCCWa\x1D\xCCa,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\xF5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x1EWW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E{\x91\x90a4\x86V[`\xFF\x16\x81\x10\x15a\x1F\xF7W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R_\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\x1E\xECW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\x10\x91\x90a4IV[\x90P_[\x81\x81\x10\x15a\x1F\xEDW`@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\x1F\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xAB\x91\x90a4\xE3V[_\x01Q\x85\x85\x81Q\x81\x10a\x1F\xC0Wa\x1F\xC0a4\x16V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\x1F\xE2\x81a5\"V[\x94PP`\x01\x01a\x1F\x14V[PP`\x01\x01a\x1D\xFBV[P\x90\x94\x93PPPPV[a \ta'\xECV[`\x01`\x01`\xA0\x1B\x03\x81\x16a nW`@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\nSV[a w\x81a(FV[PV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra \x95a+\xA8V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a \xC3W\xFE[P\x80a!\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\nSV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra!$a+\xC6V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a!^W\xFE[P\x80a!\x01W`@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\nSV[a!\xA4a+\xE4V[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_\x80\x82R` \x82\x01R_\x80\x80a\"\x89_Q` a7O_9_Q\x90_R\x86a4*V[\x90P[a\"\x95\x81a)\x01V[\x90\x93P\x91P_Q` a7O_9_Q\x90_R\x82\x83\t\x83\x03a\"\xCDW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a7O_9_Q\x90_R`\x01\x82\x08\x90Pa\"\x8CV[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a#\x17a,\tV[_[`\x02\x81\x10\x15a$\xCEW_a#.\x82`\x06a7\x17V[\x90P\x84\x82`\x02\x81\x10a#BWa#Ba4\x16V[` \x02\x01QQ\x83a#S\x83_a4\xBAV[`\x0C\x81\x10a#cWa#ca4\x16V[` \x02\x01R\x84\x82`\x02\x81\x10a#zWa#za4\x16V[` \x02\x01Q` \x01Q\x83\x82`\x01a#\x91\x91\x90a4\xBAV[`\x0C\x81\x10a#\xA1Wa#\xA1a4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a#\xB8Wa#\xB8a4\x16V[` \x02\x01QQQ\x83a#\xCB\x83`\x02a4\xBAV[`\x0C\x81\x10a#\xDBWa#\xDBa4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a#\xF2Wa#\xF2a4\x16V[` \x02\x01QQ`\x01` \x02\x01Q\x83a$\x0B\x83`\x03a4\xBAV[`\x0C\x81\x10a$\x1BWa$\x1Ba4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a$2Wa$2a4\x16V[` \x02\x01Q` \x01Q_`\x02\x81\x10a$LWa$La4\x16V[` \x02\x01Q\x83a$]\x83`\x04a4\xBAV[`\x0C\x81\x10a$mWa$ma4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a$\x84Wa$\x84a4\x16V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a$\x9FWa$\x9Fa4\x16V[` \x02\x01Q\x83a$\xB0\x83`\x05a4\xBAV[`\x0C\x81\x10a$\xC0Wa$\xC0a4\x16V[` \x02\x01RP`\x01\x01a#\x19V[Pa$\xD7a,(V[_` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[``__a%\x07\x84a&KV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a%\"Wa%\"a,\x82V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a%LW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a%cWPa\x01\0\x81\x10[\x15a\x1F\xF7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a%\xA9W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a%\x8CWa%\x8Ca4\x16V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a%\xB2\x81a5\"V[\x90Pa%RV[__a%\xC4\x84a)}V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a&BW`@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\nSV[\x90P[\x92\x91PPV[_\x80[\x82\x15a&EWa&_`\x01\x84a5UV[\x90\x92\x16\x91\x80a&m\x81a7.V[\x91PPa&NV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a&\xD0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\nSV[\x81a\xFF\xFF\x16`\x01\x03a&\xE3WP\x81a&EV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a'KW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x90\x03a'.Wa'+\x84\x84a!\tV[\x93P[a'8\x83\x84a!\tV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a&\xFEV[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a'zWP` \x82\x01Q\x15[\x15a'\x97WPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a7O_9_Q\x90_R\x84` \x01Qa'\xC8\x91\x90a4*V[a'\xDF\x90_Q` a7O_9_Q\x90_Ra5UV[\x90R\x92\x91PPV[\x91\x90PV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x19|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\nSV[`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_\x90\xA3PPV[_Ta\x01\0\x90\x04`\xFF\x16a nW`@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\nSV[_\x80\x80_Q` a7O_9_Q\x90_R`\x03_Q` a7O_9_Q\x90_R\x86_Q` a7O_9_Q\x90_R\x88\x89\t\t\x08\x90P_a)q\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R_Q` a7O_9_Q\x90_Ra+\0V[\x91\x95\x91\x94P\x90\x92PPPV[_a\x01\0\x82Q\x11\x15a*\x05W`@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\nSV[\x81Q_\x03a*\x14WP_\x91\x90PV[__\x83_\x81Q\x81\x10a*(Wa*(a4\x16V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a*\xF7W\x84\x81\x81Q\x81\x10a*VWa*Va4\x16V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a*\xEBW`@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\nSV[\x91\x81\x17\x91`\x01\x01a*;V[P\x90\x93\x92PPPV[__a+\na,(V[a+\x12a,FV[` \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\x80a+OW\xFE[P\x82a+\x9DW`@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\nSV[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+\xF7a,dV[\x81R` \x01a,\x04a,dV[\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_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-+Wa-+a,\x82V[`@R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-CW__\xFD[a-Ka,\x96V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a-qW__\xFD[a-ya,\x96V[\x80`@\x84\x01\x85\x81\x11\x15a-\x8AW__\xFD[\x84[\x81\x81\x10\x15a-\xA4W\x805\x84R` \x93\x84\x01\x93\x01a-\x8CV[P\x90\x95\x94PPPPPV[_`\x80\x82\x84\x03\x12\x15a-\xBFW__\xFD[a-\xC7a,\x96V[\x90Pa-\xD3\x83\x83a-bV[\x81Ra-\xE2\x83`@\x84\x01a-bV[` \x82\x01R\x92\x91PPV[____a\x01 \x85\x87\x03\x12\x15a.\x01W__\xFD[\x845\x93Pa.\x12\x86` \x87\x01a-3V[\x92Pa.!\x86``\x87\x01a-\xAFV[\x91Pa.0\x86`\xE0\x87\x01a-3V[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a wW__\xFD[_` \x82\x84\x03\x12\x15a._W__\xFD[\x815a&B\x81a.;V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a-\xA4W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a.\x83V[_` \x82\x84\x03\x12\x15a.\xBAW__\xFD[\x815\x80\x15\x15\x81\x14a&BW__\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a'\xE7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x11\x15a.\xF4Wa.\xF4a,\x82V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a/\rW__\xFD[\x815a/ a/\x1B\x82a.\xDCV[a-\x03V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/AW__\xFD[` \x85\x01[\x83\x81\x10\x15a/eWa/W\x81a.\xC9V[\x83R` \x92\x83\x01\x92\x01a/FV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a/~W__\xFD[\x815a/\x8Ca/\x1B\x82a.\xDCV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/\xADW__\xFD[` \x85\x01[\x83\x81\x10\x15a/eWa/\xC4\x87\x82a-3V[\x83R` \x90\x92\x01\x91`@\x01a/\xB2V[_\x82`\x1F\x83\x01\x12a/\xE3W__\xFD[\x815a/\xF1a/\x1B\x82a.\xDCV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a0\x12W__\xFD[` \x85\x01[\x83\x81\x10\x15a/eW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a04W__\xFD[a0C\x88` \x83\x8A\x01\x01a.\xFEV[\x84RP` \x92\x83\x01\x92\x01a0\x17V[_a\x01\x80\x82\x84\x03\x12\x15a0cW__\xFD[a0ka,\xBEV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x82W__\xFD[a0\x8E\x84\x82\x85\x01a.\xFEV[\x82RP` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xA9W__\xFD[a0\xB5\x84\x82\x85\x01a/oV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD3W__\xFD[a0\xDF\x84\x82\x85\x01a/oV[`@\x83\x01RPa0\xF2\x83``\x84\x01a-\xAFV[``\x82\x01Ra1\x04\x83`\xE0\x84\x01a-3V[`\x80\x82\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\"W__\xFD[a1.\x84\x82\x85\x01a.\xFEV[`\xA0\x83\x01RPa\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1MW__\xFD[a1Y\x84\x82\x85\x01a.\xFEV[`\xC0\x83\x01RPa\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1xW__\xFD[a1\x84\x84\x82\x85\x01a/\xD4V[`\xE0\x83\x01RP\x92\x91PPV[_____`\x80\x86\x88\x03\x12\x15a1\xA4W__\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xC0W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a1\xD0W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE5W__\xFD[\x88` \x82\x84\x01\x01\x11\x15a1\xF6W__\xFD[` \x91\x90\x91\x01\x94P\x92Pa2\x0C`@\x87\x01a.\xC9V[\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2&W__\xFD[a22\x88\x82\x89\x01a0RV[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a2xW\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a2QV[P\x93\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra2\x9C`\x80\x84\x01\x82a2?V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra2\xB9\x82\x82a2?V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[__`\x01`\x01`@\x1B\x03\x84\x11\x15a2\xE3Wa2\xE3a,\x82V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a2\xF8\x81a-\x03V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a3\x0CW__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a33W__\xFD[\x825a3>\x81a.;V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3XW__\xFD[\x83\x01``\x81\x86\x03\x12\x15a3iW__\xFD[a3qa,\xE1V[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x86W__\xFD[\x82\x01`\x1F\x81\x01\x87\x13a3\x96W__\xFD[a3\xA5\x87\x825` \x84\x01a2\xCAV[\x82RP` \x82\x81\x015\x90\x82\x01R`@\x91\x82\x015\x91\x81\x01\x91\x90\x91R\x91\x94\x91\x93P\x90\x91PPV[_` \x82\x84\x03\x12\x15a3\xDAW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xEFW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a3\xFFW__\xFD[a4\x0E\x84\x825` \x84\x01a2\xCAV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a4DWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_` \x82\x84\x03\x12\x15a4YW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a4pW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a&BW__\xFD[_` \x82\x84\x03\x12\x15a4\x96W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a&BW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a&EWa&Ea4\xA6V[\x80Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a'\xE7W__\xFD[_`@\x82\x84\x03\x12\x80\x15a4\xF4W__\xFD[Pa4\xFDa,\x96V[\x82Qa5\x08\x81a.;V[\x81Ra5\x16` \x84\x01a4\xCDV[` \x82\x01R\x93\x92PPPV[_`\x01\x82\x01a53Wa53a4\xA6V[P`\x01\x01\x90V[_` \x82\x84\x03\x12\x15a5JW__\xFD[\x81Qa&B\x81a.;V[\x81\x81\x03\x81\x81\x11\x15a&EWa&Ea4\xA6V[_` \x82\x84\x03\x12\x15a5xW__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a&BW__\xFD[_` \x82\x84\x03\x12\x15a5\xA0W__\xFD[a5\xA9\x82a4\xCDV[\x93\x92PPPV[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a&EWa&Ea4\xA6V[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a6\tW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a5\xEBV[P\x91\x96\x95PPPPPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q```@\x84\x01Ra6\xE4`\xA0\x84\x01\x82a6\x8DV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R_a5\xA9` \x83\x01\x84a6\x8DV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a&EWa&Ea4\xA6V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a7EWa7Ea4\xA6V[`\x01\x01\x92\x91PPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \xC4\xEDs\x8D\xEE\xF4\xF6\xCB\xEB<7M\xC3\xF2\x04\x82\x93!\xA3\xBD\x1A\xD3Z5&+\x9D\x917Z0\x08dsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063c4d66de81161007c578063c4d66de8146102f6578063df5cf72314610309578063e481af9d14610330578063f2fde38b14610338578063fc299dee1461034b578063fce36c7d1461035e57600080fd5b80638da5cb5b1461028f5780639926ee7d146102a0578063a364f4da146102b3578063a98fb355146102c6578063b98d0908146102d957600080fd5b806368304835116100ff57806368304835146101f25780636b3aa72e146102195780636d14a9871461023f5780636efb463614610266578063715018a61461028757600080fd5b8063171f1d5b1461013c57806333cfb7b71461016b5780633bc28c8c1461018b578063416c7e5e146101a05780635df45946146101b3575b600080fd5b61014f61014a3660046133ba565b610371565b6040805192151583529015156020830152015b60405180910390f35b61017e610179366004613420565b6104fb565b604051610162919061343d565b61019e610199366004613420565b6109ca565b005b61019e6101ae366004613498565b6109de565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610162565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101da565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61027961027436600461376b565b610b1a565b60405161016292919061385e565b61019e611a31565b6033546001600160a01b03166101da565b61019e6102ae3660046138fe565b611a45565b61019e6102c1366004613420565b611b11565b61019e6102d43660046139a8565b611bd8565b6097546102e69060ff1681565b6040519015158152602001610162565b61019e610304366004613420565b611c2c565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61017e611d40565b61019e610346366004613420565b612109565b6065546101da906001600160a01b031681565b61019e61036c3660046139f8565b61217f565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106103b9576103b9613a6c565b60200201518951600160200201518a602001516000600281106103de576103de613a6c565b60200201518b602001516001600281106103fa576103fa613a6c565b602090810291909101518c518d8301516040516104579a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61047a9190613a82565b90506104ed61049361048c88846124aa565b8690612541565b61049b6125d5565b6104e36104d4856104ce604080518082018252600080825260209182015281518083019092526001825260029082015290565b906124aa565b6104dd8c612695565b90612541565b886201d4c0612725565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190613aa4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156105f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613abd565b90506001600160c01b03811615806106b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190613ae6565b60ff16155b156106d057505060408051600081526020810190915292915050565b60006106e4826001600160c01b0316612949565b90506000805b82518110156107ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061073457610734613a6c565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c9190613aa4565b6107a69083613b1f565b9150806107b281613b37565b9150506106ea565b506000816001600160401b038111156107d5576107d5613247565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b5090506000805b84518110156109bd57600085828151811061082257610822613a6c565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190613aa4565b905060005b818110156109a7576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613b67565b6000015186868151811061096f5761096f613a6c565b6001600160a01b03909216602092830291909101909101528461099181613b37565b955050808061099f90613b37565b9150506108c0565b50505080806109b590613b37565b915050610805565b5090979650505050505050565b6109d2612a0b565b6109db81612a65565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190613ba8565b6001600160a01b0316336001600160a01b031614610b115760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6109db81612ace565b6040805180820190915260608082526020820152600084610b915760405162461bcd60e51b81526020600482015260376024820152600080516020613fd083398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610b08565b60408301515185148015610ba9575060a08301515185145b8015610bb9575060c08301515185145b8015610bc9575060e08301515185145b610c335760405162461bcd60e51b81526020600482015260416024820152600080516020613fd083398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610b08565b82515160208401515114610cab5760405162461bcd60e51b815260206004820152604460248201819052600080516020613fd0833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610b08565b4363ffffffff168463ffffffff1610610d1a5760405162461bcd60e51b815260206004820152603c6024820152600080516020613fd083398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610b08565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610d5b57610d5b613247565b604051908082528060200260200182016040528015610d84578160200160208202803683370190505b506020820152866001600160401b03811115610da257610da2613247565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610dff57610dff613247565b604051908082528060200260200182016040528015610e28578160200160208202803683370190505b5081526020860151516001600160401b03811115610e4857610e48613247565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b5081602001819052506000610f438a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ae6565b612b15565b905060005b8760200151518110156111de57610f8d88602001518281518110610f6e57610f6e613a6c565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110610fa357610fa3613a6c565b60209081029190910101528015611063576020830151610fc4600183613bc5565b81518110610fd457610fd4613a6c565b602002602001015160001c83602001518281518110610ff557610ff5613a6c565b602002602001015160001c11611063576040805162461bcd60e51b8152602060048201526024810191909152600080516020613fd083398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106110a8576110a8613a6c565b60200260200101518b8b6000015185815181106110c7576110c7613a6c565b60200260200101516040518463ffffffff1660e01b81526004016111049392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613abd565b6001600160c01b03168360000151828151811061116457611164613a6c565b6020026020010181815250506111ca61048c61119e848660000151858151811061119057611190613a6c565b602002602001015116612ba8565b8a6020015184815181106111b4576111b4613a6c565b6020026020010151612bd390919063ffffffff16565b9450806111d681613b37565b915050610f48565b50506111e983612cb7565b60975490935060ff16600081611200576000611282565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613aa4565b905060005b8a8110156119005782156113e2578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106112de576112de613a6c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190613aa4565b61134c9190613b1f565b116113e25760405162461bcd60e51b81526020600482015260666024820152600080516020613fd083398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061142357611423613a6c565b9050013560f81c60f81b60f81c8c8c60a00151858151811061144757611447613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613bdc565b6001600160401b0319166114ea8a604001518381518110610f6e57610f6e613a6c565b67ffffffffffffffff1916146115865760405162461bcd60e51b81526020600482015260616024820152600080516020613fd083398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610b08565b6115b68960400151828151811061159f5761159f613a6c565b60200260200101518761254190919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106115f9576115f9613a6c565b9050013560f81c60f81b60f81c8c8c60c00151858151811061161d5761161d613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190613c07565b856020015182815181106116b3576116b3613a6c565b6001600160601b039092166020928302919091018201528501518051829081106116df576116df613a6c565b6020026020010151856000015182815181106116fd576116fd613a6c565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156118eb576117758660000151828151811061174757611747613a6c565b60200260200101518f8f8681811061176157611761613a6c565b600192013560f81c9290921c811614919050565b156118d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106117bb576117bb613a6c565b9050013560f81c60f81b60f81c8e896020015185815181106117df576117df613a6c565b60200260200101518f60e0015188815181106117fd576117fd613a6c565b6020026020010151878151811061181657611816613a6c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190613c07565b87518051859081106118b2576118b2613a6c565b602002602001018181516118c69190613c24565b6001600160601b03169052506001909101905b806118e381613b37565b915050611721565b505080806118f890613b37565b915050611287565b50505060008061191a8c868a606001518b60800151610371565b915091508161198b5760405162461bcd60e51b81526020600482015260436024820152600080516020613fd083398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610b08565b806119ec5760405162461bcd60e51b81526020600482015260396024820152600080516020613fd083398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610b08565b50506000878260200151604051602001611a07929190613c4c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611a39612a0b565b611a436000612d52565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610b0890613c94565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611adb9085908590600401613d59565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b595760405162461bcd60e51b8152600401610b0890613c94565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015611bbd57600080fd5b505af1158015611bd1573d6000803e3d6000fd5b5050505050565b611be0612a0b565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ba3908490600401613da4565b600054610100900460ff1615808015611c4c5750600054600160ff909116105b80611c665750303b158015611c66575060005460ff166001145b611cc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b08565b6000805460ff191660011790558015611cec576000805461ff0019166101001790555b611cf68283612da4565b8015611d3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613ae6565b60ff16905080611de457505060408051600081526020810190915290565b6000805b82811015611e9957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613aa4565b611e859083613b1f565b915080611e9181613b37565b915050611de8565b506000816001600160401b03811115611eb457611eb4613247565b604051908082528060200260200182016040528015611edd578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613ae6565b60ff168110156120ff57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190613aa4565b905060005b818110156120ea576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613b67565b600001518585815181106120b2576120b2613a6c565b6001600160a01b0390921660209283029190910190910152836120d481613b37565b94505080806120e290613b37565b915050612003565b505080806120f790613b37565b915050611ee4565b5090949350505050565b612111612a0b565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b6109db81612d52565b612187612e21565b60005b8181101561245b578282828181106121a4576121a4613a6c565b90506020028101906121b69190613dbe565b6121c7906040810190602001613420565b6001600160a01b03166323b872dd33308686868181106121e9576121e9613a6c565b90506020028101906121fb9190613dbe565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015612252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122769190613de9565b50600083838381811061228b5761228b613a6c565b905060200281019061229d9190613dbe565b6122ae906040810190602001613420565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613aa4565b905083838381811061235457612354613a6c565b90506020028101906123669190613dbe565b612377906040810190602001613420565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106123b9576123b9613a6c565b90506020028101906123cb9190613dbe565b604001356123d99190613b1f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613de9565b50508061245490613b37565b905061218a565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90611adb9085908590600401613e61565b60408051808201909152600080825260208201526124c661316d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156124f9576124fb565bfe5b50806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610b08565b505092915050565b604080518082019091526000808252602082015261255d61318b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156124f95750806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610b08565b6125dd6131a9565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806126c5600080516020613fb083398151915286613a82565b90505b6126d181612eb6565b9093509150600080516020613fb083398151915282830983141561270b576040805180820190915290815260208101919091529392505050565b600080516020613fb08339815191526001820890506126c8565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906127576131ce565b60005b600281101561291c576000612770826006613f6e565b905084826002811061278457612784613a6c565b60200201515183612796836000613b1f565b600c81106127a6576127a6613a6c565b60200201528482600281106127bd576127bd613a6c565b602002015160200151838260016127d49190613b1f565b600c81106127e4576127e4613a6c565b60200201528382600281106127fb576127fb613a6c565b602002015151518361280e836002613b1f565b600c811061281e5761281e613a6c565b602002015283826002811061283557612835613a6c565b602002015151600160200201518361284e836003613b1f565b600c811061285e5761285e613a6c565b602002015283826002811061287557612875613a6c565b60200201516020015160006002811061289057612890613a6c565b6020020151836128a1836004613b1f565b600c81106128b1576128b1613a6c565b60200201528382600281106128c8576128c8613a6c565b6020020151602001516001600281106128e3576128e3613a6c565b6020020151836128f4836005613b1f565b600c811061290457612904613a6c565b6020020152508061291481613b37565b91505061275a565b506129256131ed565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b606060008061295784612ba8565b61ffff166001600160401b0381111561297257612972613247565b6040519080825280601f01601f19166020018201604052801561299c576020820181803683370190505b5090506000805b8251821080156129b4575061010081105b156120ff576001811b9350858416156129fb578060f81b8383815181106129dd576129dd613a6c565b60200101906001600160f81b031916908160001a9053508160010191505b612a0481613b37565b90506129a3565b6033546001600160a01b03163314611a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b08565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b600080612b2184612f38565b9050808360ff166001901b11612b9f5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610b08565b90505b92915050565b6000805b8215612ba257612bbd600184613bc5565b9092169180612bcb81613f8d565b915050612bac565b60408051808201909152600080825260208201526102008261ffff1610612c2f5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610b08565b8161ffff1660011415612c43575081612ba2565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612cac57600161ffff871660ff83161c81161415612c8f57612c8c8484612541565b93505b612c998384612541565b92506201fffe600192831b169101612c5f565b509195945050505050565b60408051808201909152600080825260208201528151158015612cdc57506020820151155b15612cfa575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613fb08339815191528460200151612d2d9190613a82565b612d4590600080516020613fb0833981519152613bc5565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e0f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b08565b612e1882612d52565b611d3c81612a65565b6065546001600160a01b03163314611a435760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610b08565b60008080600080516020613fb08339815191526003600080516020613fb083398151915286600080516020613fb0833981519152888909090890506000612f2c827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613fb08339815191526130c5565b91959194509092505050565b600061010082511115612fc15760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610b08565b8151612fcf57506000919050565b60008083600081518110612fe557612fe5613a6c565b0160200151600160f89190911c81901b92505b84518110156130bc5784818151811061301357613013613a6c565b0160200151600160f89190911c1b91508282116130a85760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610b08565b918117916130b581613b37565b9050612ff8565b50909392505050565b6000806130d06131ed565b6130d861320b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156124f95750826131625760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610b08565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806131bc613229565b81526020016131c9613229565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561327f5761327f613247565b60405290565b60405161010081016001600160401b038111828210171561327f5761327f613247565b604051606081016001600160401b038111828210171561327f5761327f613247565b604051601f8201601f191681016001600160401b03811182821017156132f2576132f2613247565b604052919050565b60006040828403121561330c57600080fd5b61331461325d565b9050813581526020820135602082015292915050565b600082601f83011261333b57600080fd5b61334361325d565b80604084018581111561335557600080fd5b845b8181101561336f578035845260209384019301613357565b509095945050505050565b60006080828403121561338c57600080fd5b61339461325d565b90506133a0838361332a565b81526133af836040840161332a565b602082015292915050565b60008060008061012085870312156133d157600080fd5b843593506133e286602087016132fa565b92506133f1866060870161337a565b91506134008660e087016132fa565b905092959194509250565b6001600160a01b03811681146109db57600080fd5b60006020828403121561343257600080fd5b8135612b9f8161340b565b6020808252825182820181905260009190848201906040850190845b8181101561347e5783516001600160a01b031683529284019291840191600101613459565b50909695505050505050565b80151581146109db57600080fd5b6000602082840312156134aa57600080fd5b8135612b9f8161348a565b803563ffffffff81168114612d4d57600080fd5b60006001600160401b038211156134e2576134e2613247565b5060051b60200190565b600082601f8301126134fd57600080fd5b8135602061351261350d836134c9565b6132ca565b82815260059290921b8401810191818101908684111561353157600080fd5b8286015b8481101561355357613546816134b5565b8352918301918301613535565b509695505050505050565b600082601f83011261356f57600080fd5b8135602061357f61350d836134c9565b82815260069290921b8401810191818101908684111561359e57600080fd5b8286015b84811015613553576135b488826132fa565b8352918301916040016135a2565b600082601f8301126135d357600080fd5b813560206135e361350d836134c9565b82815260059290921b8401810191818101908684111561360257600080fd5b8286015b848110156135535780356001600160401b038111156136255760008081fd5b6136338986838b01016134ec565b845250918301918301613606565b6000610180828403121561365457600080fd5b61365c613285565b905081356001600160401b038082111561367557600080fd5b613681858386016134ec565b8352602084013591508082111561369757600080fd5b6136a38583860161355e565b602084015260408401359150808211156136bc57600080fd5b6136c88583860161355e565b60408401526136da856060860161337a565b60608401526136ec8560e086016132fa565b608084015261012084013591508082111561370657600080fd5b613712858386016134ec565b60a084015261014084013591508082111561372c57600080fd5b613738858386016134ec565b60c084015261016084013591508082111561375257600080fd5b5061375f848285016135c2565b60e08301525092915050565b60008060008060006080868803121561378357600080fd5b8535945060208601356001600160401b03808211156137a157600080fd5b818801915088601f8301126137b557600080fd5b8135818111156137c457600080fd5b8960208285010111156137d657600080fd5b60208301965094506137ea604089016134b5565b9350606088013591508082111561380057600080fd5b5061380d88828901613641565b9150509295509295909350565b600081518084526020808501945080840160005b838110156138535781516001600160601b03168752958201959082019060010161382e565b509495945050505050565b6040815260008351604080840152613879608084018261381a565b90506020850151603f19848303016060850152613896828261381a565b925050508260208301529392505050565b60006001600160401b038311156138c0576138c0613247565b6138d3601f8401601f19166020016132ca565b90508281528383830111156138e757600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561391157600080fd5b823561391c8161340b565b915060208301356001600160401b038082111561393857600080fd5b908401906060828703121561394c57600080fd5b6139546132a8565b82358281111561396357600080fd5b83019150601f8201871361397657600080fd5b613985878335602085016138a7565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156139ba57600080fd5b81356001600160401b038111156139d057600080fd5b8201601f810184136139e157600080fd5b6139f0848235602084016138a7565b949350505050565b60008060208385031215613a0b57600080fd5b82356001600160401b0380821115613a2257600080fd5b818501915085601f830112613a3657600080fd5b813581811115613a4557600080fd5b8660208260051b8501011115613a5a57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b600082613a9f57634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215613ab657600080fd5b5051919050565b600060208284031215613acf57600080fd5b81516001600160c01b0381168114612b9f57600080fd5b600060208284031215613af857600080fd5b815160ff81168114612b9f57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613b3257613b32613b09565b500190565b6000600019821415613b4b57613b4b613b09565b5060010190565b6001600160601b03811681146109db57600080fd5b600060408284031215613b7957600080fd5b613b8161325d565b8251613b8c8161340b565b81526020830151613b9c81613b52565b60208201529392505050565b600060208284031215613bba57600080fd5b8151612b9f8161340b565b600082821015613bd757613bd7613b09565b500390565b600060208284031215613bee57600080fd5b815167ffffffffffffffff1981168114612b9f57600080fd5b600060208284031215613c1957600080fd5b8151612b9f81613b52565b60006001600160601b0383811690831681811015613c4457613c44613b09565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015613c8757815185529382019390820190600101613c6b565b5092979650505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613d3257602081850181015186830182015201613d16565b81811115613d44576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613d8360a0840182613d0c565b90506020840151606084015260408401516080840152809150509392505050565b602081526000613db76020830184613d0c565b9392505050565b60008235609e19833603018112613dd457600080fd5b9190910192915050565b8035612d4d8161340b565b600060208284031215613dfb57600080fd5b8151612b9f8161348a565b8183526000602080850194508260005b85811015613853578135613e298161340b565b6001600160a01b0316875281830135613e4181613b52565b6001600160601b0316878401526040968701969190910190600101613e16565b60208082528181018390526000906040808401600586901b8501820187855b88811015613f6057878303603f190184528135368b9003609e19018112613ea657600080fd5b8a0160a0813536839003601e19018112613ebf57600080fd5b820180356001600160401b03811115613ed757600080fd5b8060061b3603841315613ee957600080fd5b828752613efb838801828c8501613e06565b92505050613f0a888301613dde565b6001600160a01b03168886015281870135878601526060613f2c8184016134b5565b63ffffffff16908601526080613f438382016134b5565b63ffffffff16950194909452509285019290850190600101613e80565b509098975050505050505050565b6000816000190483118215151615613f8857613f88613b09565b500290565b600061ffff80831681811415613fa557613fa5613b09565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122004d14b0c67491c6f81fc686090c2b801587e5f7717760407a276dc8b517e6fc064736f6c634300080c0033 + ///0x608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80638da5cb5b1161009e578063b98d09081161006e578063b98d09081461029f578063c4d66de8146102bc578063df5cf723146102cf578063e481af9d146102f6578063f2fde38b146102fe575f5ffd5b80638da5cb5b146102555780639926ee7d14610266578063a364f4da14610279578063a98fb3551461028c575f5ffd5b806368304835116100e457806368304835146101b85780636b3aa72e146101df5780636d14a987146102055780636efb46361461022c578063715018a61461024d575f5ffd5b8063171f1d5b1461011557806333cfb7b714610144578063416c7e5e146101645780635df4594614610179575b5f5ffd5b610128610123366004612ded565b610311565b6040805192151583529015156020830152015b60405180910390f35b610157610152366004612e4f565b610493565b60405161013b9190612e6a565b610177610172366004612eaa565b61092b565b005b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161013b565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101a0565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b61023f61023a366004613190565b610aa3565b60405161013b929190613282565b61017761196b565b6033546001600160a01b03166101a0565b610177610274366004613322565b61197e565b610177610287366004612e4f565b611a45565b61017761029a3660046133ca565b611b07565b6097546102ac9060ff1681565b604051901515815260200161013b565b6101776102ca366004612e4f565b611b5b565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b610157611c68565b61017761030c366004612e4f565b612001565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f6002811061035457610354613416565b60200201518951600160200201518a602001515f6002811061037857610378613416565b60200201518b6020015160016002811061039457610394613416565b602090810291909101518c518d8301516040516103f19a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c610413919061342a565b905061048561042c610425888461207a565b8690612109565b61043461219c565b61047b61046c856104666040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061207a565b6104758c61225c565b90612109565b886201d4c06122e6565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060915f917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156104fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105209190613449565b60405163871ef04960e01b8152600481018290529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610588573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ac9190613460565b90506001600160c01b038116158061064457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063f9190613486565b60ff16155b1561065f575050604080515f81526020810190915292915050565b5f610672826001600160c01b03166124fa565b90505f805b825181101561073b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106106c1576106c1613416565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610703573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107279190613449565b61073190836134ba565b9150600101610677565b505f816001600160401b0381111561075557610755612c82565b60405190808252806020026020018201604052801561077e578160200160208202803683370190505b5090505f805b845181101561091e575f8582815181106107a0576107a0613416565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610812573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108369190613449565b90505f5b81811015610913576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156108ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d191906134e3565b5f01518686815181106108e6576108e6613416565b6001600160a01b03909216602092830291909101909101528461090881613522565b95505060010161083a565b505050600101610784565b5090979650505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610987573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ab919061353a565b6001600160a01b0316336001600160a01b031614610a5c5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60408051808201909152606080825260208201525f848103610b1a5760405162461bcd60e51b815260206004820152603760248201525f51602061376f5f395f51905f5260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610a53565b60408301515185148015610b32575060a08301515185145b8015610b42575060c08301515185145b8015610b52575060e08301515185145b610bbb5760405162461bcd60e51b815260206004820152604160248201525f51602061376f5f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610a53565b82515160208401515114610c325760405162461bcd60e51b8152602060048201526044602482018190525f51602061376f5f395f51905f52908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610a53565b4363ffffffff168463ffffffff1610610ca05760405162461bcd60e51b815260206004820152603c60248201525f51602061376f5f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610a53565b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610ce057610ce0612c82565b604051908082528060200260200182016040528015610d09578160200160208202803683370190505b506020820152866001600160401b03811115610d2757610d27612c82565b604051908082528060200260200182016040528015610d50578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610d8457610d84612c82565b604051908082528060200260200182016040528015610dad578160200160208202803683370190505b5081526020860151516001600160401b03811115610dcd57610dcd612c82565b604051908082528060200260200182016040528015610df6578160200160208202803683370190505b5081602001819052505f610ec48a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610e9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebf9190613486565b6125b9565b90505f5b87602001515181101561114b57610f0c88602001518281518110610eee57610eee613416565b602002602001015180515f9081526020918201519091526040902090565b83602001518281518110610f2257610f22613416565b60209081029190910101528015610fdf576020830151610f43600183613555565b81518110610f5357610f53613416565b60200260200101515f1c83602001518281518110610f7357610f73613416565b60200260200101515f1c11610fdf576040805162461bcd60e51b81526020600482015260248101919091525f51602061376f5f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610a53565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec63518460200151838151811061102457611024613416565b60200260200101518b8b5f0151858151811061104257611042613416565b60200260200101516040518463ffffffff1660e01b815260040161107f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561109a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be9190613460565b6001600160c01b0316835f015182815181106110dc576110dc613416565b60200260200101818152505061114161042561111584865f0151858151811061110757611107613416565b60200260200101511661264b565b8a60200151848151811061112b5761112b613416565b602002602001015161267590919063ffffffff16565b9450600101610ec8565b505061115683612756565b60975490935060ff165f8161116b575f6111eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190613449565b90505f5b8a81101561183e578215611347578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f8681811061124657611246613416565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015611284573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a89190613449565b6112b291906134ba565b116113475760405162461bcd60e51b815260206004820152606660248201525f51602061376f5f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610a53565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061138857611388613416565b9050013560f81c60f81b60f81c8c8c60a0015185815181106113ac576113ac613416565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611406573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142a9190613568565b6001600160401b03191661144d8a604001518381518110610eee57610eee613416565b67ffffffffffffffff1916146114e85760405162461bcd60e51b815260206004820152606160248201525f51602061376f5f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610a53565b6115188960400151828151811061150157611501613416565b60200260200101518761210990919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d8481811061155b5761155b613416565b9050013560f81c60f81b60f81c8c8c60c00151858151811061157f5761157f613416565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156115d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fd9190613590565b8560200151828151811061161357611613613416565b6001600160601b0390921660209283029190910182015285015180518290811061163f5761163f613416565b6020026020010151855f0151828151811061165c5761165c613416565b6001600160601b03909216602092830291909101909101525f805b8a6020015151811015611834576116ca865f0151828151811061169c5761169c613416565b60200260200101518f8f868181106116b6576116b6613416565b600192013560f81c9290921c811614919050565b1561182c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061171057611710613416565b9050013560f81c60f81b60f81c8e8960200151858151811061173457611734613416565b60200260200101518f60e00151888151811061175257611752613416565b6020026020010151878151811061176b5761176b613416565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156117cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f19190613590565b875180518590811061180557611805613416565b6020026020010181815161181991906135b0565b6001600160601b03169052506001909101905b600101611677565b50506001016111ef565b5050505f5f6118578c868a606001518b60800151610311565b91509150816118c75760405162461bcd60e51b815260206004820152604360248201525f51602061376f5f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610a53565b806119275760405162461bcd60e51b815260206004820152603960248201525f51602061376f5f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610a53565b50505f8782602001516040516020016119419291906135cf565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6119736127ec565b61197c5f612846565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119c65760405162461bcd60e51b8152600401610a5390613615565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611a1490859085906004016136bb565b5f604051808303815f87803b158015611a2b575f5ffd5b505af1158015611a3d573d5f5f3e3d5ffd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610a5390613615565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b5f604051808303815f87803b158015611aee575f5ffd5b505af1158015611b00573d5f5f3e3d5ffd5b5050505050565b611b0f6127ec565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ad7908490600401613705565b5f54610100900460ff1615808015611b7957505f54600160ff909116105b80611b925750303b158015611b9257505f5460ff166001145b611bf55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a53565b5f805460ff191660011790558015611c16575f805461ff0019166101001790555b611c1f82612897565b8015611c64575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190613486565b60ff169050805f03611d0a575050604080515f81526020810190915290565b5f805b82811015611db257604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611d7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9e9190613449565b611da890836134ba565b9150600101611d0d565b505f816001600160401b03811115611dcc57611dcc612c82565b604051908082528060200260200182016040528015611df5578160200160208202803683370190505b5090505f805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613486565b60ff16811015611ff757604051633ca5a5f560e01b815260ff821660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611eec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f109190613449565b90505f5b81811015611fed576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015611f87573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab91906134e3565b5f0151858581518110611fc057611fc0613416565b6001600160a01b039092166020928302919091019091015283611fe281613522565b945050600101611f14565b5050600101611dfb565b5090949350505050565b6120096127ec565b6001600160a01b03811661206e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a53565b61207781612846565b50565b604080518082019091525f8082526020820152612095612ba8565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806120c357fe5b50806121015760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610a53565b505092915050565b604080518082019091525f8082526020820152612124612bc6565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061215e57fe5b50806121015760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610a53565b6121a4612be4565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f80806122895f51602061374f5f395f51905f528661342a565b90505b61229581612901565b90935091505f51602061374f5f395f51905f5282830983036122cd576040805180820190915290815260208101919091529392505050565b5f51602061374f5f395f51905f5260018208905061228c565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190612317612c09565b5f5b60028110156124ce575f61232e826006613717565b905084826002811061234257612342613416565b60200201515183612353835f6134ba565b600c811061236357612363613416565b602002015284826002811061237a5761237a613416565b6020020151602001518382600161239191906134ba565b600c81106123a1576123a1613416565b60200201528382600281106123b8576123b8613416565b60200201515151836123cb8360026134ba565b600c81106123db576123db613416565b60200201528382600281106123f2576123f2613416565b602002015151600160200201518361240b8360036134ba565b600c811061241b5761241b613416565b602002015283826002811061243257612432613416565b6020020151602001515f6002811061244c5761244c613416565b60200201518361245d8360046134ba565b600c811061246d5761246d613416565b602002015283826002811061248457612484613416565b60200201516020015160016002811061249f5761249f613416565b6020020151836124b08360056134ba565b600c81106124c0576124c0613416565b602002015250600101612319565b506124d7612c28565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b60605f5f6125078461264b565b61ffff166001600160401b0381111561252257612522612c82565b6040519080825280601f01601f19166020018201604052801561254c576020820181803683370190505b5090505f805b825182108015612563575061010081105b15611ff7576001811b9350858416156125a9578060f81b83838151811061258c5761258c613416565b60200101906001600160f81b03191690815f1a9053508160010191505b6125b281613522565b9050612552565b5f5f6125c48461297d565b9050808360ff166001901b116126425760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610a53565b90505b92915050565b5f805b82156126455761265f600184613555565b909216918061266d8161372e565b91505061264e565b604080518082019091525f80825260208201526102008261ffff16106126d05760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610a53565b8161ffff166001036126e3575081612645565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff161061274b57600161ffff871660ff83161c8116900361272e5761272b8484612109565b93505b6127388384612109565b92506201fffe600192831b1691016126fe565b509195945050505050565b604080518082019091525f8082526020820152815115801561277a57506020820151155b15612797575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f51602061374f5f395f51905f5284602001516127c8919061342a565b6127df905f51602061374f5f395f51905f52613555565b905292915050565b919050565b6033546001600160a01b0316331461197c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a53565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661206e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a53565b5f80805f51602061374f5f395f51905f5260035f51602061374f5f395f51905f52865f51602061374f5f395f51905f52888909090890505f612971827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f51602061374f5f395f51905f52612b00565b91959194509092505050565b5f61010082511115612a055760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610a53565b81515f03612a1457505f919050565b5f5f835f81518110612a2857612a28613416565b0160200151600160f89190911c81901b92505b8451811015612af757848181518110612a5657612a56613416565b0160200151600160f89190911c1b9150828211612aeb5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610a53565b91811791600101612a3b565b50909392505050565b5f5f612b0a612c28565b612b12612c46565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280612b4f57fe5b5082612b9d5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610a53565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280612bf7612c64565b8152602001612c04612c64565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612cb857612cb8612c82565b60405290565b60405161010081016001600160401b0381118282101715612cb857612cb8612c82565b604051606081016001600160401b0381118282101715612cb857612cb8612c82565b604051601f8201601f191681016001600160401b0381118282101715612d2b57612d2b612c82565b604052919050565b5f60408284031215612d43575f5ffd5b612d4b612c96565b823581526020928301359281019290925250919050565b5f82601f830112612d71575f5ffd5b612d79612c96565b806040840185811115612d8a575f5ffd5b845b81811015612da4578035845260209384019301612d8c565b509095945050505050565b5f60808284031215612dbf575f5ffd5b612dc7612c96565b9050612dd38383612d62565b8152612de28360408401612d62565b602082015292915050565b5f5f5f5f6101208587031215612e01575f5ffd5b84359350612e128660208701612d33565b9250612e218660608701612daf565b9150612e308660e08701612d33565b905092959194509250565b6001600160a01b0381168114612077575f5ffd5b5f60208284031215612e5f575f5ffd5b813561264281612e3b565b602080825282518282018190525f918401906040840190835b81811015612da45783516001600160a01b0316835260209384019390920191600101612e83565b5f60208284031215612eba575f5ffd5b81358015158114612642575f5ffd5b803563ffffffff811681146127e7575f5ffd5b5f6001600160401b03821115612ef457612ef4612c82565b5060051b60200190565b5f82601f830112612f0d575f5ffd5b8135612f20612f1b82612edc565b612d03565b8082825260208201915060208360051b860101925085831115612f41575f5ffd5b602085015b83811015612f6557612f5781612ec9565b835260209283019201612f46565b5095945050505050565b5f82601f830112612f7e575f5ffd5b8135612f8c612f1b82612edc565b8082825260208201915060208360061b860101925085831115612fad575f5ffd5b602085015b83811015612f6557612fc48782612d33565b8352602090920191604001612fb2565b5f82601f830112612fe3575f5ffd5b8135612ff1612f1b82612edc565b8082825260208201915060208360051b860101925085831115613012575f5ffd5b602085015b83811015612f655780356001600160401b03811115613034575f5ffd5b613043886020838a0101612efe565b84525060209283019201613017565b5f6101808284031215613063575f5ffd5b61306b612cbe565b905081356001600160401b03811115613082575f5ffd5b61308e84828501612efe565b82525060208201356001600160401b038111156130a9575f5ffd5b6130b584828501612f6f565b60208301525060408201356001600160401b038111156130d3575f5ffd5b6130df84828501612f6f565b6040830152506130f28360608401612daf565b60608201526131048360e08401612d33565b60808201526101208201356001600160401b03811115613122575f5ffd5b61312e84828501612efe565b60a0830152506101408201356001600160401b0381111561314d575f5ffd5b61315984828501612efe565b60c0830152506101608201356001600160401b03811115613178575f5ffd5b61318484828501612fd4565b60e08301525092915050565b5f5f5f5f5f608086880312156131a4575f5ffd5b8535945060208601356001600160401b038111156131c0575f5ffd5b8601601f810188136131d0575f5ffd5b80356001600160401b038111156131e5575f5ffd5b8860208284010111156131f6575f5ffd5b6020919091019450925061320c60408701612ec9565b915060608601356001600160401b03811115613226575f5ffd5b61323288828901613052565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156132785781516001600160601b0316865260209586019590910190600101613251565b5093949350505050565b604081525f835160408084015261329c608084018261323f565b90506020850151603f198483030160608501526132b9828261323f565b925050508260208301529392505050565b5f5f6001600160401b038411156132e3576132e3612c82565b50601f8301601f19166020016132f881612d03565b91505082815283838301111561330c575f5ffd5b828260208301375f602084830101529392505050565b5f5f60408385031215613333575f5ffd5b823561333e81612e3b565b915060208301356001600160401b03811115613358575f5ffd5b830160608186031215613369575f5ffd5b613371612ce1565b81356001600160401b03811115613386575f5ffd5b8201601f81018713613396575f5ffd5b6133a5878235602084016132ca565b8252506020828101359082015260409182013591810191909152919491935090915050565b5f602082840312156133da575f5ffd5b81356001600160401b038111156133ef575f5ffd5b8201601f810184136133ff575f5ffd5b61340e848235602084016132ca565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f8261344457634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215613459575f5ffd5b5051919050565b5f60208284031215613470575f5ffd5b81516001600160c01b0381168114612642575f5ffd5b5f60208284031215613496575f5ffd5b815160ff81168114612642575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612645576126456134a6565b80516001600160601b03811681146127e7575f5ffd5b5f60408284031280156134f4575f5ffd5b506134fd612c96565b825161350881612e3b565b8152613516602084016134cd565b60208201529392505050565b5f60018201613533576135336134a6565b5060010190565b5f6020828403121561354a575f5ffd5b815161264281612e3b565b81810381811115612645576126456134a6565b5f60208284031215613578575f5ffd5b815167ffffffffffffffff1981168114612642575f5ffd5b5f602082840312156135a0575f5ffd5b6135a9826134cd565b9392505050565b6001600160601b038281168282160390811115612645576126456134a6565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b828110156136095781518452602093840193909101906001016135eb565b50919695505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0383168152604060208201525f8251606060408401526136e460a084018261368d565b90506020840151606084015260408401516080840152809150509392505050565b602081525f6135a9602083018461368d565b8082028115828204841417612645576126456134a6565b5f61ffff821661ffff8103613745576137456134a6565b6001019291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220c4ed738deef4f6cbeb3c374dc3f204829321a3bd1ad35a35262b9d91375a300864736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x11W_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0\x9EW\x80c\xB9\x8D\t\x08\x11a\0nW\x80c\xB9\x8D\t\x08\x14a\x02\x9FW\x80c\xC4\xD6m\xE8\x14a\x02\xBCW\x80c\xDF\\\xF7#\x14a\x02\xCFW\x80c\xE4\x81\xAF\x9D\x14a\x02\xF6W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xFEW__\xFD[\x80c\x8D\xA5\xCB[\x14a\x02UW\x80c\x99&\xEE}\x14a\x02fW\x80c\xA3d\xF4\xDA\x14a\x02yW\x80c\xA9\x8F\xB3U\x14a\x02\x8CW__\xFD[\x80ch0H5\x11a\0\xE4W\x80ch0H5\x14a\x01\xB8W\x80ck:\xA7.\x14a\x01\xDFW\x80cm\x14\xA9\x87\x14a\x02\x05W\x80cn\xFBF6\x14a\x02,W\x80cqP\x18\xA6\x14a\x02MW__\xFD[\x80c\x17\x1F\x1D[\x14a\x01\x15W\x80c3\xCF\xB7\xB7\x14a\x01DW\x80cAl~^\x14a\x01dW\x80c]\xF4YF\x14a\x01yW[__\xFD[a\x01(a\x01#6`\x04a-\xEDV[a\x03\x11V[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01Wa\x01R6`\x04a.OV[a\x04\x93V[`@Qa\x01;\x91\x90a.jV[a\x01wa\x01r6`\x04a.\xAAV[a\t+V[\0[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\xA0\x7F\0\0\0\0\0\0\0\0\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[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\xA0V[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\x02?a\x02:6`\x04a1\x90V[a\n\xA3V[`@Qa\x01;\x92\x91\x90a2\x82V[a\x01wa\x19kV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x01\xA0V[a\x01wa\x02t6`\x04a3\"V[a\x19~V[a\x01wa\x02\x876`\x04a.OV[a\x1AEV[a\x01wa\x02\x9A6`\x04a3\xCAV[a\x1B\x07V[`\x97Ta\x02\xAC\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01;V[a\x01wa\x02\xCA6`\x04a.OV[a\x1B[V[a\x01\xA0\x7F\0\0\0\0\0\0\0\0\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\x01Wa\x1ChV[a\x01wa\x03\x0C6`\x04a.OV[a \x01V[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x03TWa\x03Ta4\x16V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x03xWa\x03xa4\x16V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x03\x94Wa\x03\x94a4\x16V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x03\xF1\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 _\x1Ca\x04\x13\x91\x90a4*V[\x90Pa\x04\x85a\x04,a\x04%\x88\x84a zV[\x86\x90a!\tV[a\x044a!\x9CV[a\x04{a\x04l\x85a\x04f`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a zV[a\x04u\x8Ca\"\\V[\x90a!\tV[\x88b\x01\xD4\xC0a\"\xE6V[\x90\x98\x90\x97P\x95PPPPPPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91_\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xFCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05 \x91\x90a4IV[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P_\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\x88W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xAC\x91\x90a4`V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06DWP\x7F\0\0\0\0\0\0\0\0\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\x1BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a4\x86V[`\xFF\x16\x15[\x15a\x06_WPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x92\x91PPV[_a\x06r\x82`\x01`\x01`\xC0\x1B\x03\x16a$\xFAV[\x90P_\x80[\x82Q\x81\x10\x15a\x07;W\x7F\0\0\0\0\0\0\0\0\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\x06\xC1Wa\x06\xC1a4\x16V[\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\x07\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07'\x91\x90a4IV[a\x071\x90\x83a4\xBAV[\x91P`\x01\x01a\x06wV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07UWa\x07Ua,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07~W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x80[\x84Q\x81\x10\x15a\t\x1EW_\x85\x82\x81Q\x81\x10a\x07\xA0Wa\x07\xA0a4\x16V[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P_\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\x12W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x086\x91\x90a4IV[\x90P_[\x81\x81\x10\x15a\t\x13W`@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\x08\xADW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD1\x91\x90a4\xE3V[_\x01Q\x86\x86\x81Q\x81\x10a\x08\xE6Wa\x08\xE6a4\x16V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x08\x81a5\"V[\x95PP`\x01\x01a\x08:V[PPP`\x01\x01a\x07\x84V[P\x90\x97\x96PPPPPPPV[\x7F\0\0\0\0\0\0\0\0\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\t\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xAB\x91\x90a5:V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\\W`@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[`\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[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x0B\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[`@\x83\x01QQ\x85\x14\x80\x15a\x0B2WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x0BBWP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x0BRWP`\xE0\x83\x01QQ\x85\x14[a\x0B\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\nSV[\x82QQ` \x84\x01QQ\x14a\x0C2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a7o_9_Q\x90_R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\nSV[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x0C\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[`@\x80Q\x80\x82\x01\x82R_\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\x0C\xE0Wa\x0C\xE0a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\tW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r'Wa\r'a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rPW\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\x84Wa\r\x84a,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xADW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xCDWa\r\xCDa,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xF6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\x0E\xC4\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_\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\x0E\x9BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xBF\x91\x90a4\x86V[a%\xB9V[\x90P_[\x87` \x01QQ\x81\x10\x15a\x11KWa\x0F\x0C\x88` \x01Q\x82\x81Q\x81\x10a\x0E\xEEWa\x0E\xEEa4\x16V[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x0F\"Wa\x0F\"a4\x16V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\x0F\xDFW` \x83\x01Qa\x0FC`\x01\x83a5UV[\x81Q\x81\x10a\x0FSWa\x0FSa4\x16V[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\x0FsWa\x0Fsa4\x16V[` \x02` \x01\x01Q_\x1C\x11a\x0F\xDFW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\nSV[\x7F\0\0\0\0\0\0\0\0\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$Wa\x10$a4\x16V[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\x10BWa\x10Ba4\x16V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10\x7F\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\x9AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xBE\x91\x90a4`V[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\x10\xDCWa\x10\xDCa4\x16V[` \x02` \x01\x01\x81\x81RPPa\x11Aa\x04%a\x11\x15\x84\x86_\x01Q\x85\x81Q\x81\x10a\x11\x07Wa\x11\x07a4\x16V[` \x02` \x01\x01Q\x16a&KV[\x8A` \x01Q\x84\x81Q\x81\x10a\x11+Wa\x11+a4\x16V[` \x02` \x01\x01Qa&u\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\x0E\xC8V[PPa\x11V\x83a'VV[`\x97T\x90\x93P`\xFF\x16_\x81a\x11kW_a\x11\xEBV[\x7F\0\0\0\0\0\0\0\0\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\x11\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\xEB\x91\x90a4IV[\x90P_[\x8A\x81\x10\x15a\x18>W\x82\x15a\x13GW\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\x12FWa\x12Fa4\x16V[`@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\x12\x84W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\xA8\x91\x90a4IV[a\x12\xB2\x91\x90a4\xBAV[\x11a\x13GW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\nSV[\x7F\0\0\0\0\0\0\0\0\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\x13\x88Wa\x13\x88a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\x13\xACWa\x13\xACa4\x16V[` \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\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14*\x91\x90a5hV[`\x01`\x01`@\x1B\x03\x19\x16a\x14M\x8A`@\x01Q\x83\x81Q\x81\x10a\x0E\xEEWa\x0E\xEEa4\x16V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x14\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R_Q` a7o_9_Q\x90_R`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\nSV[a\x15\x18\x89`@\x01Q\x82\x81Q\x81\x10a\x15\x01Wa\x15\x01a4\x16V[` \x02` \x01\x01Q\x87a!\t\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[Wa\x15[a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x15\x7FWa\x15\x7Fa4\x16V[` \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\x15\xD9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xFD\x91\x90a5\x90V[\x85` \x01Q\x82\x81Q\x81\x10a\x16\x13Wa\x16\x13a4\x16V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x16?Wa\x16?a4\x16V[` \x02` \x01\x01Q\x85_\x01Q\x82\x81Q\x81\x10a\x16\\Wa\x16\\a4\x16V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x8A` \x01QQ\x81\x10\x15a\x184Wa\x16\xCA\x86_\x01Q\x82\x81Q\x81\x10a\x16\x9CWa\x16\x9Ca4\x16V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x16\xB6Wa\x16\xB6a4\x16V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x18,W\x7F\0\0\0\0\0\0\0\0\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\x10Wa\x17\x10a4\x16V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x174Wa\x174a4\x16V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x17RWa\x17Ra4\x16V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x17kWa\x17ka4\x16V[` \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\x17\xCDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xF1\x91\x90a5\x90V[\x87Q\x80Q\x85\x90\x81\x10a\x18\x05Wa\x18\x05a4\x16V[` \x02` \x01\x01\x81\x81Qa\x18\x19\x91\x90a5\xB0V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\x16wV[PP`\x01\x01a\x11\xEFV[PPP__a\x18W\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03\x11V[\x91P\x91P\x81a\x18\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\nSV[\x80a\x19'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R_Q` a7o_9_Q\x90_R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\nSV[PP_\x87\x82` \x01Q`@Q` \x01a\x19A\x92\x91\x90a5\xCFV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[a\x19sa'\xECV[a\x19|_a(FV[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\x19\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\nS\x90a6\x15V[`@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\x90c\x99&\xEE}\x90a\x1A\x14\x90\x85\x90\x85\x90`\x04\x01a6\xBBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A+W__\xFD[PZ\xF1\x15\x80\x15a\x1A=W=__>=_\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\x1A\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\nS\x90a6\x15V[`@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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xEEW__\xFD[PZ\xF1\x15\x80\x15a\x1B\0W=__>=_\xFD[PPPPPV[a\x1B\x0Fa'\xECV[`@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\x1A\xD7\x90\x84\x90`\x04\x01a7\x05V[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1ByWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1B\x92WP0;\x15\x80\x15a\x1B\x92WP_T`\xFF\x16`\x01\x14[a\x1B\xF5W`@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\nSV[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1C\x16W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x1C\x1F\x82a(\x97V[\x80\x15a\x1CdW_\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[PPV[``_\x7F\0\0\0\0\0\0\0\0\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\x1C\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xEB\x91\x90a4\x86V[`\xFF\x16\x90P\x80_\x03a\x1D\nWPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x90V[_\x80[\x82\x81\x10\x15a\x1D\xB2W`@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\x1DzW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\x9E\x91\x90a4IV[a\x1D\xA8\x90\x83a4\xBAV[\x91P`\x01\x01a\x1D\rV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xCCWa\x1D\xCCa,\x82V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\xF5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x1EWW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E{\x91\x90a4\x86V[`\xFF\x16\x81\x10\x15a\x1F\xF7W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R_\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\x1E\xECW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\x10\x91\x90a4IV[\x90P_[\x81\x81\x10\x15a\x1F\xEDW`@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\x1F\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xAB\x91\x90a4\xE3V[_\x01Q\x85\x85\x81Q\x81\x10a\x1F\xC0Wa\x1F\xC0a4\x16V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\x1F\xE2\x81a5\"V[\x94PP`\x01\x01a\x1F\x14V[PP`\x01\x01a\x1D\xFBV[P\x90\x94\x93PPPPV[a \ta'\xECV[`\x01`\x01`\xA0\x1B\x03\x81\x16a nW`@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\nSV[a w\x81a(FV[PV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra \x95a+\xA8V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a \xC3W\xFE[P\x80a!\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\nSV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra!$a+\xC6V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a!^W\xFE[P\x80a!\x01W`@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\nSV[a!\xA4a+\xE4V[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_\x80\x82R` \x82\x01R_\x80\x80a\"\x89_Q` a7O_9_Q\x90_R\x86a4*V[\x90P[a\"\x95\x81a)\x01V[\x90\x93P\x91P_Q` a7O_9_Q\x90_R\x82\x83\t\x83\x03a\"\xCDW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a7O_9_Q\x90_R`\x01\x82\x08\x90Pa\"\x8CV[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a#\x17a,\tV[_[`\x02\x81\x10\x15a$\xCEW_a#.\x82`\x06a7\x17V[\x90P\x84\x82`\x02\x81\x10a#BWa#Ba4\x16V[` \x02\x01QQ\x83a#S\x83_a4\xBAV[`\x0C\x81\x10a#cWa#ca4\x16V[` \x02\x01R\x84\x82`\x02\x81\x10a#zWa#za4\x16V[` \x02\x01Q` \x01Q\x83\x82`\x01a#\x91\x91\x90a4\xBAV[`\x0C\x81\x10a#\xA1Wa#\xA1a4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a#\xB8Wa#\xB8a4\x16V[` \x02\x01QQQ\x83a#\xCB\x83`\x02a4\xBAV[`\x0C\x81\x10a#\xDBWa#\xDBa4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a#\xF2Wa#\xF2a4\x16V[` \x02\x01QQ`\x01` \x02\x01Q\x83a$\x0B\x83`\x03a4\xBAV[`\x0C\x81\x10a$\x1BWa$\x1Ba4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a$2Wa$2a4\x16V[` \x02\x01Q` \x01Q_`\x02\x81\x10a$LWa$La4\x16V[` \x02\x01Q\x83a$]\x83`\x04a4\xBAV[`\x0C\x81\x10a$mWa$ma4\x16V[` \x02\x01R\x83\x82`\x02\x81\x10a$\x84Wa$\x84a4\x16V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a$\x9FWa$\x9Fa4\x16V[` \x02\x01Q\x83a$\xB0\x83`\x05a4\xBAV[`\x0C\x81\x10a$\xC0Wa$\xC0a4\x16V[` \x02\x01RP`\x01\x01a#\x19V[Pa$\xD7a,(V[_` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[``__a%\x07\x84a&KV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a%\"Wa%\"a,\x82V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a%LW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a%cWPa\x01\0\x81\x10[\x15a\x1F\xF7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a%\xA9W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a%\x8CWa%\x8Ca4\x16V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a%\xB2\x81a5\"V[\x90Pa%RV[__a%\xC4\x84a)}V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a&BW`@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\nSV[\x90P[\x92\x91PPV[_\x80[\x82\x15a&EWa&_`\x01\x84a5UV[\x90\x92\x16\x91\x80a&m\x81a7.V[\x91PPa&NV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a&\xD0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\nSV[\x81a\xFF\xFF\x16`\x01\x03a&\xE3WP\x81a&EV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a'KW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x90\x03a'.Wa'+\x84\x84a!\tV[\x93P[a'8\x83\x84a!\tV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a&\xFEV[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a'zWP` \x82\x01Q\x15[\x15a'\x97WPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a7O_9_Q\x90_R\x84` \x01Qa'\xC8\x91\x90a4*V[a'\xDF\x90_Q` a7O_9_Q\x90_Ra5UV[\x90R\x92\x91PPV[\x91\x90PV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x19|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\nSV[`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_\x90\xA3PPV[_Ta\x01\0\x90\x04`\xFF\x16a nW`@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\nSV[_\x80\x80_Q` a7O_9_Q\x90_R`\x03_Q` a7O_9_Q\x90_R\x86_Q` a7O_9_Q\x90_R\x88\x89\t\t\x08\x90P_a)q\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R_Q` a7O_9_Q\x90_Ra+\0V[\x91\x95\x91\x94P\x90\x92PPPV[_a\x01\0\x82Q\x11\x15a*\x05W`@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\nSV[\x81Q_\x03a*\x14WP_\x91\x90PV[__\x83_\x81Q\x81\x10a*(Wa*(a4\x16V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a*\xF7W\x84\x81\x81Q\x81\x10a*VWa*Va4\x16V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a*\xEBW`@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\nSV[\x91\x81\x17\x91`\x01\x01a*;V[P\x90\x93\x92PPPV[__a+\na,(V[a+\x12a,FV[` \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\x80a+OW\xFE[P\x82a+\x9DW`@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\nSV[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+\xF7a,dV[\x81R` \x01a,\x04a,dV[\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_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB8Wa,\xB8a,\x82V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-+Wa-+a,\x82V[`@R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-CW__\xFD[a-Ka,\x96V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a-qW__\xFD[a-ya,\x96V[\x80`@\x84\x01\x85\x81\x11\x15a-\x8AW__\xFD[\x84[\x81\x81\x10\x15a-\xA4W\x805\x84R` \x93\x84\x01\x93\x01a-\x8CV[P\x90\x95\x94PPPPPV[_`\x80\x82\x84\x03\x12\x15a-\xBFW__\xFD[a-\xC7a,\x96V[\x90Pa-\xD3\x83\x83a-bV[\x81Ra-\xE2\x83`@\x84\x01a-bV[` \x82\x01R\x92\x91PPV[____a\x01 \x85\x87\x03\x12\x15a.\x01W__\xFD[\x845\x93Pa.\x12\x86` \x87\x01a-3V[\x92Pa.!\x86``\x87\x01a-\xAFV[\x91Pa.0\x86`\xE0\x87\x01a-3V[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a wW__\xFD[_` \x82\x84\x03\x12\x15a._W__\xFD[\x815a&B\x81a.;V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a-\xA4W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a.\x83V[_` \x82\x84\x03\x12\x15a.\xBAW__\xFD[\x815\x80\x15\x15\x81\x14a&BW__\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a'\xE7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x11\x15a.\xF4Wa.\xF4a,\x82V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a/\rW__\xFD[\x815a/ a/\x1B\x82a.\xDCV[a-\x03V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/AW__\xFD[` \x85\x01[\x83\x81\x10\x15a/eWa/W\x81a.\xC9V[\x83R` \x92\x83\x01\x92\x01a/FV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a/~W__\xFD[\x815a/\x8Ca/\x1B\x82a.\xDCV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/\xADW__\xFD[` \x85\x01[\x83\x81\x10\x15a/eWa/\xC4\x87\x82a-3V[\x83R` \x90\x92\x01\x91`@\x01a/\xB2V[_\x82`\x1F\x83\x01\x12a/\xE3W__\xFD[\x815a/\xF1a/\x1B\x82a.\xDCV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a0\x12W__\xFD[` \x85\x01[\x83\x81\x10\x15a/eW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a04W__\xFD[a0C\x88` \x83\x8A\x01\x01a.\xFEV[\x84RP` \x92\x83\x01\x92\x01a0\x17V[_a\x01\x80\x82\x84\x03\x12\x15a0cW__\xFD[a0ka,\xBEV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x82W__\xFD[a0\x8E\x84\x82\x85\x01a.\xFEV[\x82RP` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xA9W__\xFD[a0\xB5\x84\x82\x85\x01a/oV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD3W__\xFD[a0\xDF\x84\x82\x85\x01a/oV[`@\x83\x01RPa0\xF2\x83``\x84\x01a-\xAFV[``\x82\x01Ra1\x04\x83`\xE0\x84\x01a-3V[`\x80\x82\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\"W__\xFD[a1.\x84\x82\x85\x01a.\xFEV[`\xA0\x83\x01RPa\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1MW__\xFD[a1Y\x84\x82\x85\x01a.\xFEV[`\xC0\x83\x01RPa\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1xW__\xFD[a1\x84\x84\x82\x85\x01a/\xD4V[`\xE0\x83\x01RP\x92\x91PPV[_____`\x80\x86\x88\x03\x12\x15a1\xA4W__\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xC0W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a1\xD0W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE5W__\xFD[\x88` \x82\x84\x01\x01\x11\x15a1\xF6W__\xFD[` \x91\x90\x91\x01\x94P\x92Pa2\x0C`@\x87\x01a.\xC9V[\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2&W__\xFD[a22\x88\x82\x89\x01a0RV[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a2xW\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a2QV[P\x93\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra2\x9C`\x80\x84\x01\x82a2?V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra2\xB9\x82\x82a2?V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[__`\x01`\x01`@\x1B\x03\x84\x11\x15a2\xE3Wa2\xE3a,\x82V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a2\xF8\x81a-\x03V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a3\x0CW__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a33W__\xFD[\x825a3>\x81a.;V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3XW__\xFD[\x83\x01``\x81\x86\x03\x12\x15a3iW__\xFD[a3qa,\xE1V[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x86W__\xFD[\x82\x01`\x1F\x81\x01\x87\x13a3\x96W__\xFD[a3\xA5\x87\x825` \x84\x01a2\xCAV[\x82RP` \x82\x81\x015\x90\x82\x01R`@\x91\x82\x015\x91\x81\x01\x91\x90\x91R\x91\x94\x91\x93P\x90\x91PPV[_` \x82\x84\x03\x12\x15a3\xDAW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xEFW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a3\xFFW__\xFD[a4\x0E\x84\x825` \x84\x01a2\xCAV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a4DWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_` \x82\x84\x03\x12\x15a4YW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a4pW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a&BW__\xFD[_` \x82\x84\x03\x12\x15a4\x96W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a&BW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a&EWa&Ea4\xA6V[\x80Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a'\xE7W__\xFD[_`@\x82\x84\x03\x12\x80\x15a4\xF4W__\xFD[Pa4\xFDa,\x96V[\x82Qa5\x08\x81a.;V[\x81Ra5\x16` \x84\x01a4\xCDV[` \x82\x01R\x93\x92PPPV[_`\x01\x82\x01a53Wa53a4\xA6V[P`\x01\x01\x90V[_` \x82\x84\x03\x12\x15a5JW__\xFD[\x81Qa&B\x81a.;V[\x81\x81\x03\x81\x81\x11\x15a&EWa&Ea4\xA6V[_` \x82\x84\x03\x12\x15a5xW__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a&BW__\xFD[_` \x82\x84\x03\x12\x15a5\xA0W__\xFD[a5\xA9\x82a4\xCDV[\x93\x92PPPV[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a&EWa&Ea4\xA6V[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a6\tW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a5\xEBV[P\x91\x96\x95PPPPPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q```@\x84\x01Ra6\xE4`\xA0\x84\x01\x82a6\x8DV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R_a5\xA9` \x83\x01\x84a6\x8DV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a&EWa&Ea4\xA6V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a7EWa7Ea4\xA6V[`\x01\x01\x92\x91PPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \xC4\xEDs\x8D\xEE\xF4\xF6\xCB\xEB<7M\xC3\xF2\x04\x82\x93!\xA3\xBD\x1A\xD3Z5&+\x9D\x917Z0\x08dsolcC\0\x08\x1B\x003", ); /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2993,7 +2325,12 @@ pub mod MockAvsServiceManager { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -3001,7 +2338,12 @@ pub mod MockAvsServiceManager { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3092,116 +2434,27 @@ pub mod MockAvsServiceManager { } } }; - /**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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StaleStakesForbiddenUpdate { #[allow(missing_docs)] pub value: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3283,7 +2536,7 @@ pub mod MockAvsServiceManager { ```solidity constructor(address _registryCoordinator, address _avsDirectory, address _rewardsCoordinator); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _registryCoordinator: alloy::sol_types::private::Address, @@ -3371,16 +2624,21 @@ pub mod MockAvsServiceManager { ```solidity function avsDirectory() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsDirectoryCall {} ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsDirectoryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3476,16 +2734,21 @@ pub mod MockAvsServiceManager { ```solidity function blsApkRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryCall {} ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3581,7 +2844,7 @@ pub mod MockAvsServiceManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct checkSignaturesCall { pub msgHash: alloy::sol_types::private::FixedBytes<32>, @@ -3590,13 +2853,18 @@ pub mod MockAvsServiceManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3701,137 +2969,8 @@ pub mod MockAvsServiceManager { 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]; + 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, @@ -3840,11 +2979,20 @@ pub mod MockAvsServiceManager { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( as alloy_sol_types::SolType>::tokenize( - &self.rewardsSubmissions, - ),) + ( + 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( @@ -3862,16 +3010,21 @@ pub mod MockAvsServiceManager { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3967,16 +3120,21 @@ pub mod MockAvsServiceManager { ```solidity function deregisterOperatorFromAVS(address operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorFromAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4076,18 +3234,23 @@ pub mod MockAvsServiceManager { ```solidity function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorRestakedStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4190,16 +3353,21 @@ pub mod MockAvsServiceManager { ```solidity function getRestakeableStrategies() external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesCall {} ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4298,16 +3466,21 @@ pub mod MockAvsServiceManager { ```solidity function initialize(address _initialOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4409,16 +3582,21 @@ pub mod MockAvsServiceManager { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4514,7 +3692,7 @@ pub mod MockAvsServiceManager { ```solidity function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSCall { pub operator: alloy::sol_types::private::Address, @@ -4522,10 +3700,15 @@ pub mod MockAvsServiceManager { ::RustType, } ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4641,16 +3824,21 @@ pub mod MockAvsServiceManager { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4746,14 +3934,19 @@ pub mod MockAvsServiceManager { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4845,236 +4038,25 @@ pub mod MockAvsServiceManager { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setStaleStakesForbiddenReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5174,16 +4156,21 @@ pub mod MockAvsServiceManager { ```solidity function stakeRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryCall {} ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5279,16 +4266,21 @@ pub mod MockAvsServiceManager { ```solidity function staleStakesForbidden() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct staleStakesForbiddenCall {} ///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct staleStakesForbiddenReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5384,16 +4376,21 @@ pub mod MockAvsServiceManager { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5493,7 +4490,7 @@ pub mod MockAvsServiceManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct trySignatureAndApkVerificationCall { pub msgHash: alloy::sol_types::private::FixedBytes<32>, @@ -5502,13 +4499,18 @@ pub mod MockAvsServiceManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct trySignatureAndApkVerificationReturn { pub pairingSuccessful: bool, pub siganatureIsValid: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5640,16 +4642,21 @@ pub mod MockAvsServiceManager { ```solidity function updateAVSMetadataURI(string memory _metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5752,7 +4759,6 @@ pub mod MockAvsServiceManager { avsDirectory(avsDirectoryCall), blsApkRegistry(blsApkRegistryCall), checkSignatures(checkSignaturesCall), - createAVSRewardsSubmission(createAVSRewardsSubmissionCall), delegation(delegationCall), deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), @@ -5762,8 +4768,6 @@ pub mod MockAvsServiceManager { registerOperatorToAVS(registerOperatorToAVSCall), registryCoordinator(registryCoordinatorCall), renounceOwnership(renounceOwnershipCall), - rewardsInitiator(rewardsInitiatorCall), - setRewardsInitiator(setRewardsInitiatorCall), setStaleStakesForbidden(setStaleStakesForbiddenCall), stakeRegistry(stakeRegistryCall), staleStakesForbidden(staleStakesForbiddenCall), @@ -5782,7 +4786,6 @@ pub mod MockAvsServiceManager { 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], @@ -5799,15 +4802,13 @@ pub mod MockAvsServiceManager { [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; + const COUNT: usize = 18usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -5818,9 +4819,6 @@ pub mod MockAvsServiceManager { Self::checkSignatures(_) => { ::SELECTOR } - Self::createAVSRewardsSubmission(_) => { - ::SELECTOR - } Self::delegation(_) => ::SELECTOR, Self::deregisterOperatorFromAVS(_) => { ::SELECTOR @@ -5842,12 +4840,6 @@ pub mod MockAvsServiceManager { Self::renounceOwnership(_) => { ::SELECTOR } - Self::rewardsInitiator(_) => { - ::SELECTOR - } - Self::setRewardsInitiator(_) => { - ::SELECTOR - } Self::setStaleStakesForbidden(_) => { ::SELECTOR } @@ -5916,18 +4908,6 @@ pub mod MockAvsServiceManager { } getOperatorRestakedStrategies }, - { - fn setRewardsInitiator( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(MockAvsServiceManagerCalls::setRewardsInitiator) - } - setRewardsInitiator - }, { fn setStaleStakesForbidden( data: &[u8], @@ -6114,31 +5094,6 @@ pub mod MockAvsServiceManager { } 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( @@ -6166,11 +5121,6 @@ pub mod MockAvsServiceManager { inner, ) } - Self::createAVSRewardsSubmission(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::delegation(inner) => { ::abi_encoded_size(inner) } @@ -6210,16 +5160,6 @@ pub mod MockAvsServiceManager { inner, ) } - Self::rewardsInitiator(inner) => { - ::abi_encoded_size( - inner, - ) - } - Self::setRewardsInitiator(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::setStaleStakesForbidden(inner) => { ::abi_encoded_size( inner, @@ -6264,11 +5204,6 @@ pub mod MockAvsServiceManager { Self::checkSignatures(inner) => { ::abi_encode_raw(inner, out) } - Self::createAVSRewardsSubmission(inner) => { - ::abi_encode_raw( - inner, out, - ) - } Self::delegation(inner) => { ::abi_encode_raw(inner, out) } @@ -6306,14 +5241,6 @@ pub mod MockAvsServiceManager { 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, @@ -6347,7 +5274,6 @@ pub mod MockAvsServiceManager { pub enum MockAvsServiceManagerEvents { Initialized(Initialized), OwnershipTransferred(OwnershipTransferred), - RewardsInitiatorUpdated(RewardsInitiatorUpdated), StaleStakesForbiddenUpdate(StaleStakesForbiddenUpdate), } #[automatically_derived] @@ -6374,17 +5300,12 @@ pub mod MockAvsServiceManager { 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; + const COUNT: usize = 3usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -6403,12 +5324,6 @@ pub mod MockAvsServiceManager { ) .map(Self::OwnershipTransferred) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( - topics, data, validate, - ) - .map(Self::RewardsInitiatorUpdated) - } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, @@ -6437,9 +5352,6 @@ pub mod MockAvsServiceManager { 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) } @@ -6453,9 +5365,6 @@ pub mod MockAvsServiceManager { 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) } @@ -6692,15 +5601,6 @@ pub mod MockAvsServiceManager { 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 {}) @@ -6759,21 +5659,6 @@ pub mod MockAvsServiceManager { ) -> 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, @@ -6848,12 +5733,6 @@ pub mod MockAvsServiceManager { ) -> 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, diff --git a/crates/utils/src/mockerc20.rs b/crates/utils/src/deploy/mockerc20.rs similarity index 79% rename from crates/utils/src/mockerc20.rs rename to crates/utils/src/deploy/mockerc20.rs index 89369f3b..8607f273 100644 --- a/crates/utils/src/mockerc20.rs +++ b/crates/utils/src/deploy/mockerc20.rs @@ -314,35 +314,45 @@ interface MockERC20 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod MockERC20 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b815250604051806040016040528060038152602001624d434b60e81b8152508160039080519060200190610066929190610082565b50805161007a906004906020840190610082565b505050610156565b82805461008e9061011b565b90600052602060002090601f0160209004810192826100b057600085556100f6565b82601f106100c957805160ff19168380011785556100f6565b828001600101855582156100f6579182015b828111156100f65782518255916020019190600101906100db565b50610102929150610106565b5090565b5b808211156101025760008155600101610107565b600181811c9082168061012f57607f821691505b6020821081141561015057634e487b7160e01b600052602260045260246000fd5b50919050565b61090f806101656000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061074c565b60405180910390f35b6100ea6100e53660046107bd565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107e7565b61026a565b604051601281526020016100ce565b6100ea61013c3660046107bd565b610277565b61015461014f3660046107bd565b610299565b005b6100fe610164366004610823565b6001600160a01b031660009081526020819052604090205490565b6100c16102a7565b6100ea6101953660046107bd565b6102b6565b6100ea6101a83660046107bd565b610341565b6100fe6101bb366004610845565b61034f565b6060600380546101cf90610878565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610878565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b60003361026081858561037a565b5060019392505050565b600061026084848461049e565b60003361026081858561028a838361034f565b61029491906108b3565b61037a565b6102a3828261066d565b5050565b6060600480546101cf90610878565b600033816102c4828661034f565b9050838110156103295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610336828686840361037a565b506001949350505050565b60003361026081858561049e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610320565b6001600160a01b03821661043d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610320565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610320565b6001600160a01b0382166105645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610320565b6001600160a01b038316600090815260208190526040902054818110156105dc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610320565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106139084906108b3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065f91815260200190565b60405180910390a350505050565b6001600160a01b0382166106c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610320565b80600260008282546106d591906108b3565b90915550506001600160a01b038216600090815260208190526040812080548392906107029084906108b3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107795785810183015185820160400152820161075d565b8181111561078b576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b857600080fd5b919050565b600080604083850312156107d057600080fd5b6107d9836107a1565b946020939093013593505050565b6000806000606084860312156107fc57600080fd5b610805846107a1565b9250610813602085016107a1565b9150604084013590509250925092565b60006020828403121561083557600080fd5b61083e826107a1565b9392505050565b6000806040838503121561085857600080fd5b610861836107a1565b915061086f602084016107a1565b90509250929050565b600181811c9082168061088c57607f821691505b602082108114156108ad57634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d457634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220cdd5dacf8932073a3caffc72e84d1bc1b5bd6191303c553cc00319f525760ef364736f6c634300080c0033 + ///0x608060405234801561000f575f5ffd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b815250604051806040016040528060038152602001624d434b60e81b815250816003908161005e919061010b565b50600461006b828261010b565b5050506101c5565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061009b57607f821691505b6020821081036100b957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561010657805f5260205f20601f840160051c810160208510156100e45750805b601f840160051c820191505b81811015610103575f81556001016100f0565b50505b505050565b81516001600160401b0381111561012457610124610073565b610138816101328454610087565b846100bf565b6020601f82116001811461016a575f83156101535750848201515b5f19600385901b1c1916600184901b178455610103565b5f84815260208120601f198516915b828110156101995787850151825560209485019460019092019101610179565b50848210156101b657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6108d5806101d25f395ff3fe608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c806340c10f191161006e57806340c10f191461013d57806370a082311461015257806395d89b411461017a578063a457c2d714610182578063a9059cbb14610195578063dd62ed3e146101a8575f5ffd5b806306fdde03146100b5578063095ea7b3146100d357806318160ddd146100f657806323b872dd14610108578063313ce5671461011b578063395093511461012a575b5f5ffd5b6100bd6101bb565b6040516100ca9190610745565b60405180910390f35b6100e66100e1366004610795565b61024b565b60405190151581526020016100ca565b6002545b6040519081526020016100ca565b6100e66101163660046107bd565b610264565b604051601281526020016100ca565b6100e6610138366004610795565b61027a565b61015061014b366004610795565b61029b565b005b6100fa6101603660046107f7565b6001600160a01b03165f9081526020819052604090205490565b6100bd6102a9565b6100e6610190366004610795565b6102b8565b6100e66101a3366004610795565b610342565b6100fa6101b6366004610817565b61034f565b6060600380546101ca90610848565b80601f01602080910402602001604051908101604052809291908181526020018280546101f690610848565b80156102415780601f1061021857610100808354040283529160200191610241565b820191905f5260205f20905b81548152906001019060200180831161022457829003601f168201915b5050505050905090565b5f33610258818585610379565b60019150505b92915050565b5f61027084848461049c565b5060019392505050565b5f3361025881858561028c838361034f565b6102969190610880565b610379565b6102a58282610669565b5050565b6060600480546101ca90610848565b5f33816102c5828661034f565b90508381101561032a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6103378286868403610379565b506001949350505050565b5f3361025881858561049c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103db5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610321565b6001600160a01b03821661043c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610321565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610321565b6001600160a01b0382166105625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610321565b6001600160a01b0383165f90815260208190526040902054818110156105d95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610321565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061060f908490610880565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065b91815260200190565b60405180910390a350505050565b6001600160a01b0382166106bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610321565b8060025f8282546106d09190610880565b90915550506001600160a01b0382165f90815260208190526040812080548392906106fc908490610880565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610790575f5ffd5b919050565b5f5f604083850312156107a6575f5ffd5b6107af8361077a565b946020939093013593505050565b5f5f5f606084860312156107cf575f5ffd5b6107d88461077a565b92506107e66020850161077a565b929592945050506040919091013590565b5f60208284031215610807575f5ffd5b6108108261077a565b9392505050565b5f5f60408385031215610828575f5ffd5b6108318361077a565b915061083f6020840161077a565b90509250929050565b600181811c9082168061085c57607f821691505b60208210810361087a57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561025e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220531bb55a2a3d14d0f38b765009acde15b4643e9c9d83222a0a641807e6b860d864736f6c634300081b0033 /// ``` #[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\xA8W__\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB5W\x80c\t^\xA7\xB3\x14a\0\xD3W\x80c\x18\x16\r\xDD\x14a\0\xF6W\x80c#\xB8r\xDD\x14a\x01\x08W\x80c1<\xE5g\x14a\x01\x1BW\x80c9P\x93Q\x14a\x01*W[__\xFD[a\0\xBDa\x01\xBBV[`@Qa\0\xCA\x91\x90a\x07EV[`@Q\x80\x91\x03\x90\xF3[a\0\xE6a\0\xE16`\x04a\x07\x95V[a\x02KV[`@Q\x90\x15\x15\x81R` \x01a\0\xCAV[`\x02T[`@Q\x90\x81R` \x01a\0\xCAV[a\0\xE6a\x01\x166`\x04a\x07\xBDV[a\x02dV[`@Q`\x12\x81R` \x01a\0\xCAV[a\0\xE6a\x0186`\x04a\x07\x95V[a\x02zV[a\x01Pa\x01K6`\x04a\x07\x95V[a\x02\x9BV[\0[a\0\xFAa\x01`6`\x04a\x07\xF7V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xBDa\x02\xA9V[a\0\xE6a\x01\x906`\x04a\x07\x95V[a\x02\xB8V[a\0\xE6a\x01\xA36`\x04a\x07\x95V[a\x03BV[a\0\xFAa\x01\xB66`\x04a\x08\x17V[a\x03OV[```\x03\x80Ta\x01\xCA\x90a\x08HV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xF6\x90a\x08HV[\x80\x15a\x02AW\x80`\x1F\x10a\x02\x18Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02AV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02$W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_3a\x02X\x81\x85\x85a\x03yV[`\x01\x91PP[\x92\x91PPV[_a\x02p\x84\x84\x84a\x04\x9CV[P`\x01\x93\x92PPPV[_3a\x02X\x81\x85\x85a\x02\x8C\x83\x83a\x03OV[a\x02\x96\x91\x90a\x08\x80V[a\x03yV[a\x02\xA5\x82\x82a\x06iV[PPV[```\x04\x80Ta\x01\xCA\x90a\x08HV[_3\x81a\x02\xC5\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\x037\x82\x86\x86\x84\x03a\x03yV[P`\x01\x94\x93PPPPV[_3a\x02X\x81\x85\x85a\x04\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16_\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\xDBW`@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\x9C\x9D\x83\"*\nd\x18\x07\xE6\xB8`\xD8dsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061074c565b60405180910390f35b6100ea6100e53660046107bd565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107e7565b61026a565b604051601281526020016100ce565b6100ea61013c3660046107bd565b610277565b61015461014f3660046107bd565b610299565b005b6100fe610164366004610823565b6001600160a01b031660009081526020819052604090205490565b6100c16102a7565b6100ea6101953660046107bd565b6102b6565b6100ea6101a83660046107bd565b610341565b6100fe6101bb366004610845565b61034f565b6060600380546101cf90610878565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610878565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b60003361026081858561037a565b5060019392505050565b600061026084848461049e565b60003361026081858561028a838361034f565b61029491906108b3565b61037a565b6102a3828261066d565b5050565b6060600480546101cf90610878565b600033816102c4828661034f565b9050838110156103295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610336828686840361037a565b506001949350505050565b60003361026081858561049e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610320565b6001600160a01b03821661043d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610320565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610320565b6001600160a01b0382166105645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610320565b6001600160a01b038316600090815260208190526040902054818110156105dc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610320565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106139084906108b3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065f91815260200190565b60405180910390a350505050565b6001600160a01b0382166106c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610320565b80600260008282546106d591906108b3565b90915550506001600160a01b038216600090815260208190526040812080548392906107029084906108b3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107795785810183015185820160400152820161075d565b8181111561078b576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b857600080fd5b919050565b600080604083850312156107d057600080fd5b6107d9836107a1565b946020939093013593505050565b6000806000606084860312156107fc57600080fd5b610805846107a1565b9250610813602085016107a1565b9150604084013590509250925092565b60006020828403121561083557600080fd5b61083e826107a1565b9392505050565b6000806040838503121561085857600080fd5b610861836107a1565b915061086f602084016107a1565b90509250929050565b600181811c9082168061088c57607f821691505b602082108114156108ad57634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d457634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220cdd5dacf8932073a3caffc72e84d1bc1b5bd6191303c553cc00319f525760ef364736f6c634300080c0033 + ///0x608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c806340c10f191161006e57806340c10f191461013d57806370a082311461015257806395d89b411461017a578063a457c2d714610182578063a9059cbb14610195578063dd62ed3e146101a8575f5ffd5b806306fdde03146100b5578063095ea7b3146100d357806318160ddd146100f657806323b872dd14610108578063313ce5671461011b578063395093511461012a575b5f5ffd5b6100bd6101bb565b6040516100ca9190610745565b60405180910390f35b6100e66100e1366004610795565b61024b565b60405190151581526020016100ca565b6002545b6040519081526020016100ca565b6100e66101163660046107bd565b610264565b604051601281526020016100ca565b6100e6610138366004610795565b61027a565b61015061014b366004610795565b61029b565b005b6100fa6101603660046107f7565b6001600160a01b03165f9081526020819052604090205490565b6100bd6102a9565b6100e6610190366004610795565b6102b8565b6100e66101a3366004610795565b610342565b6100fa6101b6366004610817565b61034f565b6060600380546101ca90610848565b80601f01602080910402602001604051908101604052809291908181526020018280546101f690610848565b80156102415780601f1061021857610100808354040283529160200191610241565b820191905f5260205f20905b81548152906001019060200180831161022457829003601f168201915b5050505050905090565b5f33610258818585610379565b60019150505b92915050565b5f61027084848461049c565b5060019392505050565b5f3361025881858561028c838361034f565b6102969190610880565b610379565b6102a58282610669565b5050565b6060600480546101ca90610848565b5f33816102c5828661034f565b90508381101561032a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6103378286868403610379565b506001949350505050565b5f3361025881858561049c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103db5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610321565b6001600160a01b03821661043c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610321565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610321565b6001600160a01b0382166105625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610321565b6001600160a01b0383165f90815260208190526040902054818110156105d95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610321565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061060f908490610880565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065b91815260200190565b60405180910390a350505050565b6001600160a01b0382166106bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610321565b8060025f8282546106d09190610880565b90915550506001600160a01b0382165f90815260208190526040812080548392906106fc908490610880565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610790575f5ffd5b919050565b5f5f604083850312156107a6575f5ffd5b6107af8361077a565b946020939093013593505050565b5f5f5f606084860312156107cf575f5ffd5b6107d88461077a565b92506107e66020850161077a565b929592945050506040919091013590565b5f60208284031215610807575f5ffd5b6108108261077a565b9392505050565b5f5f60408385031215610828575f5ffd5b6108318361077a565b915061083f6020840161077a565b90509250929050565b600181811c9082168061085c57607f821691505b60208210810361087a57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561025e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220531bb55a2a3d14d0f38b765009acde15b4643e9c9d83222a0a641807e6b860d864736f6c634300081b0033 /// ``` #[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\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\xA8W__\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB5W\x80c\t^\xA7\xB3\x14a\0\xD3W\x80c\x18\x16\r\xDD\x14a\0\xF6W\x80c#\xB8r\xDD\x14a\x01\x08W\x80c1<\xE5g\x14a\x01\x1BW\x80c9P\x93Q\x14a\x01*W[__\xFD[a\0\xBDa\x01\xBBV[`@Qa\0\xCA\x91\x90a\x07EV[`@Q\x80\x91\x03\x90\xF3[a\0\xE6a\0\xE16`\x04a\x07\x95V[a\x02KV[`@Q\x90\x15\x15\x81R` \x01a\0\xCAV[`\x02T[`@Q\x90\x81R` \x01a\0\xCAV[a\0\xE6a\x01\x166`\x04a\x07\xBDV[a\x02dV[`@Q`\x12\x81R` \x01a\0\xCAV[a\0\xE6a\x0186`\x04a\x07\x95V[a\x02zV[a\x01Pa\x01K6`\x04a\x07\x95V[a\x02\x9BV[\0[a\0\xFAa\x01`6`\x04a\x07\xF7V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xBDa\x02\xA9V[a\0\xE6a\x01\x906`\x04a\x07\x95V[a\x02\xB8V[a\0\xE6a\x01\xA36`\x04a\x07\x95V[a\x03BV[a\0\xFAa\x01\xB66`\x04a\x08\x17V[a\x03OV[```\x03\x80Ta\x01\xCA\x90a\x08HV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xF6\x90a\x08HV[\x80\x15a\x02AW\x80`\x1F\x10a\x02\x18Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02AV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02$W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_3a\x02X\x81\x85\x85a\x03yV[`\x01\x91PP[\x92\x91PPV[_a\x02p\x84\x84\x84a\x04\x9CV[P`\x01\x93\x92PPPV[_3a\x02X\x81\x85\x85a\x02\x8C\x83\x83a\x03OV[a\x02\x96\x91\x90a\x08\x80V[a\x03yV[a\x02\xA5\x82\x82a\x06iV[PPV[```\x04\x80Ta\x01\xCA\x90a\x08HV[_3\x81a\x02\xC5\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\x037\x82\x86\x86\x84\x03a\x03yV[P`\x01\x94\x93PPPPV[_3a\x02X\x81\x85\x85a\x04\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16_\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\xDBW`@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\x9C\x9D\x83\"*\nd\x18\x07\xE6\xB8`\xD8dsolcC\0\x08\x1B\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -352,7 +362,12 @@ pub mod MockERC20 { #[allow(missing_docs)] pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -452,7 +467,12 @@ pub mod MockERC20 { ```solidity event Transfer(address indexed from, address indexed to, uint256 value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -462,7 +482,12 @@ pub mod MockERC20 { #[allow(missing_docs)] pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -562,19 +587,24 @@ pub mod MockERC20 { ```solidity function allowance(address owner, address spender) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -689,19 +719,24 @@ pub mod MockERC20 { ```solidity function approve(address spender, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -816,18 +851,23 @@ pub mod MockERC20 { ```solidity function balanceOf(address account) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -927,16 +967,21 @@ pub mod MockERC20 { ```solidity function decimals() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsCall {} ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsReturn { pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1032,19 +1077,24 @@ pub mod MockERC20 { ```solidity function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decreaseAllowanceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1159,19 +1209,24 @@ pub mod MockERC20 { ```solidity function increaseAllowance(address spender, uint256 addedValue) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct increaseAllowanceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1286,17 +1341,22 @@ pub mod MockERC20 { ```solidity function mint(address account, uint256 amount) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct mintReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1411,16 +1471,21 @@ pub mod MockERC20 { ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1516,16 +1581,21 @@ pub mod MockERC20 { ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1621,16 +1691,21 @@ pub mod MockERC20 { ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1726,19 +1801,24 @@ pub mod MockERC20 { ```solidity function transfer(address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1853,7 +1933,7 @@ pub mod MockERC20 { ```solidity function transferFrom(address from, address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { pub from: alloy::sol_types::private::Address, @@ -1861,12 +1941,17 @@ pub mod MockERC20 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/mockerc721.rs b/crates/utils/src/deploy/mockerc721.rs similarity index 75% rename from crates/utils/src/mockerc721.rs rename to crates/utils/src/deploy/mockerc721.rs index 36b13ee2..eb9d2aae 100644 --- a/crates/utils/src/mockerc721.rs +++ b/crates/utils/src/deploy/mockerc721.rs @@ -377,35 +377,45 @@ interface MockERC721 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod MockERC721 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b50610f1d806100206000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610ada565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610b4b565b34801561014557600080fd5b5061016f610154366004610b5e565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610b8e565b6103c6565b005b61019a6101aa366004610bb8565b6104ad565b61019a6101bd366004610bb8565b6106a6565b3480156101ce57600080fd5b5061019a6101dd366004610ca0565b610795565b3480156101ee57600080fd5b5061016f6101fd366004610b5e565b610817565b34801561020e57600080fd5b5061022261021d366004610d04565b61086e565b60405190815260200161010e565b34801561023c57600080fd5b5061012c6108d1565b34801561025157600080fd5b5061019a610260366004610d1f565b6108e0565b61019a610273366004610d5b565b61094c565b34801561028457600080fd5b5061012c610293366004610b5e565b50606090565b3480156102a557600080fd5b506101026102b4366004610dd7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610e0a565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610e0a565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105035760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610448565b6001600160a01b03821661054d5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610448565b336001600160a01b038416148061058757506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105a857506000818152600460205260409020546001600160a01b031633145b6105e55760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161060983610e5b565b90915550506001600160a01b038216600090815260036020526040812080549161063283610e72565b9091555050600081815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106b18383836104ad565b813b15806107515750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190610e8d565b6001600160e01b031916145b6107905760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156107de5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610448565b81516107f1906000906020850190610a28565b508051610805906001906020840190610a28565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b0316806108695760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610448565b919050565b60006001600160a01b0382166108b55760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610e0a565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109578484846104ad565b823b15806109e35750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610994903390899088908890600401610eaa565b6020604051808303816000875af11580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190610e8d565b6001600160e01b031916145b610a225760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b828054610a3490610e0a565b90600052602060002090601f016020900481019282610a565760008555610a9c565b82601f10610a6f57805160ff1916838001178555610a9c565b82800160010185558215610a9c579182015b82811115610a9c578251825591602001919060010190610a81565b50610aa8929150610aac565b5090565b5b80821115610aa85760008155600101610aad565b6001600160e01b031981168114610ad757600080fd5b50565b600060208284031215610aec57600080fd5b8135610af781610ac1565b9392505050565b6000815180845260005b81811015610b2457602081850181015186830182015201610b08565b81811115610b36576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610af76020830184610afe565b600060208284031215610b7057600080fd5b5035919050565b80356001600160a01b038116811461086957600080fd5b60008060408385031215610ba157600080fd5b610baa83610b77565b946020939093013593505050565b600080600060608486031215610bcd57600080fd5b610bd684610b77565b9250610be460208501610b77565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610c2557610c25610bf4565b604051601f8501601f19908116603f01168101908282118183101715610c4d57610c4d610bf4565b81604052809350858152868686011115610c6657600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610c9157600080fd5b610af783833560208501610c0a565b60008060408385031215610cb357600080fd5b823567ffffffffffffffff80821115610ccb57600080fd5b610cd786838701610c80565b93506020850135915080821115610ced57600080fd5b50610cfa85828601610c80565b9150509250929050565b600060208284031215610d1657600080fd5b610af782610b77565b60008060408385031215610d3257600080fd5b610d3b83610b77565b915060208301358015158114610d5057600080fd5b809150509250929050565b60008060008060808587031215610d7157600080fd5b610d7a85610b77565b9350610d8860208601610b77565b925060408501359150606085013567ffffffffffffffff811115610dab57600080fd5b8501601f81018713610dbc57600080fd5b610dcb87823560208401610c0a565b91505092959194509250565b60008060408385031215610dea57600080fd5b610df383610b77565b9150610e0160208401610b77565b90509250929050565b600181811c90821680610e1e57607f821691505b60208210811415610e3f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610e6a57610e6a610e45565b506000190190565b6000600019821415610e8657610e86610e45565b5060010190565b600060208284031215610e9f57600080fd5b8151610af781610ac1565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610edd90830184610afe565b969550505050505056fea2646970667358221220b79b5f39d2ab626efb68c2f6f351020c420dbbeb54db9ca63adb51425abda4e964736f6c634300080c0033 + ///0x6080604052348015600e575f5ffd5b50610f0d8061001c5f395ff3fe6080604052600436106100d9575f3560e01c80636352211e1161007c578063a22cb46511610057578063a22cb46514610238578063b88d4fde14610257578063c87b56dd1461026a578063e985e9c51461028a575f5ffd5b80636352211e146101d857806370a08231146101f757806395d89b4114610224575f5ffd5b8063095ea7b3116100b7578063095ea7b31461017e57806323b872dd1461019357806342842e0e146101a65780634cd88b76146101b9575f5ffd5b806301ffc9a7146100dd57806306fdde0314610111578063081812fc14610132575b5f5ffd5b3480156100e8575f5ffd5b506100fc6100f7366004610a08565b6102d1565b60405190151581526020015b60405180910390f35b34801561011c575f5ffd5b50610125610322565b6040516101089190610a58565b34801561013d575f5ffd5b5061016661014c366004610a6a565b5f908152600460205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610108565b61019161018c366004610a97565b6103b1565b005b6101916101a1366004610abf565b610495565b6101916101b4366004610abf565b610688565b3480156101c4575f5ffd5b506101916101d3366004610ba2565b610773565b3480156101e3575f5ffd5b506101666101f2366004610a6a565b6107e6565b348015610202575f5ffd5b50610216610211366004610c07565b61083c565b604051908152602001610108565b34801561022f575f5ffd5b5061012561089d565b348015610243575f5ffd5b50610191610252366004610c20565b6108ac565b610191610265366004610c59565b610917565b348015610275575f5ffd5b50610125610284366004610a6a565b50606090565b348015610295575f5ffd5b506100fc6102a4366004610cd0565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6301ffc9a760e01b6001600160e01b03198316148061030157506380ac58cd60e01b6001600160e01b03198316145b8061031c5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60605f805461033090610d01565b80601f016020809104026020016040519081016040528092919081815260200182805461035c90610d01565b80156103a75780601f1061037e576101008083540402835291602001916103a7565b820191905f5260205f20905b81548152906001019060200180831161038a57829003601f168201915b5050505050905090565b5f818152600260205260409020546001600160a01b0316338114806103f857506001600160a01b0381165f90815260056020908152604080832033845290915290205460ff165b61043a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b5f8281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f818152600260205260409020546001600160a01b038481169116146104ea5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610431565b6001600160a01b0382166105345760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610431565b336001600160a01b038416148061056d57506001600160a01b0383165f90815260056020908152604080832033845290915290205460ff165b8061058d57505f818152600460205260409020546001600160a01b031633145b6105ca5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610431565b6001600160a01b0383165f9081526003602052604081208054916105ed83610d4d565b90915550506001600160a01b0382165f90815260036020526040812080549161061583610d62565b90915550505f81815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610693838383610495565b813b158061072f5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af11580156106ff573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107239190610d7a565b6001600160e01b031916145b61076e5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610431565b505050565b60065460ff16156107bc5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610431565b5f6107c78382610de0565b5060016107d48282610de0565b50506006805460ff1916600117905550565b5f818152600260205260409020546001600160a01b0316806108375760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610431565b919050565b5f6001600160a01b0382166108825760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610431565b506001600160a01b03165f9081526003602052604090205490565b60606001805461033090610d01565b335f8181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610922848484610495565b823b15806109ab5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a029061095f903390899088908890600401610e9b565b6020604051808303815f875af115801561097b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099f9190610d7a565b6001600160e01b031916145b6109ea5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610431565b50505050565b6001600160e01b031981168114610a05575f5ffd5b50565b5f60208284031215610a18575f5ffd5b8135610a23816109f0565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a236020830184610a2a565b5f60208284031215610a7a575f5ffd5b5035919050565b80356001600160a01b0381168114610837575f5ffd5b5f5f60408385031215610aa8575f5ffd5b610ab183610a81565b946020939093013593505050565b5f5f5f60608486031215610ad1575f5ffd5b610ada84610a81565b9250610ae860208501610a81565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f5f67ffffffffffffffff841115610b2757610b27610af9565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715610b5657610b56610af9565b604052838152905080828401851015610b6d575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f830112610b93575f5ffd5b610a2383833560208501610b0d565b5f5f60408385031215610bb3575f5ffd5b823567ffffffffffffffff811115610bc9575f5ffd5b610bd585828601610b84565b925050602083013567ffffffffffffffff811115610bf1575f5ffd5b610bfd85828601610b84565b9150509250929050565b5f60208284031215610c17575f5ffd5b610a2382610a81565b5f5f60408385031215610c31575f5ffd5b610c3a83610a81565b915060208301358015158114610c4e575f5ffd5b809150509250929050565b5f5f5f5f60808587031215610c6c575f5ffd5b610c7585610a81565b9350610c8360208601610a81565b925060408501359150606085013567ffffffffffffffff811115610ca5575f5ffd5b8501601f81018713610cb5575f5ffd5b610cc487823560208401610b0d565b91505092959194509250565b5f5f60408385031215610ce1575f5ffd5b610cea83610a81565b9150610cf860208401610a81565b90509250929050565b600181811c90821680610d1557607f821691505b602082108103610d3357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b5f81610d5b57610d5b610d39565b505f190190565b5f60018201610d7357610d73610d39565b5060010190565b5f60208284031215610d8a575f5ffd5b8151610a23816109f0565b601f82111561076e57805f5260205f20601f840160051c81016020851015610dba5750805b601f840160051c820191505b81811015610dd9575f8155600101610dc6565b5050505050565b815167ffffffffffffffff811115610dfa57610dfa610af9565b610e0e81610e088454610d01565b84610d95565b6020601f821160018114610e40575f8315610e295750848201515b5f19600385901b1c1916600184901b178455610dd9565b5f84815260208120601f198516915b82811015610e6f5787850151825560209485019460019092019101610e4f565b5084821015610e8c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90610ecd90830184610a2a565b969550505050505056fea26469706673582212200d460546c850c9efafe1f0dd878c7a9be5b1b21fc0af1a3bb45315b3f5273e4e64736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R4\x80\x15`\x0EW__\xFD[Pa\x0F\r\x80a\0\x1C_9_\xF3\xFE`\x80`@R`\x046\x10a\0\xD9W_5`\xE0\x1C\x80ccR!\x1E\x11a\0|W\x80c\xA2,\xB4e\x11a\0WW\x80c\xA2,\xB4e\x14a\x028W\x80c\xB8\x8DO\xDE\x14a\x02WW\x80c\xC8{V\xDD\x14a\x02jW\x80c\xE9\x85\xE9\xC5\x14a\x02\x8AW__\xFD[\x80ccR!\x1E\x14a\x01\xD8W\x80cp\xA0\x821\x14a\x01\xF7W\x80c\x95\xD8\x9BA\x14a\x02$W__\xFD[\x80c\t^\xA7\xB3\x11a\0\xB7W\x80c\t^\xA7\xB3\x14a\x01~W\x80c#\xB8r\xDD\x14a\x01\x93W\x80cB\x84.\x0E\x14a\x01\xA6W\x80cL\xD8\x8Bv\x14a\x01\xB9W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xDDW\x80c\x06\xFD\xDE\x03\x14a\x01\x11W\x80c\x08\x18\x12\xFC\x14a\x012W[__\xFD[4\x80\x15a\0\xE8W__\xFD[Pa\0\xFCa\0\xF76`\x04a\n\x08V[a\x02\xD1V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x1CW__\xFD[Pa\x01%a\x03\"V[`@Qa\x01\x08\x91\x90a\nXV[4\x80\x15a\x01=W__\xFD[Pa\x01fa\x01L6`\x04a\njV[_\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\x08V[a\x01\x91a\x01\x8C6`\x04a\n\x97V[a\x03\xB1V[\0[a\x01\x91a\x01\xA16`\x04a\n\xBFV[a\x04\x95V[a\x01\x91a\x01\xB46`\x04a\n\xBFV[a\x06\x88V[4\x80\x15a\x01\xC4W__\xFD[Pa\x01\x91a\x01\xD36`\x04a\x0B\xA2V[a\x07sV[4\x80\x15a\x01\xE3W__\xFD[Pa\x01fa\x01\xF26`\x04a\njV[a\x07\xE6V[4\x80\x15a\x02\x02W__\xFD[Pa\x02\x16a\x02\x116`\x04a\x0C\x07V[a\x08=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07#\x91\x90a\rzV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\x07nW`@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\x041V[PPPV[`\x06T`\xFF\x16\x15a\x07\xBCW`@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\x041V[_a\x07\xC7\x83\x82a\r\xE0V[P`\x01a\x07\xD4\x82\x82a\r\xE0V[PP`\x06\x80T`\xFF\x19\x16`\x01\x17\x90UPV[_\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x087W`@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\x041V[\x91\x90PV[_`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkZERO_ADDRESS`\xA0\x1B`D\x82\x01R`d\x01a\x041V[P`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x030\x90a\r\x01V[3_\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\t\"\x84\x84\x84a\x04\x95V[\x82;\x15\x80a\t\xABWP`@Qc\n\x85\xBD\x01`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x15\x0Bz\x02\x90a\t_\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x0E\x9BV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\t{W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x9F\x91\x90a\rzV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\t\xEAW`@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\x041V[PPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\n\x05W__\xFD[PV[_` \x82\x84\x03\x12\x15a\n\x18W__\xFD[\x815a\n#\x81a\t\xF0V[\x93\x92PPPV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\n#` \x83\x01\x84a\n*V[_` \x82\x84\x03\x12\x15a\nzW__\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x087W__\xFD[__`@\x83\x85\x03\x12\x15a\n\xA8W__\xFD[a\n\xB1\x83a\n\x81V[\x94` \x93\x90\x93\x015\x93PPPV[___``\x84\x86\x03\x12\x15a\n\xD1W__\xFD[a\n\xDA\x84a\n\x81V[\x92Pa\n\xE8` \x85\x01a\n\x81V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[__g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11\x15a\x0B'Wa\x0B'a\n\xF9V[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x0BVWa\x0BVa\n\xF9V[`@R\x83\x81R\x90P\x80\x82\x84\x01\x85\x10\x15a\x0BmW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01RP\x93\x92PPPV[_\x82`\x1F\x83\x01\x12a\x0B\x93W__\xFD[a\n#\x83\x835` \x85\x01a\x0B\rV[__`@\x83\x85\x03\x12\x15a\x0B\xB3W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC9W__\xFD[a\x0B\xD5\x85\x82\x86\x01a\x0B\x84V[\x92PP` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xF1W__\xFD[a\x0B\xFD\x85\x82\x86\x01a\x0B\x84V[\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x0C\x17W__\xFD[a\n#\x82a\n\x81V[__`@\x83\x85\x03\x12\x15a\x0C1W__\xFD[a\x0C:\x83a\n\x81V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x0CNW__\xFD[\x80\x91PP\x92P\x92\x90PV[____`\x80\x85\x87\x03\x12\x15a\x0ClW__\xFD[a\x0Cu\x85a\n\x81V[\x93Pa\x0C\x83` \x86\x01a\n\x81V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\xA5W__\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x0C\xB5W__\xFD[a\x0C\xC4\x87\x825` \x84\x01a\x0B\rV[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x0C\xE1W__\xFD[a\x0C\xEA\x83a\n\x81V[\x91Pa\x0C\xF8` \x84\x01a\n\x81V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\x15W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r3WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[_\x81a\r[Wa\r[a\r9V[P_\x19\x01\x90V[_`\x01\x82\x01a\rsWa\rsa\r9V[P`\x01\x01\x90V[_` \x82\x84\x03\x12\x15a\r\x8AW__\xFD[\x81Qa\n#\x81a\t\xF0V[`\x1F\x82\x11\x15a\x07nW\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\r\xBAWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\r\xD9W_\x81U`\x01\x01a\r\xC6V[PPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xFAWa\r\xFAa\n\xF9V[a\x0E\x0E\x81a\x0E\x08\x84Ta\r\x01V[\x84a\r\x95V[` `\x1F\x82\x11`\x01\x81\x14a\x0E@W_\x83\x15a\x0E)WP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\r\xD9V[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x0EoW\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x0EOV[P\x84\x82\x10\x15a\x0E\x8CW\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x82R\x84\x16` \x82\x01R`@\x81\x01\x83\x90R`\x80``\x82\x01\x81\x90R_\x90a\x0E\xCD\x90\x83\x01\x84a\n*V[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 \rF\x05F\xC8P\xC9\xEF\xAF\xE1\xF0\xDD\x87\x8Cz\x9B\xE5\xB1\xB2\x1F\xC0\xAF\x1A;\xB4S\x15\xB3\xF5'>NdsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610ada565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610b4b565b34801561014557600080fd5b5061016f610154366004610b5e565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610b8e565b6103c6565b005b61019a6101aa366004610bb8565b6104ad565b61019a6101bd366004610bb8565b6106a6565b3480156101ce57600080fd5b5061019a6101dd366004610ca0565b610795565b3480156101ee57600080fd5b5061016f6101fd366004610b5e565b610817565b34801561020e57600080fd5b5061022261021d366004610d04565b61086e565b60405190815260200161010e565b34801561023c57600080fd5b5061012c6108d1565b34801561025157600080fd5b5061019a610260366004610d1f565b6108e0565b61019a610273366004610d5b565b61094c565b34801561028457600080fd5b5061012c610293366004610b5e565b50606090565b3480156102a557600080fd5b506101026102b4366004610dd7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610e0a565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610e0a565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105035760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610448565b6001600160a01b03821661054d5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610448565b336001600160a01b038416148061058757506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105a857506000818152600460205260409020546001600160a01b031633145b6105e55760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161060983610e5b565b90915550506001600160a01b038216600090815260036020526040812080549161063283610e72565b9091555050600081815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106b18383836104ad565b813b15806107515750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190610e8d565b6001600160e01b031916145b6107905760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156107de5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610448565b81516107f1906000906020850190610a28565b508051610805906001906020840190610a28565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b0316806108695760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610448565b919050565b60006001600160a01b0382166108b55760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610e0a565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109578484846104ad565b823b15806109e35750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610994903390899088908890600401610eaa565b6020604051808303816000875af11580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190610e8d565b6001600160e01b031916145b610a225760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b828054610a3490610e0a565b90600052602060002090601f016020900481019282610a565760008555610a9c565b82601f10610a6f57805160ff1916838001178555610a9c565b82800160010185558215610a9c579182015b82811115610a9c578251825591602001919060010190610a81565b50610aa8929150610aac565b5090565b5b80821115610aa85760008155600101610aad565b6001600160e01b031981168114610ad757600080fd5b50565b600060208284031215610aec57600080fd5b8135610af781610ac1565b9392505050565b6000815180845260005b81811015610b2457602081850181015186830182015201610b08565b81811115610b36576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610af76020830184610afe565b600060208284031215610b7057600080fd5b5035919050565b80356001600160a01b038116811461086957600080fd5b60008060408385031215610ba157600080fd5b610baa83610b77565b946020939093013593505050565b600080600060608486031215610bcd57600080fd5b610bd684610b77565b9250610be460208501610b77565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610c2557610c25610bf4565b604051601f8501601f19908116603f01168101908282118183101715610c4d57610c4d610bf4565b81604052809350858152868686011115610c6657600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610c9157600080fd5b610af783833560208501610c0a565b60008060408385031215610cb357600080fd5b823567ffffffffffffffff80821115610ccb57600080fd5b610cd786838701610c80565b93506020850135915080821115610ced57600080fd5b50610cfa85828601610c80565b9150509250929050565b600060208284031215610d1657600080fd5b610af782610b77565b60008060408385031215610d3257600080fd5b610d3b83610b77565b915060208301358015158114610d5057600080fd5b809150509250929050565b60008060008060808587031215610d7157600080fd5b610d7a85610b77565b9350610d8860208601610b77565b925060408501359150606085013567ffffffffffffffff811115610dab57600080fd5b8501601f81018713610dbc57600080fd5b610dcb87823560208401610c0a565b91505092959194509250565b60008060408385031215610dea57600080fd5b610df383610b77565b9150610e0160208401610b77565b90509250929050565b600181811c90821680610e1e57607f821691505b60208210811415610e3f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610e6a57610e6a610e45565b506000190190565b6000600019821415610e8657610e86610e45565b5060010190565b600060208284031215610e9f57600080fd5b8151610af781610ac1565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610edd90830184610afe565b969550505050505056fea2646970667358221220b79b5f39d2ab626efb68c2f6f351020c420dbbeb54db9ca63adb51425abda4e964736f6c634300080c0033 + ///0x6080604052600436106100d9575f3560e01c80636352211e1161007c578063a22cb46511610057578063a22cb46514610238578063b88d4fde14610257578063c87b56dd1461026a578063e985e9c51461028a575f5ffd5b80636352211e146101d857806370a08231146101f757806395d89b4114610224575f5ffd5b8063095ea7b3116100b7578063095ea7b31461017e57806323b872dd1461019357806342842e0e146101a65780634cd88b76146101b9575f5ffd5b806301ffc9a7146100dd57806306fdde0314610111578063081812fc14610132575b5f5ffd5b3480156100e8575f5ffd5b506100fc6100f7366004610a08565b6102d1565b60405190151581526020015b60405180910390f35b34801561011c575f5ffd5b50610125610322565b6040516101089190610a58565b34801561013d575f5ffd5b5061016661014c366004610a6a565b5f908152600460205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610108565b61019161018c366004610a97565b6103b1565b005b6101916101a1366004610abf565b610495565b6101916101b4366004610abf565b610688565b3480156101c4575f5ffd5b506101916101d3366004610ba2565b610773565b3480156101e3575f5ffd5b506101666101f2366004610a6a565b6107e6565b348015610202575f5ffd5b50610216610211366004610c07565b61083c565b604051908152602001610108565b34801561022f575f5ffd5b5061012561089d565b348015610243575f5ffd5b50610191610252366004610c20565b6108ac565b610191610265366004610c59565b610917565b348015610275575f5ffd5b50610125610284366004610a6a565b50606090565b348015610295575f5ffd5b506100fc6102a4366004610cd0565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6301ffc9a760e01b6001600160e01b03198316148061030157506380ac58cd60e01b6001600160e01b03198316145b8061031c5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60605f805461033090610d01565b80601f016020809104026020016040519081016040528092919081815260200182805461035c90610d01565b80156103a75780601f1061037e576101008083540402835291602001916103a7565b820191905f5260205f20905b81548152906001019060200180831161038a57829003601f168201915b5050505050905090565b5f818152600260205260409020546001600160a01b0316338114806103f857506001600160a01b0381165f90815260056020908152604080832033845290915290205460ff165b61043a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b5f8281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f818152600260205260409020546001600160a01b038481169116146104ea5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610431565b6001600160a01b0382166105345760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610431565b336001600160a01b038416148061056d57506001600160a01b0383165f90815260056020908152604080832033845290915290205460ff165b8061058d57505f818152600460205260409020546001600160a01b031633145b6105ca5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610431565b6001600160a01b0383165f9081526003602052604081208054916105ed83610d4d565b90915550506001600160a01b0382165f90815260036020526040812080549161061583610d62565b90915550505f81815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610693838383610495565b813b158061072f5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af11580156106ff573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107239190610d7a565b6001600160e01b031916145b61076e5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610431565b505050565b60065460ff16156107bc5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610431565b5f6107c78382610de0565b5060016107d48282610de0565b50506006805460ff1916600117905550565b5f818152600260205260409020546001600160a01b0316806108375760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610431565b919050565b5f6001600160a01b0382166108825760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610431565b506001600160a01b03165f9081526003602052604090205490565b60606001805461033090610d01565b335f8181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610922848484610495565b823b15806109ab5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a029061095f903390899088908890600401610e9b565b6020604051808303815f875af115801561097b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099f9190610d7a565b6001600160e01b031916145b6109ea5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610431565b50505050565b6001600160e01b031981168114610a05575f5ffd5b50565b5f60208284031215610a18575f5ffd5b8135610a23816109f0565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a236020830184610a2a565b5f60208284031215610a7a575f5ffd5b5035919050565b80356001600160a01b0381168114610837575f5ffd5b5f5f60408385031215610aa8575f5ffd5b610ab183610a81565b946020939093013593505050565b5f5f5f60608486031215610ad1575f5ffd5b610ada84610a81565b9250610ae860208501610a81565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f5f67ffffffffffffffff841115610b2757610b27610af9565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715610b5657610b56610af9565b604052838152905080828401851015610b6d575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f830112610b93575f5ffd5b610a2383833560208501610b0d565b5f5f60408385031215610bb3575f5ffd5b823567ffffffffffffffff811115610bc9575f5ffd5b610bd585828601610b84565b925050602083013567ffffffffffffffff811115610bf1575f5ffd5b610bfd85828601610b84565b9150509250929050565b5f60208284031215610c17575f5ffd5b610a2382610a81565b5f5f60408385031215610c31575f5ffd5b610c3a83610a81565b915060208301358015158114610c4e575f5ffd5b809150509250929050565b5f5f5f5f60808587031215610c6c575f5ffd5b610c7585610a81565b9350610c8360208601610a81565b925060408501359150606085013567ffffffffffffffff811115610ca5575f5ffd5b8501601f81018713610cb5575f5ffd5b610cc487823560208401610b0d565b91505092959194509250565b5f5f60408385031215610ce1575f5ffd5b610cea83610a81565b9150610cf860208401610a81565b90509250929050565b600181811c90821680610d1557607f821691505b602082108103610d3357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b5f81610d5b57610d5b610d39565b505f190190565b5f60018201610d7357610d73610d39565b5060010190565b5f60208284031215610d8a575f5ffd5b8151610a23816109f0565b601f82111561076e57805f5260205f20601f840160051c81016020851015610dba5750805b601f840160051c820191505b81811015610dd9575f8155600101610dc6565b5050505050565b815167ffffffffffffffff811115610dfa57610dfa610af9565b610e0e81610e088454610d01565b84610d95565b6020601f821160018114610e40575f8315610e295750848201515b5f19600385901b1c1916600184901b178455610dd9565b5f84815260208120601f198516915b82811015610e6f5787850151825560209485019460019092019101610e4f565b5084821015610e8c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90610ecd90830184610a2a565b969550505050505056fea26469706673582212200d460546c850c9efafe1f0dd878c7a9be5b1b21fc0af1a3bb45315b3f5273e4e64736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R`\x046\x10a\0\xD9W_5`\xE0\x1C\x80ccR!\x1E\x11a\0|W\x80c\xA2,\xB4e\x11a\0WW\x80c\xA2,\xB4e\x14a\x028W\x80c\xB8\x8DO\xDE\x14a\x02WW\x80c\xC8{V\xDD\x14a\x02jW\x80c\xE9\x85\xE9\xC5\x14a\x02\x8AW__\xFD[\x80ccR!\x1E\x14a\x01\xD8W\x80cp\xA0\x821\x14a\x01\xF7W\x80c\x95\xD8\x9BA\x14a\x02$W__\xFD[\x80c\t^\xA7\xB3\x11a\0\xB7W\x80c\t^\xA7\xB3\x14a\x01~W\x80c#\xB8r\xDD\x14a\x01\x93W\x80cB\x84.\x0E\x14a\x01\xA6W\x80cL\xD8\x8Bv\x14a\x01\xB9W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xDDW\x80c\x06\xFD\xDE\x03\x14a\x01\x11W\x80c\x08\x18\x12\xFC\x14a\x012W[__\xFD[4\x80\x15a\0\xE8W__\xFD[Pa\0\xFCa\0\xF76`\x04a\n\x08V[a\x02\xD1V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x1CW__\xFD[Pa\x01%a\x03\"V[`@Qa\x01\x08\x91\x90a\nXV[4\x80\x15a\x01=W__\xFD[Pa\x01fa\x01L6`\x04a\njV[_\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\x08V[a\x01\x91a\x01\x8C6`\x04a\n\x97V[a\x03\xB1V[\0[a\x01\x91a\x01\xA16`\x04a\n\xBFV[a\x04\x95V[a\x01\x91a\x01\xB46`\x04a\n\xBFV[a\x06\x88V[4\x80\x15a\x01\xC4W__\xFD[Pa\x01\x91a\x01\xD36`\x04a\x0B\xA2V[a\x07sV[4\x80\x15a\x01\xE3W__\xFD[Pa\x01fa\x01\xF26`\x04a\njV[a\x07\xE6V[4\x80\x15a\x02\x02W__\xFD[Pa\x02\x16a\x02\x116`\x04a\x0C\x07V[a\x08=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07#\x91\x90a\rzV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\x07nW`@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\x041V[PPPV[`\x06T`\xFF\x16\x15a\x07\xBCW`@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\x041V[_a\x07\xC7\x83\x82a\r\xE0V[P`\x01a\x07\xD4\x82\x82a\r\xE0V[PP`\x06\x80T`\xFF\x19\x16`\x01\x17\x90UPV[_\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x087W`@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\x041V[\x91\x90PV[_`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkZERO_ADDRESS`\xA0\x1B`D\x82\x01R`d\x01a\x041V[P`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x030\x90a\r\x01V[3_\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\t\"\x84\x84\x84a\x04\x95V[\x82;\x15\x80a\t\xABWP`@Qc\n\x85\xBD\x01`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x15\x0Bz\x02\x90a\t_\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x0E\x9BV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\t{W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x9F\x91\x90a\rzV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\t\xEAW`@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\x041V[PPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\n\x05W__\xFD[PV[_` \x82\x84\x03\x12\x15a\n\x18W__\xFD[\x815a\n#\x81a\t\xF0V[\x93\x92PPPV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\n#` \x83\x01\x84a\n*V[_` \x82\x84\x03\x12\x15a\nzW__\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x087W__\xFD[__`@\x83\x85\x03\x12\x15a\n\xA8W__\xFD[a\n\xB1\x83a\n\x81V[\x94` \x93\x90\x93\x015\x93PPPV[___``\x84\x86\x03\x12\x15a\n\xD1W__\xFD[a\n\xDA\x84a\n\x81V[\x92Pa\n\xE8` \x85\x01a\n\x81V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[__g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11\x15a\x0B'Wa\x0B'a\n\xF9V[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x0BVWa\x0BVa\n\xF9V[`@R\x83\x81R\x90P\x80\x82\x84\x01\x85\x10\x15a\x0BmW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01RP\x93\x92PPPV[_\x82`\x1F\x83\x01\x12a\x0B\x93W__\xFD[a\n#\x83\x835` \x85\x01a\x0B\rV[__`@\x83\x85\x03\x12\x15a\x0B\xB3W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC9W__\xFD[a\x0B\xD5\x85\x82\x86\x01a\x0B\x84V[\x92PP` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xF1W__\xFD[a\x0B\xFD\x85\x82\x86\x01a\x0B\x84V[\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x0C\x17W__\xFD[a\n#\x82a\n\x81V[__`@\x83\x85\x03\x12\x15a\x0C1W__\xFD[a\x0C:\x83a\n\x81V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x0CNW__\xFD[\x80\x91PP\x92P\x92\x90PV[____`\x80\x85\x87\x03\x12\x15a\x0ClW__\xFD[a\x0Cu\x85a\n\x81V[\x93Pa\x0C\x83` \x86\x01a\n\x81V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\xA5W__\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x0C\xB5W__\xFD[a\x0C\xC4\x87\x825` \x84\x01a\x0B\rV[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x0C\xE1W__\xFD[a\x0C\xEA\x83a\n\x81V[\x91Pa\x0C\xF8` \x84\x01a\n\x81V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\x15W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r3WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[_\x81a\r[Wa\r[a\r9V[P_\x19\x01\x90V[_`\x01\x82\x01a\rsWa\rsa\r9V[P`\x01\x01\x90V[_` \x82\x84\x03\x12\x15a\r\x8AW__\xFD[\x81Qa\n#\x81a\t\xF0V[`\x1F\x82\x11\x15a\x07nW\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\r\xBAWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\r\xD9W_\x81U`\x01\x01a\r\xC6V[PPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xFAWa\r\xFAa\n\xF9V[a\x0E\x0E\x81a\x0E\x08\x84Ta\r\x01V[\x84a\r\x95V[` `\x1F\x82\x11`\x01\x81\x14a\x0E@W_\x83\x15a\x0E)WP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\r\xD9V[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x0EoW\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x0EOV[P\x84\x82\x10\x15a\x0E\x8CW\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x82R\x84\x16` \x82\x01R`@\x81\x01\x83\x90R`\x80``\x82\x01\x81\x90R_\x90a\x0E\xCD\x90\x83\x01\x84a\n*V[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 \rF\x05F\xC8P\xC9\xEF\xAF\xE1\xF0\xDD\x87\x8Cz\x9B\xE5\xB1\xB2\x1F\xC0\xAF\x1A;\xB4S\x15\xB3\xF5'>NdsolcC\0\x08\x1B\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -415,7 +425,12 @@ pub mod MockERC721 { #[allow(missing_docs)] pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -516,7 +531,12 @@ pub mod MockERC721 { ```solidity event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ApprovalForAll { #[allow(missing_docs)] @@ -526,7 +546,12 @@ pub mod MockERC721 { #[allow(missing_docs)] pub _approved: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -626,7 +651,12 @@ pub mod MockERC721 { ```solidity event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -636,7 +666,12 @@ pub mod MockERC721 { #[allow(missing_docs)] pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -737,17 +772,22 @@ pub mod MockERC721 { ```solidity function approve(address spender, uint256 id) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -862,18 +902,23 @@ pub mod MockERC721 { ```solidity function balanceOf(address owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -973,18 +1018,23 @@ pub mod MockERC721 { ```solidity function getApproved(uint256 id) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1084,17 +1134,22 @@ pub mod MockERC721 { ```solidity function initialize(string memory name_, string memory symbol_) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1209,19 +1264,24 @@ pub mod MockERC721 { ```solidity function isApprovedForAll(address owner, address operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1336,16 +1396,21 @@ pub mod MockERC721 { ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1441,18 +1506,23 @@ pub mod MockERC721 { ```solidity function ownerOf(uint256 id) external view returns (address owner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfReturn { pub owner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1552,7 +1622,7 @@ pub mod MockERC721 { ```solidity function safeTransferFrom(address from, address to, uint256 id) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Call { pub from: alloy::sol_types::private::Address, @@ -1560,10 +1630,15 @@ pub mod MockERC721 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1685,7 +1760,7 @@ pub mod MockERC721 { ```solidity function safeTransferFrom(address from, address to, uint256 id, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Call { pub from: alloy::sol_types::private::Address, @@ -1694,10 +1769,15 @@ pub mod MockERC721 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1826,17 +1906,22 @@ pub mod MockERC721 { ```solidity function setApprovalForAll(address operator, bool approved) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1948,18 +2033,23 @@ pub mod MockERC721 { ```solidity function supportsInterface(bytes4 interfaceId) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2061,16 +2151,21 @@ pub mod MockERC721 { ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2166,18 +2261,23 @@ pub mod MockERC721 { ```solidity function tokenURI(uint256 id) external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenURIReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2277,7 +2377,7 @@ pub mod MockERC721 { ```solidity function transferFrom(address from, address to, uint256 id) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { pub from: alloy::sol_types::private::Address, @@ -2285,10 +2385,15 @@ pub mod MockERC721 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/deploy/mod.rs b/crates/utils/src/deploy/mod.rs new file mode 100644 index 00000000..62cdbf27 --- /dev/null +++ b/crates/utils/src/deploy/mod.rs @@ -0,0 +1,89 @@ +#![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 beaconchainproofs; +pub mod bitmaputils; +pub mod blsapkregistry; +pub mod blsapkregistrystorage; +pub mod blssignaturechecker; +pub mod bn254; +pub mod configsreadwriter; +pub mod context; +pub mod contextupgradeable; +pub mod contractsregistry; +pub mod deploymockavs; +pub mod deploymockavsregistries; +pub mod deploytokensstrategiescreatequorums; +pub mod ecdsa; +pub mod eigenlayercontractsparser; +pub mod eip1271signatureutils; +pub mod eip712; +pub mod emptycontract; +pub mod endian; +pub mod erc1967proxy; +pub mod erc1967upgrade; +pub mod erc20; +pub mod iavsdirectory; +pub mod ibeacon; +pub mod iblsapkregistry; +pub mod iblssignaturechecker; +pub mod idelegationmanager; +pub mod ieigenpod; +pub mod ieigenpodmanager; +pub mod ierc1271; +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 isignatureutils; +pub mod islasher; +pub mod isocketupdater; +pub mod istakeregistry; +pub mod istrategy; +pub mod istrategymanager; +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 safeerc20; +pub mod servicemanagerbase; +pub mod stakeregistry; +pub mod stakeregistrystorage; +pub mod storageslot; +pub mod strategybase; +pub mod strategybasetvllimits; +pub mod strings; +pub mod tokenandstrategycontractsparser; +pub mod transparentupgradeableproxy; +pub mod updateoperators; diff --git a/crates/utils/src/deploy/operatorstateretriever.rs b/crates/utils/src/deploy/operatorstateretriever.rs new file mode 100644 index 00000000..9f6e1764 --- /dev/null +++ b/crates/utils/src/deploy/operatorstateretriever.rs @@ -0,0 +1,1761 @@ +/** + +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 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": "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::pub_underscore_fields, + clippy::style +)] +pub mod OperatorStateRetriever { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052348015600e575f5ffd5b506119378061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80633563b0d11461004e5780634f739f74146100775780635c15566214610097578063cefdc1d4146100b7575b5f5ffd5b61006161005c3660046110ea565b6100d8565b60405161006e919061124b565b60405180910390f35b61008a6100853660046112ab565b610540565b60405161006e91906113ab565b6100aa6100a5366004611483565b610c3a565b60405161006e9190611532565b6100ca6100c5366004611574565b610def565b60405161006e9291906115b3565b60605f846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610117573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013b91906115d3565b90505f856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e91906115d3565b90505f866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020191906115d3565b90505f86516001600160401b0381111561021d5761021d611085565b60405190808252806020026020018201604052801561025057816020015b606081526020019060019003908161023b5790505b5090505f5b8751811015610534575f888281518110610271576102716115ee565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291505f906001600160a01b038716906389026245906044015f60405180830381865afa1580156102ce573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526102f59190810190611602565b905080516001600160401b0381111561031057610310611085565b60405190808252806020026020018201604052801561035957816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161032e5790505b5084848151811061036c5761036c6115ee565b60209081029190910101525f5b8151811015610529576040518060600160405280876001600160a01b03166347b314e88585815181106103ae576103ae6115ee565b60200260200101516040518263ffffffff1660e01b81526004016103d491815260200190565b602060405180830381865afa1580156103ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041391906115d3565b6001600160a01b03168152602001838381518110610433576104336115ee565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610461576104616115ee565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611692565b6001600160601b03168152508585815181106104fd576104fd6115ee565b60200260200101518281518110610516576105166115ee565b6020908102919091010152600101610379565b505050600101610255565b50979650505050505050565b61056b6040518060800160405280606081526020016060815260200160608152602001606081525090565b5f876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cc91906115d3565b90506105f96040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e90610629908b90899089906004016116b8565b5f60405180830381865afa158015610643573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261066a91908101906116fd565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061069c908b908b908b906004016117b4565b5f60405180830381865afa1580156106b6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106dd91908101906116fd565b6040820152856001600160401b038111156106fa576106fa611085565b60405190808252806020026020018201604052801561072d57816020015b60608152602001906001900390816107185790505b5060608201525f5b60ff8116871115610b52575f856001600160401b0381111561075957610759611085565b604051908082528060200260200182016040528015610782578160200160208202803683370190505b5083606001518360ff168151811061079c5761079c6115ee565b60209081029190910101525f5b86811015610a5e575f8c6001600160a01b03166304ec63518a8a858181106107d3576107d36115ee565b905060200201358e885f015186815181106107f0576107f06115ee565b60200260200101516040518463ffffffff1660e01b815260040161082d9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610848573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086c91906117dc565b9050806001600160c01b03165f036109165760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061092b5761092b6115ee565b60016001600160c01b038516919093013560f81c1c82169091039050610a5557856001600160a01b031663dd9846b98a8a8581811061096c5761096c6115ee565b905060200201358d8d8860ff16818110610988576109886115ee565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa1580156109dc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a009190611802565b85606001518560ff1681518110610a1957610a196115ee565b60200260200101518481518110610a3257610a326115ee565b63ffffffff9092166020928302919091019091015282610a5181611831565b9350505b506001016107a9565b505f816001600160401b03811115610a7857610a78611085565b604051908082528060200260200182016040528015610aa1578160200160208202803683370190505b5090505f5b82811015610b175784606001518460ff1681518110610ac757610ac76115ee565b60200260200101518181518110610ae057610ae06115ee565b6020026020010151828281518110610afa57610afa6115ee565b63ffffffff90921660209283029190910190910152600101610aa6565b508084606001518460ff1681518110610b3257610b326115ee565b602002602001018190525050508080610b4a90611849565b915050610735565b505f896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb491906115d3565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610be7908b908b908e90600401611867565b5f60405180830381865afa158015610c01573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2891908101906116fd565b60208301525098975050505050505050565b60605f846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610c6b929190611890565b5f60405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cac91908101906116fd565b90505f84516001600160401b03811115610cc857610cc8611085565b604051908082528060200260200182016040528015610cf1578160200160208202803683370190505b5090505f5b8551811015610de557866001600160a01b03166304ec6351878381518110610d2057610d206115ee565b602002602001015187868581518110610d3b57610d3b6115ee565b60200260200101516040518463ffffffff1660e01b8152600401610d789392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610d93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db791906117dc565b6001600160c01b0316828281518110610dd257610dd26115ee565b6020908102919091010152600101610cf6565b5095945050505050565b6040805160018082528183019092525f9160609183916020808301908036833701905050905084815f81518110610e2857610e286115ee565b60209081029190910101526040516361c8a12f60e11b81525f906001600160a01b0388169063c391425e90610e639088908690600401611890565b5f60405180830381865afa158015610e7d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ea491908101906116fd565b5f81518110610eb557610eb56115ee565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291505f906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f1e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4291906117dc565b6001600160c01b031690505f610f5782610f75565b905081610f658a838a6100d8565b9550955050505050935093915050565b60605f5f610f828461103e565b61ffff166001600160401b03811115610f9d57610f9d611085565b6040519080825280601f01601f191660200182016040528015610fc7576020820181803683370190505b5090505f805b825182108015610fde575061010081105b15611034576001811b935085841615611024578060f81b838381518110611007576110076115ee565b60200101906001600160f81b03191690815f1a9053508160010191505b61102d81611831565b9050610fcd565b5090949350505050565b5f805b8215611068576110526001846118d7565b9092169180611060816118ea565b915050611041565b92915050565b6001600160a01b0381168114611082575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156110c1576110c1611085565b604052919050565b63ffffffff81168114611082575f5ffd5b80356110e5816110c9565b919050565b5f5f5f606084860312156110fc575f5ffd5b83356111078161106e565b925060208401356001600160401b03811115611121575f5ffd5b8401601f81018613611131575f5ffd5b80356001600160401b0381111561114a5761114a611085565b61115d601f8201601f1916602001611099565b818152876020838501011115611171575f5ffd5b816020840160208301375f60208383010152809450505050611195604085016110da565b90509250925092565b5f82825180855260208501945060208160051b830101602085015f5b8381101561123f57848303601f19018852815180518085526020918201918501905f5b8181101561122657835180516001600160a01b03168452602080820151818601526040918201516001600160601b031691850191909152909301926060909201916001016111dd565b50506020998a01999094509290920191506001016111ba565b50909695505050505050565b602081525f61125d602083018461119e565b9392505050565b5f5f83601f840112611274575f5ffd5b5081356001600160401b0381111561128a575f5ffd5b6020830191508360208260051b85010111156112a4575f5ffd5b9250929050565b5f5f5f5f5f5f608087890312156112c0575f5ffd5b86356112cb8161106e565b955060208701356112db816110c9565b945060408701356001600160401b038111156112f5575f5ffd5b8701601f81018913611305575f5ffd5b80356001600160401b0381111561131a575f5ffd5b89602082840101111561132b575f5ffd5b6020919091019450925060608701356001600160401b0381111561134d575f5ffd5b61135989828a01611264565b979a9699509497509295939492505050565b5f8151808452602084019350602083015f5b828110156113a157815163ffffffff1686526020958601959091019060010161137d565b5093949350505050565b602081525f8251608060208401526113c660a084018261136b565b90506020840151601f198483030160408501526113e3828261136b565b9150506040840151601f19848303016060850152611401828261136b565b6060860151858203601f190160808701528051808352919350602090810192508084019190600582901b8501015f5b8281101561053457601f1986830301845261144c82865161136b565b60209586019594909401939150600101611430565b5f6001600160401b0382111561147957611479611085565b5060051b60200190565b5f5f5f60608486031215611495575f5ffd5b83356114a08161106e565b925060208401356001600160401b038111156114ba575f5ffd5b8401601f810186136114ca575f5ffd5b80356114dd6114d882611461565b611099565b8082825260208201915060208360051b8501019250888311156114fe575f5ffd5b6020840193505b82841015611520578335825260209384019390910190611505565b945061119592505050604085016110da565b602080825282518282018190525f918401906040840190835b8181101561156957835183526020938401939092019160010161154b565b509095945050505050565b5f5f5f60608486031215611586575f5ffd5b83356115918161106e565b92506020840135915060408401356115a8816110c9565b809150509250925092565b828152604060208201525f6115cb604083018461119e565b949350505050565b5f602082840312156115e3575f5ffd5b815161125d8161106e565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611612575f5ffd5b81516001600160401b03811115611627575f5ffd5b8201601f81018413611637575f5ffd5b80516116456114d882611461565b8082825260208201915060208360051b850101925086831115611666575f5ffd5b6020840193505b8284101561168857835182526020938401939091019061166d565b9695505050505050565b5f602082840312156116a2575f5ffd5b81516001600160601b038116811461125d575f5ffd5b63ffffffff8416815260406020820181905281018290525f6001600160fb1b038311156116e3575f5ffd5b8260051b8085606085013791909101606001949350505050565b5f6020828403121561170d575f5ffd5b81516001600160401b03811115611722575f5ffd5b8201601f81018413611732575f5ffd5b80516117406114d882611461565b8082825260208201915060208360051b850101925086831115611761575f5ffd5b6020840193505b8284101561168857835161177b816110c9565b825260209384019390910190611768565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201525f6117d360408301848661178c565b95945050505050565b5f602082840312156117ec575f5ffd5b81516001600160c01b038116811461125d575f5ffd5b5f60208284031215611812575f5ffd5b815161125d816110c9565b634e487b7160e01b5f52601160045260245ffd5b5f600182016118425761184261181d565b5060010190565b5f60ff821660ff810361185e5761185e61181d565b60010192915050565b604081525f61187a60408301858761178c565b905063ffffffff83166020830152949350505050565b5f6040820163ffffffff85168352604060208401528084518083526060850191506020860192505f5b8181101561123f5783518352602093840193909201916001016118b9565b818103818111156110685761106861181d565b5f61ffff821661ffff810361185e5761185e61181d56fea2646970667358221220983a7507ffb03d68ff5e42423434b107b2a2512a8e9989037206f78712fcd7ed64736f6c634300081b0033 + /// ``` + #[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`\x0EW__\xFD[Pa\x197\x80a\0\x1C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80c5c\xB0\xD1\x14a\0NW\x80cOs\x9Ft\x14a\0wW\x80c\\\x15Vb\x14a\0\x97W\x80c\xCE\xFD\xC1\xD4\x14a\0\xB7W[__\xFD[a\0aa\0\\6`\x04a\x10\xEAV[a\0\xD8V[`@Qa\0n\x91\x90a\x12KV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Aa\0\x856`\x04a\x12\xABV[a\x05@V[`@Qa\0n\x91\x90a\x13\xABV[a\0\xAAa\0\xA56`\x04a\x14\x83V[a\x0C:V[`@Qa\0n\x91\x90a\x152V[a\0\xCAa\0\xC56`\x04a\x15tV[a\r\xEFV[`@Qa\0n\x92\x91\x90a\x15\xB3V[``_\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\x01\x17W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01;\x91\x90a\x15\xD3V[\x90P_\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\x01zW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x9E\x91\x90a\x15\xD3V[\x90P_\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\x01\xDDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x01\x91\x90a\x15\xD3V[\x90P_\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x1DWa\x02\x1Da\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02PW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02;W\x90P[P\x90P_[\x87Q\x81\x10\x15a\x054W_\x88\x82\x81Q\x81\x10a\x02qWa\x02qa\x15\xEEV[\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_\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xCEW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x02\xF5\x91\x90\x81\x01\x90a\x16\x02V[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x10Wa\x03\x10a\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03YW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R_\x19\x90\x92\x01\x91\x01\x81a\x03.W\x90P[P\x84\x84\x81Q\x81\x10a\x03lWa\x03la\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x81Q\x81\x10\x15a\x05)W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xAEWa\x03\xAEa\x15\xEEV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xD4\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xEFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x13\x91\x90a\x15\xD3V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x043Wa\x043a\x15\xEEV[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04aWa\x04aa\x15\xEEV[` \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\x04\xBBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xDF\x91\x90a\x16\x92V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x04\xFDWa\x04\xFDa\x15\xEEV[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x05\x16Wa\x05\x16a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x03yV[PPP`\x01\x01a\x02UV[P\x97\x96PPPPPPPV[a\x05k`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_\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\x05\xA8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xCC\x91\x90a\x15\xD3V[\x90Pa\x05\xF9`@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\x06)\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x16\xB8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06CW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06j\x91\x90\x81\x01\x90a\x16\xFDV[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\x9C\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x17\xB4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xB6W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xDD\x91\x90\x81\x01\x90a\x16\xFDV[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xFAWa\x06\xFAa\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07-W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07\x18W\x90P[P``\x82\x01R_[`\xFF\x81\x16\x87\x11\x15a\x0BRW_\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07YWa\x07Ya\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x82W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\x9CWa\x07\x9Ca\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x86\x81\x10\x15a\n^W_\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x07\xD3Wa\x07\xD3a\x15\xEEV[\x90P` \x02\x015\x8E\x88_\x01Q\x86\x81Q\x81\x10a\x07\xF0Wa\x07\xF0a\x15\xEEV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08-\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\x08HW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08l\x91\x90a\x17\xDCV[\x90P\x80`\x01`\x01`\xC0\x1B\x03\x16_\x03a\t\x16W`@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\t+Wa\t+a\x15\xEEV[`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x91\x90\x93\x015`\xF8\x1C\x1C\x82\x16\x90\x91\x03\x90Pa\nUW\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\tlWa\tla\x15\xEEV[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\x88Wa\t\x88a\x15\xEEV[`@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\t\xDCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\0\x91\x90a\x18\x02V[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n\x19Wa\n\x19a\x15\xEEV[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\n2Wa\n2a\x15\xEEV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\nQ\x81a\x181V[\x93PP[P`\x01\x01a\x07\xA9V[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\nxWa\nxa\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xA1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x0B\x17W\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\n\xC7Wa\n\xC7a\x15\xEEV[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\n\xE0Wa\n\xE0a\x15\xEEV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\n\xFAWa\n\xFAa\x15\xEEV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\n\xA6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B2Wa\x0B2a\x15\xEEV[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0BJ\x90a\x18IV[\x91PPa\x075V[P_\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\x0B\x90W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xB4\x91\x90a\x15\xD3V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0B\xE7\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x18gV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x01W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C(\x91\x90\x81\x01\x90a\x16\xFDV[` \x83\x01RP\x98\x97PPPPPPPPV[``_\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ck\x92\x91\x90a\x18\x90V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x85W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\xAC\x91\x90\x81\x01\x90a\x16\xFDV[\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C\xC8Wa\x0C\xC8a\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\xF1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85Q\x81\x10\x15a\r\xE5W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r Wa\r a\x15\xEEV[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r;Wa\r;a\x15\xEEV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\rx\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\r\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xB7\x91\x90a\x17\xDCV[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\r\xD2Wa\r\xD2a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0C\xF6V[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81_\x81Q\x81\x10a\x0E(Wa\x0E(a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x0Ec\x90\x88\x90\x86\x90`\x04\x01a\x18\x90V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E}W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xA4\x91\x90\x81\x01\x90a\x16\xFDV[_\x81Q\x81\x10a\x0E\xB5Wa\x0E\xB5a\x15\xEEV[` \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_\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x1EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0FB\x91\x90a\x17\xDCV[`\x01`\x01`\xC0\x1B\x03\x16\x90P_a\x0FW\x82a\x0FuV[\x90P\x81a\x0Fe\x8A\x83\x8Aa\0\xD8V[\x95P\x95PPPPP\x93P\x93\x91PPV[``__a\x0F\x82\x84a\x10>V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\x9DWa\x0F\x9Da\x10\x85V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0F\xC7W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a\x0F\xDEWPa\x01\0\x81\x10[\x15a\x104W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10$W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x07Wa\x10\x07a\x15\xEEV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a\x10-\x81a\x181V[\x90Pa\x0F\xCDV[P\x90\x94\x93PPPPV[_\x80[\x82\x15a\x10hWa\x10R`\x01\x84a\x18\xD7V[\x90\x92\x16\x91\x80a\x10`\x81a\x18\xEAV[\x91PPa\x10AV[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x10\x82W__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x10\xC1Wa\x10\xC1a\x10\x85V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x10\x82W__\xFD[\x805a\x10\xE5\x81a\x10\xC9V[\x91\x90PV[___``\x84\x86\x03\x12\x15a\x10\xFCW__\xFD[\x835a\x11\x07\x81a\x10nV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11!W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x111W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11JWa\x11Ja\x10\x85V[a\x11]`\x1F\x82\x01`\x1F\x19\x16` \x01a\x10\x99V[\x81\x81R\x87` \x83\x85\x01\x01\x11\x15a\x11qW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x94PPPPa\x11\x95`@\x85\x01a\x10\xDAV[\x90P\x92P\x92P\x92V[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15a\x12?W\x84\x83\x03`\x1F\x19\x01\x88R\x81Q\x80Q\x80\x85R` \x91\x82\x01\x91\x85\x01\x90_[\x81\x81\x10\x15a\x12&W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x80\x82\x01Q\x81\x86\x01R`@\x91\x82\x01Q`\x01`\x01``\x1B\x03\x16\x91\x85\x01\x91\x90\x91R\x90\x93\x01\x92``\x90\x92\x01\x91`\x01\x01a\x11\xDDV[PP` \x99\x8A\x01\x99\x90\x94P\x92\x90\x92\x01\x91P`\x01\x01a\x11\xBAV[P\x90\x96\x95PPPPPPV[` \x81R_a\x12]` \x83\x01\x84a\x11\x9EV[\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a\x12tW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\x8AW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x12\xA4W__\xFD[\x92P\x92\x90PV[______`\x80\x87\x89\x03\x12\x15a\x12\xC0W__\xFD[\x865a\x12\xCB\x81a\x10nV[\x95P` \x87\x015a\x12\xDB\x81a\x10\xC9V[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xF5W__\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x13\x05W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x1AW__\xFD[\x89` \x82\x84\x01\x01\x11\x15a\x13+W__\xFD[` \x91\x90\x91\x01\x94P\x92P``\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13MW__\xFD[a\x13Y\x89\x82\x8A\x01a\x12dV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\x13\xA1W\x81Qc\xFF\xFF\xFF\xFF\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\x13}V[P\x93\x94\x93PPPPV[` \x81R_\x82Q`\x80` \x84\x01Ra\x13\xC6`\xA0\x84\x01\x82a\x13kV[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x13\xE3\x82\x82a\x13kV[\x91PP`@\x84\x01Q`\x1F\x19\x84\x83\x03\x01``\x85\x01Ra\x14\x01\x82\x82a\x13kV[``\x86\x01Q\x85\x82\x03`\x1F\x19\x01`\x80\x87\x01R\x80Q\x80\x83R\x91\x93P` \x90\x81\x01\x92P\x80\x84\x01\x91\x90`\x05\x82\x90\x1B\x85\x01\x01_[\x82\x81\x10\x15a\x054W`\x1F\x19\x86\x83\x03\x01\x84Ra\x14L\x82\x86Qa\x13kV[` \x95\x86\x01\x95\x94\x90\x94\x01\x93\x91P`\x01\x01a\x140V[_`\x01`\x01`@\x1B\x03\x82\x11\x15a\x14yWa\x14ya\x10\x85V[P`\x05\x1B` \x01\x90V[___``\x84\x86\x03\x12\x15a\x14\x95W__\xFD[\x835a\x14\xA0\x81a\x10nV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBAW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14\xCAW__\xFD[\x805a\x14\xDDa\x14\xD8\x82a\x14aV[a\x10\x99V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a\x14\xFEW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x15 W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x15\x05V[\x94Pa\x11\x95\x92PPP`@\x85\x01a\x10\xDAV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x15iW\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x15KV[P\x90\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a\x15\x86W__\xFD[\x835a\x15\x91\x81a\x10nV[\x92P` \x84\x015\x91P`@\x84\x015a\x15\xA8\x81a\x10\xC9V[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R_a\x15\xCB`@\x83\x01\x84a\x11\x9EV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x15\xE3W__\xFD[\x81Qa\x12]\x81a\x10nV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x16\x12W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16'W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x167W__\xFD[\x80Qa\x16Ea\x14\xD8\x82a\x14aV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x16fW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x16\x88W\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x16mV[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x16\xA2W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12]W__\xFD[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R_`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x16\xE3W__\xFD[\x82`\x05\x1B\x80\x85``\x85\x017\x91\x90\x91\x01``\x01\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x17\rW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\"W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x172W__\xFD[\x80Qa\x17@a\x14\xD8\x82a\x14aV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x17aW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x16\x88W\x83Qa\x17{\x81a\x10\xC9V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x17hV[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R_a\x17\xD3`@\x83\x01\x84\x86a\x17\x8CV[\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a\x17\xECW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12]W__\xFD[_` \x82\x84\x03\x12\x15a\x18\x12W__\xFD[\x81Qa\x12]\x81a\x10\xC9V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[_`\x01\x82\x01a\x18BWa\x18Ba\x18\x1DV[P`\x01\x01\x90V[_`\xFF\x82\x16`\xFF\x81\x03a\x18^Wa\x18^a\x18\x1DV[`\x01\x01\x92\x91PPV[`@\x81R_a\x18z`@\x83\x01\x85\x87a\x17\x8CV[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[_`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R`@` \x84\x01R\x80\x84Q\x80\x83R``\x85\x01\x91P` \x86\x01\x92P_[\x81\x81\x10\x15a\x12?W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x18\xB9V[\x81\x81\x03\x81\x81\x11\x15a\x10hWa\x10ha\x18\x1DV[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a\x18^Wa\x18^a\x18\x1DV\xFE\xA2dipfsX\"\x12 \x98:u\x07\xFF\xB0=h\xFF^BB44\xB1\x07\xB2\xA2Q*\x8E\x99\x89\x03r\x06\xF7\x87\x12\xFC\xD7\xEDdsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80633563b0d11461004e5780634f739f74146100775780635c15566214610097578063cefdc1d4146100b7575b5f5ffd5b61006161005c3660046110ea565b6100d8565b60405161006e919061124b565b60405180910390f35b61008a6100853660046112ab565b610540565b60405161006e91906113ab565b6100aa6100a5366004611483565b610c3a565b60405161006e9190611532565b6100ca6100c5366004611574565b610def565b60405161006e9291906115b3565b60605f846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610117573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013b91906115d3565b90505f856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e91906115d3565b90505f866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020191906115d3565b90505f86516001600160401b0381111561021d5761021d611085565b60405190808252806020026020018201604052801561025057816020015b606081526020019060019003908161023b5790505b5090505f5b8751811015610534575f888281518110610271576102716115ee565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291505f906001600160a01b038716906389026245906044015f60405180830381865afa1580156102ce573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526102f59190810190611602565b905080516001600160401b0381111561031057610310611085565b60405190808252806020026020018201604052801561035957816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161032e5790505b5084848151811061036c5761036c6115ee565b60209081029190910101525f5b8151811015610529576040518060600160405280876001600160a01b03166347b314e88585815181106103ae576103ae6115ee565b60200260200101516040518263ffffffff1660e01b81526004016103d491815260200190565b602060405180830381865afa1580156103ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041391906115d3565b6001600160a01b03168152602001838381518110610433576104336115ee565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610461576104616115ee565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611692565b6001600160601b03168152508585815181106104fd576104fd6115ee565b60200260200101518281518110610516576105166115ee565b6020908102919091010152600101610379565b505050600101610255565b50979650505050505050565b61056b6040518060800160405280606081526020016060815260200160608152602001606081525090565b5f876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cc91906115d3565b90506105f96040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e90610629908b90899089906004016116b8565b5f60405180830381865afa158015610643573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261066a91908101906116fd565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061069c908b908b908b906004016117b4565b5f60405180830381865afa1580156106b6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106dd91908101906116fd565b6040820152856001600160401b038111156106fa576106fa611085565b60405190808252806020026020018201604052801561072d57816020015b60608152602001906001900390816107185790505b5060608201525f5b60ff8116871115610b52575f856001600160401b0381111561075957610759611085565b604051908082528060200260200182016040528015610782578160200160208202803683370190505b5083606001518360ff168151811061079c5761079c6115ee565b60209081029190910101525f5b86811015610a5e575f8c6001600160a01b03166304ec63518a8a858181106107d3576107d36115ee565b905060200201358e885f015186815181106107f0576107f06115ee565b60200260200101516040518463ffffffff1660e01b815260040161082d9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610848573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086c91906117dc565b9050806001600160c01b03165f036109165760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061092b5761092b6115ee565b60016001600160c01b038516919093013560f81c1c82169091039050610a5557856001600160a01b031663dd9846b98a8a8581811061096c5761096c6115ee565b905060200201358d8d8860ff16818110610988576109886115ee565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa1580156109dc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a009190611802565b85606001518560ff1681518110610a1957610a196115ee565b60200260200101518481518110610a3257610a326115ee565b63ffffffff9092166020928302919091019091015282610a5181611831565b9350505b506001016107a9565b505f816001600160401b03811115610a7857610a78611085565b604051908082528060200260200182016040528015610aa1578160200160208202803683370190505b5090505f5b82811015610b175784606001518460ff1681518110610ac757610ac76115ee565b60200260200101518181518110610ae057610ae06115ee565b6020026020010151828281518110610afa57610afa6115ee565b63ffffffff90921660209283029190910190910152600101610aa6565b508084606001518460ff1681518110610b3257610b326115ee565b602002602001018190525050508080610b4a90611849565b915050610735565b505f896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb491906115d3565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610be7908b908b908e90600401611867565b5f60405180830381865afa158015610c01573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2891908101906116fd565b60208301525098975050505050505050565b60605f846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610c6b929190611890565b5f60405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cac91908101906116fd565b90505f84516001600160401b03811115610cc857610cc8611085565b604051908082528060200260200182016040528015610cf1578160200160208202803683370190505b5090505f5b8551811015610de557866001600160a01b03166304ec6351878381518110610d2057610d206115ee565b602002602001015187868581518110610d3b57610d3b6115ee565b60200260200101516040518463ffffffff1660e01b8152600401610d789392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610d93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db791906117dc565b6001600160c01b0316828281518110610dd257610dd26115ee565b6020908102919091010152600101610cf6565b5095945050505050565b6040805160018082528183019092525f9160609183916020808301908036833701905050905084815f81518110610e2857610e286115ee565b60209081029190910101526040516361c8a12f60e11b81525f906001600160a01b0388169063c391425e90610e639088908690600401611890565b5f60405180830381865afa158015610e7d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ea491908101906116fd565b5f81518110610eb557610eb56115ee565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291505f906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f1e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4291906117dc565b6001600160c01b031690505f610f5782610f75565b905081610f658a838a6100d8565b9550955050505050935093915050565b60605f5f610f828461103e565b61ffff166001600160401b03811115610f9d57610f9d611085565b6040519080825280601f01601f191660200182016040528015610fc7576020820181803683370190505b5090505f805b825182108015610fde575061010081105b15611034576001811b935085841615611024578060f81b838381518110611007576110076115ee565b60200101906001600160f81b03191690815f1a9053508160010191505b61102d81611831565b9050610fcd565b5090949350505050565b5f805b8215611068576110526001846118d7565b9092169180611060816118ea565b915050611041565b92915050565b6001600160a01b0381168114611082575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156110c1576110c1611085565b604052919050565b63ffffffff81168114611082575f5ffd5b80356110e5816110c9565b919050565b5f5f5f606084860312156110fc575f5ffd5b83356111078161106e565b925060208401356001600160401b03811115611121575f5ffd5b8401601f81018613611131575f5ffd5b80356001600160401b0381111561114a5761114a611085565b61115d601f8201601f1916602001611099565b818152876020838501011115611171575f5ffd5b816020840160208301375f60208383010152809450505050611195604085016110da565b90509250925092565b5f82825180855260208501945060208160051b830101602085015f5b8381101561123f57848303601f19018852815180518085526020918201918501905f5b8181101561122657835180516001600160a01b03168452602080820151818601526040918201516001600160601b031691850191909152909301926060909201916001016111dd565b50506020998a01999094509290920191506001016111ba565b50909695505050505050565b602081525f61125d602083018461119e565b9392505050565b5f5f83601f840112611274575f5ffd5b5081356001600160401b0381111561128a575f5ffd5b6020830191508360208260051b85010111156112a4575f5ffd5b9250929050565b5f5f5f5f5f5f608087890312156112c0575f5ffd5b86356112cb8161106e565b955060208701356112db816110c9565b945060408701356001600160401b038111156112f5575f5ffd5b8701601f81018913611305575f5ffd5b80356001600160401b0381111561131a575f5ffd5b89602082840101111561132b575f5ffd5b6020919091019450925060608701356001600160401b0381111561134d575f5ffd5b61135989828a01611264565b979a9699509497509295939492505050565b5f8151808452602084019350602083015f5b828110156113a157815163ffffffff1686526020958601959091019060010161137d565b5093949350505050565b602081525f8251608060208401526113c660a084018261136b565b90506020840151601f198483030160408501526113e3828261136b565b9150506040840151601f19848303016060850152611401828261136b565b6060860151858203601f190160808701528051808352919350602090810192508084019190600582901b8501015f5b8281101561053457601f1986830301845261144c82865161136b565b60209586019594909401939150600101611430565b5f6001600160401b0382111561147957611479611085565b5060051b60200190565b5f5f5f60608486031215611495575f5ffd5b83356114a08161106e565b925060208401356001600160401b038111156114ba575f5ffd5b8401601f810186136114ca575f5ffd5b80356114dd6114d882611461565b611099565b8082825260208201915060208360051b8501019250888311156114fe575f5ffd5b6020840193505b82841015611520578335825260209384019390910190611505565b945061119592505050604085016110da565b602080825282518282018190525f918401906040840190835b8181101561156957835183526020938401939092019160010161154b565b509095945050505050565b5f5f5f60608486031215611586575f5ffd5b83356115918161106e565b92506020840135915060408401356115a8816110c9565b809150509250925092565b828152604060208201525f6115cb604083018461119e565b949350505050565b5f602082840312156115e3575f5ffd5b815161125d8161106e565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611612575f5ffd5b81516001600160401b03811115611627575f5ffd5b8201601f81018413611637575f5ffd5b80516116456114d882611461565b8082825260208201915060208360051b850101925086831115611666575f5ffd5b6020840193505b8284101561168857835182526020938401939091019061166d565b9695505050505050565b5f602082840312156116a2575f5ffd5b81516001600160601b038116811461125d575f5ffd5b63ffffffff8416815260406020820181905281018290525f6001600160fb1b038311156116e3575f5ffd5b8260051b8085606085013791909101606001949350505050565b5f6020828403121561170d575f5ffd5b81516001600160401b03811115611722575f5ffd5b8201601f81018413611732575f5ffd5b80516117406114d882611461565b8082825260208201915060208360051b850101925086831115611761575f5ffd5b6020840193505b8284101561168857835161177b816110c9565b825260209384019390910190611768565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201525f6117d360408301848661178c565b95945050505050565b5f602082840312156117ec575f5ffd5b81516001600160c01b038116811461125d575f5ffd5b5f60208284031215611812575f5ffd5b815161125d816110c9565b634e487b7160e01b5f52601160045260245ffd5b5f600182016118425761184261181d565b5060010190565b5f60ff821660ff810361185e5761185e61181d565b60010192915050565b604081525f61187a60408301858761178c565b905063ffffffff83166020830152949350505050565b5f6040820163ffffffff85168352604060208401528084518083526060850191506020860192505f5b8181101561123f5783518352602093840193909201916001016118b9565b818103818111156110685761106861181d565b5f61ffff821661ffff810361185e5761185e61181d56fea2646970667358221220983a7507ffb03d68ff5e42423434b107b2a2512a8e9989037206f78712fcd7ed64736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80c5c\xB0\xD1\x14a\0NW\x80cOs\x9Ft\x14a\0wW\x80c\\\x15Vb\x14a\0\x97W\x80c\xCE\xFD\xC1\xD4\x14a\0\xB7W[__\xFD[a\0aa\0\\6`\x04a\x10\xEAV[a\0\xD8V[`@Qa\0n\x91\x90a\x12KV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Aa\0\x856`\x04a\x12\xABV[a\x05@V[`@Qa\0n\x91\x90a\x13\xABV[a\0\xAAa\0\xA56`\x04a\x14\x83V[a\x0C:V[`@Qa\0n\x91\x90a\x152V[a\0\xCAa\0\xC56`\x04a\x15tV[a\r\xEFV[`@Qa\0n\x92\x91\x90a\x15\xB3V[``_\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\x01\x17W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01;\x91\x90a\x15\xD3V[\x90P_\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\x01zW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x9E\x91\x90a\x15\xD3V[\x90P_\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\x01\xDDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x01\x91\x90a\x15\xD3V[\x90P_\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x1DWa\x02\x1Da\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02PW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02;W\x90P[P\x90P_[\x87Q\x81\x10\x15a\x054W_\x88\x82\x81Q\x81\x10a\x02qWa\x02qa\x15\xEEV[\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_\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xCEW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x02\xF5\x91\x90\x81\x01\x90a\x16\x02V[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x10Wa\x03\x10a\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03YW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R_\x19\x90\x92\x01\x91\x01\x81a\x03.W\x90P[P\x84\x84\x81Q\x81\x10a\x03lWa\x03la\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x81Q\x81\x10\x15a\x05)W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xAEWa\x03\xAEa\x15\xEEV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xD4\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xEFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x13\x91\x90a\x15\xD3V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x043Wa\x043a\x15\xEEV[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04aWa\x04aa\x15\xEEV[` \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\x04\xBBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xDF\x91\x90a\x16\x92V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x04\xFDWa\x04\xFDa\x15\xEEV[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x05\x16Wa\x05\x16a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x03yV[PPP`\x01\x01a\x02UV[P\x97\x96PPPPPPPV[a\x05k`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_\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\x05\xA8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xCC\x91\x90a\x15\xD3V[\x90Pa\x05\xF9`@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\x06)\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x16\xB8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06CW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06j\x91\x90\x81\x01\x90a\x16\xFDV[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\x9C\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x17\xB4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xB6W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xDD\x91\x90\x81\x01\x90a\x16\xFDV[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xFAWa\x06\xFAa\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07-W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07\x18W\x90P[P``\x82\x01R_[`\xFF\x81\x16\x87\x11\x15a\x0BRW_\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07YWa\x07Ya\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x82W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\x9CWa\x07\x9Ca\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x86\x81\x10\x15a\n^W_\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x07\xD3Wa\x07\xD3a\x15\xEEV[\x90P` \x02\x015\x8E\x88_\x01Q\x86\x81Q\x81\x10a\x07\xF0Wa\x07\xF0a\x15\xEEV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08-\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\x08HW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08l\x91\x90a\x17\xDCV[\x90P\x80`\x01`\x01`\xC0\x1B\x03\x16_\x03a\t\x16W`@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\t+Wa\t+a\x15\xEEV[`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x91\x90\x93\x015`\xF8\x1C\x1C\x82\x16\x90\x91\x03\x90Pa\nUW\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\tlWa\tla\x15\xEEV[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\x88Wa\t\x88a\x15\xEEV[`@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\t\xDCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\0\x91\x90a\x18\x02V[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n\x19Wa\n\x19a\x15\xEEV[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\n2Wa\n2a\x15\xEEV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\nQ\x81a\x181V[\x93PP[P`\x01\x01a\x07\xA9V[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\nxWa\nxa\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xA1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x0B\x17W\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\n\xC7Wa\n\xC7a\x15\xEEV[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\n\xE0Wa\n\xE0a\x15\xEEV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\n\xFAWa\n\xFAa\x15\xEEV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\n\xA6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B2Wa\x0B2a\x15\xEEV[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0BJ\x90a\x18IV[\x91PPa\x075V[P_\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\x0B\x90W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xB4\x91\x90a\x15\xD3V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0B\xE7\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x18gV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x01W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C(\x91\x90\x81\x01\x90a\x16\xFDV[` \x83\x01RP\x98\x97PPPPPPPPV[``_\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ck\x92\x91\x90a\x18\x90V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x85W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\xAC\x91\x90\x81\x01\x90a\x16\xFDV[\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C\xC8Wa\x0C\xC8a\x10\x85V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\xF1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85Q\x81\x10\x15a\r\xE5W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r Wa\r a\x15\xEEV[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r;Wa\r;a\x15\xEEV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\rx\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\r\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xB7\x91\x90a\x17\xDCV[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\r\xD2Wa\r\xD2a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0C\xF6V[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81_\x81Q\x81\x10a\x0E(Wa\x0E(a\x15\xEEV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x0Ec\x90\x88\x90\x86\x90`\x04\x01a\x18\x90V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E}W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xA4\x91\x90\x81\x01\x90a\x16\xFDV[_\x81Q\x81\x10a\x0E\xB5Wa\x0E\xB5a\x15\xEEV[` \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_\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x1EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0FB\x91\x90a\x17\xDCV[`\x01`\x01`\xC0\x1B\x03\x16\x90P_a\x0FW\x82a\x0FuV[\x90P\x81a\x0Fe\x8A\x83\x8Aa\0\xD8V[\x95P\x95PPPPP\x93P\x93\x91PPV[``__a\x0F\x82\x84a\x10>V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\x9DWa\x0F\x9Da\x10\x85V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0F\xC7W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a\x0F\xDEWPa\x01\0\x81\x10[\x15a\x104W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10$W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x07Wa\x10\x07a\x15\xEEV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a\x10-\x81a\x181V[\x90Pa\x0F\xCDV[P\x90\x94\x93PPPPV[_\x80[\x82\x15a\x10hWa\x10R`\x01\x84a\x18\xD7V[\x90\x92\x16\x91\x80a\x10`\x81a\x18\xEAV[\x91PPa\x10AV[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x10\x82W__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x10\xC1Wa\x10\xC1a\x10\x85V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x10\x82W__\xFD[\x805a\x10\xE5\x81a\x10\xC9V[\x91\x90PV[___``\x84\x86\x03\x12\x15a\x10\xFCW__\xFD[\x835a\x11\x07\x81a\x10nV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11!W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x111W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11JWa\x11Ja\x10\x85V[a\x11]`\x1F\x82\x01`\x1F\x19\x16` \x01a\x10\x99V[\x81\x81R\x87` \x83\x85\x01\x01\x11\x15a\x11qW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x94PPPPa\x11\x95`@\x85\x01a\x10\xDAV[\x90P\x92P\x92P\x92V[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15a\x12?W\x84\x83\x03`\x1F\x19\x01\x88R\x81Q\x80Q\x80\x85R` \x91\x82\x01\x91\x85\x01\x90_[\x81\x81\x10\x15a\x12&W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x80\x82\x01Q\x81\x86\x01R`@\x91\x82\x01Q`\x01`\x01``\x1B\x03\x16\x91\x85\x01\x91\x90\x91R\x90\x93\x01\x92``\x90\x92\x01\x91`\x01\x01a\x11\xDDV[PP` \x99\x8A\x01\x99\x90\x94P\x92\x90\x92\x01\x91P`\x01\x01a\x11\xBAV[P\x90\x96\x95PPPPPPV[` \x81R_a\x12]` \x83\x01\x84a\x11\x9EV[\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a\x12tW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\x8AW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x12\xA4W__\xFD[\x92P\x92\x90PV[______`\x80\x87\x89\x03\x12\x15a\x12\xC0W__\xFD[\x865a\x12\xCB\x81a\x10nV[\x95P` \x87\x015a\x12\xDB\x81a\x10\xC9V[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xF5W__\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x13\x05W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x1AW__\xFD[\x89` \x82\x84\x01\x01\x11\x15a\x13+W__\xFD[` \x91\x90\x91\x01\x94P\x92P``\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13MW__\xFD[a\x13Y\x89\x82\x8A\x01a\x12dV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\x13\xA1W\x81Qc\xFF\xFF\xFF\xFF\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\x13}V[P\x93\x94\x93PPPPV[` \x81R_\x82Q`\x80` \x84\x01Ra\x13\xC6`\xA0\x84\x01\x82a\x13kV[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x13\xE3\x82\x82a\x13kV[\x91PP`@\x84\x01Q`\x1F\x19\x84\x83\x03\x01``\x85\x01Ra\x14\x01\x82\x82a\x13kV[``\x86\x01Q\x85\x82\x03`\x1F\x19\x01`\x80\x87\x01R\x80Q\x80\x83R\x91\x93P` \x90\x81\x01\x92P\x80\x84\x01\x91\x90`\x05\x82\x90\x1B\x85\x01\x01_[\x82\x81\x10\x15a\x054W`\x1F\x19\x86\x83\x03\x01\x84Ra\x14L\x82\x86Qa\x13kV[` \x95\x86\x01\x95\x94\x90\x94\x01\x93\x91P`\x01\x01a\x140V[_`\x01`\x01`@\x1B\x03\x82\x11\x15a\x14yWa\x14ya\x10\x85V[P`\x05\x1B` \x01\x90V[___``\x84\x86\x03\x12\x15a\x14\x95W__\xFD[\x835a\x14\xA0\x81a\x10nV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBAW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14\xCAW__\xFD[\x805a\x14\xDDa\x14\xD8\x82a\x14aV[a\x10\x99V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a\x14\xFEW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x15 W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x15\x05V[\x94Pa\x11\x95\x92PPP`@\x85\x01a\x10\xDAV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x15iW\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x15KV[P\x90\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a\x15\x86W__\xFD[\x835a\x15\x91\x81a\x10nV[\x92P` \x84\x015\x91P`@\x84\x015a\x15\xA8\x81a\x10\xC9V[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R_a\x15\xCB`@\x83\x01\x84a\x11\x9EV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x15\xE3W__\xFD[\x81Qa\x12]\x81a\x10nV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x16\x12W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16'W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x167W__\xFD[\x80Qa\x16Ea\x14\xD8\x82a\x14aV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x16fW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x16\x88W\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x16mV[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x16\xA2W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12]W__\xFD[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R_`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x16\xE3W__\xFD[\x82`\x05\x1B\x80\x85``\x85\x017\x91\x90\x91\x01``\x01\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x17\rW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\"W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x172W__\xFD[\x80Qa\x17@a\x14\xD8\x82a\x14aV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x17aW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x16\x88W\x83Qa\x17{\x81a\x10\xC9V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x17hV[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R_a\x17\xD3`@\x83\x01\x84\x86a\x17\x8CV[\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a\x17\xECW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12]W__\xFD[_` \x82\x84\x03\x12\x15a\x18\x12W__\xFD[\x81Qa\x12]\x81a\x10\xC9V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[_`\x01\x82\x01a\x18BWa\x18Ba\x18\x1DV[P`\x01\x01\x90V[_`\xFF\x82\x16`\xFF\x81\x03a\x18^Wa\x18^a\x18\x1DV[`\x01\x01\x92\x91PPV[`@\x81R_a\x18z`@\x83\x01\x85\x87a\x17\x8CV[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[_`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R`@` \x84\x01R\x80\x84Q\x80\x83R``\x85\x01\x91P` \x86\x01\x92P_[\x81\x81\x10\x15a\x12?W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x18\xB9V[\x81\x81\x03\x81\x81\x11\x15a\x10hWa\x10ha\x18\x1DV[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a\x18^Wa\x18^a\x18\x1DV\xFE\xA2dipfsX\"\x12 \x98:u\x07\xFF\xB0=h\xFF^BB44\xB1\x07\xB2\xA2Q*\x8E\x99\x89\x03r\x06\xF7\x87\x12\xFC\xD7\xEDdsolcC\0\x08\x1B\x003", + ); + /**```solidity + struct CheckSignaturesIndices { uint32[] nonSignerQuorumBitmapIndices; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CheckSignaturesIndices { + pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCheckSignaturesIndicesReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapsAtBlockNumberReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 { + 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]] = &[ + [53u8, 99u8, 176u8, 209u8], + [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 = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + 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 getOperatorState_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorStateRetrieverCalls::getOperatorState_0) + } + getOperatorState_0 + }, + { + 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::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::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 [`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/deploy/ownable.rs similarity index 96% rename from crates/utils/src/ownable.rs rename to crates/utils/src/deploy/ownable.rs index c5b58677..6b13f500 100644 --- a/crates/utils/src/ownable.rs +++ b/crates/utils/src/deploy/ownable.rs @@ -68,7 +68,12 @@ interface Ownable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod Ownable { use super::*; use alloy::sol_types as alloy_sol_types; @@ -96,7 +101,12 @@ pub mod Ownable { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -104,7 +114,12 @@ pub mod Ownable { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -199,16 +214,21 @@ pub mod Ownable { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -304,14 +324,19 @@ pub mod Ownable { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -407,16 +432,21 @@ pub mod Ownable { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/ownableupgradeable.rs b/crates/utils/src/deploy/ownableupgradeable.rs similarity index 96% rename from crates/utils/src/ownableupgradeable.rs rename to crates/utils/src/deploy/ownableupgradeable.rs index 4c697278..813df832 100644 --- a/crates/utils/src/ownableupgradeable.rs +++ b/crates/utils/src/deploy/ownableupgradeable.rs @@ -82,7 +82,12 @@ interface OwnableUpgradeable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod OwnableUpgradeable { use super::*; use alloy::sol_types as alloy_sol_types; @@ -110,13 +115,23 @@ pub mod OwnableUpgradeable { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -198,7 +213,12 @@ pub mod OwnableUpgradeable { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -206,7 +226,12 @@ pub mod OwnableUpgradeable { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -301,16 +326,21 @@ pub mod OwnableUpgradeable { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -406,14 +436,19 @@ pub mod OwnableUpgradeable { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -509,16 +544,21 @@ pub mod OwnableUpgradeable { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/deploy/pausable.rs b/crates/utils/src/deploy/pausable.rs new file mode 100644 index 00000000..8214300a --- /dev/null +++ b/crates/utils/src/deploy/pausable.rs @@ -0,0 +1,1852 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod Pausable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052348015600e575f5ffd5b506107a38061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80635ac86ab7116100585780635ac86ab7146100ae5780635c975abb146100e2578063886f1195146100f3578063fabc1cbc1461011d575f5ffd5b806310d67a2f1461007e578063136439dd14610093578063595c6a67146100a6575b5f5ffd5b61009161008c366004610648565b610130565b005b6100916100a136600461066a565b6101e8565b610091610324565b6100cd6100bc366004610681565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100d9565b5f54610105906001600160a01b031681565b6040516001600160a01b0390911681526020016100d9565b61009161012b36600461066a565b6103e7565b5f5f9054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a391906106a1565b6001600160a01b0316336001600160a01b0316146101dc5760405162461bcd60e51b81526004016101d3906106bc565b60405180910390fd5b6101e58161053f565b50565b5f5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102519190610706565b61026d5760405162461bcd60e51b81526004016101d390610725565b600154818116146102e65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101d3565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b5f5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610369573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038d9190610706565b6103a95760405162461bcd60e51b81526004016101d390610725565b5f19600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b5f5f9054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610436573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045a91906106a1565b6001600160a01b0316336001600160a01b03161461048a5760405162461bcd60e51b81526004016101d3906106bc565b6001541981196001541916146105085760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101d3565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610319565b6001600160a01b0381166105cd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101d3565b5f54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101e5575f5ffd5b5f60208284031215610658575f5ffd5b813561066381610634565b9392505050565b5f6020828403121561067a575f5ffd5b5035919050565b5f60208284031215610691575f5ffd5b813560ff81168114610663575f5ffd5b5f602082840312156106b1575f5ffd5b815161066381610634565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b5f60208284031215610716575f5ffd5b81518015158114610663575f5ffd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220f29cec931b8450d27ef4eb3e27581c54a14d8cd4cc687298909866c71f67560764736f6c634300081b0033 + /// ``` + #[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`\x0EW__\xFD[Pa\x07\xA3\x80a\0\x1C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0zW_5`\xE0\x1C\x80cZ\xC8j\xB7\x11a\0XW\x80cZ\xC8j\xB7\x14a\0\xAEW\x80c\\\x97Z\xBB\x14a\0\xE2W\x80c\x88o\x11\x95\x14a\0\xF3W\x80c\xFA\xBC\x1C\xBC\x14a\x01\x1DW__\xFD[\x80c\x10\xD6z/\x14a\0~W\x80c\x13d9\xDD\x14a\0\x93W\x80cY\\jg\x14a\0\xA6W[__\xFD[a\0\x91a\0\x8C6`\x04a\x06HV[a\x010V[\0[a\0\x91a\0\xA16`\x04a\x06jV[a\x01\xE8V[a\0\x91a\x03$V[a\0\xCDa\0\xBC6`\x04a\x06\x81V[`\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\xD9V[_Ta\x01\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xD9V[a\0\x91a\x01+6`\x04a\x06jV[a\x03\xE7V[__\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\x01\x7FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA3\x91\x90a\x06\xA1V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x01\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xD3\x90a\x06\xBCV[`@Q\x80\x91\x03\x90\xFD[a\x01\xE5\x81a\x05?V[PV[_T`@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\x02-W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02Q\x91\x90a\x07\x06V[a\x02mW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xD3\x90a\x07%V[`\x01T\x81\x81\x16\x14a\x02\xE6W`@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\xD3V[`\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[_T`@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\x03iW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8D\x91\x90a\x07\x06V[a\x03\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xD3\x90a\x07%V[_\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[__\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\x046W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04Z\x91\x90a\x06\xA1V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x04\x8AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xD3\x90a\x06\xBCV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x05\x08W`@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\xD3V[`\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\x19V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCDW`@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\xD3V[_T`@\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_\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\xE5W__\xFD[_` \x82\x84\x03\x12\x15a\x06XW__\xFD[\x815a\x06c\x81a\x064V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x06zW__\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\x91W__\xFD[\x815`\xFF\x81\x16\x81\x14a\x06cW__\xFD[_` \x82\x84\x03\x12\x15a\x06\xB1W__\xFD[\x81Qa\x06c\x81a\x064V[` \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[_` \x82\x84\x03\x12\x15a\x07\x16W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x06cW__\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 \xF2\x9C\xEC\x93\x1B\x84P\xD2~\xF4\xEB>'X\x1CT\xA1M\x8C\xD4\xCChr\x98\x90\x98f\xC7\x1FgV\x07dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80635ac86ab7116100585780635ac86ab7146100ae5780635c975abb146100e2578063886f1195146100f3578063fabc1cbc1461011d575f5ffd5b806310d67a2f1461007e578063136439dd14610093578063595c6a67146100a6575b5f5ffd5b61009161008c366004610648565b610130565b005b6100916100a136600461066a565b6101e8565b610091610324565b6100cd6100bc366004610681565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100d9565b5f54610105906001600160a01b031681565b6040516001600160a01b0390911681526020016100d9565b61009161012b36600461066a565b6103e7565b5f5f9054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a391906106a1565b6001600160a01b0316336001600160a01b0316146101dc5760405162461bcd60e51b81526004016101d3906106bc565b60405180910390fd5b6101e58161053f565b50565b5f5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102519190610706565b61026d5760405162461bcd60e51b81526004016101d390610725565b600154818116146102e65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101d3565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b5f5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610369573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038d9190610706565b6103a95760405162461bcd60e51b81526004016101d390610725565b5f19600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b5f5f9054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610436573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045a91906106a1565b6001600160a01b0316336001600160a01b03161461048a5760405162461bcd60e51b81526004016101d3906106bc565b6001541981196001541916146105085760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101d3565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610319565b6001600160a01b0381166105cd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101d3565b5f54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101e5575f5ffd5b5f60208284031215610658575f5ffd5b813561066381610634565b9392505050565b5f6020828403121561067a575f5ffd5b5035919050565b5f60208284031215610691575f5ffd5b813560ff81168114610663575f5ffd5b5f602082840312156106b1575f5ffd5b815161066381610634565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b5f60208284031215610716575f5ffd5b81518015158114610663575f5ffd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220f29cec931b8450d27ef4eb3e27581c54a14d8cd4cc687298909866c71f67560764736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\0zW_5`\xE0\x1C\x80cZ\xC8j\xB7\x11a\0XW\x80cZ\xC8j\xB7\x14a\0\xAEW\x80c\\\x97Z\xBB\x14a\0\xE2W\x80c\x88o\x11\x95\x14a\0\xF3W\x80c\xFA\xBC\x1C\xBC\x14a\x01\x1DW__\xFD[\x80c\x10\xD6z/\x14a\0~W\x80c\x13d9\xDD\x14a\0\x93W\x80cY\\jg\x14a\0\xA6W[__\xFD[a\0\x91a\0\x8C6`\x04a\x06HV[a\x010V[\0[a\0\x91a\0\xA16`\x04a\x06jV[a\x01\xE8V[a\0\x91a\x03$V[a\0\xCDa\0\xBC6`\x04a\x06\x81V[`\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\xD9V[_Ta\x01\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xD9V[a\0\x91a\x01+6`\x04a\x06jV[a\x03\xE7V[__\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\x01\x7FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA3\x91\x90a\x06\xA1V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x01\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xD3\x90a\x06\xBCV[`@Q\x80\x91\x03\x90\xFD[a\x01\xE5\x81a\x05?V[PV[_T`@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\x02-W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02Q\x91\x90a\x07\x06V[a\x02mW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xD3\x90a\x07%V[`\x01T\x81\x81\x16\x14a\x02\xE6W`@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\xD3V[`\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[_T`@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\x03iW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8D\x91\x90a\x07\x06V[a\x03\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xD3\x90a\x07%V[_\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[__\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\x046W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04Z\x91\x90a\x06\xA1V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x04\x8AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xD3\x90a\x06\xBCV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x05\x08W`@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\xD3V[`\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\x19V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCDW`@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\xD3V[_T`@\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_\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\xE5W__\xFD[_` \x82\x84\x03\x12\x15a\x06XW__\xFD[\x815a\x06c\x81a\x064V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x06zW__\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\x91W__\xFD[\x815`\xFF\x81\x16\x81\x14a\x06cW__\xFD[_` \x82\x84\x03\x12\x15a\x06\xB1W__\xFD[\x81Qa\x06c\x81a\x064V[` \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[_` \x82\x84\x03\x12\x15a\x07\x16W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x06cW__\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 \xF2\x9C\xEC\x93\x1B\x84P\xD2~\xF4\xEB>'X\x1CT\xA1M\x8C\xD4\xCChr\x98\x90\x98f\xC7\x1FgV\x07dsolcC\0\x08\x1B\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/deploy/pauserregistry.rs b/crates/utils/src/deploy/pauserregistry.rs new file mode 100644 index 00000000..684ae318 --- /dev/null +++ b/crates/utils/src/deploy/pauserregistry.rs @@ -0,0 +1,1401 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod PauserRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b5060405161073638038061073683398101604081905261002e91610253565b5f5b825181101561006b5761006383828151811061004e5761004e61032f565b6020026020010151600161007c60201b60201c565b600101610030565b506100758161014d565b5050610343565b6001600160a01b0382166100ed5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101bb5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100e4565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b038116811461024e575f5ffd5b919050565b5f5f60408385031215610264575f5ffd5b82516001600160401b03811115610279575f5ffd5b8301601f81018513610289575f5ffd5b80516001600160401b038111156102a2576102a2610224565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102d0576102d0610224565b6040529182526020818401810192908101888411156102ed575f5ffd5b6020850194505b838510156103135761030585610238565b8152602094850194016102f4565b5094506103269250505060208401610238565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b6103e6806103505f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461030d565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461032d565b6100d8565b005b6100986100a836600461030d565b610119565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b0316331461010b5760405162461bcd60e51b815260040161010290610366565b60405180910390fd5b610115828261014f565b5050565b6001546001600160a01b031633146101435760405162461bcd60e51b815260040161010290610366565b61014c8161021b565b50565b6001600160a01b0382166101bb5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610102565b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166102895760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610102565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610308575f5ffd5b919050565b5f6020828403121561031d575f5ffd5b610326826102f2565b9392505050565b5f5f6040838503121561033e575f5ffd5b610347836102f2565b91506020830135801515811461035b575f5ffd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220bad9bc7e5840c034ce8eb3bf0529db3b114379ed30673ef2860d67336dc90c2e64736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`@Qa\x0768\x03\x80a\x076\x839\x81\x01`@\x81\x90Ra\0.\x91a\x02SV[_[\x82Q\x81\x10\x15a\0kWa\0c\x83\x82\x81Q\x81\x10a\0NWa\0Na\x03/V[` \x02` \x01\x01Q`\x01a\0|` \x1B` \x1CV[`\x01\x01a\x000V[Pa\0u\x81a\x01MV[PPa\x03CV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\0\xEDW`@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_\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\xBBW`@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\xE4V[`\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_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02NW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x02dW__\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02yW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x02\x89W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\xA2Wa\x02\xA2a\x02$V[`@Q`\x05\x82\x90\x1B\x90`?\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02\xD0Wa\x02\xD0a\x02$V[`@R\x91\x82R` \x81\x84\x01\x81\x01\x92\x90\x81\x01\x88\x84\x11\x15a\x02\xEDW__\xFD[` \x85\x01\x94P[\x83\x85\x10\x15a\x03\x13Wa\x03\x05\x85a\x028V[\x81R` \x94\x85\x01\x94\x01a\x02\xF4V[P\x94Pa\x03&\x92PPP` \x84\x01a\x028V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x03\xE6\x80a\x03P_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80cF\xFB\xF6\x8E\x14a\0NW\x80c\x85hR\x06\x14a\0\x85W\x80c\xCET\x84(\x14a\0\x9AW\x80c\xEA\xB6mz\x14a\0\xADW[__\xFD[a\0pa\0\\6`\x04a\x03\rV[_` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\x98a\0\x936`\x04a\x03-V[a\0\xD8V[\0[a\0\x98a\0\xA86`\x04a\x03\rV[a\x01\x19V[`\x01Ta\0\xC0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0|V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x02\x90a\x03fV[`@Q\x80\x91\x03\x90\xFD[a\x01\x15\x82\x82a\x01OV[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x02\x90a\x03fV[a\x01L\x81a\x02\x1BV[PV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x01\xBBW`@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\x02V[`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x89W`@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\x02V[`\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\x08W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x03\x1DW__\xFD[a\x03&\x82a\x02\xF2V[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x03>W__\xFD[a\x03G\x83a\x02\xF2V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x03[W__\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 \xBA\xD9\xBC~X@\xC04\xCE\x8E\xB3\xBF\x05)\xDB;\x11Cy\xED0g>\xF2\x86\rg3m\xC9\x0C.dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461030d565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461032d565b6100d8565b005b6100986100a836600461030d565b610119565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b0316331461010b5760405162461bcd60e51b815260040161010290610366565b60405180910390fd5b610115828261014f565b5050565b6001546001600160a01b031633146101435760405162461bcd60e51b815260040161010290610366565b61014c8161021b565b50565b6001600160a01b0382166101bb5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610102565b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166102895760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610102565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610308575f5ffd5b919050565b5f6020828403121561031d575f5ffd5b610326826102f2565b9392505050565b5f5f6040838503121561033e575f5ffd5b610347836102f2565b91506020830135801515811461035b575f5ffd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220bad9bc7e5840c034ce8eb3bf0529db3b114379ed30673ef2860d67336dc90c2e64736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80cF\xFB\xF6\x8E\x14a\0NW\x80c\x85hR\x06\x14a\0\x85W\x80c\xCET\x84(\x14a\0\x9AW\x80c\xEA\xB6mz\x14a\0\xADW[__\xFD[a\0pa\0\\6`\x04a\x03\rV[_` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\x98a\0\x936`\x04a\x03-V[a\0\xD8V[\0[a\0\x98a\0\xA86`\x04a\x03\rV[a\x01\x19V[`\x01Ta\0\xC0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0|V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x02\x90a\x03fV[`@Q\x80\x91\x03\x90\xFD[a\x01\x15\x82\x82a\x01OV[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x02\x90a\x03fV[a\x01L\x81a\x02\x1BV[PV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x01\xBBW`@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\x02V[`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x89W`@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\x02V[`\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\x08W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x03\x1DW__\xFD[a\x03&\x82a\x02\xF2V[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x03>W__\xFD[a\x03G\x83a\x02\xF2V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x03[W__\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 \xBA\xD9\xBC~X@\xC04\xCE\x8E\xB3\xBF\x05)\xDB;\x11Cy\xED0g>\xF2\x86\rg3m\xC9\x0C.dsolcC\0\x08\x1B\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isPauserReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setIsPauserReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUnpauserReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauserCall {} + ///Container type for the return parameters of the [`unpauser()`](unpauserCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauserReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/deploy/proxy.rs similarity index 98% rename from crates/utils/src/proxy.rs rename to crates/utils/src/deploy/proxy.rs index 6c24dd5f..1227bc77 100644 --- a/crates/utils/src/proxy.rs +++ b/crates/utils/src/deploy/proxy.rs @@ -22,7 +22,12 @@ interface Proxy { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod Proxy { use super::*; use alloy::sol_types as alloy_sol_types; diff --git a/crates/utils/src/deploy/proxyadmin.rs b/crates/utils/src/deploy/proxyadmin.rs new file mode 100644 index 00000000..aeb851f6 --- /dev/null +++ b/crates/utils/src/deploy/proxyadmin.rs @@ -0,0 +1,1830 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod ProxyAdmin { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea2646970667358221220a33a09721f70dd6af85c1e18653df74aa9d4c6528611772b1af916455d53b2a764736f6c634300081b0033 + /// ``` + #[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`\x0EW__\xFD[P`\x163`\x1AV[`iV[_\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\x06R\x80a\0v_9_\xF3\xFE`\x80`@R`\x046\x10a\0yW_5`\xE0\x1C\x80c\x96#`\x9D\x11a\0LW\x80c\x96#`\x9D\x14a\x01\tW\x80c\x99\xA8\x8E\xC4\x14a\x01\x1CW\x80c\xF2\xFD\xE3\x8B\x14a\x01;W\x80c\xF3\xB7\xDE\xAD\x14a\x01ZW__\xFD[\x80c N\x1Cz\x14a\0}W\x80cqP\x18\xA6\x14a\0\xB8W\x80c~\xFF'^\x14a\0\xCEW\x80c\x8D\xA5\xCB[\x14a\0\xEDW[__\xFD[4\x80\x15a\0\x88W__\xFD[Pa\0\x9Ca\0\x976`\x04a\x04yV[a\x01yV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC3W__\xFD[Pa\0\xCCa\x02\x04V[\0[4\x80\x15a\0\xD9W__\xFD[Pa\0\xCCa\0\xE86`\x04a\x04\x9BV[a\x02\x17V[4\x80\x15a\0\xF8W__\xFD[P_T`\x01`\x01`\xA0\x1B\x03\x16a\0\x9CV[a\0\xCCa\x01\x176`\x04a\x04\xE6V[a\x02zV[4\x80\x15a\x01'W__\xFD[Pa\0\xCCa\x0166`\x04a\x04\x9BV[a\x02\xE5V[4\x80\x15a\x01FW__\xFD[Pa\0\xCCa\x01U6`\x04a\x04yV[a\x03\x1BV[4\x80\x15a\x01eW__\xFD[Pa\0\x9Ca\x01t6`\x04a\x04yV[a\x03\x99V[___\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\x9D\x90c\\`\xDA\x1B`\xE0\x1B\x81R`\x04\x01\x90V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\x01\xD5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x01\xDAV[``\x91P[P\x91P\x91P\x81a\x01\xE8W__\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\x01\xFC\x91\x90a\x05\xBDV[\x94\x93PPPPV[a\x02\x0Ca\x03\xBDV[a\x02\x15_a\x04\x16V[V[a\x02\x1Fa\x03\xBDV[`@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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02`W__\xFD[PZ\xF1\x15\x80\x15a\x02rW=__>=_\xFD[PPPPPPV[a\x02\x82a\x03\xBDV[`@Qc'\x8FyC`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90cO\x1E\xF2\x86\x904\x90a\x02\xB2\x90\x86\x90\x86\x90`\x04\x01a\x05\xD8V[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x02\xC9W__\xFD[PZ\xF1\x15\x80\x15a\x02\xDBW=__>=_\xFD[PPPPPPPPV[a\x02\xEDa\x03\xBDV[`@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\x02IV[a\x03#a\x03\xBDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\x8DW`@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\x96\x81a\x04\x16V[PV[___\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\x9D\x90c\x03\xE1F\x91`\xE6\x1B\x81R`\x04\x01\x90V[_T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x15W`@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\x84V[_\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\x96W__\xFD[_` \x82\x84\x03\x12\x15a\x04\x89W__\xFD[\x815a\x04\x94\x81a\x04eV[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x04\xACW__\xFD[\x825a\x04\xB7\x81a\x04eV[\x91P` \x83\x015a\x04\xC7\x81a\x04eV[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x04\xF8W__\xFD[\x835a\x05\x03\x81a\x04eV[\x92P` \x84\x015a\x05\x13\x81a\x04eV[\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05.W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x05>W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05XWa\x05Xa\x04\xD2V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x87Wa\x05\x87a\x04\xD2V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x05\x9EW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x05\xCDW__\xFD[\x81Qa\x04\x94\x81a\x04eV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q\x80`@\x84\x01R\x80` \x85\x01``\x85\x01^_``\x82\x85\x01\x01R```\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xA3:\tr\x1Fp\xDDj\xF8\\\x1E\x18e=\xF7J\xA9\xD4\xC6R\x86\x11w+\x1A\xF9\x16E]S\xB2\xA7dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea2646970667358221220a33a09721f70dd6af85c1e18653df74aa9d4c6528611772b1af916455d53b2a764736f6c634300081b0033 + /// ``` + #[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\0yW_5`\xE0\x1C\x80c\x96#`\x9D\x11a\0LW\x80c\x96#`\x9D\x14a\x01\tW\x80c\x99\xA8\x8E\xC4\x14a\x01\x1CW\x80c\xF2\xFD\xE3\x8B\x14a\x01;W\x80c\xF3\xB7\xDE\xAD\x14a\x01ZW__\xFD[\x80c N\x1Cz\x14a\0}W\x80cqP\x18\xA6\x14a\0\xB8W\x80c~\xFF'^\x14a\0\xCEW\x80c\x8D\xA5\xCB[\x14a\0\xEDW[__\xFD[4\x80\x15a\0\x88W__\xFD[Pa\0\x9Ca\0\x976`\x04a\x04yV[a\x01yV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC3W__\xFD[Pa\0\xCCa\x02\x04V[\0[4\x80\x15a\0\xD9W__\xFD[Pa\0\xCCa\0\xE86`\x04a\x04\x9BV[a\x02\x17V[4\x80\x15a\0\xF8W__\xFD[P_T`\x01`\x01`\xA0\x1B\x03\x16a\0\x9CV[a\0\xCCa\x01\x176`\x04a\x04\xE6V[a\x02zV[4\x80\x15a\x01'W__\xFD[Pa\0\xCCa\x0166`\x04a\x04\x9BV[a\x02\xE5V[4\x80\x15a\x01FW__\xFD[Pa\0\xCCa\x01U6`\x04a\x04yV[a\x03\x1BV[4\x80\x15a\x01eW__\xFD[Pa\0\x9Ca\x01t6`\x04a\x04yV[a\x03\x99V[___\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\x9D\x90c\\`\xDA\x1B`\xE0\x1B\x81R`\x04\x01\x90V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\x01\xD5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x01\xDAV[``\x91P[P\x91P\x91P\x81a\x01\xE8W__\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\x01\xFC\x91\x90a\x05\xBDV[\x94\x93PPPPV[a\x02\x0Ca\x03\xBDV[a\x02\x15_a\x04\x16V[V[a\x02\x1Fa\x03\xBDV[`@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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02`W__\xFD[PZ\xF1\x15\x80\x15a\x02rW=__>=_\xFD[PPPPPPV[a\x02\x82a\x03\xBDV[`@Qc'\x8FyC`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90cO\x1E\xF2\x86\x904\x90a\x02\xB2\x90\x86\x90\x86\x90`\x04\x01a\x05\xD8V[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x02\xC9W__\xFD[PZ\xF1\x15\x80\x15a\x02\xDBW=__>=_\xFD[PPPPPPPPV[a\x02\xEDa\x03\xBDV[`@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\x02IV[a\x03#a\x03\xBDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\x8DW`@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\x96\x81a\x04\x16V[PV[___\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\x9D\x90c\x03\xE1F\x91`\xE6\x1B\x81R`\x04\x01\x90V[_T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x15W`@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\x84V[_\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\x96W__\xFD[_` \x82\x84\x03\x12\x15a\x04\x89W__\xFD[\x815a\x04\x94\x81a\x04eV[\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x04\xACW__\xFD[\x825a\x04\xB7\x81a\x04eV[\x91P` \x83\x015a\x04\xC7\x81a\x04eV[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x04\xF8W__\xFD[\x835a\x05\x03\x81a\x04eV[\x92P` \x84\x015a\x05\x13\x81a\x04eV[\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05.W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x05>W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05XWa\x05Xa\x04\xD2V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x87Wa\x05\x87a\x04\xD2V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x05\x9EW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x05\xCDW__\xFD[\x81Qa\x04\x94\x81a\x04eV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q\x80`@\x84\x01R\x80` \x85\x01``\x85\x01^_``\x82\x85\x01\x01R```\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xA3:\tr\x1Fp\xDDj\xF8\\\x1E\x18e=\xF7J\xA9\xD4\xC6R\x86\x11w+\x1A\xF9\x16E]S\xB2\xA7dsolcC\0\x08\x1B\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct changeProxyAdminReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getProxyAdminReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getProxyImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct upgradeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct upgradeAndCallReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/deploy/registeroperators.rs b/crates/utils/src/deploy/registeroperators.rs new file mode 100644 index 00000000..a889fc10 --- /dev/null +++ b/crates/utils/src/deploy/registeroperators.rs @@ -0,0 +1,715 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod RegisterOperators { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff191662010001179055348015601f575f5ffd5b5061192f8061002d5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80630a9254e414610043578063c04062261461004d578063f8ccbf4714610055575b5f5ffd5b61004b61007c565b005b61004b610159565b600c546100689062010000900460ff1681565b604051901515815260200160405180910390f35b600a600e55617a69461480610092575046610539145b156100c0576040518060600160405280603b815260200161189b603b9139600d906100bd90826113f3565b50565b60405163f877cb1960e01b81526020600482015260086024820152674d4e454d4f4e494360c01b6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb19906064015f60405180830381865afa158015610125573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261014c9190810190611525565b600d906100bd90826113f3565b600f80546001600160a01b031916735fbdb2315678afecb367f032d93f642f64180aa31790555f6101886108c0565b90505f610193610b33565b90505f600e5467ffffffffffffffff8111156101b1576101b161135b565b6040519080825280602002602001820160405280156101da578160200160208202803683370190505b5090505f600e5467ffffffffffffffff8111156101f9576101f961135b565b604051908082528060200260200182016040528015610222578160200160208202803683370190505b5090505f600e5467ffffffffffffffff8111156102415761024161135b565b60405190808252806020026020018201604052801561026a578160200160208202803683370190505b5090505f5b600e548110156103d6575f61030c600d805461028a9061136f565b80601f01602080910402602001604051908101604052809291908181526020018280546102b69061136f565b80156103015780601f106102d857610100808354040283529160200191610301565b820191905f5260205f20905b8154815290600101906020018083116102e457829003601f168201915b505050505083610bb6565b509050808583815181106103225761032261156a565b60200260200101906001600160a01b031690816001600160a01b031681525050674563918244f4000084838151811061035d5761035d61156a565b6020026020010181815250506103b0825f1b60405160200161038191815260200190565b604051602081830303815290604052805190602001205f1c670de0b6b3a7640000678ac7230489e80000610cb1565b8383815181106103c2576103c261156a565b60209081029190910101525060010161026f565b505f51602061187b5f395f51905f525f1c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561041e575f5ffd5b505af1158015610430573d5f5f3e3d5ffd5b5050505061043f5f8484610cf4565b835161044c908483610cf4565b5f51602061187b5f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610493575f5ffd5b505af11580156104a5573d5f5f3e3d5ffd5b505f925050505b600e548110156108b85760405163348051d760e11b8152600481018290525f906064908290737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa15801561050a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105319190810190611525565b6040516020016105419190611595565b60405160208183030381529060405290505f6105e5600d80546105639061136f565b80601f016020809104026020016040519081016040528092919081815260200182805461058f9061136f565b80156105da5780601f106105b1576101008083540402835291602001916105da565b820191905f5260205f20905b8154815290600101906020018083116105bd57829003601f168201915b505050505086610bb6565b60405163ce817d4760e01b815260048101829052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ce817d47906024015f604051808303815f87803b158015610633575f5ffd5b505af1158015610645573d5f5f3e3d5ffd5b5050505046617a69148061065a575046610539145b156106f257600f5460405163566add5160e11b81526080600482015260166084820152753a32b9ba2fb932b3b4b9ba32b92fb7b832b930ba37b960511b60a4820152602481018790524360448201524260648201526001600160a01b039091169063acd5baa29060c4015f604051808303815f87803b1580156106db575f5ffd5b505af11580156106ed573d5f5f3e3d5ffd5b505050505b89606001516001600160a01b0316630f589e5960405180606001604052808b89815181106107225761072261156a565b60200260200101516001600160a01b03168152602001876001600160a01b031681526020018663ffffffff16815250846040518363ffffffff1660e01b815260040161076f9291906115f4565b5f604051808303815f87803b158015610786575f5ffd5b505af1158015610798573d5f5f3e3d5ffd5b5050505089604001516001600160a01b031663e7a050aa8a602001518b5f01518989815181106107ca576107ca61156a565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610826573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084a9190611637565b505f51602061187b5f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610892575f5ffd5b505af11580156108a4573d5f5f3e3d5ffd5b5050600190960195506104ac945050505050565b505050505050565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525f61093f6040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610e3f565b90505f610981826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e00815250611031565b90505f6109c3836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c617965725061757365725265670000815250611031565b90505f610a05846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e61676572000000000000815250611031565b90505f610a3f85604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b815250611031565b90505f610a81866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f7279000000000000000000815250611031565b90505f610ab887604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b815250611031565b90505f610add8860405180606001604052806025815260200161185660259139611031565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a08301525f60c083015290911660e082015292915050565b604080518082019091525f80825260208201525f610b686040518060600160405280602481526020016118d660249139610e3f565b90505f610b97826040518060400160405280600a8152602001692e61646472657373657360b01b8152506110b4565b90505f81806020019051810190610bae9190611662565b949350505050565b604051636229498b60e01b81525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90636229498b90610bf390879087906004016116c1565b602060405180830381865afa158015610c0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c329190611637565b604051630884001960e21b815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906322100064906024016020604051808303815f875af1158015610c84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca891906116e8565b91509250929050565b5f610cbd848484611131565b9050610ced6040518060400160405280600c81526020016b109bdd5b99081c995cdd5b1d60a21b815250826112ee565b9392505050565b5f5b8251811015610e39576001600160a01b038416610d7b57828181518110610d1f57610d1f61156a565b60200260200101516001600160a01b03166108fc838381518110610d4557610d4561156a565b602002602001015190811502906040515f60405180830381858888f19350505050158015610d75573d5f5f3e3d5ffd5b50610e31565b836001600160a01b031663a9059cbb848381518110610d9c57610d9c61156a565b6020026020010151848481518110610db657610db661156a565b60200260200101516040518363ffffffff1660e01b8152600401610def9291906001600160a01b03929092168252602082015260400190565b6020604051808303815f875af1158015610e0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2f9190611703565b505b600101610cf6565b50505050565b60605f5f51602061187b5f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015610e8c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610eb39190810190611525565b604051602001610ec39190611722565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015610f21573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f489190810190611525565b604051602001610f58919061174c565b60405160208183030381529060405290505f84604051602001610f7b9190611768565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610fbc90869086908690602001611788565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610fe791906117a5565b5f60405180830381865afa158015611001573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110289190810190611525565b95945050505050565b604051631e19e65760e01b81525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e6579061106c90869086906004016117b7565b602060405180830381865afa158015611087573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ab91906116e8565b90505b92915050565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef1906110f090869086906004016117b7565b5f60405180830381865afa15801561110a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110ab9190810190611525565b5f818311156111ac5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156111bc5750818411155b156111c8575082610ced565b5f6111d384846117ef565b6111de906001611802565b9050600385111580156111f057508481115b15611207576111ff8585611802565b915050610ced565b61121360035f196117ef565b851015801561122b5750611228855f196117ef565b81115b156112455761123b855f196117ef565b6111ff90846117ef565b82851115611298575f61125884876117ef565b90505f6112658383611815565b9050805f0361127957849350505050610ced565b60016112858288611802565b61128f91906117ef565b935050506112e6565b838510156112e6575f6112ab86866117ef565b90505f6112b88383611815565b9050805f036112cc57859350505050610ced565b6112d681866117ef565b6112e1906001611802565b935050505b509392505050565b6113338282604051602401611304929190611834565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052611337565b5050565b6100bd8180516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061138357607f821691505b6020821081036113a157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156113ee57805f5260205f20601f840160051c810160208510156113cc5750805b601f840160051c820191505b818110156113eb575f81556001016113d8565b50505b505050565b815167ffffffffffffffff81111561140d5761140d61135b565b6114218161141b845461136f565b846113a7565b6020601f821160018114611453575f831561143c5750848201515b5f19600385901b1c1916600184901b1784556113eb565b5f84815260208120601f198516915b828110156114825787850151825560209485019460019092019101611462565b508482101561149f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f67ffffffffffffffff8411156114c8576114c861135b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156114f7576114f761135b565b60405283815290508082840185101561150e575f5ffd5b8383602083015e5f60208583010152509392505050565b5f60208284031215611535575f5ffd5b815167ffffffffffffffff81111561154b575f5ffd5b8201601f8101841361155b575f5ffd5b610bae848251602084016114ae565b634e487b7160e01b5f52603260045260245ffd5b5f81518060208401855e5f93019283525090919050565b7f68747470733a2f2f636f6f6c73747566662e636f6d2f6f70657261746f722f0081525f6110ab601f83018461157e565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b03835116815260018060a01b03602084015116602082015263ffffffff6040840151166040820152608060608201525f610bae60808301846115c6565b5f60208284031215611647575f5ffd5b5051919050565b6001600160a01b03811681146100bd575f5ffd5b5f6040828403128015611673575f5ffd5b506040805190810167ffffffffffffffff811182821017156116975761169761135b565b60405282516116a58161164e565b815260208301516116b58161164e565b60208201529392505050565b604081525f6116d360408301856115c6565b905063ffffffff831660208301529392505050565b5f602082840312156116f8575f5ffd5b8151610ced8161164e565b5f60208284031215611713575f5ffd5b81518015158114610ced575f5ffd5b5f61172d828461157e565b6e2f7363726970742f6f75747075742f60881b8152600f019392505050565b5f611757828461157e565b602f60f81b81526001019392505050565b5f611773828461157e565b64173539b7b760d91b81526005019392505050565b5f61102861179f611799848861157e565b8661157e565b8461157e565b602081525f6110ab60208301846115c6565b604081525f6117c960408301856115c6565b828103602084015261102881856115c6565b634e487b7160e01b5f52601160045260245ffd5b818103818111156110ae576110ae6117db565b808201808211156110ae576110ae6117db565b5f8261182f57634e487b7160e01b5f52601260045260245ffd5b500690565b604081525f61184660408301856115c6565b9050826020830152939250505056fe2e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573742074657374207465737420746573742074657374207465737420746573742074657374207465737420746573742074657374206a756e6b746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220ce55c5cc792f2411a138ee5f147cd8b868eb2acb99eb4bb062a234ad73fe056b64736f6c634300081b0033 + /// ``` + #[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`\x1FW__\xFD[Pa\x19/\x80a\0-_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0MW\x80c\xF8\xCC\xBFG\x14a\0UW[__\xFD[a\0Ka\0|V[\0[a\0Ka\x01YV[`\x0CTa\0h\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\x92WPFa\x059\x14[\x15a\0\xC0W`@Q\x80``\x01`@R\x80`;\x81R` \x01a\x18\x9B`;\x919`\r\x90a\0\xBD\x90\x82a\x13\xF3V[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_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01%W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x01L\x91\x90\x81\x01\x90a\x15%V[`\r\x90a\0\xBD\x90\x82a\x13\xF3V[`\x0F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3\x17\x90U_a\x01\x88a\x08\xC0V[\x90P_a\x01\x93a\x0B3V[\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xB1Wa\x01\xB1a\x13[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xDAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xF9Wa\x01\xF9a\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_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02AWa\x02Aa\x13[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02jW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[`\x0ET\x81\x10\x15a\x03\xD6W_a\x03\x0C`\r\x80Ta\x02\x8A\x90a\x13oV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xB6\x90a\x13oV[\x80\x15a\x03\x01W\x80`\x1F\x10a\x02\xD8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x01V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xE4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x83a\x0B\xB6V[P\x90P\x80\x85\x83\x81Q\x81\x10a\x03\"Wa\x03\"a\x15jV[` \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\x15jV[` \x02` \x01\x01\x81\x81RPPa\x03\xB0\x82_\x1B`@Q` \x01a\x03\x81\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Cg\r\xE0\xB6\xB3\xA7d\0\0g\x8A\xC7#\x04\x89\xE8\0\0a\x0C\xB1V[\x83\x83\x81Q\x81\x10a\x03\xC2Wa\x03\xC2a\x15jV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\x02oV[P_Q` a\x18{_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1EW__\xFD[PZ\xF1\x15\x80\x15a\x040W=__>=_\xFD[PPPPa\x04?_\x84\x84a\x0C\xF4V[\x83Qa\x04L\x90\x84\x83a\x0C\xF4V[_Q` a\x18{_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x93W__\xFD[PZ\xF1\x15\x80\x15a\x04\xA5W=__>=_\xFD[P_\x92PPP[`\x0ET\x81\x10\x15a\x08\xB8W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R_\x90`d\x90\x82\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\nW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x051\x91\x90\x81\x01\x90a\x15%V[`@Q` \x01a\x05A\x91\x90a\x15\x95V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x05\xE5`\r\x80Ta\x05c\x90a\x13oV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x8F\x90a\x13oV[\x80\x15a\x05\xDAW\x80`\x1F\x10a\x05\xB1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xDAV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xBDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x86a\x0B\xB6V[`@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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x063W__\xFD[PZ\xF1\x15\x80\x15a\x06EW=__>=_\xFD[PPPPFazi\x14\x80a\x06ZWPFa\x059\x14[\x15a\x06\xF2W`\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\xDBW__\xFD[PZ\xF1\x15\x80\x15a\x06\xEDW=__>=_\xFD[PPPP[\x89``\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\x0FX\x9EY`@Q\x80``\x01`@R\x80\x8B\x89\x81Q\x81\x10a\x07\"Wa\x07\"a\x15jV[` \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\x07o\x92\x91\x90a\x15\xF4V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07\x86W__\xFD[PZ\xF1\x15\x80\x15a\x07\x98W=__>=_\xFD[PPPP\x89`@\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xE7\xA0P\xAA\x8A` \x01Q\x8B_\x01Q\x89\x89\x81Q\x81\x10a\x07\xCAWa\x07\xCAa\x15jV[` \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_\x87Z\xF1\x15\x80\x15a\x08&W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08J\x91\x90a\x167V[P_Q` a\x18{_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08\x92W__\xFD[PZ\xF1\x15\x80\x15a\x08\xA4W=__>=_\xFD[PP`\x01\x90\x96\x01\x95Pa\x04\xAC\x94PPPPPV[PPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R_\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_a\t?`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\x0E?V[\x90P_a\t\x81\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x101V[\x90P_a\t\xC3\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x101V[\x90P_a\n\x05\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x101V[\x90P_a\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\x81RPa\x101V[\x90P_a\n\x81\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x101V[\x90P_a\n\xB8\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x101V[\x90P_a\n\xDD\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a\x18V`%\x919a\x101V[`@\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_`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x0Bh`@Q\x80``\x01`@R\x80`$\x81R` \x01a\x18\xD6`$\x919a\x0E?V[\x90P_a\x0B\x97\x82`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.addresses`\xB0\x1B\x81RPa\x10\xB4V[\x90P_\x81\x80` \x01\x90Q\x81\x01\x90a\x0B\xAE\x91\x90a\x16bV[\x94\x93PPPPV[`@Qcb)I\x8B`\xE0\x1B\x81R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cb)I\x8B\x90a\x0B\xF3\x90\x87\x90\x87\x90`\x04\x01a\x16\xC1V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x0EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C2\x91\x90a\x167V[`@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_\x87Z\xF1\x15\x80\x15a\x0C\x84W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xA8\x91\x90a\x16\xE8V[\x91P\x92P\x92\x90PV[_a\x0C\xBD\x84\x84\x84a\x111V[\x90Pa\x0C\xED`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x10\x9B\xDD[\x99\x08\x1C\x99\\\xDD[\x1D`\xA2\x1B\x81RP\x82a\x12\xEEV[\x93\x92PPPV[_[\x82Q\x81\x10\x15a\x0E9W`\x01`\x01`\xA0\x1B\x03\x84\x16a\r{W\x82\x81\x81Q\x81\x10a\r\x1FWa\r\x1Fa\x15jV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a\x08\xFC\x83\x83\x81Q\x81\x10a\rEWa\rEa\x15jV[` \x02` \x01\x01Q\x90\x81\x15\x02\x90`@Q_`@Q\x80\x83\x03\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\ruW=__>=_\xFD[Pa\x0E1V[\x83`\x01`\x01`\xA0\x1B\x03\x16c\xA9\x05\x9C\xBB\x84\x83\x81Q\x81\x10a\r\x9CWa\r\x9Ca\x15jV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a\r\xB6Wa\r\xB6a\x15jV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xEF\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x0E\x0BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E/\x91\x90a\x17\x03V[P[`\x01\x01a\x0C\xF6V[PPPPV[``__Q` a\x18{_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x8CW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xB3\x91\x90\x81\x01\x90a\x15%V[`@Q` \x01a\x0E\xC3\x91\x90a\x17\"V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F!W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0FH\x91\x90\x81\x01\x90a\x15%V[`@Q` \x01a\x0FX\x91\x90a\x17LV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x84`@Q` \x01a\x0F{\x91\x90a\x17hV[`@\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\x0F\xBC\x90\x86\x90\x86\x90\x86\x90` \x01a\x17\x88V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xE7\x91\x90a\x17\xA5V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x01W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10(\x91\x90\x81\x01\x90a\x15%V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x10l\x90\x86\x90\x86\x90`\x04\x01a\x17\xB7V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xAB\x91\x90a\x16\xE8V[\x90P[\x92\x91PPV[`@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\xF0\x90\x86\x90\x86\x90`\x04\x01a\x17\xB7V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\nW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10\xAB\x91\x90\x81\x01\x90a\x15%V[_\x81\x83\x11\x15a\x11\xACW`@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\x11\xBCWP\x81\x84\x11\x15[\x15a\x11\xC8WP\x82a\x0C\xEDV[_a\x11\xD3\x84\x84a\x17\xEFV[a\x11\xDE\x90`\x01a\x18\x02V[\x90P`\x03\x85\x11\x15\x80\x15a\x11\xF0WP\x84\x81\x11[\x15a\x12\x07Wa\x11\xFF\x85\x85a\x18\x02V[\x91PPa\x0C\xEDV[a\x12\x13`\x03_\x19a\x17\xEFV[\x85\x10\x15\x80\x15a\x12+WPa\x12(\x85_\x19a\x17\xEFV[\x81\x11[\x15a\x12EWa\x12;\x85_\x19a\x17\xEFV[a\x11\xFF\x90\x84a\x17\xEFV[\x82\x85\x11\x15a\x12\x98W_a\x12X\x84\x87a\x17\xEFV[\x90P_a\x12e\x83\x83a\x18\x15V[\x90P\x80_\x03a\x12yW\x84\x93PPPPa\x0C\xEDV[`\x01a\x12\x85\x82\x88a\x18\x02V[a\x12\x8F\x91\x90a\x17\xEFV[\x93PPPa\x12\xE6V[\x83\x85\x10\x15a\x12\xE6W_a\x12\xAB\x86\x86a\x17\xEFV[\x90P_a\x12\xB8\x83\x83a\x18\x15V[\x90P\x80_\x03a\x12\xCCW\x85\x93PPPPa\x0C\xEDV[a\x12\xD6\x81\x86a\x17\xEFV[a\x12\xE1\x90`\x01a\x18\x02V[\x93PPP[P\x93\x92PPPV[a\x133\x82\x82`@Q`$\x01a\x13\x04\x92\x91\x90a\x184V[`@\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\x137V[PPV[a\0\xBD\x81\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x13\x83W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x13\xA1WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x13\xEEW\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x13\xCCWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x13\xEBW_\x81U`\x01\x01a\x13\xD8V[PP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\rWa\x14\ra\x13[V[a\x14!\x81a\x14\x1B\x84Ta\x13oV[\x84a\x13\xA7V[` `\x1F\x82\x11`\x01\x81\x14a\x14SW_\x83\x15a\x14=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x01L\x91\x90\x81\x01\x90a\x15%V[`\r\x90a\0\xBD\x90\x82a\x13\xF3V[`\x0F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3\x17\x90U_a\x01\x88a\x08\xC0V[\x90P_a\x01\x93a\x0B3V[\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xB1Wa\x01\xB1a\x13[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xDAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xF9Wa\x01\xF9a\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_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02AWa\x02Aa\x13[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02jW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[`\x0ET\x81\x10\x15a\x03\xD6W_a\x03\x0C`\r\x80Ta\x02\x8A\x90a\x13oV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xB6\x90a\x13oV[\x80\x15a\x03\x01W\x80`\x1F\x10a\x02\xD8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x01V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xE4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x83a\x0B\xB6V[P\x90P\x80\x85\x83\x81Q\x81\x10a\x03\"Wa\x03\"a\x15jV[` \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\x15jV[` \x02` \x01\x01\x81\x81RPPa\x03\xB0\x82_\x1B`@Q` \x01a\x03\x81\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Cg\r\xE0\xB6\xB3\xA7d\0\0g\x8A\xC7#\x04\x89\xE8\0\0a\x0C\xB1V[\x83\x83\x81Q\x81\x10a\x03\xC2Wa\x03\xC2a\x15jV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\x02oV[P_Q` a\x18{_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1EW__\xFD[PZ\xF1\x15\x80\x15a\x040W=__>=_\xFD[PPPPa\x04?_\x84\x84a\x0C\xF4V[\x83Qa\x04L\x90\x84\x83a\x0C\xF4V[_Q` a\x18{_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x93W__\xFD[PZ\xF1\x15\x80\x15a\x04\xA5W=__>=_\xFD[P_\x92PPP[`\x0ET\x81\x10\x15a\x08\xB8W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R_\x90`d\x90\x82\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\nW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x051\x91\x90\x81\x01\x90a\x15%V[`@Q` \x01a\x05A\x91\x90a\x15\x95V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x05\xE5`\r\x80Ta\x05c\x90a\x13oV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x8F\x90a\x13oV[\x80\x15a\x05\xDAW\x80`\x1F\x10a\x05\xB1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xDAV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xBDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x86a\x0B\xB6V[`@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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x063W__\xFD[PZ\xF1\x15\x80\x15a\x06EW=__>=_\xFD[PPPPFazi\x14\x80a\x06ZWPFa\x059\x14[\x15a\x06\xF2W`\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\xDBW__\xFD[PZ\xF1\x15\x80\x15a\x06\xEDW=__>=_\xFD[PPPP[\x89``\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\x0FX\x9EY`@Q\x80``\x01`@R\x80\x8B\x89\x81Q\x81\x10a\x07\"Wa\x07\"a\x15jV[` \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\x07o\x92\x91\x90a\x15\xF4V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07\x86W__\xFD[PZ\xF1\x15\x80\x15a\x07\x98W=__>=_\xFD[PPPP\x89`@\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xE7\xA0P\xAA\x8A` \x01Q\x8B_\x01Q\x89\x89\x81Q\x81\x10a\x07\xCAWa\x07\xCAa\x15jV[` \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_\x87Z\xF1\x15\x80\x15a\x08&W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08J\x91\x90a\x167V[P_Q` a\x18{_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08\x92W__\xFD[PZ\xF1\x15\x80\x15a\x08\xA4W=__>=_\xFD[PP`\x01\x90\x96\x01\x95Pa\x04\xAC\x94PPPPPV[PPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R_\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_a\t?`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\x0E?V[\x90P_a\t\x81\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x101V[\x90P_a\t\xC3\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x101V[\x90P_a\n\x05\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x101V[\x90P_a\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\x81RPa\x101V[\x90P_a\n\x81\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x101V[\x90P_a\n\xB8\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x101V[\x90P_a\n\xDD\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a\x18V`%\x919a\x101V[`@\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_`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x0Bh`@Q\x80``\x01`@R\x80`$\x81R` \x01a\x18\xD6`$\x919a\x0E?V[\x90P_a\x0B\x97\x82`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.addresses`\xB0\x1B\x81RPa\x10\xB4V[\x90P_\x81\x80` \x01\x90Q\x81\x01\x90a\x0B\xAE\x91\x90a\x16bV[\x94\x93PPPPV[`@Qcb)I\x8B`\xE0\x1B\x81R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cb)I\x8B\x90a\x0B\xF3\x90\x87\x90\x87\x90`\x04\x01a\x16\xC1V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x0EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C2\x91\x90a\x167V[`@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_\x87Z\xF1\x15\x80\x15a\x0C\x84W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xA8\x91\x90a\x16\xE8V[\x91P\x92P\x92\x90PV[_a\x0C\xBD\x84\x84\x84a\x111V[\x90Pa\x0C\xED`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x10\x9B\xDD[\x99\x08\x1C\x99\\\xDD[\x1D`\xA2\x1B\x81RP\x82a\x12\xEEV[\x93\x92PPPV[_[\x82Q\x81\x10\x15a\x0E9W`\x01`\x01`\xA0\x1B\x03\x84\x16a\r{W\x82\x81\x81Q\x81\x10a\r\x1FWa\r\x1Fa\x15jV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a\x08\xFC\x83\x83\x81Q\x81\x10a\rEWa\rEa\x15jV[` \x02` \x01\x01Q\x90\x81\x15\x02\x90`@Q_`@Q\x80\x83\x03\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\ruW=__>=_\xFD[Pa\x0E1V[\x83`\x01`\x01`\xA0\x1B\x03\x16c\xA9\x05\x9C\xBB\x84\x83\x81Q\x81\x10a\r\x9CWa\r\x9Ca\x15jV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a\r\xB6Wa\r\xB6a\x15jV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xEF\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x0E\x0BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E/\x91\x90a\x17\x03V[P[`\x01\x01a\x0C\xF6V[PPPPV[``__Q` a\x18{_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x8CW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xB3\x91\x90\x81\x01\x90a\x15%V[`@Q` \x01a\x0E\xC3\x91\x90a\x17\"V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F!W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0FH\x91\x90\x81\x01\x90a\x15%V[`@Q` \x01a\x0FX\x91\x90a\x17LV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x84`@Q` \x01a\x0F{\x91\x90a\x17hV[`@\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\x0F\xBC\x90\x86\x90\x86\x90\x86\x90` \x01a\x17\x88V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xE7\x91\x90a\x17\xA5V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x01W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10(\x91\x90\x81\x01\x90a\x15%V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x10l\x90\x86\x90\x86\x90`\x04\x01a\x17\xB7V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xAB\x91\x90a\x16\xE8V[\x90P[\x92\x91PPV[`@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\xF0\x90\x86\x90\x86\x90`\x04\x01a\x17\xB7V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\nW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10\xAB\x91\x90\x81\x01\x90a\x15%V[_\x81\x83\x11\x15a\x11\xACW`@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\x11\xBCWP\x81\x84\x11\x15[\x15a\x11\xC8WP\x82a\x0C\xEDV[_a\x11\xD3\x84\x84a\x17\xEFV[a\x11\xDE\x90`\x01a\x18\x02V[\x90P`\x03\x85\x11\x15\x80\x15a\x11\xF0WP\x84\x81\x11[\x15a\x12\x07Wa\x11\xFF\x85\x85a\x18\x02V[\x91PPa\x0C\xEDV[a\x12\x13`\x03_\x19a\x17\xEFV[\x85\x10\x15\x80\x15a\x12+WPa\x12(\x85_\x19a\x17\xEFV[\x81\x11[\x15a\x12EWa\x12;\x85_\x19a\x17\xEFV[a\x11\xFF\x90\x84a\x17\xEFV[\x82\x85\x11\x15a\x12\x98W_a\x12X\x84\x87a\x17\xEFV[\x90P_a\x12e\x83\x83a\x18\x15V[\x90P\x80_\x03a\x12yW\x84\x93PPPPa\x0C\xEDV[`\x01a\x12\x85\x82\x88a\x18\x02V[a\x12\x8F\x91\x90a\x17\xEFV[\x93PPPa\x12\xE6V[\x83\x85\x10\x15a\x12\xE6W_a\x12\xAB\x86\x86a\x17\xEFV[\x90P_a\x12\xB8\x83\x83a\x18\x15V[\x90P\x80_\x03a\x12\xCCW\x85\x93PPPPa\x0C\xEDV[a\x12\xD6\x81\x86a\x17\xEFV[a\x12\xE1\x90`\x01a\x18\x02V[\x93PPP[P\x93\x92PPPV[a\x133\x82\x82`@Q`$\x01a\x13\x04\x92\x91\x90a\x184V[`@\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\x137V[PPV[a\0\xBD\x81\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x13\x83W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x13\xA1WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x13\xEEW\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x13\xCCWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x13\xEBW_\x81U`\x01\x01a\x13\xD8V[PP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\rWa\x14\ra\x13[V[a\x14!\x81a\x14\x1B\x84Ta\x13oV[\x84a\x13\xA7V[` `\x1F\x82\x11`\x01\x81\x14a\x14SW_\x83\x15a\x14 = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/deploy/registrycoordinator.rs b/crates/utils/src/deploy/registrycoordinator.rs new file mode 100644 index 00000000..31bdb7b4 --- /dev/null +++ b/crates/utils/src/deploy/registrycoordinator.rs @@ -0,0 +1,13700 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style +)] +pub mod IRegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorKickParam { + pub quorumNumber: u8, + pub operator: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorSetParam { + pub maxOperatorCount: u32, + pub kickBIPsOfOperatorStake: u16, + pub kickBIPsOfTotalStake: u16, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 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 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 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": "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 + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod RegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101c0604052348015610010575f5ffd5b50604051615f4e380380615f4e83398101604081905261002f91610242565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61012d8184846040805160208101859052908101839052606081018290524660808201523060a08201525f9060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a05261016561016e565b5050505061029e565b5f54610100900460ff16156101d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161015610229575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461023f575f5ffd5b50565b5f5f5f5f60808587031215610255575f5ffd5b84516102608161022b565b60208601519094506102718161022b565b60408601519093506102828161022b565b60608601519092506102938161022b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615bb56103995f395f8181610628015281816110dd01528181611f8301528181612c7f0152818161346c0152613a2201525f818161056e01528181611f0e015281816123a201528181612c04015281816133c80152818161360e01526139a601525f818161053401528181610e8201528181611f4c01528181612b8b01528181612d6001528181612dd70152818161334d0152613a9901525f818161047801528181612ae7015261329b01525f613c9801525f613ce701525f613cc201525f613c1b01525f613c4501525f613c6f0152615bb55ff3fe608060405234801561000f575f5ffd5b506004361061028b575f3560e01c80635df45946116101615780639feab859116100ca578063d75b4c8811610084578063d75b4c88146106e6578063dd8283f3146106f9578063e65797ad1461070c578063f2fde38b146107ae578063fabc1cbc146107c1578063fd39105a146107d4575f5ffd5b80639feab8591461064a578063a50857bf14610671578063c391425e14610684578063ca0de882146106a4578063ca4f2d97146106cb578063d72d8dd6146106de575f5ffd5b8063871ef0491161011b578063871ef049146105be578063886f1195146105d15780638da5cb5b146105e95780639aa1653d146105f15780639b5d177b146106105780639e9923c214610623575f5ffd5b80635df459461461052f5780636347c9001461055657806368304835146105695780636e3b17db14610590578063715018a6146105a357806384ca5213146105ab575f5ffd5b806328f61b31116102035780635140a548116101bd5780635140a548146104ba5780635865c60c146104cd578063595c6a67146104ed5780635ac86ab7146104f55780635b0b829f146105145780635c975abb14610527575f5ffd5b806328f61b3114610427578063296bb0641461043a57806329d1e0c31461044d5780632cdd1e86146104605780633998fdd3146104735780633c2a7f4c1461049a575f5ffd5b806310d67a2f1161025457806310d67a2f1461033f57806313542a4e14610352578063136439dd1461037a5780631478851f1461038d5780631eb812da146103bf578063249a0c4214610408575f5ffd5b8062cf2ab51461028f57806303fd3492146102a457806304ec6351146102d6578063054310e6146103015780630cf4b7671461032c575b5f5ffd5b6102a261029d36600461475f565b61080f565b005b6102c36102b236600461479d565b5f9081526098602052604090205490565b6040519081526020015b60405180910390f35b6102e96102e43660046147c5565b610918565b6040516001600160c01b0390911681526020016102cd565b609d54610314906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b6102a261033a3660046148e0565b610b0c565b6102a261034d366004614950565b610bf2565b6102c3610360366004614950565b6001600160a01b03165f9081526099602052604090205490565b6102a261038836600461479d565b610ca2565b6103af61039b36600461479d565b609a6020525f908152604090205460ff1681565b60405190151581526020016102cd565b6103d26103cd36600461496b565b610ddc565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102cd565b6102c361041636600461499b565b609b6020525f908152604090205481565b609e54610314906001600160a01b031681565b61031461044836600461479d565b610e6a565b6102a261045b366004614950565b610ef3565b6102a261046e366004614950565b610f04565b6103147f000000000000000000000000000000000000000000000000000000000000000081565b6104ad6104a8366004614950565b610f15565b6040516102cd91906149b4565b6102a26104c8366004614a08565b610f93565b6104e06104db366004614950565b611483565b6040516102cd9190614aa6565b6102a26114f5565b6103af61050336600461499b565b6001805460ff9092161b9081161490565b6102a2610522366004614b28565b6115bd565b6001546102c3565b6103147f000000000000000000000000000000000000000000000000000000000000000081565b61031461056436600461479d565b611654565b6103147f000000000000000000000000000000000000000000000000000000000000000081565b6102a261059e366004614b5a565b61167c565b6102a261173b565b6102c36105b9366004614c0a565b61174e565b6102e96105cc36600461479d565b611797565b5f54610314906201000090046001600160a01b031681565b6103146117a1565b6096546105fe9060ff1681565b60405160ff90911681526020016102cd565b6102a261061e366004614d99565b6117b9565b6103147f000000000000000000000000000000000000000000000000000000000000000081565b6102c37f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102a261067f366004614e9b565b611adc565b610697610692366004614f44565b611c4e565b6040516102cd9190614fe9565b6102c37f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102a26106d9366004615031565b611cfb565b609c546102c3565b6102a26106f4366004615117565b611d60565b6102a26107073660046152ba565b611d73565b61077a61071a36600461499b565b60408051606080820183525f808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102cd565b6102a26107bc366004614950565b612066565b6102a26107cf36600461479d565b6120dc565b6108026107e2366004614950565b6001600160a01b03165f9081526099602052604090206001015460ff1690565b6040516102cd9190615390565b6001546002906004908116036108405760405162461bcd60e51b81526004016108379061539e565b60405180910390fd5b5f5b82811015610912575f84848381811061085d5761085d6153d5565b90506020020160208101906108729190614950565b6001600160a01b0381165f9081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108bc576108bc614a72565b60028111156108cd576108cd614a72565b90525080519091505f6108df82612235565b90505f6108f4826001600160c01b031661229c565b9050610901858583612365565b505060019093019250610842915050565b50505050565b5f83815260986020526040812080548291908490811061093a5761093a6153d5565b5f91825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a335760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610837565b602081015163ffffffff161580610a595750806020015163ffffffff168463ffffffff16105b610b005760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610837565b60400151949350505050565b6001335f9081526099602052604090206001015460ff166002811115610b3457610b34614a72565b14610ba75760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610837565b335f90815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610be7908490615417565b60405180910390a250565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c669190615429565b6001600160a01b0316336001600160a01b031614610c965760405162461bcd60e51b815260040161083790615444565b610c9f8161244e565b50565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610cec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d10919061548e565b610d2c5760405162461bcd60e51b8152600401610837906154ad565b60015481811614610da55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610837565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610be7565b604080516060810182525f80825260208201819052918101919091525f838152609860205260409020805483908110610e1757610e176153d5565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610ecf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e649190615429565b610efb612551565b610c9f816125b0565b610f0c612551565b610c9f81612619565b604080518082019091525f8082526020820152610e64610f8e7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610f739291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612682565b6126ce565b600154600290600490811603610fbb5760405162461bcd60e51b81526004016108379061539e565b5f61100184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060965460ff1691506127589050565b90508483146110715760405162461bcd60e51b815260206004820152604360248201525f516020615b205f395f51905f5260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610837565b5f5b8381101561147a575f85858381811061108e5761108e6153d5565b919091013560f81c91503690505f8989858181106110ae576110ae6153d5565b90506020028101906110c091906154f5565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa15801561112a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114e919061553a565b63ffffffff1681146111e95760405162461bcd60e51b815260206004820152606560248201525f516020615b205f395f51905f5260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610837565b5f805b82811015611420575f848483818110611207576112076153d5565b905060200201602081019061121c9190614950565b6001600160a01b0381165f9081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561126657611266614a72565b600281111561127757611277614a72565b90525080519091505f61128982612235565b905060016001600160c01b03821660ff8b161c81161461130c5760405162461bcd60e51b8152602060048201526044602482018190525f516020615b205f395f51905f52908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610837565b856001600160a01b0316846001600160a01b0316116113b65760405162461bcd60e51b815260206004820152606760248201525f516020615b205f395f51905f5260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610837565b5061141383838f8f8d908e60016113cd9190615569565b926113da9392919061557c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061236592505050565b50909250506001016111ec565b5060ff84165f818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806001019050611073565b50505050505050565b604080518082019091525f80825260208201526001600160a01b0382165f908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156114db576114db614a72565b60028111156114ec576114ec614a72565b90525092915050565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561153f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611563919061548e565b61157f5760405162461bcd60e51b8152600401610837906154ad565b5f19600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6115c5612551565b609654829060ff908116908216106116455760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610837565b61164f83836127e8565b505050565b609c8181548110611663575f80fd5b5f918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146116fc5760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610837565b61164f8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061289492505050565b611743612551565b61174c5f612cee565b565b5f61178d7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610f73969594939291906155a3565b9695505050505050565b5f610e6482612235565b5f6117b46064546001600160a01b031690565b905090565b600180545f91908116036117df5760405162461bcd60e51b81526004016108379061539e565b8389146118625760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610837565b5f61186d3388612d3f565b90506118cc33828888808060200260200160405190810160405280939291908181526020015f905b828210156118c1576118b260408302860136819003810190615628565b81526020019060010190611895565b505050505087612e6d565b5f61191133838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c9250612ff8915050565b90505f5b8b811015611acd575f60975f8f8f85818110611933576119336153d5565b919091013560f81c82525060208082019290925260409081015f208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b9091049093169181019190915284518051919350908490811061199f5761199f6153d5565b602002602001015163ffffffff161115611ac457611a408e8e848181106119c8576119c86153d5565b9050013560f81c60f81b60f81c846040015184815181106119eb576119eb6153d5565b60200260200101513386602001518681518110611a0a57611a0a6153d5565b60200260200101518d8d88818110611a2457611a246153d5565b905060400201803603810190611a3a9190615628565b866134f5565b611ac4898984818110611a5557611a556153d5565b9050604002016020016020810190611a6d9190614950565b8f8f8590866001611a7e9190615569565b92611a8b9392919061557c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061289492505050565b50600101611915565b50505050505050505050505050565b600180545f9190811603611b025760405162461bcd60e51b81526004016108379061539e565b5f611b0d3385612d3f565b90505f611b5433838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c9250612ff8915050565b5190505f5b88811015611c42575f8a8a83818110611b7457611b746153d5565b919091013560f81c5f81815260976020526040902054855191935063ffffffff169150849084908110611ba957611ba96153d5565b602002602001015163ffffffff161115611c395760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610837565b50600101611b59565b50505050505050505050565b60605f82516001600160401b03811115611c6a57611c6a6147fa565b604051908082528060200260200182016040528015611c93578160200160208202803683370190505b5090505f5b8351811015611cf357611cc485858381518110611cb757611cb76153d5565b60200260200101516137c0565b828281518110611cd657611cd66153d5565b63ffffffff90921660209283029190910190910152600101611c98565b509392505050565b60018054600290811603611d215760405162461bcd60e51b81526004016108379061539e565b61164f3384848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061289492505050565b611d68612551565b61164f8383836138ee565b5f54610100900460ff1615808015611d9157505f54600160ff909116105b80611daa5750303b158015611daa57505f5460ff166001145b611e0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610837565b5f805460ff191660011790558015611e2e575f805461ff0019166101001790555b82518451148015611e40575081518351145b611eaa5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610837565b611eb389612cee565b611ebd8686613af6565b611ec6886125b0565b611ecf87612619565b609c8054600181810183555f8381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120155761200d858281518110611fcc57611fcc6153d5565b6020026020010151858381518110611fe657611fe66153d5565b6020026020010151858481518110612000576120006153d5565b60200260200101516138ee565b600101611fae565b50801561205b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61206e612551565b6001600160a01b0381166120d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610837565b610c9f81612cee565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121509190615429565b6001600160a01b0316336001600160a01b0316146121805760405162461bcd60e51b815260040161083790615444565b6001541981196001541916146121fe5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610837565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610be7565b5f8181526098602052604081205480820361225257505f92915050565b5f83815260986020526040902061226a600183615642565b8154811061227a5761227a6153d5565b5f91825260209091200154600160401b90046001600160c01b03169392505050565b60605f5f6122a984613be5565b61ffff166001600160401b038111156122c4576122c46147fa565b6040519080825280601f01601f1916602001820160405280156122ee576020820181803683370190505b5090505f805b825182108015612305575061010081105b1561235b576001811b93508584161561234b578060f81b83838151811061232e5761232e6153d5565b60200101906001600160f81b03191690815f1a9053508160010191505b61235481615655565b90506122f4565b5090949350505050565b60018260200151600281111561237d5761237d614a72565b1461238757505050565b81516040516333567f7f60e11b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906123db9088908690889060040161566d565b6020604051808303815f875af11580156123f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061241b919061569c565b90506001600160c01b038116156124475761244785612442836001600160c01b031661229c565b612894565b5050505050565b6001600160a01b0381166124dc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610837565b5f54604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a15f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361255a6117a1565b6001600160a01b03161461174c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610837565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610e6461268e613c0f565b8360405161190160f01b602082015260228101839052604281018290525f9060620160405160208183030381529060405280519060200120905092915050565b604080518082019091525f80825260208201525f80806126fb5f516020615b605f395f51905f52866156d6565b90505b61270781613d35565b90935091505f516020615b605f395f51905f52828309830361273f576040805180820190915290815260208101919091529392505050565b5f516020615b605f395f51905f526001820890506126fe565b5f5f61276384613db1565b9050808360ff166001901b116127e15760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610837565b9392505050565b60ff82165f81815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382165f908152609960205260409020805460018083015460ff1660028111156128c7576128c7614a72565b146129465760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610837565b6096545f9061295990859060ff16612758565b90505f61296583612235565b90506001600160c01b0382166129e35760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610837565b6129fa6001600160c01b0383811690831681161490565b612a925760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610837565b6001600160c01b0382811619821616612aab8482613f34565b6001600160c01b038116612b745760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015f604051808303815f87803b158015612b28575f5ffd5b505af1158015612b3a573d5f5f3e3d5ffd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e4905f90a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612bc2908a908a906004016156e9565b5f604051808303815f87803b158015612bd9575f5ffd5b505af1158015612beb573d5f5f3e3d5ffd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612c3d9087908a9060040161570c565b5f604051808303815f87803b158015612c54575f5ffd5b505af1158015612c66573d5f5f3e3d5ffd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612cb89087908a9060040161570c565b5f604051808303815f87803b158015612ccf575f5ffd5b505af1158015612ce1573d5f5f3e3d5ffd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612da7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dcb9190615724565b90505f819003610e64577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612e0f87610f15565b6040518463ffffffff1660e01b8152600401612e2d9392919061573b565b6020604051808303815f875af1158015612e49573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127e19190615724565b6020808201515f908152609a909152604090205460ff1615612f125760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610837565b4281604001511015612fa75760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610837565b602080820180515f908152609a909252604091829020805460ff19166001179055609d54905191830151610912926001600160a01b0390921691612ff1918891889188919061174e565b83516140f0565b61301c60405180606001604052806060815260200160608152602001606081525090565b5f61306286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060965460ff1691506127589050565b90505f61306e88612235565b90506001600160c01b0382166130ec5760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610837565b8082166001600160c01b0316156131a25760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610837565b6001600160c01b03818116908316176131bb8982613f34565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516131eb9190615417565b60405180910390a260016001600160a01b038b165f9081526099602052604090206001015460ff16600281111561322457613224614a72565b14613336576040805180820182528a8152600160208083018281526001600160a01b038f165f908152609990925293902082518155925183820180549394939192909160ff19169083600281111561327e5761327e614a72565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906132d3908d9089906004016157ab565b5f604051808303815f87803b1580156132ea575f5ffd5b505af11580156132fc573d5f5f3e3d5ffd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe905f90a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb2795290613386908d908c908c9060040161581d565b5f604051808303815f87803b15801561339d575f5ffd5b505af11580156133af573d5f5f3e3d5ffd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613405908d908d908d908d90600401615841565b5f604051808303815f875af1158015613420573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261344791908101906158cc565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906134a4908c908c908c9060040161592f565b5f604051808303815f875af11580156134bf573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134e69190810190615948565b84525050509695505050505050565b6020808301516001600160a01b038082165f81815260999094526040909320549192908716036135725760405162461bcd60e51b815260206004820152603560248201525f516020615b405f395f51905f5260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610837565b8760ff16845f015160ff16146135ed5760405162461bcd60e51b815260206004820152604760248201525f516020615b405f395f51905f5260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610837565b604051635401ed2760e01b81526004810182905260ff891660248201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa15801561365b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061367f91906159d7565b905061368b81856142a8565b6001600160601b0316866001600160601b03161161371d5760405162461bcd60e51b815260206004820152605660248201525f516020615b405f395f51905f5260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610837565b61372788856142cb565b6001600160601b0316816001600160601b03161061205b5760405162461bcd60e51b815260206004820152605c60248201525f516020615b405f395f51905f5260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610837565b5f81815260986020526040812054815b818110156138445760016137e48284615642565b6137ee9190615642565b92508463ffffffff1660985f8681526020019081526020015f208463ffffffff168154811061381f5761381f6153d5565b5f9182526020909120015463ffffffff161161383c575050610e64565b6001016137d0565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610837565b60965460ff1660c081106139625760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610837565b61396d8160016159f2565b6096805460ff191660ff929092169190911790558061398c81866127e8565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a77906139df90849088908890600401615a0b565b5f604051808303815f87803b1580156139f6575f5ffd5b505af1158015613a08573d5f5f3e3d5ffd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f291506024015f604051808303815f87803b158015613a6d575f5ffd5b505af1158015613a7f573d5f5f3e3d5ffd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f291506024015f604051808303815f87803b158015613ae4575f5ffd5b505af115801561205b573d5f5f3e3d5ffd5b5f546201000090046001600160a01b0316158015613b1c57506001600160a01b03821615155b613b9e5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610837565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613be18261244e565b5050565b5f805b8215610e6457613bf9600184615642565b9092169180613c0781615a89565b915050613be8565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613c6757507f000000000000000000000000000000000000000000000000000000000000000046145b15613c9157507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b5f80805f516020615b605f395f51905f5260035f516020615b605f395f51905f52865f516020615b605f395f51905f52888909090890505f613da5827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f516020615b605f395f51905f526142e4565b91959194509092505050565b5f61010082511115613e395760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610837565b81515f03613e4857505f919050565b5f5f835f81518110613e5c57613e5c6153d5565b0160200151600160f89190911c81901b92505b8451811015613f2b57848181518110613e8a57613e8a6153d5565b0160200151600160f89190911c1b9150828211613f1f5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610837565b91811791600101613e6f565b50909392505050565b5f8281526098602052604081205490819003613fda575f838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b5f838152609860205260408120613ff2600184615642565b81548110614002576140026153d5565b5f918252602090912001805490915063ffffffff4381169116036140435780546001600160401b0316600160401b6001600160c01b03851602178155610912565b805463ffffffff438116600160201b81810267ffffffff00000000199094169390931784555f87815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561420857604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90614130908690869060040161570c565b602060405180830381865afa15801561414b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061416f9190615aa9565b6001600160e01b0319161461164f5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610837565b826001600160a01b031661421c838361438c565b6001600160a01b03161461164f5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610837565b60208101515f90612710906142c19061ffff1685615ad0565b6127e19190615af2565b60408101515f90612710906142c19061ffff1685615ad0565b5f5f6142ee6146e3565b6142f6614701565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061433357fe5b50826143815760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610837565b505195945050505050565b5f5f5f61439985856143a6565b91509150611cf381614411565b5f5f82516041036143da576020830151604084015160608501515f1a6143ce878285856145c6565b9450945050505061440a565b825160400361440357602083015160408401516143f88683836146ab565b93509350505061440a565b505f905060025b9250929050565b5f81600481111561442457614424614a72565b0361442c5750565b600181600481111561444057614440614a72565b0361448d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610837565b60028160048111156144a1576144a1614a72565b036144ee5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610837565b600381600481111561450257614502614a72565b0361455a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610837565b600481600481111561456e5761456e614a72565b03610c9f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610837565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156145fb57505f905060036146a2565b8460ff16601b1415801561461357508460ff16601c14155b1561462357505f905060046146a2565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614674573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661469c575f600192509250506146a2565b91505f90505b94509492505050565b5f806001600160ff1b038316816146c760ff86901c601b615569565b90506146d5878288856145c6565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5f5f83601f84011261472f575f5ffd5b5081356001600160401b03811115614745575f5ffd5b6020830191508360208260051b850101111561440a575f5ffd5b5f5f60208385031215614770575f5ffd5b82356001600160401b03811115614785575f5ffd5b6147918582860161471f565b90969095509350505050565b5f602082840312156147ad575f5ffd5b5035919050565b63ffffffff81168114610c9f575f5ffd5b5f5f5f606084860312156147d7575f5ffd5b8335925060208401356147e9816147b4565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614830576148306147fa565b60405290565b604080519081016001600160401b0381118282101715614830576148306147fa565b604051601f8201601f191681016001600160401b0381118282101715614880576148806147fa565b604052919050565b5f5f6001600160401b038411156148a1576148a16147fa565b50601f8301601f19166020016148b681614858565b9150508281528383830111156148ca575f5ffd5b828260208301375f602084830101529392505050565b5f602082840312156148f0575f5ffd5b81356001600160401b03811115614905575f5ffd5b8201601f81018413614915575f5ffd5b61492484823560208401614888565b949350505050565b6001600160a01b0381168114610c9f575f5ffd5b803561494b8161492c565b919050565b5f60208284031215614960575f5ffd5b81356127e18161492c565b5f5f6040838503121561497c575f5ffd5b50508035926020909101359150565b803560ff8116811461494b575f5ffd5b5f602082840312156149ab575f5ffd5b6127e18261498b565b815181526020808301519082015260408101610e64565b5f5f83601f8401126149db575f5ffd5b5081356001600160401b038111156149f1575f5ffd5b60208301915083602082850101111561440a575f5ffd5b5f5f5f5f60408587031215614a1b575f5ffd5b84356001600160401b03811115614a30575f5ffd5b614a3c8782880161471f565b90955093505060208501356001600160401b03811115614a5a575f5ffd5b614a66878288016149cb565b95989497509550505050565b634e487b7160e01b5f52602160045260245ffd5b60038110614aa257634e487b7160e01b5f52602160045260245ffd5b9052565b815181526020808301516040830191614ac190840182614a86565b5092915050565b803561ffff8116811461494b575f5ffd5b5f60608284031215614ae9575f5ffd5b614af161480e565b90508135614afe816147b4565b8152614b0c60208301614ac8565b6020820152614b1d60408301614ac8565b604082015292915050565b5f5f60808385031215614b39575f5ffd5b614b428361498b565b9150614b518460208501614ad9565b90509250929050565b5f5f5f60408486031215614b6c575f5ffd5b8335614b778161492c565b925060208401356001600160401b03811115614b91575f5ffd5b614b9d868287016149cb565b9497909650939450505050565b5f6001600160401b03821115614bc257614bc26147fa565b5060051b60200190565b5f60408284031215614bdc575f5ffd5b614be4614836565b9050614bef8261498b565b81526020820135614bff8161492c565b602082015292915050565b5f5f5f5f5f60a08688031215614c1e575f5ffd5b8535614c298161492c565b94506020860135935060408601356001600160401b03811115614c4a575f5ffd5b8601601f81018813614c5a575f5ffd5b8035614c6d614c6882614baa565b614858565b8082825260208201915060208360061b85010192508a831115614c8e575f5ffd5b6020840193505b82841015614cba57614ca78b85614bcc565b8252602082019150604084019350614c95565b979a9699509697606081013597506080013595945050505050565b5f6101008284031215614ce6575f5ffd5b50919050565b5f5f83601f840112614cfc575f5ffd5b5081356001600160401b03811115614d12575f5ffd5b6020830191508360208260061b850101111561440a575f5ffd5b5f60608284031215614d3c575f5ffd5b614d4461480e565b905081356001600160401b03811115614d5b575f5ffd5b8201601f81018413614d6b575f5ffd5b614d7a84823560208401614888565b8252506020828101359082015260409182013591810191909152919050565b5f5f5f5f5f5f5f5f5f6101a08a8c031215614db2575f5ffd5b89356001600160401b03811115614dc7575f5ffd5b614dd38c828d016149cb565b909a5098505060208a01356001600160401b03811115614df1575f5ffd5b614dfd8c828d016149cb565b9098509650614e1190508b60408c01614cd5565b94506101408a01356001600160401b03811115614e2c575f5ffd5b614e388c828d01614cec565b9095509350506101608a01356001600160401b03811115614e57575f5ffd5b614e638c828d01614d2c565b9250506101808a01356001600160401b03811115614e7f575f5ffd5b614e8b8c828d01614d2c565b9150509295985092959850929598565b5f5f5f5f5f5f6101608789031215614eb1575f5ffd5b86356001600160401b03811115614ec6575f5ffd5b614ed289828a016149cb565b90975095505060208701356001600160401b03811115614ef0575f5ffd5b614efc89828a016149cb565b9095509350614f1090508860408901614cd5565b91506101408701356001600160401b03811115614f2b575f5ffd5b614f3789828a01614d2c565b9150509295509295509295565b5f5f60408385031215614f55575f5ffd5b8235614f60816147b4565b915060208301356001600160401b03811115614f7a575f5ffd5b8301601f81018513614f8a575f5ffd5b8035614f98614c6882614baa565b8082825260208201915060208360051b850101925087831115614fb9575f5ffd5b6020840193505b82841015614fdb578335825260209384019390910190614fc0565b809450505050509250929050565b602080825282518282018190525f918401906040840190835b8181101561502657835163ffffffff16835260209384019390920191600101615002565b509095945050505050565b5f5f60208385031215615042575f5ffd5b82356001600160401b03811115615057575f5ffd5b614791858286016149cb565b6001600160601b0381168114610c9f575f5ffd5b5f82601f830112615086575f5ffd5b8135615094614c6882614baa565b8082825260208201915060208360061b8601019250858311156150b5575f5ffd5b602085015b8381101561510d57604081880312156150d1575f5ffd5b6150d9614836565b81356150e48161492c565b815260208201356150f481615063565b60208281019190915290845292909201916040016150ba565b5095945050505050565b5f5f5f60a08486031215615129575f5ffd5b6151338585614ad9565b9250606084013561514381615063565b915060808401356001600160401b0381111561515d575f5ffd5b61516986828701615077565b9150509250925092565b5f82601f830112615182575f5ffd5b8135615190614c6882614baa565b808282526020820191506020606084028601019250858311156151b1575f5ffd5b602085015b8381101561510d576151c88782614ad9565b83526020909201916060016151b6565b5f82601f8301126151e7575f5ffd5b81356151f5614c6882614baa565b8082825260208201915060208360051b860101925085831115615216575f5ffd5b602085015b8381101561510d57803561522e81615063565b83526020928301920161521b565b5f82601f83011261524b575f5ffd5b8135615259614c6882614baa565b8082825260208201915060208360051b86010192508583111561527a575f5ffd5b602085015b8381101561510d5780356001600160401b0381111561529c575f5ffd5b6152ab886020838a0101615077565b8452506020928301920161527f565b5f5f5f5f5f5f5f5f610100898b0312156152d2575f5ffd5b6152db89614940565b97506152e960208a01614940565b96506152f760408a01614940565b955061530560608a01614940565b94506080890135935060a08901356001600160401b03811115615326575f5ffd5b6153328b828c01615173565b93505060c08901356001600160401b0381111561534d575f5ffd5b6153598b828c016151d8565b92505060e08901356001600160401b03811115615374575f5ffd5b6153808b828c0161523c565b9150509295985092959890939650565b60208101610e648284614a86565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6127e160208301846153e9565b5f60208284031215615439575f5ffd5b81516127e18161492c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b5f6020828403121561549e575f5ffd5b815180151581146127e1575f5ffd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b5f5f8335601e1984360301811261550a575f5ffd5b8301803591506001600160401b03821115615523575f5ffd5b6020019150600581901b360382131561440a575f5ffd5b5f6020828403121561554a575f5ffd5b81516127e1816147b4565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e6457610e64615555565b5f5f8585111561558a575f5ffd5b83861115615596575f5ffd5b5050820193919092039150565b5f60c0820188835260018060a01b038816602084015286604084015260c0606084015280865180835260e0850191506020880192505f5b81811015615610578351805160ff1684526020908101516001600160a01b031681850152909301926040909201916001016155da565b50506080840195909552505060a00152949350505050565b5f60408284031215615638575f5ffd5b6127e18383614bcc565b81810381811115610e6457610e64615555565b5f6001820161566657615666615555565b5060010190565b60018060a01b0384168152826020820152606060408201525f61569360608301846153e9565b95945050505050565b5f602082840312156156ac575f5ffd5b81516001600160c01b03811681146127e1575f5ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826156e4576156e46156c2565b500690565b6001600160a01b03831681526040602082018190525f90614924908301846153e9565b828152604060208201525f61492460408301846153e9565b5f60208284031215615734575f5ffd5b5051919050565b6001600160a01b03841681526101608101615763602083018580358252602090810135910152565b61577d606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614924565b60018060a01b0383168152604060208201525f8251606060408401526157d460a08401826153e9565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190525f9061569390830184866157f5565b60018060a01b0385168152836020820152606060408201525f61178d6060830184866157f5565b5f82601f830112615877575f5ffd5b8151615885614c6882614baa565b8082825260208201915060208360051b8601019250858311156158a6575f5ffd5b602085015b8381101561510d5780516158be81615063565b8352602092830192016158ab565b5f5f604083850312156158dd575f5ffd5b82516001600160401b038111156158f2575f5ffd5b6158fe85828601615868565b92505060208301516001600160401b03811115615919575f5ffd5b61592585828601615868565b9150509250929050565b838152604060208201525f6156936040830184866157f5565b5f60208284031215615958575f5ffd5b81516001600160401b0381111561596d575f5ffd5b8201601f8101841361597d575f5ffd5b805161598b614c6882614baa565b8082825260208201915060208360051b8501019250868311156159ac575f5ffd5b6020840193505b8284101561178d5783516159c6816147b4565b8252602093840193909101906159b3565b5f602082840312156159e7575f5ffd5b81516127e181615063565b60ff8181168382160190811115610e6457610e64615555565b5f6060820160ff861683526001600160601b0385166020840152606060408401528084518083526080850191506020860192505f5b81811015615a7c57835180516001600160a01b031684526020908101516001600160601b03168185015290930192604090920191600101615a40565b5090979650505050505050565b5f61ffff821661ffff8103615aa057615aa0615555565b60010192915050565b5f60208284031215615ab9575f5ffd5b81516001600160e01b0319811681146127e1575f5ffd5b6001600160601b038181168382160290811690818114614ac157614ac1615555565b5f6001600160601b03831680615b0a57615b0a6156c2565b806001600160601b038416049150509291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212201a144f0030bdfb9ee5b344ad192130e6ac3cc038f2faadae7c522733ba94169264736f6c634300081b0033 + /// ``` + #[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\x15a\0\x10W__\xFD[P`@Qa_N8\x03\x80a_N\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02BV[`@\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@\x0Fa\x01-\x81\x84\x84`@\x80Q` \x81\x01\x85\x90R\x90\x81\x01\x83\x90R``\x81\x01\x82\x90RF`\x80\x82\x01R0`\xA0\x82\x01R_\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\xA0Ra\x01ea\x01nV[PPPPa\x02\x9EV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x01\xD9W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x02)W_\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\x14a\x02?W__\xFD[PV[____`\x80\x85\x87\x03\x12\x15a\x02UW__\xFD[\x84Qa\x02`\x81a\x02+V[` \x86\x01Q\x90\x94Pa\x02q\x81a\x02+V[`@\x86\x01Q\x90\x93Pa\x02\x82\x81a\x02+V[``\x86\x01Q\x90\x92Pa\x02\x93\x81a\x02+V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qa[\xB5a\x03\x99_9_\x81\x81a\x06(\x01R\x81\x81a\x10\xDD\x01R\x81\x81a\x1F\x83\x01R\x81\x81a,\x7F\x01R\x81\x81a4l\x01Ra:\"\x01R_\x81\x81a\x05n\x01R\x81\x81a\x1F\x0E\x01R\x81\x81a#\xA2\x01R\x81\x81a,\x04\x01R\x81\x81a3\xC8\x01R\x81\x81a6\x0E\x01Ra9\xA6\x01R_\x81\x81a\x054\x01R\x81\x81a\x0E\x82\x01R\x81\x81a\x1FL\x01R\x81\x81a+\x8B\x01R\x81\x81a-`\x01R\x81\x81a-\xD7\x01R\x81\x81a3M\x01Ra:\x99\x01R_\x81\x81a\x04x\x01R\x81\x81a*\xE7\x01Ra2\x9B\x01R_a<\x98\x01R_a<\xE7\x01R_a<\xC2\x01R_a<\x1B\x01R_a\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xA2a\x06\x7F6`\x04aN\x9BV[a\x1A\xDCV[a\x06\x97a\x06\x926`\x04aODV[a\x1CNV[`@Qa\x02\xCD\x91\x90aO\xE9V[a\x02\xC3\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xA2a\x06\xD96`\x04aP1V[a\x1C\xFBV[`\x9CTa\x02\xC3V[a\x02\xA2a\x06\xF46`\x04aQ\x17V[a\x1D`V[a\x02\xA2a\x07\x076`\x04aR\xBAV[a\x1DsV[a\x07za\x07\x1A6`\x04aI\x9BV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xCDV[a\x02\xA2a\x07\xBC6`\x04aIPV[a fV[a\x02\xA2a\x07\xCF6`\x04aG\x9DV[a \xDCV[a\x08\x02a\x07\xE26`\x04aIPV[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xCD\x91\x90aS\x90V[`\x01T`\x02\x90`\x04\x90\x81\x16\x03a\x08@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\t\x12W_\x84\x84\x83\x81\x81\x10a\x08]Wa\x08]aS\xD5V[\x90P` \x02\x01` \x81\x01\x90a\x08r\x91\x90aIPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\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\x08\xBCWa\x08\xBCaJrV[`\x02\x81\x11\x15a\x08\xCDWa\x08\xCDaJrV[\x90RP\x80Q\x90\x91P_a\x08\xDF\x82a\"5V[\x90P_a\x08\xF4\x82`\x01`\x01`\xC0\x1B\x03\x16a\"\x9CV[\x90Pa\t\x01\x85\x85\x83a#eV[PP`\x01\x90\x93\x01\x92Pa\x08B\x91PPV[PPPPV[_\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\t:Wa\t:aS\xD5V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\n3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x087V[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nYWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x087V[`@\x01Q\x94\x93PPPPV[`\x013_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0B4Wa\x0B4aJrV[\x14a\x0B\xA7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x087V[3_\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0B\xE7\x90\x84\x90aT\x17V[`@Q\x80\x91\x03\x90\xA2PV[_`\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\x0CBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cf\x91\x90aT)V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aTDV[a\x0C\x9F\x81a$NV[PV[_T`@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\x0C\xECW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x10\x91\x90aT\x8EV[a\r,W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aT\xADV[`\x01T\x81\x81\x16\x14a\r\xA5W`@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\x087V[`\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\x0B\xE7V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_\x83\x81R`\x98` R`@\x90 \x80T\x83\x90\x81\x10a\x0E\x17Wa\x0E\x17aS\xD5V[_\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_\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\x0E\xCFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Ed\x91\x90aT)V[a\x0E\xFBa%QV[a\x0C\x9F\x81a%\xB0V[a\x0F\x0Ca%QV[a\x0C\x9F\x81a&\x19V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Eda\x0F\x8E\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\x0Fs\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&\x82V[a&\xCEV[`\x01T`\x02\x90`\x04\x90\x81\x16\x03a\x0F\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[_a\x10\x01\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_\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa'X\x90PV[\x90P\x84\x83\x14a\x10qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a[ _9_Q\x90_R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\x087V[_[\x83\x81\x10\x15a\x14zW_\x85\x85\x83\x81\x81\x10a\x10\x8EWa\x10\x8EaS\xD5V[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P_\x89\x89\x85\x81\x81\x10a\x10\xAEWa\x10\xAEaS\xD5V[\x90P` \x02\x81\x01\x90a\x10\xC0\x91\x90aT\xF5V[`@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*W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11N\x91\x90aU:V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x11\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R_Q` a[ _9_Q\x90_R`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\x087V[_\x80[\x82\x81\x10\x15a\x14 W_\x84\x84\x83\x81\x81\x10a\x12\x07Wa\x12\x07aS\xD5V[\x90P` \x02\x01` \x81\x01\x90a\x12\x1C\x91\x90aIPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\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\x12fWa\x12faJrV[`\x02\x81\x11\x15a\x12wWa\x12waJrV[\x90RP\x80Q\x90\x91P_a\x12\x89\x82a\"5V[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13\x0CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a[ _9_Q\x90_R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x087V[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R_Q` a[ _9_Q\x90_R`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\x087V[Pa\x14\x13\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x13\xCD\x91\x90aUiV[\x92a\x13\xDA\x93\x92\x91\x90aU|V[\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_\x92\x01\x91\x90\x91RPa#e\x92PPPV[P\x90\x92PP`\x01\x01a\x11\xECV[P`\xFF\x84\x16_\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\x80`\x01\x01\x90Pa\x10sV[PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x14\xDBWa\x14\xDBaJrV[`\x02\x81\x11\x15a\x14\xECWa\x14\xECaJrV[\x90RP\x92\x91PPV[_T`@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\x15?W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15c\x91\x90aT\x8EV[a\x15\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aT\xADV[_\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\x15\xC5a%QV[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16EW`@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\x087V[a\x16O\x83\x83a'\xE8V[PPPV[`\x9C\x81\x81T\x81\x10a\x16cW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x16\xFCW`@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\x087V[a\x16O\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[a\x17Ca%QV[a\x17L_a,\xEEV[V[_a\x17\x8D\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\x0Fs\x96\x95\x94\x93\x92\x91\x90aU\xA3V[\x96\x95PPPPPPV[_a\x0Ed\x82a\"5V[_a\x17\xB4`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T_\x91\x90\x81\x16\x03a\x17\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[\x83\x89\x14a\x18bW`@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\x087V[_a\x18m3\x88a-?V[\x90Pa\x18\xCC3\x82\x88\x88\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x18\xC1Wa\x18\xB2`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aV(V[\x81R` \x01\x90`\x01\x01\x90a\x18\x95V[PPPPP\x87a.mV[_a\x19\x113\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_\x92\x01\x91\x90\x91RP\x8C\x92Pa/\xF8\x91PPV[\x90P_[\x8B\x81\x10\x15a\x1A\xCDW_`\x97_\x8F\x8F\x85\x81\x81\x10a\x193Wa\x193aS\xD5V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \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\x19\x9FWa\x19\x9FaS\xD5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1A\xC4Wa\x1A@\x8E\x8E\x84\x81\x81\x10a\x19\xC8Wa\x19\xC8aS\xD5V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x19\xEBWa\x19\xEBaS\xD5V[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1A\nWa\x1A\naS\xD5V[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A$Wa\x1A$aS\xD5V[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A:\x91\x90aV(V[\x86a4\xF5V[a\x1A\xC4\x89\x89\x84\x81\x81\x10a\x1AUWa\x1AUaS\xD5V[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1Am\x91\x90aIPV[\x8F\x8F\x85\x90\x86`\x01a\x1A~\x91\x90aUiV[\x92a\x1A\x8B\x93\x92\x91\x90aU|V[\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[P`\x01\x01a\x19\x15V[PPPPPPPPPPPPPV[`\x01\x80T_\x91\x90\x81\x16\x03a\x1B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[_a\x1B\r3\x85a-?V[\x90P_a\x1BT3\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_\x92\x01\x91\x90\x91RP\x8C\x92Pa/\xF8\x91PPV[Q\x90P_[\x88\x81\x10\x15a\x1CBW_\x8A\x8A\x83\x81\x81\x10a\x1BtWa\x1BtaS\xD5V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x97` R`@\x90 T\x85Q\x91\x93Pc\xFF\xFF\xFF\xFF\x16\x91P\x84\x90\x84\x90\x81\x10a\x1B\xA9Wa\x1B\xA9aS\xD5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C9W`@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\x087V[P`\x01\x01a\x1BYV[PPPPPPPPPPV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1CjWa\x1CjaG\xFAV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1C\x93W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1C\xF3Wa\x1C\xC4\x85\x85\x83\x81Q\x81\x10a\x1C\xB7Wa\x1C\xB7aS\xD5V[` \x02` \x01\x01Qa7\xC0V[\x82\x82\x81Q\x81\x10a\x1C\xD6Wa\x1C\xD6aS\xD5V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C\x98V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x03a\x1D!W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[a\x16O3\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[a\x1Dha%QV[a\x16O\x83\x83\x83a8\xEEV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1D\x91WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1D\xAAWP0;\x15\x80\x15a\x1D\xAAWP_T`\xFF\x16`\x01\x14[a\x1E\rW`@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\x087V[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E.W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E@WP\x81Q\x83Q\x14[a\x1E\xAAW`@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\x087V[a\x1E\xB3\x89a,\xEEV[a\x1E\xBD\x86\x86a:\xF6V[a\x1E\xC6\x88a%\xB0V[a\x1E\xCF\x87a&\x19V[`\x9C\x80T`\x01\x81\x81\x01\x83U_\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 \x15Wa \r\x85\x82\x81Q\x81\x10a\x1F\xCCWa\x1F\xCCaS\xD5V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a\x1F\xE6Wa\x1F\xE6aS\xD5V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \0Wa \0aS\xD5V[` \x02` \x01\x01Qa8\xEEV[`\x01\x01a\x1F\xAEV[P\x80\x15a [W_\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 na%QV[`\x01`\x01`\xA0\x1B\x03\x81\x16a \xD3W`@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\x087V[a\x0C\x9F\x81a,\xEEV[_`\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!,W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!P\x91\x90aT)V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a!\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aTDV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a!\xFEW`@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\x087V[`\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\x0B\xE7V[_\x81\x81R`\x98` R`@\x81 T\x80\x82\x03a\"RWP_\x92\x91PPV[_\x83\x81R`\x98` R`@\x90 a\"j`\x01\x83aVBV[\x81T\x81\x10a\"zWa\"zaS\xD5V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[``__a\"\xA9\x84a;\xE5V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xC4Wa\"\xC4aG\xFAV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"\xEEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a#\x05WPa\x01\0\x81\x10[\x15a#[W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#KW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#.Wa#.aS\xD5V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a#T\x81aVUV[\x90Pa\"\xF4V[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a#}Wa#}aJrV[\x14a#\x87WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\x1B\x81R_\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\x90cf\xAC\xFE\xFE\x90a#\xDB\x90\x88\x90\x86\x90\x88\x90`\x04\x01aVmV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a#\xF7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\x1B\x91\x90aV\x9CV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$GWa$G\x85a$B\x83`\x01`\x01`\xC0\x1B\x03\x16a\"\x9CV[a(\x94V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a$\xDCW`@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\x087V[_T`@\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_\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[3a%Za\x17\xA1V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17LW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x087V[`\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[_a\x0Eda&\x8Ea<\x0FV[\x83`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x83\x90R`B\x81\x01\x82\x90R_\x90`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_\x80\x80a&\xFB_Q` a[`_9_Q\x90_R\x86aV\xD6V[\x90P[a'\x07\x81a=5V[\x90\x93P\x91P_Q` a[`_9_Q\x90_R\x82\x83\t\x83\x03a'?W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a[`_9_Q\x90_R`\x01\x82\x08\x90Pa&\xFEV[__a'c\x84a=\xB1V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a'\xE1W`@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\x087V[\x93\x92PPPV[`\xFF\x82\x16_\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[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a(\xC7Wa(\xC7aJrV[\x14a)FW`@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\x087V[`\x96T_\x90a)Y\x90\x85\x90`\xFF\x16a'XV[\x90P_a)e\x83a\"5V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a)\xE3W`@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\x087V[a)\xFA`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a*\x92W`@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\x087V[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a*\xAB\x84\x82a?4V[`\x01`\x01`\xC0\x1B\x03\x81\x16a+tW`\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a+(W__\xFD[PZ\xF1\x15\x80\x15a+:W=__>=_\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_\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+\xC2\x90\x8A\x90\x8A\x90`\x04\x01aV\xE9V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a+\xD9W__\xFD[PZ\xF1\x15\x80\x15a+\xEBW=__>=_\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,=\x90\x87\x90\x8A\x90`\x04\x01aW\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a,TW__\xFD[PZ\xF1\x15\x80\x15a,fW=__>=_\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,\xB8\x90\x87\x90\x8A\x90`\x04\x01aW\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a,\xCFW__\xFD[PZ\xF1\x15\x80\x15a,\xE1W=__>=_\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_\x90\xA3PPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R_\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-\xA7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a-\xCB\x91\x90aW$V[\x90P_\x81\x90\x03a\x0EdW\x7F\0\0\0\0\0\0\0\0\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\x84a.\x0F\x87a\x0F\x15V[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a.-\x93\x92\x91\x90aW;V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a.IW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\xE1\x91\x90aW$V[` \x80\x82\x01Q_\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\x12W`@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\x087V[B\x81`@\x01Q\x10\x15a/\xA7W`@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\x087V[` \x80\x82\x01\x80Q_\x90\x81R`\x9A\x90\x92R`@\x91\x82\x90 \x80T`\xFF\x19\x16`\x01\x17\x90U`\x9DT\x90Q\x91\x83\x01Qa\t\x12\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a/\xF1\x91\x88\x91\x88\x91\x88\x91\x90a\x17NV[\x83Qa@\xF0V[a0\x1C`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_a0b\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_\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa'X\x90PV[\x90P_a0n\x88a\"5V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a0\xECW`@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\x087V[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a1\xA2W`@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\x087V[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a1\xBB\x89\x82a?4V[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa1\xEB\x91\x90aT\x17V[`@Q\x80\x91\x03\x90\xA2`\x01`\x01`\x01`\xA0\x1B\x03\x8B\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a2$Wa2$aJrV[\x14a36W`@\x80Q\x80\x82\x01\x82R\x8A\x81R`\x01` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x8F\x16_\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\x15a2~Wa2~aJrV[\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}\x90a2\xD3\x90\x8D\x90\x89\x90`\x04\x01aW\xABV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a2\xEAW__\xFD[PZ\xF1\x15\x80\x15a2\xFCW=__>=_\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_\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\x90a3\x86\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aX\x1DV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a3\x9DW__\xFD[PZ\xF1\x15\x80\x15a3\xAFW=__>=_\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\x91Pa4\x05\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aXAV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4 W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4G\x91\x90\x81\x01\x90aX\xCCV[`@\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\x90a4\xA4\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01aY/V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4\xBFW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4\xE6\x91\x90\x81\x01\x90aYHV[\x84RPPP\x96\x95PPPPPPV[` \x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x80\x82\x16_\x81\x81R`\x99\x90\x94R`@\x90\x93 T\x91\x92\x90\x87\x16\x03a5rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x087V[\x87`\xFF\x16\x84_\x01Q`\xFF\x16\x14a5\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01R\x7Frn: quorumNumber not the same as`d\x82\x01Rf\x08\x1C\xDAY\xDB\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x087V[`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`\xFF\x89\x16`$\x82\x01R_\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\x15a6[W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a6\x7F\x91\x90aY\xD7V[\x90Pa6\x8B\x81\x85aB\xA8V[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a7\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R_Q` a[@_9_Q\x90_R`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\x087V[a7'\x88\x85aB\xCBV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a [W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01R\x7Frn: cannot kick operator with mo`d\x82\x01R\x7Fre than kickBIPsOfTotalStake\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x087V[_\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a8DW`\x01a7\xE4\x82\x84aVBV[a7\xEE\x91\x90aVBV[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98_\x86\x81R` \x01\x90\x81R` \x01_ \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a8\x1FWa8\x1FaS\xD5V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a8=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a:mW__\xFD[PZ\xF1\x15\x80\x15a:\x7FW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a:\xE4W__\xFD[PZ\xF1\x15\x80\x15a [W=__>=_\xFD[_Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a;\x1CWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a;\x9EW`@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\x087V[`\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;\xE1\x82a$NV[PPV[_\x80[\x82\x15a\x0EdWa;\xF9`\x01\x84aVBV[\x90\x92\x16\x91\x80a<\x07\x81aZ\x89V[\x91PPa;\xE8V[_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\x16\x14\x80\x15a9W`@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\x087V[\x81Q_\x03a>HWP_\x91\x90PV[__\x83_\x81Q\x81\x10a>\\Wa>\\aS\xD5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a?+W\x84\x81\x81Q\x81\x10a>\x8AWa>\x8AaS\xD5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a?\x1FW`@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\x087V[\x91\x81\x17\x91`\x01\x01a>oV[P\x90\x93\x92PPPV[_\x82\x81R`\x98` R`@\x81 T\x90\x81\x90\x03a?\xDAW_\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[_\x83\x81R`\x98` R`@\x81 a?\xF2`\x01\x84aVBV[\x81T\x81\x10a@\x02Wa@\x02aS\xD5V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a@CW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t\x12V[\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_\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;\x15aB\x08W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA0\x90\x86\x90\x86\x90`\x04\x01aW\x0CV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aAKW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aAo\x91\x90aZ\xA9V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16OW`@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\x087V[\x82`\x01`\x01`\xA0\x1B\x03\x16aB\x1C\x83\x83aC\x8CV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16OW`@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\x087V[` \x81\x01Q_\x90a'\x10\x90aB\xC1\x90a\xFF\xFF\x16\x85aZ\xD0V[a'\xE1\x91\x90aZ\xF2V[`@\x81\x01Q_\x90a'\x10\x90aB\xC1\x90a\xFF\xFF\x16\x85aZ\xD0V[__aB\xEEaF\xE3V[aB\xF6aG\x01V[` \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\x80aC3W\xFE[P\x82aC\x81W`@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\x087V[PQ\x95\x94PPPPPV[___aC\x99\x85\x85aC\xA6V[\x91P\x91Pa\x1C\xF3\x81aD\x11V[__\x82Q`A\x03aC\xDAW` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1AaC\xCE\x87\x82\x85\x85aE\xC6V[\x94P\x94PPPPaD\nV[\x82Q`@\x03aD\x03W` \x83\x01Q`@\x84\x01QaC\xF8\x86\x83\x83aF\xABV[\x93P\x93PPPaD\nV[P_\x90P`\x02[\x92P\x92\x90PV[_\x81`\x04\x81\x11\x15aD$WaD$aJrV[\x03aD,WPV[`\x01\x81`\x04\x81\x11\x15aD@WaD@aJrV[\x03aD\x8DW`@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\x087V[`\x02\x81`\x04\x81\x11\x15aD\xA1WaD\xA1aJrV[\x03aD\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x087V[`\x03\x81`\x04\x81\x11\x15aE\x02WaE\x02aJrV[\x03aEZW`@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\x087V[`\x04\x81`\x04\x81\x11\x15aEnWaEnaJrV[\x03a\x0C\x9FW`@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\x087V[_\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\x15aE\xFBWP_\x90P`\x03aF\xA2V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aF\x13WP\x84`\xFF\x16`\x1C\x14\x15[\x15aF#WP_\x90P`\x04aF\xA2V[`@\x80Q_\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\x15aFtW=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aF\x9CW_`\x01\x92P\x92PPaF\xA2V[\x91P_\x90P[\x94P\x94\x92PPPV[_\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aF\xC7`\xFF\x86\x90\x1C`\x1BaUiV[\x90PaF\xD5\x87\x82\x88\x85aE\xC6V[\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[__\x83`\x1F\x84\x01\x12aG/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aGEW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aD\nW__\xFD[__` \x83\x85\x03\x12\x15aGpW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aG\x85W__\xFD[aG\x91\x85\x82\x86\x01aG\x1FV[\x90\x96\x90\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15aG\xADW__\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x9FW__\xFD[___``\x84\x86\x03\x12\x15aG\xD7W__\xFD[\x835\x92P` \x84\x015aG\xE9\x81aG\xB4V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH0WaH0aG\xFAV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH0WaH0aG\xFAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH\x80WaH\x80aG\xFAV[`@R\x91\x90PV[__`\x01`\x01`@\x1B\x03\x84\x11\x15aH\xA1WaH\xA1aG\xFAV[P`\x1F\x83\x01`\x1F\x19\x16` \x01aH\xB6\x81aHXV[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15aH\xCAW__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aH\xF0W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x05W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13aI\x15W__\xFD[aI$\x84\x825` \x84\x01aH\x88V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\x9FW__\xFD[\x805aIK\x81aI,V[\x91\x90PV[_` \x82\x84\x03\x12\x15aI`W__\xFD[\x815a'\xE1\x81aI,V[__`@\x83\x85\x03\x12\x15aI|W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aIKW__\xFD[_` \x82\x84\x03\x12\x15aI\xABW__\xFD[a'\xE1\x82aI\x8BV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0EdV[__\x83`\x1F\x84\x01\x12aI\xDBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xF1W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aD\nW__\xFD[____`@\x85\x87\x03\x12\x15aJ\x1BW__\xFD[\x845`\x01`\x01`@\x1B\x03\x81\x11\x15aJ0W__\xFD[aJ<\x87\x82\x88\x01aG\x1FV[\x90\x95P\x93PP` \x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aJZW__\xFD[aJf\x87\x82\x88\x01aI\xCBV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10aJ\xA2WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aJ\xC1\x90\x84\x01\x82aJ\x86V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aIKW__\xFD[_``\x82\x84\x03\x12\x15aJ\xE9W__\xFD[aJ\xF1aH\x0EV[\x90P\x815aJ\xFE\x81aG\xB4V[\x81RaK\x0C` \x83\x01aJ\xC8V[` \x82\x01RaK\x1D`@\x83\x01aJ\xC8V[`@\x82\x01R\x92\x91PPV[__`\x80\x83\x85\x03\x12\x15aK9W__\xFD[aKB\x83aI\x8BV[\x91PaKQ\x84` \x85\x01aJ\xD9V[\x90P\x92P\x92\x90PV[___`@\x84\x86\x03\x12\x15aKlW__\xFD[\x835aKw\x81aI,V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aK\x91W__\xFD[aK\x9D\x86\x82\x87\x01aI\xCBV[\x94\x97\x90\x96P\x93\x94PPPPV[_`\x01`\x01`@\x1B\x03\x82\x11\x15aK\xC2WaK\xC2aG\xFAV[P`\x05\x1B` \x01\x90V[_`@\x82\x84\x03\x12\x15aK\xDCW__\xFD[aK\xE4aH6V[\x90PaK\xEF\x82aI\x8BV[\x81R` \x82\x015aK\xFF\x81aI,V[` \x82\x01R\x92\x91PPV[_____`\xA0\x86\x88\x03\x12\x15aL\x1EW__\xFD[\x855aL)\x81aI,V[\x94P` \x86\x015\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aLJW__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aLZW__\xFD[\x805aLmaLh\x82aK\xAAV[aHXV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x85\x01\x01\x92P\x8A\x83\x11\x15aL\x8EW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aL\xBAWaL\xA7\x8B\x85aK\xCCV[\x82R` \x82\x01\x91P`@\x84\x01\x93PaL\x95V[\x97\x9A\x96\x99P\x96\x97``\x81\x015\x97P`\x80\x015\x95\x94PPPPPV[_a\x01\0\x82\x84\x03\x12\x15aL\xE6W__\xFD[P\x91\x90PV[__\x83`\x1F\x84\x01\x12aL\xFCW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x12W__\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aD\nW__\xFD[_``\x82\x84\x03\x12\x15aM\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xA2a\x06\x7F6`\x04aN\x9BV[a\x1A\xDCV[a\x06\x97a\x06\x926`\x04aODV[a\x1CNV[`@Qa\x02\xCD\x91\x90aO\xE9V[a\x02\xC3\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xA2a\x06\xD96`\x04aP1V[a\x1C\xFBV[`\x9CTa\x02\xC3V[a\x02\xA2a\x06\xF46`\x04aQ\x17V[a\x1D`V[a\x02\xA2a\x07\x076`\x04aR\xBAV[a\x1DsV[a\x07za\x07\x1A6`\x04aI\x9BV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xCDV[a\x02\xA2a\x07\xBC6`\x04aIPV[a fV[a\x02\xA2a\x07\xCF6`\x04aG\x9DV[a \xDCV[a\x08\x02a\x07\xE26`\x04aIPV[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xCD\x91\x90aS\x90V[`\x01T`\x02\x90`\x04\x90\x81\x16\x03a\x08@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\t\x12W_\x84\x84\x83\x81\x81\x10a\x08]Wa\x08]aS\xD5V[\x90P` \x02\x01` \x81\x01\x90a\x08r\x91\x90aIPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\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\x08\xBCWa\x08\xBCaJrV[`\x02\x81\x11\x15a\x08\xCDWa\x08\xCDaJrV[\x90RP\x80Q\x90\x91P_a\x08\xDF\x82a\"5V[\x90P_a\x08\xF4\x82`\x01`\x01`\xC0\x1B\x03\x16a\"\x9CV[\x90Pa\t\x01\x85\x85\x83a#eV[PP`\x01\x90\x93\x01\x92Pa\x08B\x91PPV[PPPPV[_\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\t:Wa\t:aS\xD5V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\n3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x087V[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nYWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x087V[`@\x01Q\x94\x93PPPPV[`\x013_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0B4Wa\x0B4aJrV[\x14a\x0B\xA7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x087V[3_\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0B\xE7\x90\x84\x90aT\x17V[`@Q\x80\x91\x03\x90\xA2PV[_`\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\x0CBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cf\x91\x90aT)V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aTDV[a\x0C\x9F\x81a$NV[PV[_T`@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\x0C\xECW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x10\x91\x90aT\x8EV[a\r,W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aT\xADV[`\x01T\x81\x81\x16\x14a\r\xA5W`@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\x087V[`\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\x0B\xE7V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_\x83\x81R`\x98` R`@\x90 \x80T\x83\x90\x81\x10a\x0E\x17Wa\x0E\x17aS\xD5V[_\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_\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\x0E\xCFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Ed\x91\x90aT)V[a\x0E\xFBa%QV[a\x0C\x9F\x81a%\xB0V[a\x0F\x0Ca%QV[a\x0C\x9F\x81a&\x19V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Eda\x0F\x8E\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\x0Fs\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&\x82V[a&\xCEV[`\x01T`\x02\x90`\x04\x90\x81\x16\x03a\x0F\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[_a\x10\x01\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_\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa'X\x90PV[\x90P\x84\x83\x14a\x10qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a[ _9_Q\x90_R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\x087V[_[\x83\x81\x10\x15a\x14zW_\x85\x85\x83\x81\x81\x10a\x10\x8EWa\x10\x8EaS\xD5V[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P_\x89\x89\x85\x81\x81\x10a\x10\xAEWa\x10\xAEaS\xD5V[\x90P` \x02\x81\x01\x90a\x10\xC0\x91\x90aT\xF5V[`@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*W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11N\x91\x90aU:V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x11\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R_Q` a[ _9_Q\x90_R`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\x087V[_\x80[\x82\x81\x10\x15a\x14 W_\x84\x84\x83\x81\x81\x10a\x12\x07Wa\x12\x07aS\xD5V[\x90P` \x02\x01` \x81\x01\x90a\x12\x1C\x91\x90aIPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\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\x12fWa\x12faJrV[`\x02\x81\x11\x15a\x12wWa\x12waJrV[\x90RP\x80Q\x90\x91P_a\x12\x89\x82a\"5V[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13\x0CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R_Q` a[ _9_Q\x90_R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x087V[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R_Q` a[ _9_Q\x90_R`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\x087V[Pa\x14\x13\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x13\xCD\x91\x90aUiV[\x92a\x13\xDA\x93\x92\x91\x90aU|V[\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_\x92\x01\x91\x90\x91RPa#e\x92PPPV[P\x90\x92PP`\x01\x01a\x11\xECV[P`\xFF\x84\x16_\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\x80`\x01\x01\x90Pa\x10sV[PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\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\x14\xDBWa\x14\xDBaJrV[`\x02\x81\x11\x15a\x14\xECWa\x14\xECaJrV[\x90RP\x92\x91PPV[_T`@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\x15?W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15c\x91\x90aT\x8EV[a\x15\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aT\xADV[_\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\x15\xC5a%QV[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16EW`@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\x087V[a\x16O\x83\x83a'\xE8V[PPPV[`\x9C\x81\x81T\x81\x10a\x16cW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x16\xFCW`@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\x087V[a\x16O\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[a\x17Ca%QV[a\x17L_a,\xEEV[V[_a\x17\x8D\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\x0Fs\x96\x95\x94\x93\x92\x91\x90aU\xA3V[\x96\x95PPPPPPV[_a\x0Ed\x82a\"5V[_a\x17\xB4`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T_\x91\x90\x81\x16\x03a\x17\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[\x83\x89\x14a\x18bW`@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\x087V[_a\x18m3\x88a-?V[\x90Pa\x18\xCC3\x82\x88\x88\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x18\xC1Wa\x18\xB2`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aV(V[\x81R` \x01\x90`\x01\x01\x90a\x18\x95V[PPPPP\x87a.mV[_a\x19\x113\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_\x92\x01\x91\x90\x91RP\x8C\x92Pa/\xF8\x91PPV[\x90P_[\x8B\x81\x10\x15a\x1A\xCDW_`\x97_\x8F\x8F\x85\x81\x81\x10a\x193Wa\x193aS\xD5V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \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\x19\x9FWa\x19\x9FaS\xD5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1A\xC4Wa\x1A@\x8E\x8E\x84\x81\x81\x10a\x19\xC8Wa\x19\xC8aS\xD5V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x19\xEBWa\x19\xEBaS\xD5V[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1A\nWa\x1A\naS\xD5V[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A$Wa\x1A$aS\xD5V[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A:\x91\x90aV(V[\x86a4\xF5V[a\x1A\xC4\x89\x89\x84\x81\x81\x10a\x1AUWa\x1AUaS\xD5V[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1Am\x91\x90aIPV[\x8F\x8F\x85\x90\x86`\x01a\x1A~\x91\x90aUiV[\x92a\x1A\x8B\x93\x92\x91\x90aU|V[\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[P`\x01\x01a\x19\x15V[PPPPPPPPPPPPPV[`\x01\x80T_\x91\x90\x81\x16\x03a\x1B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[_a\x1B\r3\x85a-?V[\x90P_a\x1BT3\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_\x92\x01\x91\x90\x91RP\x8C\x92Pa/\xF8\x91PPV[Q\x90P_[\x88\x81\x10\x15a\x1CBW_\x8A\x8A\x83\x81\x81\x10a\x1BtWa\x1BtaS\xD5V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x97` R`@\x90 T\x85Q\x91\x93Pc\xFF\xFF\xFF\xFF\x16\x91P\x84\x90\x84\x90\x81\x10a\x1B\xA9Wa\x1B\xA9aS\xD5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C9W`@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\x087V[P`\x01\x01a\x1BYV[PPPPPPPPPPV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1CjWa\x1CjaG\xFAV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1C\x93W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1C\xF3Wa\x1C\xC4\x85\x85\x83\x81Q\x81\x10a\x1C\xB7Wa\x1C\xB7aS\xD5V[` \x02` \x01\x01Qa7\xC0V[\x82\x82\x81Q\x81\x10a\x1C\xD6Wa\x1C\xD6aS\xD5V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C\x98V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x03a\x1D!W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aS\x9EV[a\x16O3\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_\x92\x01\x91\x90\x91RPa(\x94\x92PPPV[a\x1Dha%QV[a\x16O\x83\x83\x83a8\xEEV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1D\x91WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1D\xAAWP0;\x15\x80\x15a\x1D\xAAWP_T`\xFF\x16`\x01\x14[a\x1E\rW`@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\x087V[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E.W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E@WP\x81Q\x83Q\x14[a\x1E\xAAW`@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\x087V[a\x1E\xB3\x89a,\xEEV[a\x1E\xBD\x86\x86a:\xF6V[a\x1E\xC6\x88a%\xB0V[a\x1E\xCF\x87a&\x19V[`\x9C\x80T`\x01\x81\x81\x01\x83U_\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 \x15Wa \r\x85\x82\x81Q\x81\x10a\x1F\xCCWa\x1F\xCCaS\xD5V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a\x1F\xE6Wa\x1F\xE6aS\xD5V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \0Wa \0aS\xD5V[` \x02` \x01\x01Qa8\xEEV[`\x01\x01a\x1F\xAEV[P\x80\x15a [W_\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 na%QV[`\x01`\x01`\xA0\x1B\x03\x81\x16a \xD3W`@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\x087V[a\x0C\x9F\x81a,\xEEV[_`\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!,W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!P\x91\x90aT)V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a!\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x087\x90aTDV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a!\xFEW`@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\x087V[`\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\x0B\xE7V[_\x81\x81R`\x98` R`@\x81 T\x80\x82\x03a\"RWP_\x92\x91PPV[_\x83\x81R`\x98` R`@\x90 a\"j`\x01\x83aVBV[\x81T\x81\x10a\"zWa\"zaS\xD5V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[``__a\"\xA9\x84a;\xE5V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xC4Wa\"\xC4aG\xFAV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"\xEEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a#\x05WPa\x01\0\x81\x10[\x15a#[W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#KW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#.Wa#.aS\xD5V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a#T\x81aVUV[\x90Pa\"\xF4V[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a#}Wa#}aJrV[\x14a#\x87WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\x1B\x81R_\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\x90cf\xAC\xFE\xFE\x90a#\xDB\x90\x88\x90\x86\x90\x88\x90`\x04\x01aVmV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a#\xF7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\x1B\x91\x90aV\x9CV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$GWa$G\x85a$B\x83`\x01`\x01`\xC0\x1B\x03\x16a\"\x9CV[a(\x94V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a$\xDCW`@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\x087V[_T`@\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_\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[3a%Za\x17\xA1V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17LW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x087V[`\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[_a\x0Eda&\x8Ea<\x0FV[\x83`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x83\x90R`B\x81\x01\x82\x90R_\x90`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_\x80\x80a&\xFB_Q` a[`_9_Q\x90_R\x86aV\xD6V[\x90P[a'\x07\x81a=5V[\x90\x93P\x91P_Q` a[`_9_Q\x90_R\x82\x83\t\x83\x03a'?W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a[`_9_Q\x90_R`\x01\x82\x08\x90Pa&\xFEV[__a'c\x84a=\xB1V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a'\xE1W`@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\x087V[\x93\x92PPPV[`\xFF\x82\x16_\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[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a(\xC7Wa(\xC7aJrV[\x14a)FW`@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\x087V[`\x96T_\x90a)Y\x90\x85\x90`\xFF\x16a'XV[\x90P_a)e\x83a\"5V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a)\xE3W`@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\x087V[a)\xFA`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a*\x92W`@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\x087V[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a*\xAB\x84\x82a?4V[`\x01`\x01`\xC0\x1B\x03\x81\x16a+tW`\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a+(W__\xFD[PZ\xF1\x15\x80\x15a+:W=__>=_\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_\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+\xC2\x90\x8A\x90\x8A\x90`\x04\x01aV\xE9V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a+\xD9W__\xFD[PZ\xF1\x15\x80\x15a+\xEBW=__>=_\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,=\x90\x87\x90\x8A\x90`\x04\x01aW\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a,TW__\xFD[PZ\xF1\x15\x80\x15a,fW=__>=_\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,\xB8\x90\x87\x90\x8A\x90`\x04\x01aW\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a,\xCFW__\xFD[PZ\xF1\x15\x80\x15a,\xE1W=__>=_\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_\x90\xA3PPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R_\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-\xA7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a-\xCB\x91\x90aW$V[\x90P_\x81\x90\x03a\x0EdW\x7F\0\0\0\0\0\0\0\0\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\x84a.\x0F\x87a\x0F\x15V[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a.-\x93\x92\x91\x90aW;V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a.IW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\xE1\x91\x90aW$V[` \x80\x82\x01Q_\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\x12W`@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\x087V[B\x81`@\x01Q\x10\x15a/\xA7W`@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\x087V[` \x80\x82\x01\x80Q_\x90\x81R`\x9A\x90\x92R`@\x91\x82\x90 \x80T`\xFF\x19\x16`\x01\x17\x90U`\x9DT\x90Q\x91\x83\x01Qa\t\x12\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a/\xF1\x91\x88\x91\x88\x91\x88\x91\x90a\x17NV[\x83Qa@\xF0V[a0\x1C`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_a0b\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_\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa'X\x90PV[\x90P_a0n\x88a\"5V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a0\xECW`@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\x087V[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a1\xA2W`@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\x087V[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a1\xBB\x89\x82a?4V[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa1\xEB\x91\x90aT\x17V[`@Q\x80\x91\x03\x90\xA2`\x01`\x01`\x01`\xA0\x1B\x03\x8B\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a2$Wa2$aJrV[\x14a36W`@\x80Q\x80\x82\x01\x82R\x8A\x81R`\x01` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x8F\x16_\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\x15a2~Wa2~aJrV[\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}\x90a2\xD3\x90\x8D\x90\x89\x90`\x04\x01aW\xABV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a2\xEAW__\xFD[PZ\xF1\x15\x80\x15a2\xFCW=__>=_\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_\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\x90a3\x86\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aX\x1DV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a3\x9DW__\xFD[PZ\xF1\x15\x80\x15a3\xAFW=__>=_\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\x91Pa4\x05\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aXAV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4 W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4G\x91\x90\x81\x01\x90aX\xCCV[`@\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\x90a4\xA4\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01aY/V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4\xBFW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4\xE6\x91\x90\x81\x01\x90aYHV[\x84RPPP\x96\x95PPPPPPV[` \x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x80\x82\x16_\x81\x81R`\x99\x90\x94R`@\x90\x93 T\x91\x92\x90\x87\x16\x03a5rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x087V[\x87`\xFF\x16\x84_\x01Q`\xFF\x16\x14a5\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01R\x7Frn: quorumNumber not the same as`d\x82\x01Rf\x08\x1C\xDAY\xDB\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x087V[`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`\xFF\x89\x16`$\x82\x01R_\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\x15a6[W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a6\x7F\x91\x90aY\xD7V[\x90Pa6\x8B\x81\x85aB\xA8V[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a7\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R_Q` a[@_9_Q\x90_R`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\x087V[a7'\x88\x85aB\xCBV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a [W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R_Q` a[@_9_Q\x90_R`D\x82\x01R\x7Frn: cannot kick operator with mo`d\x82\x01R\x7Fre than kickBIPsOfTotalStake\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x087V[_\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a8DW`\x01a7\xE4\x82\x84aVBV[a7\xEE\x91\x90aVBV[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98_\x86\x81R` \x01\x90\x81R` \x01_ \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a8\x1FWa8\x1FaS\xD5V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a8=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a:mW__\xFD[PZ\xF1\x15\x80\x15a:\x7FW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a:\xE4W__\xFD[PZ\xF1\x15\x80\x15a [W=__>=_\xFD[_Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a;\x1CWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a;\x9EW`@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\x087V[`\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;\xE1\x82a$NV[PPV[_\x80[\x82\x15a\x0EdWa;\xF9`\x01\x84aVBV[\x90\x92\x16\x91\x80a<\x07\x81aZ\x89V[\x91PPa;\xE8V[_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\x16\x14\x80\x15a9W`@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\x087V[\x81Q_\x03a>HWP_\x91\x90PV[__\x83_\x81Q\x81\x10a>\\Wa>\\aS\xD5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a?+W\x84\x81\x81Q\x81\x10a>\x8AWa>\x8AaS\xD5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a?\x1FW`@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\x087V[\x91\x81\x17\x91`\x01\x01a>oV[P\x90\x93\x92PPPV[_\x82\x81R`\x98` R`@\x81 T\x90\x81\x90\x03a?\xDAW_\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[_\x83\x81R`\x98` R`@\x81 a?\xF2`\x01\x84aVBV[\x81T\x81\x10a@\x02Wa@\x02aS\xD5V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a@CW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t\x12V[\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_\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;\x15aB\x08W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA0\x90\x86\x90\x86\x90`\x04\x01aW\x0CV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aAKW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aAo\x91\x90aZ\xA9V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16OW`@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\x087V[\x82`\x01`\x01`\xA0\x1B\x03\x16aB\x1C\x83\x83aC\x8CV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16OW`@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\x087V[` \x81\x01Q_\x90a'\x10\x90aB\xC1\x90a\xFF\xFF\x16\x85aZ\xD0V[a'\xE1\x91\x90aZ\xF2V[`@\x81\x01Q_\x90a'\x10\x90aB\xC1\x90a\xFF\xFF\x16\x85aZ\xD0V[__aB\xEEaF\xE3V[aB\xF6aG\x01V[` \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\x80aC3W\xFE[P\x82aC\x81W`@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\x087V[PQ\x95\x94PPPPPV[___aC\x99\x85\x85aC\xA6V[\x91P\x91Pa\x1C\xF3\x81aD\x11V[__\x82Q`A\x03aC\xDAW` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1AaC\xCE\x87\x82\x85\x85aE\xC6V[\x94P\x94PPPPaD\nV[\x82Q`@\x03aD\x03W` \x83\x01Q`@\x84\x01QaC\xF8\x86\x83\x83aF\xABV[\x93P\x93PPPaD\nV[P_\x90P`\x02[\x92P\x92\x90PV[_\x81`\x04\x81\x11\x15aD$WaD$aJrV[\x03aD,WPV[`\x01\x81`\x04\x81\x11\x15aD@WaD@aJrV[\x03aD\x8DW`@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\x087V[`\x02\x81`\x04\x81\x11\x15aD\xA1WaD\xA1aJrV[\x03aD\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x087V[`\x03\x81`\x04\x81\x11\x15aE\x02WaE\x02aJrV[\x03aEZW`@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\x087V[`\x04\x81`\x04\x81\x11\x15aEnWaEnaJrV[\x03a\x0C\x9FW`@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\x087V[_\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\x15aE\xFBWP_\x90P`\x03aF\xA2V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aF\x13WP\x84`\xFF\x16`\x1C\x14\x15[\x15aF#WP_\x90P`\x04aF\xA2V[`@\x80Q_\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\x15aFtW=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aF\x9CW_`\x01\x92P\x92PPaF\xA2V[\x91P_\x90P[\x94P\x94\x92PPPV[_\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aF\xC7`\xFF\x86\x90\x1C`\x1BaUiV[\x90PaF\xD5\x87\x82\x88\x85aE\xC6V[\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[__\x83`\x1F\x84\x01\x12aG/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aGEW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aD\nW__\xFD[__` \x83\x85\x03\x12\x15aGpW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aG\x85W__\xFD[aG\x91\x85\x82\x86\x01aG\x1FV[\x90\x96\x90\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15aG\xADW__\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x9FW__\xFD[___``\x84\x86\x03\x12\x15aG\xD7W__\xFD[\x835\x92P` \x84\x015aG\xE9\x81aG\xB4V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH0WaH0aG\xFAV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH0WaH0aG\xFAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aH\x80WaH\x80aG\xFAV[`@R\x91\x90PV[__`\x01`\x01`@\x1B\x03\x84\x11\x15aH\xA1WaH\xA1aG\xFAV[P`\x1F\x83\x01`\x1F\x19\x16` \x01aH\xB6\x81aHXV[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15aH\xCAW__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aH\xF0W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x05W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13aI\x15W__\xFD[aI$\x84\x825` \x84\x01aH\x88V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\x9FW__\xFD[\x805aIK\x81aI,V[\x91\x90PV[_` \x82\x84\x03\x12\x15aI`W__\xFD[\x815a'\xE1\x81aI,V[__`@\x83\x85\x03\x12\x15aI|W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aIKW__\xFD[_` \x82\x84\x03\x12\x15aI\xABW__\xFD[a'\xE1\x82aI\x8BV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0EdV[__\x83`\x1F\x84\x01\x12aI\xDBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xF1W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aD\nW__\xFD[____`@\x85\x87\x03\x12\x15aJ\x1BW__\xFD[\x845`\x01`\x01`@\x1B\x03\x81\x11\x15aJ0W__\xFD[aJ<\x87\x82\x88\x01aG\x1FV[\x90\x95P\x93PP` \x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aJZW__\xFD[aJf\x87\x82\x88\x01aI\xCBV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10aJ\xA2WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aJ\xC1\x90\x84\x01\x82aJ\x86V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aIKW__\xFD[_``\x82\x84\x03\x12\x15aJ\xE9W__\xFD[aJ\xF1aH\x0EV[\x90P\x815aJ\xFE\x81aG\xB4V[\x81RaK\x0C` \x83\x01aJ\xC8V[` \x82\x01RaK\x1D`@\x83\x01aJ\xC8V[`@\x82\x01R\x92\x91PPV[__`\x80\x83\x85\x03\x12\x15aK9W__\xFD[aKB\x83aI\x8BV[\x91PaKQ\x84` \x85\x01aJ\xD9V[\x90P\x92P\x92\x90PV[___`@\x84\x86\x03\x12\x15aKlW__\xFD[\x835aKw\x81aI,V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aK\x91W__\xFD[aK\x9D\x86\x82\x87\x01aI\xCBV[\x94\x97\x90\x96P\x93\x94PPPPV[_`\x01`\x01`@\x1B\x03\x82\x11\x15aK\xC2WaK\xC2aG\xFAV[P`\x05\x1B` \x01\x90V[_`@\x82\x84\x03\x12\x15aK\xDCW__\xFD[aK\xE4aH6V[\x90PaK\xEF\x82aI\x8BV[\x81R` \x82\x015aK\xFF\x81aI,V[` \x82\x01R\x92\x91PPV[_____`\xA0\x86\x88\x03\x12\x15aL\x1EW__\xFD[\x855aL)\x81aI,V[\x94P` \x86\x015\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aLJW__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aLZW__\xFD[\x805aLmaLh\x82aK\xAAV[aHXV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x85\x01\x01\x92P\x8A\x83\x11\x15aL\x8EW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aL\xBAWaL\xA7\x8B\x85aK\xCCV[\x82R` \x82\x01\x91P`@\x84\x01\x93PaL\x95V[\x97\x9A\x96\x99P\x96\x97``\x81\x015\x97P`\x80\x015\x95\x94PPPPPV[_a\x01\0\x82\x84\x03\x12\x15aL\xE6W__\xFD[P\x91\x90PV[__\x83`\x1F\x84\x01\x12aL\xFCW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x12W__\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aD\nW__\xFD[_``\x82\x84\x03\x12\x15aM = ( + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PUBKEY_REGISTRATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateOperatorChurnApprovalDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `ejector()` and selector `0x28f61b31`. + ```solidity + function ejector() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectorCall {} + ///Container type for the return parameters of the [`ejector()`](ejectorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromIdReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSetParamsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorStatusReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isChurnApproverSaltUsedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `numRegistries()` and selector `0xd72d8dd6`. + ```solidity + function numRegistries() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesCall {} + ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountCall {} + ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorWithChurnReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registriesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerCall {} + ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setChurnApproverReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setEjector(address)` and selector `0x2cdd1e86`. + ```solidity + function setEjector(address _ejector) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setEjectorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setOperatorSetParamsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateSocketReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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), + 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), + 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), + 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], + [16u8, 214u8, 122u8, 47u8], + [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], + [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 = 47usize; + #[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::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::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::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 setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + 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 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::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::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::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::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::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::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 [`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 [`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 [`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/deploy/registrycoordinatorstorage.rs similarity index 93% rename from crates/utils/src/registrycoordinatorstorage.rs rename to crates/utils/src/deploy/registrycoordinatorstorage.rs index 7dcf3316..7779527f 100644 --- a/crates/utils/src/registrycoordinatorstorage.rs +++ b/crates/utils/src/deploy/registrycoordinatorstorage.rs @@ -6,20 +6,30 @@ library BN254 { struct G1Point { uint256 X; uint256 Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -331,11 +341,16 @@ library IRegistryCoordinator { struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IRegistryCoordinator { use super::*; use alloy::sol_types as alloy_sol_types; - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorStatus(u8); const _: () = { @@ -447,13 +462,18 @@ pub mod IRegistryCoordinator { /**```solidity struct OperatorInfo { bytes32 operatorId; OperatorStatus status; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -632,14 +652,19 @@ pub mod IRegistryCoordinator { /**```solidity struct OperatorSetParam { uint32 maxOperatorCount; uint16 kickBIPsOfOperatorStake; uint16 kickBIPsOfTotalStake; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorSetParam { pub maxOperatorCount: u32, pub kickBIPsOfOperatorStake: u16, pub kickBIPsOfTotalStake: u16, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -854,14 +879,19 @@ pub mod IRegistryCoordinator { /**```solidity struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1247,7 +1277,6 @@ interface RegistryCoordinatorStorage { 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); @@ -1261,7 +1290,6 @@ interface RegistryCoordinatorStorage { 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); @@ -1346,19 +1374,6 @@ interface RegistryCoordinatorStorage { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "ejectionCooldown", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "ejector", @@ -1660,25 +1675,6 @@ interface RegistryCoordinatorStorage { ], "stateMutability": "view" }, - { - "type": "function", - "name": "lastEjectionTimestamp", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "numRegistries", @@ -1946,7 +1942,12 @@ interface RegistryCoordinatorStorage { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod RegistryCoordinatorStorage { use super::*; use alloy::sol_types as alloy_sol_types; @@ -1974,7 +1975,12 @@ pub mod RegistryCoordinatorStorage { ```solidity event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ChurnApproverUpdated { #[allow(missing_docs)] @@ -1982,7 +1988,12 @@ pub mod RegistryCoordinatorStorage { #[allow(missing_docs)] pub newChurnApprover: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2073,7 +2084,12 @@ pub mod RegistryCoordinatorStorage { ```solidity event EjectorUpdated(address prevEjector, address newEjector); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct EjectorUpdated { #[allow(missing_docs)] @@ -2081,7 +2097,12 @@ pub mod RegistryCoordinatorStorage { #[allow(missing_docs)] pub newEjector: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2172,7 +2193,12 @@ pub mod RegistryCoordinatorStorage { ```solidity event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDeregistered { #[allow(missing_docs)] @@ -2180,7 +2206,12 @@ pub mod RegistryCoordinatorStorage { #[allow(missing_docs)] pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2275,7 +2306,12 @@ pub mod RegistryCoordinatorStorage { ```solidity event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -2283,7 +2319,12 @@ pub mod RegistryCoordinatorStorage { #[allow(missing_docs)] pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2378,7 +2419,12 @@ pub mod RegistryCoordinatorStorage { ```solidity event OperatorSetParamsUpdated(uint8 indexed quorumNumber, IRegistryCoordinator.OperatorSetParam operatorSetParams); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSetParamsUpdated { #[allow(missing_docs)] @@ -2387,7 +2433,12 @@ pub mod RegistryCoordinatorStorage { pub operatorSetParams: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2479,7 +2530,12 @@ pub mod RegistryCoordinatorStorage { ```solidity event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumBlockNumberUpdated { #[allow(missing_docs)] @@ -2487,7 +2543,12 @@ pub mod RegistryCoordinatorStorage { #[allow(missing_docs)] pub blocknumber: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2578,16 +2639,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function OPERATOR_CHURN_APPROVAL_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2683,16 +2749,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function PUBKEY_REGISTRATION_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2788,16 +2859,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function blsApkRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryCall {} ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2893,16 +2969,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function churnApprover() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct churnApproverCall {} ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct churnApproverReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2998,17 +3079,22 @@ pub mod RegistryCoordinatorStorage { ```solidity function ejectOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3119,125 +3205,25 @@ pub mod RegistryCoordinatorStorage { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectorCall {} ///Container type for the return parameters of the [`ejector()`](ejectorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3333,18 +3319,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentQuorumBitmapReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3446,18 +3437,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function getOperator(address operator) external view returns (IRegistryCoordinator.OperatorInfo memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3558,18 +3554,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function getOperatorFromId(bytes32 operatorId) external view returns (address operator); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorFromIdReturn { pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3671,18 +3672,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function getOperatorId(address operator) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorIdReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3782,18 +3788,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function getOperatorSetParams(uint8 quorumNumber) external view returns (IRegistryCoordinator.OperatorSetParam memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorSetParamsReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3896,18 +3907,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function getOperatorStatus(address operator) external view returns (IRegistryCoordinator.OperatorStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorStatusReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4008,7 +4024,7 @@ pub mod RegistryCoordinatorStorage { ```solidity function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapAtBlockNumberByIndexCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -4016,12 +4032,17 @@ pub mod RegistryCoordinatorStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapAtBlockNumberByIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4144,18 +4165,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapHistoryLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4257,19 +4283,24 @@ pub mod RegistryCoordinatorStorage { ```solidity function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4386,19 +4417,24 @@ pub mod RegistryCoordinatorStorage { ```solidity function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (IRegistryCoordinator.QuorumBitmapUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapUpdateByIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4515,16 +4551,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function indexRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryCall {} ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4620,18 +4661,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function isChurnApproverSaltUsed(bytes32) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isChurnApproverSaltUsedReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4727,131 +4773,25 @@ pub mod RegistryCoordinatorStorage { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct numRegistriesCall {} ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct numRegistriesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4947,16 +4887,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5052,18 +4997,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pubkeyRegistrationMessageHashReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5164,16 +5114,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function quorumCount() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCountCall {} ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCountReturn { pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5269,18 +5224,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function quorumUpdateBlockNumber(uint8) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumUpdateBlockNumberReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5380,18 +5340,23 @@ pub mod RegistryCoordinatorStorage { ```solidity function registries(uint256) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registriesReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5491,16 +5456,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function serviceManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct serviceManagerCall {} ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct serviceManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5596,16 +5566,21 @@ pub mod RegistryCoordinatorStorage { ```solidity function stakeRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryCall {} ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5704,7 +5679,6 @@ pub mod RegistryCoordinatorStorage { blsApkRegistry(blsApkRegistryCall), churnApprover(churnApproverCall), ejectOperator(ejectOperatorCall), - ejectionCooldown(ejectionCooldownCall), ejector(ejectorCall), getCurrentQuorumBitmap(getCurrentQuorumBitmapCall), getOperator(getOperatorCall), @@ -5718,7 +5692,6 @@ pub mod RegistryCoordinatorStorage { getQuorumBitmapUpdateByIndex(getQuorumBitmapUpdateByIndexCall), indexRegistry(indexRegistryCall), isChurnApproverSaltUsed(isChurnApproverSaltUsedCall), - lastEjectionTimestamp(lastEjectionTimestampCall), numRegistries(numRegistriesCall), owner(ownerCall), pubkeyRegistrationMessageHash(pubkeyRegistrationMessageHashCall), @@ -5740,7 +5713,6 @@ pub mod RegistryCoordinatorStorage { [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], @@ -5759,7 +5731,6 @@ pub mod RegistryCoordinatorStorage { [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], @@ -5771,7 +5742,7 @@ pub mod RegistryCoordinatorStorage { impl alloy_sol_types::SolInterface for RegistryCoordinatorStorageCalls { const NAME: &'static str = "RegistryCoordinatorStorageCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 28usize; + const COUNT: usize = 26usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -5786,9 +5757,6 @@ pub mod RegistryCoordinatorStorage { } Self::churnApprover(_) => ::SELECTOR, Self::ejectOperator(_) => ::SELECTOR, - Self::ejectionCooldown(_) => { - ::SELECTOR - } Self::ejector(_) => ::SELECTOR, Self::getCurrentQuorumBitmap(_) => { ::SELECTOR @@ -5820,9 +5788,6 @@ pub mod RegistryCoordinatorStorage { Self::isChurnApproverSaltUsed(_) => { ::SELECTOR } - Self::lastEjectionTimestamp(_) => { - ::SELECTOR - } Self::numRegistries(_) => ::SELECTOR, Self::owner(_) => ::SELECTOR, Self::pubkeyRegistrationMessageHash(_) => { @@ -5905,19 +5870,6 @@ pub mod RegistryCoordinatorStorage { } churnApprover }, - { - fn lastEjectionTimestamp( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, validate, - ) - .map(RegistryCoordinatorStorageCalls::lastEjectionTimestamp) - } - lastEjectionTimestamp - }, { fn getOperatorId( data: &[u8], @@ -6155,19 +6107,6 @@ pub mod RegistryCoordinatorStorage { } 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], @@ -6276,11 +6215,6 @@ pub mod RegistryCoordinatorStorage { inner, ) } - Self::ejectionCooldown(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::ejector(inner) => { ::abi_encoded_size(inner) } @@ -6344,11 +6278,6 @@ pub mod RegistryCoordinatorStorage { inner, ) } - Self::lastEjectionTimestamp(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::numRegistries(inner) => { ::abi_encoded_size( inner, @@ -6420,12 +6349,6 @@ pub mod RegistryCoordinatorStorage { out, ) } - Self::ejectionCooldown(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::ejector(inner) => { ::abi_encode_raw(inner, out) } @@ -6501,12 +6424,6 @@ pub mod RegistryCoordinatorStorage { out, ) } - Self::lastEjectionTimestamp(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::numRegistries(inner) => { ::abi_encode_raw( inner, @@ -6911,12 +6828,6 @@ pub mod RegistryCoordinatorStorage { 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 {}) @@ -7015,13 +6926,6 @@ pub mod RegistryCoordinatorStorage { ) -> 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 {}) diff --git a/crates/utils/src/deploy/safeerc20.rs b/crates/utils/src/deploy/safeerc20.rs new file mode 100644 index 00000000..b602de00 --- /dev/null +++ b/crates/utils/src/deploy/safeerc20.rs @@ -0,0 +1,224 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod SafeERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c4f84db1d7ac701b1bd089cca8e6ec13cff3cd9a03d086feeb62a335f97ef49f64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 \xC4\xF8M\xB1\xD7\xACp\x1B\x1B\xD0\x89\xCC\xA8\xE6\xEC\x13\xCF\xF3\xCD\x9A\x03\xD0\x86\xFE\xEBb\xA35\xF9~\xF4\x9FdsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c4f84db1d7ac701b1bd089cca8e6ec13cff3cd9a03d086feeb62a335f97ef49f64736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 \xC4\xF8M\xB1\xD7\xACp\x1B\x1B\xD0\x89\xCC\xA8\xE6\xEC\x13\xCF\xF3\xCD\x9A\x03\xD0\x86\xFE\xEBb\xA35\xF9~\xF4\x9FdsolcC\0\x08\x1B\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/iservicemanager.rs b/crates/utils/src/deploy/servicemanagerbase.rs similarity index 65% rename from crates/utils/src/iservicemanager.rs rename to crates/utils/src/deploy/servicemanagerbase.rs index 9be99315..4c1c8d5e 100644 --- a/crates/utils/src/iservicemanager.rs +++ b/crates/utils/src/deploy/servicemanagerbase.rs @@ -1,634 +1,36 @@ ///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)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -962,20 +364,6 @@ pub mod ISignatureUtils { 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; @@ -984,15 +372,18 @@ library ISignatureUtils { } } -interface IServiceManager { - event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); +interface ServiceManagerBase { + event Initialized(uint8 version); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); 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 transferOwnership(address newOwner) external; function updateAVSMetadataURI(string memory _metadataURI) external; } ``` @@ -1013,58 +404,6 @@ interface IServiceManager { ], "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", @@ -1110,6 +449,19 @@ interface IServiceManager { ], "stateMutability": "view" }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "registerOperatorToAVS", @@ -1145,6 +497,26 @@ interface IServiceManager { "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", @@ -1160,18 +532,31 @@ interface IServiceManager { }, { "type": "event", - "name": "RewardsInitiatorUpdated", + "name": "Initialized", "inputs": [ { - "name": "prevRewardsInitiator", - "type": "address", + "name": "version", + "type": "uint8", "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, "internalType": "address" }, { - "name": "newRewardsInitiator", + "name": "newOwner", "type": "address", - "indexed": false, + "indexed": true, "internalType": "address" } ], @@ -1179,8 +564,13 @@ interface IServiceManager { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] -pub mod IServiceManager { +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod ServiceManagerBase { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. @@ -1203,35 +593,144 @@ pub mod IServiceManager { 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`. + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct RewardsInitiatorUpdated { + pub struct OwnershipTransferred { #[allow(missing_docs)] - pub prevRewardsInitiator: alloy::sol_types::private::Address, + pub previousOwner: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newRewardsInitiator: alloy::sol_types::private::Address, + pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] - impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { - type DataTuple<'a> = ( + 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, ); - 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: &'static str = "OwnershipTransferred(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, + 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)] @@ -1241,8 +740,8 @@ pub mod IServiceManager { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - prevRewardsInitiator: data.0, - newRewardsInitiator: data.1, + previousOwner: topics.1, + newOwner: topics.2, } } #[inline] @@ -1260,18 +759,15 @@ pub mod IServiceManager { } #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { - ( - ::tokenize( - &self.prevRewardsInitiator, - ), - ::tokenize( - &self.newRewardsInitiator, - ), - ) + () } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(),) + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) } #[inline] fn encode_topics_raw( @@ -1282,11 +778,17 @@ pub mod IServiceManager { 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 RewardsInitiatorUpdated { + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -1295,9 +797,9 @@ pub mod IServiceManager { } } #[automatically_derived] - impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData { + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData { + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } @@ -1306,16 +808,21 @@ pub mod IServiceManager { ```solidity function avsDirectory() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsDirectoryCall {} ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsDirectoryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1407,34 +914,179 @@ pub mod IServiceManager { } } }; - /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`. + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct createAVSRewardsSubmissionCall { - pub rewardsSubmissions: alloy::sol_types::private::Vec< - ::RustType, - >, + pub struct getOperatorRestakedStrategiesCall { + pub operator: alloy::sol_types::private::Address, } - ///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)] + ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct createAVSRewardsSubmissionReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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,); + (alloy::sol_types::sol_data::Array,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Vec< - ::RustType, - >, - ); + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1446,21 +1098,76 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: createAVSRewardsSubmissionCall) -> Self { - (value.rewardsSubmissions,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for createAVSRewardsSubmissionCall { + impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - rewardsSubmissions: tuple.0, - } + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall {} + ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (); @@ -1477,30 +1184,60 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: createAVSRewardsSubmissionReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for createAVSRewardsSubmissionReturn { + 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 {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall { - type Parameters<'a> = - (alloy::sol_types::sol_data::Array,); + impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = createAVSRewardsSubmissionReturn; - type ReturnTuple<'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 = - "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; - const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8]; + const SIGNATURE: &'static str = "getRestakeableStrategies()"; + const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1509,11 +1246,7 @@ pub mod IServiceManager { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( as alloy_sol_types::SolType>::tokenize( - &self.rewardsSubmissions, - ),) + () } #[inline] fn abi_decode_returns( @@ -1527,27 +1260,32 @@ pub mod IServiceManager { } } }; - /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + /**Function with signature `owner()` and selector `0x8da5cb5b`. ```solidity - function deregisterOperatorFromAVS(address operator) external; + function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct deregisterOperatorFromAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1559,24 +1297,24 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: deregisterOperatorFromAVSCall) -> Self { - (value.operator,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for deregisterOperatorFromAVSCall { + impl ::core::convert::From> for ownerCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { operator: tuple.0 } + Self {} } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1588,28 +1326,28 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: deregisterOperatorFromAVSReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + impl ::core::convert::From> for ownerReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = deregisterOperatorFromAVSReturn; - type ReturnTuple<'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 = "deregisterOperatorFromAVS(address)"; - const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1618,11 +1356,7 @@ pub mod IServiceManager { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( - ::tokenize( - &self.operator, - ), - ) + () } #[inline] fn abi_decode_returns( @@ -1636,29 +1370,40 @@ pub mod IServiceManager { } } }; - /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`. + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. ```solidity - function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getOperatorRestakedStrategiesCall { + pub struct registerOperatorToAVSCall { pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, } - ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getOperatorRestakedStrategiesReturn { - pub _0: alloy::sol_types::private::Vec, - } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct registerOperatorToAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + 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) { @@ -1670,26 +1415,27 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getOperatorRestakedStrategiesCall) -> Self { - (value.operator,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + impl ::core::convert::From> for registerOperatorToAVSCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { operator: tuple.0 } + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = - (alloy::sol_types::sol_data::Array,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = - (alloy::sol_types::private::Vec,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1701,29 +1447,32 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getOperatorRestakedStrategiesReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { + impl ::core::convert::From> for registerOperatorToAVSReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + 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 = getOperatorRestakedStrategiesReturn; - type ReturnTuple<'a> = - (alloy::sol_types::sol_data::Array,); + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)"; - const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8]; + 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, @@ -1736,6 +1485,9 @@ pub mod IServiceManager { ::tokenize( &self.operator, ), + ::tokenize( + &self.operatorSignature, + ), ) } #[inline] @@ -1750,20 +1502,23 @@ pub mod IServiceManager { } } }; - /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`. + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. ```solidity - function getRestakeableStrategies() external view returns (address[] memory); + function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getRestakeableStrategiesCall {} - ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getRestakeableStrategiesReturn { - pub _0: alloy::sol_types::private::Vec, - } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1782,14 +1537,14 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getRestakeableStrategiesCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getRestakeableStrategiesCall { + impl ::core::convert::From> for renounceOwnershipCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -1797,11 +1552,9 @@ pub mod IServiceManager { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = - (alloy::sol_types::sol_data::Array,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = - (alloy::sol_types::private::Vec,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1813,29 +1566,28 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getRestakeableStrategiesReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getRestakeableStrategiesReturn { + impl ::core::convert::From> for renounceOwnershipReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + impl alloy_sol_types::SolCall for renounceOwnershipCall { 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 Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "getRestakeableStrategies()"; - const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1858,35 +1610,32 @@ pub mod IServiceManager { } } }; - /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. ```solidity - function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct registerOperatorToAVSCall { - pub operator: alloy::sol_types::private::Address, - pub operatorSignature: - ::RustType, + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, } - ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct registerOperatorToAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Address, - ISignatureUtils::SignatureWithSaltAndExpiry, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Address, - ::RustType, - ); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1898,19 +1647,16 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: registerOperatorToAVSCall) -> Self { - (value.operator, value.operatorSignature) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for registerOperatorToAVSCall { + impl ::core::convert::From> for transferOwnershipCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - operator: tuple.0, - operatorSignature: tuple.1, - } + Self { newOwner: tuple.0 } } } } @@ -1930,32 +1676,28 @@ pub mod IServiceManager { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: registerOperatorToAVSReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for registerOperatorToAVSReturn { + impl ::core::convert::From> for transferOwnershipReturn { 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, - ); + 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 = registerOperatorToAVSReturn; + type Return = transferOwnershipReturn; 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]; + 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, @@ -1966,10 +1708,7 @@ pub mod IServiceManager { fn tokenize(&self) -> Self::Token<'_> { ( ::tokenize( - &self.operator, - ), - ::tokenize( - &self.operatorSignature, + &self.newOwner, ), ) } @@ -1989,16 +1728,21 @@ pub mod IServiceManager { ```solidity function updateAVSMetadataURI(string memory _metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2096,18 +1840,20 @@ pub mod IServiceManager { } } }; - ///Container for all the [`IServiceManager`](self) function calls. - pub enum IServiceManagerCalls { + ///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), + transferOwnership(transferOwnershipCall), updateAVSMetadataURI(updateAVSMetadataURICall), } #[automatically_derived] - impl IServiceManagerCalls { + impl ServiceManagerBaseCalls { /// All the selectors of this enum. /// /// Note that the selectors might not be in the same order as the variants. @@ -2117,25 +1863,24 @@ pub mod IServiceManager { 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], - [252u8, 227u8, 108u8, 125u8], + [242u8, 253u8, 227u8, 139u8], ]; } #[automatically_derived] - impl alloy_sol_types::SolInterface for IServiceManagerCalls { - const NAME: &'static str = "IServiceManagerCalls"; + impl alloy_sol_types::SolInterface for ServiceManagerBaseCalls { + const NAME: &'static str = "ServiceManagerBaseCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 7usize; + const COUNT: usize = 9usize; #[inline] fn selector(&self) -> [u8; 4] { match self { Self::avsDirectory(_) => ::SELECTOR, - Self::createAVSRewardsSubmission(_) => { - ::SELECTOR - } Self::deregisterOperatorFromAVS(_) => { ::SELECTOR } @@ -2145,9 +1890,16 @@ pub mod IServiceManager { Self::getRestakeableStrategies(_) => { ::SELECTOR } + Self::owner(_) => ::SELECTOR, Self::registerOperatorToAVS(_) => { ::SELECTOR } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } Self::updateAVSMetadataURI(_) => { ::SELECTOR } @@ -2172,17 +1924,17 @@ pub mod IServiceManager { &[u8], bool, ) - -> alloy_sol_types::Result] = &[ + -> alloy_sol_types::Result] = &[ { fn getOperatorRestakedStrategies( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerCalls::getOperatorRestakedStrategies) + .map(ServiceManagerBaseCalls::getOperatorRestakedStrategies) } getOperatorRestakedStrategies }, @@ -2190,23 +1942,45 @@ pub mod IServiceManager { fn avsDirectory( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerCalls::avsDirectory) + .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 { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerCalls::registerOperatorToAVS) + .map(ServiceManagerBaseCalls::registerOperatorToAVS) } registerOperatorToAVS }, @@ -2214,11 +1988,11 @@ pub mod IServiceManager { fn deregisterOperatorFromAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerCalls::deregisterOperatorFromAVS) + .map(ServiceManagerBaseCalls::deregisterOperatorFromAVS) } deregisterOperatorFromAVS }, @@ -2226,11 +2000,11 @@ pub mod IServiceManager { fn updateAVSMetadataURI( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerCalls::updateAVSMetadataURI) + .map(ServiceManagerBaseCalls::updateAVSMetadataURI) } updateAVSMetadataURI }, @@ -2238,26 +2012,25 @@ pub mod IServiceManager { fn getRestakeableStrategies( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(IServiceManagerCalls::getRestakeableStrategies) + .map(ServiceManagerBaseCalls::getRestakeableStrategies) } getRestakeableStrategies }, { - fn createAVSRewardsSubmission( + fn transferOwnership( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map(IServiceManagerCalls::createAVSRewardsSubmission) + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::transferOwnership) } - createAVSRewardsSubmission + transferOwnership }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { @@ -2276,11 +2049,6 @@ pub mod IServiceManager { inner, ) } - Self::createAVSRewardsSubmission(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::deregisterOperatorFromAVS(inner) => { ::abi_encoded_size( inner, @@ -2296,11 +2064,24 @@ pub mod IServiceManager { inner, ) } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } Self::registerOperatorToAVS(inner) => { ::abi_encoded_size( inner, ) } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::updateAVSMetadataURI(inner) => { ::abi_encoded_size( inner, @@ -2314,11 +2095,6 @@ pub mod IServiceManager { Self::avsDirectory(inner) => { ::abi_encode_raw(inner, out) } - Self::createAVSRewardsSubmission(inner) => { - ::abi_encode_raw( - inner, out, - ) - } Self::deregisterOperatorFromAVS(inner) => { ::abi_encode_raw( inner, out, @@ -2334,11 +2110,20 @@ pub mod IServiceManager { 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::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } Self::updateAVSMetadataURI(inner) => { ::abi_encode_raw( inner, out, @@ -2347,39 +2132,53 @@ pub mod IServiceManager { } } } - ///Container for all the [`IServiceManager`](self) events. - pub enum IServiceManagerEvents { - RewardsInitiatorUpdated(RewardsInitiatorUpdated), + ///Container for all the [`ServiceManagerBase`](self) events. + pub enum ServiceManagerBaseEvents { + Initialized(Initialized), + OwnershipTransferred(OwnershipTransferred), } #[automatically_derived] - impl IServiceManagerEvents { + 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]] = &[[ - 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, - ]]; + 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 IServiceManagerEvents { - const NAME: &'static str = "IServiceManagerEvents"; - const COUNT: usize = 1usize; + impl alloy_sol_types::SolEventInterface for ServiceManagerBaseEvents { + const NAME: &'static str = "ServiceManagerBaseEvents"; + 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( + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( topics, data, validate, ) - .map(Self::RewardsInitiatorUpdated) + .map(Self::OwnershipTransferred) } _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { name: ::NAME, @@ -2394,26 +2193,32 @@ pub mod IServiceManager { } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for IServiceManagerEvents { + impl alloy_sol_types::private::IntoLogData for ServiceManagerBaseEvents { fn to_log_data(&self) -> alloy_sol_types::private::LogData { match self { - Self::RewardsInitiatorUpdated(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) } } } fn into_log_data(self) -> alloy_sol_types::private::LogData { match self { - Self::RewardsInitiatorUpdated(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) } } } } use alloy::contract as alloy_contract; - /**Creates a new wrapper around an on-chain [`IServiceManager`](self) contract instance. + /**Creates a new wrapper around an on-chain [`ServiceManagerBase`](self) contract instance. - See the [wrapper's documentation](`IServiceManagerInstance`) for more details.*/ + See the [wrapper's documentation](`ServiceManagerBaseInstance`) for more details.*/ #[inline] pub const fn new< T: alloy_contract::private::Transport + ::core::clone::Clone, @@ -2422,8 +2227,8 @@ pub mod IServiceManager { >( address: alloy_sol_types::private::Address, provider: P, - ) -> IServiceManagerInstance { - IServiceManagerInstance::::new(address, provider) + ) -> ServiceManagerBaseInstance { + ServiceManagerBaseInstance::::new(address, provider) } /**Deploys this contract using the given `provider` and constructor arguments, if any. @@ -2437,9 +2242,9 @@ pub mod IServiceManager { N: alloy_contract::private::Network, >( provider: P, - ) -> impl ::core::future::Future>> + ) -> impl ::core::future::Future>> { - IServiceManagerInstance::::deploy(provider) + ServiceManagerBaseInstance::::deploy(provider) } /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` and constructor arguments, if any. @@ -2454,12 +2259,12 @@ pub mod IServiceManager { >( provider: P, ) -> alloy_contract::RawCallBuilder { - IServiceManagerInstance::::deploy_builder(provider) + ServiceManagerBaseInstance::::deploy_builder(provider) } - /**A [`IServiceManager`](self) instance. + /**A [`ServiceManagerBase`](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 + [`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!) @@ -2468,16 +2273,16 @@ pub mod IServiceManager { See the [module-level documentation](self) for all the available methods.*/ #[derive(Clone)] - pub struct IServiceManagerInstance { + 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 IServiceManagerInstance { + impl ::core::fmt::Debug for ServiceManagerBaseInstance { #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple("IServiceManagerInstance") + f.debug_tuple("ServiceManagerBaseInstance") .field(&self.address) .finish() } @@ -2488,11 +2293,11 @@ pub mod IServiceManager { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IServiceManagerInstance + > ServiceManagerBaseInstance { - /**Creates a new wrapper around an on-chain [`IServiceManager`](self) contract instance. + /**Creates a new wrapper around an on-chain [`ServiceManagerBase`](self) contract instance. - See the [wrapper's documentation](`IServiceManagerInstance`) for more details.*/ + See the [wrapper's documentation](`ServiceManagerBaseInstance`) for more details.*/ #[inline] pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { Self { @@ -2509,7 +2314,7 @@ pub mod IServiceManager { #[inline] pub async fn deploy( provider: P, - ) -> alloy_contract::Result> { + ) -> 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)) @@ -2547,11 +2352,11 @@ pub mod IServiceManager { &self.provider } } - impl IServiceManagerInstance { + impl ServiceManagerBaseInstance { /// Clones the provider and returns a new instance with the cloned provider. #[inline] - pub fn with_cloned_provider(self) -> IServiceManagerInstance { - IServiceManagerInstance { + pub fn with_cloned_provider(self) -> ServiceManagerBaseInstance { + ServiceManagerBaseInstance { address: self.address, provider: ::core::clone::Clone::clone(&self.provider), _network_transport: ::core::marker::PhantomData, @@ -2564,7 +2369,7 @@ pub mod IServiceManager { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IServiceManagerInstance + > ServiceManagerBaseInstance { /// Creates a new call builder using this contract instance's provider and address. /// @@ -2580,15 +2385,6 @@ pub mod IServiceManager { 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, @@ -2609,6 +2405,10 @@ pub mod IServiceManager { ) -> 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, @@ -2620,6 +2420,19 @@ pub mod IServiceManager { 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 [`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, @@ -2634,7 +2447,7 @@ pub mod IServiceManager { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IServiceManagerInstance + > ServiceManagerBaseInstance { /// Creates a new event filter using this contract instance's provider and address. /// @@ -2645,11 +2458,15 @@ pub mod IServiceManager { ) -> 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( + ///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::() + ) -> alloy_contract::Event { + self.event_filter::() } } } diff --git a/crates/utils/src/stakeregistry.rs b/crates/utils/src/deploy/stakeregistry.rs similarity index 71% rename from crates/utils/src/stakeregistry.rs rename to crates/utils/src/deploy/stakeregistry.rs index 1624da06..c27700fc 100644 --- a/crates/utils/src/stakeregistry.rs +++ b/crates/utils/src/deploy/stakeregistry.rs @@ -7,21 +7,31 @@ library IStakeRegistry { struct StrategyParams { address strategy; uint96 multiplier; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -236,13 +246,18 @@ pub mod IStakeRegistry { /**```solidity struct StrategyParams { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1562,35 +1577,45 @@ interface StakeRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod StakeRegistry { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60c06040523480156200001157600080fd5b50604051620033c8380380620033c8833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a0516132e9620000df6000396000818161037a01528181611a470152611b7901526000818161052901526118a801526132e96000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612803565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e36600461281e565b610597565b604051610217929190612848565b61025461024f36600461287f565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a3660046128fa565b610602565b005b61029461028f3660046129bb565b610860565b604051610217929190612a5a565b6102b56102b0366004612a7f565b610a78565b6040516102179190612aab565b61020d6102d0366004612803565b60ff1660009081526003602052604090205490565b61020d6102f3366004612a7f565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612a7f565b610b17565b61020d670de0b6b3a764000081565b61027f610345366004612bb4565b610b30565b61035d6103583660046129bb565b610e78565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004612c70565b610f17565b6040516102179190612cc2565b61039c6103fc36600461281e565b611157565b61041461040f366004612d00565b61118f565b6040516102179190612d33565b61043461042f36600461281e565b611227565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f36600461281e565b6112a1565b61027f610482366004612d7f565b611330565b61027f610495366004612da9565b611351565b6102546104a8366004612803565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004612e75565b6113c3565b6102546104e4366004612ec2565b6113df565b6102546104f7366004612803565b61145d565b61050f61050a366004612efe565b6114b0565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004612f3a565b6114c5565b61041461056c366004612a7f565b61155a565b61025461057f366004612efe565b61163f565b61027f610592366004612f7c565b6116a0565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105ec816117cb565b60006105f88585611847565b5095945050505050565b61060a611a45565b84610614816117cb565b838061068f576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084015b60405180910390fd5b8281146107045760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610686565b60ff87166000908152600360205260408120905b828110156108555785858281811061073257610732612fd9565b90506020020160208101906107479190612fef565b8289898481811061075a5761075a612fd9565b905060200201358154811061077157610771612fd9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106107da576107da612fd9565b90506020020135815481106107f1576107f1612fd9565b6000918252602090912001546001600160a01b031688888581811061081857610818612fd9565b905060200201602081019061082d9190612fef565b60405161083b929190612848565b60405180910390a28061084d81613020565b915050610718565b505050505050505050565b60608061086b611b6e565b6000836001600160401b0381111561088557610885612b23565b6040519080825280602002602001820160405280156108ae578160200160208202803683370190505b5090506000846001600160401b038111156108cb576108cb612b23565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b50905060005b85811015610a6a57600087878381811061091657610916612fd9565b919091013560f81c915061092b9050816117cb565b600080610938838d611847565b91509150806109d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610686565b60006109e28c8585611c21565b9050828786815181106109f7576109f7612fd9565b60200260200101906001600160601b031690816001600160601b031681525050610a218482611ea1565b868681518110610a3357610a33612fd9565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610a6290613020565b9150506108fa565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610b0a576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610ab1565b5050505090505b92915050565b600080610b24848461155a565b60400151949350505050565b610b38611a45565b81610b42816117cb565b815180610bb75760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610686565b60ff841660009081526003602090815260408083206004909252822090915b83811015610e6f578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610c1657610c16612fd9565b602002602001015181548110610c2e57610c2e612fd9565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610c8c57610c8c612fd9565b602002602001015181548110610ca457610ca4612fd9565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ce49060019061303b565b81548110610cf457610cf4612fd9565b9060005260206000200183878381518110610d1157610d11612fd9565b602002602001015181548110610d2957610d29612fd9565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610d7c57610d7c613052565b60008281526020812082016000199081019190915501905581548290610da49060019061303b565b81548110610db457610db4612fd9565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110610de557610de5612fd9565b602002602001015181548110610dfd57610dfd612fd9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480610e3b57610e3b613052565b600082815260209020810160001990810180546001600160a01b031916905501905580610e6781613020565b915050610bd6565b50505050505050565b6000610e82611b6e565b6000805b838110156105f8576000858583818110610ea257610ea2612fd9565b919091013560f81c9150610eb79050816117cb565b600080610ec4838b611847565b9150915080610ee65760009150600160ff84161b6001600160c01b0386161794505b6000610ef38a8585611c21565b9050610eff8482611ea1565b50505050508080610f0f90613020565b915050610e86565b60606000826001600160401b03811115610f3357610f33612b23565b604051908082528060200260200182016040528015610f5c578160200160208202803683370190505b50905060005b8381101561114c576000858583818110610f7e57610f7e612fd9565b919091013560f81c9150610f939050816117cb565b60ff81166000908152600160205260408120805463ffffffff8a169290610fbc57610fbc612fd9565b60009182526020909120015463ffffffff1611156110685760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610686565b60ff8116600090815260016020526040812054905b818110156111365760ff8316600090815260016020819052604090912063ffffffff8b16916110ac848661303b565b6110b6919061303b565b815481106110c6576110c6612fd9565b60009182526020909120015463ffffffff16116111245760016110e9828461303b565b6110f3919061303b565b85858151811061110557611105612fd9565b602002602001019063ffffffff16908163ffffffff1681525050611136565b8061112e81613020565b91505061107d565b505050808061114490613020565b915050610f62565b5090505b9392505050565b6004602052816000526040600020818154811061117357600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106111d4576111d4612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff8316600090815260036020526040902080548390811061125f5761125f612fd9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106112de576112de612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b611338611a45565b81611342816117cb565b61134c838361201b565b505050565b611359611b6e565b60005b818110156113bd57600083838381811061137857611378612fd9565b919091013560f81c915061138d9050816117cb565b600061139b86836000611c21565b90506113a78282611ea1565b50505080806113b590613020565b91505061135c565b50505050565b6113cb611a45565b816113d5816117cb565b61134c8383612084565b60ff8316600090815260016020526040812080548291908490811061140657611406612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610b2481856124c7565b60ff8116600090815260016020819052604082208054909161147e9161303b565b8154811061148e5761148e612fd9565b600091825260209091200154600160401b90046001600160601b031692915050565b60006114bd848484612641565b949350505050565b600082815260026020908152604080832060ff8816845290915281208054829190849081106114f6576114f6612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152905061154d81866124c7565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff871683528152848220548551938401865282845290830182905293820152909190816115b3579150610b119050565b600085815260026020908152604080832060ff8816845290915290206115da60018461303b565b815481106115ea576115ea612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610b11915050565b600083815260026020908152604080832060ff861684529091528120611666858585612641565b63ffffffff168154811061167c5761167c612fd9565b600091825260209091200154600160401b90046001600160601b0316949350505050565b6116a8611b6e565b60ff8316600090815260016020526040902054156117265760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610686565b6117308382612084565b61173a838361201b565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81166000908152600160205260409020546118445760405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608401610686565b50565b6000806000806118668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926118db928c9201613068565b600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906130c7565b905060005b83811015611a115760ff8916600090815260036020526040902080548290811061195157611951612fd9565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b031690820152835190945083908390811061199f5761199f612fd9565b602002602001015111156119ff57670de0b6b3a764000083602001516001600160601b03168383815181106119d6576119d6612fd9565b60200260200101516119e89190613157565b6119f29190613176565b6119fc9086613198565b94505b80611a0981613020565b915050611925565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac791906131c3565b6001600160a01b0316336001600160a01b031614611b6c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a401610686565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b6c5760405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a401610686565b600083815260026020908152604080832060ff86168452909152812054819080611ce557600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611e47565b600086815260026020908152604080832060ff891684529091528120611d0c60018461303b565b81548110611d1c57611d1c612fd9565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611d555760009350505050611150565b80544363ffffffff90811691161415611d8f578054600160401b600160a01b031916600160401b6001600160601b03871602178155611e45565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a2611e9782856127a7565b9695505050505050565b60ff821660009081526001602081905260408220805491839190611ec5908461303b565b81548110611ed557611ed5612fd9565b9060005260206000200190508360001415611f045754600160401b90046001600160601b03169150610b119050565b8054600090611f2390600160401b90046001600160601b0316866127bf565b82549091504363ffffffff90811691161415611f60578154600160401b600160a01b031916600160401b6001600160601b03831602178255612012565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116120e95760405162461bcd60e51b8152602060048201526038602482015260008051602061329483398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610686565b805160ff83166000908152600360209081526040909120549061210c83836131e0565b111561217c5760405162461bcd60e51b8152602060048201526045602482015260008051602061329483398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610686565b60005b828110156124c05760005b61219482846131e0565b811015612275578482815181106121ad576121ad612fd9565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106121ec576121ec612fd9565b6000918252602090912001546001600160a01b031614156122635760405162461bcd60e51b815260206004820152603d602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610686565b8061226d81613020565b91505061218a565b50600084828151811061228a5761228a612fd9565b6020026020010151602001516001600160601b03161161230f5760405162461bcd60e51b8152602060048201526046602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610686565b60ff85166000908152600360205260409020845185908390811061233557612335612fd9565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061239a5761239a612fd9565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061241157612411612fd9565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061246e5761246e612fd9565b60200260200101516000015186848151811061248c5761248c612fd9565b6020026020010151602001516040516124a6929190612848565b60405180910390a2806124b881613020565b91505061217f565b5050505050565b816000015163ffffffff168163ffffffff16101561256c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610686565b602082015163ffffffff1615806125925750816020015163ffffffff168163ffffffff16105b61263d5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610686565b5050565b600083815260026020908152604080832060ff86168452909152812054805b80156126e257600086815260026020908152604080832060ff89168452909152902063ffffffff85169061269560018461303b565b815481106126a5576126a5612fd9565b60009182526020909120015463ffffffff16116126d0576126c760018261303b565b92505050611150565b806126da816131f8565b915050612660565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610686565b60006111506001600160601b0380851690841661320f565b6000808212156127e3576127d28261324e565b6127dc908461326b565b9050610b11565b6127dc8284613198565b803560ff811681146127fe57600080fd5b919050565b60006020828403121561281557600080fd5b611150826127ed565b6000806040838503121561283157600080fd5b61283a836127ed565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b038116811461184457600080fd5b6000806040838503121561289257600080fd5b61289b836127ed565b915060208301356128ab8161286a565b809150509250929050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208260051b8501011115611a3e57600080fd5b60008060008060006060868803121561291257600080fd5b61291b866127ed565b945060208601356001600160401b038082111561293757600080fd5b61294389838a016128b6565b9096509450604088013591508082111561295c57600080fd5b50612969888289016128b6565b969995985093965092949392505050565b60008083601f84011261298c57600080fd5b5081356001600160401b038111156129a357600080fd5b602083019150836020828501011115611a3e57600080fd5b600080600080606085870312156129d157600080fd5b84356129dc8161286a565b93506020850135925060408501356001600160401b038111156129fe57600080fd5b612a0a8782880161297a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612a4f5781516001600160601b031687529582019590820190600101612a2a565b509495945050505050565b604081526000612a6d6040830185612a16565b82810360208401526120128185612a16565b60008060408385031215612a9257600080fd5b82359150612aa2602084016127ed565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757612b0483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612ac7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612b5b57612b5b612b23565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b8957612b89612b23565b604052919050565b60006001600160401b03821115612baa57612baa612b23565b5060051b60200190565b60008060408385031215612bc757600080fd5b612bd0836127ed565b91506020808401356001600160401b03811115612bec57600080fd5b8401601f81018613612bfd57600080fd5b8035612c10612c0b82612b91565b612b61565b81815260059190911b82018301908381019088831115612c2f57600080fd5b928401925b82841015612c4d57833582529284019290840190612c34565b80955050505050509250929050565b803563ffffffff811681146127fe57600080fd5b600080600060408486031215612c8557600080fd5b612c8e84612c5c565b925060208401356001600160401b03811115612ca957600080fd5b612cb58682870161297a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757835163ffffffff1683529284019291840191600101612cde565b600080600060608486031215612d1557600080fd5b612d1e846127ed565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610b11565b80356001600160601b03811681146127fe57600080fd5b60008060408385031215612d9257600080fd5b612d9b836127ed565b9150612aa260208401612d68565b600080600060408486031215612dbe57600080fd5b8335925060208401356001600160401b03811115612ca957600080fd5b600082601f830112612dec57600080fd5b81356020612dfc612c0b83612b91565b82815260069290921b84018101918181019086841115612e1b57600080fd5b8286015b84811015612e6a5760408189031215612e385760008081fd5b612e40612b39565b8135612e4b8161286a565b8152612e58828601612d68565b81860152835291830191604001612e1f565b509695505050505050565b60008060408385031215612e8857600080fd5b612e91836127ed565b915060208301356001600160401b03811115612eac57600080fd5b612eb885828601612ddb565b9150509250929050565b600080600060608486031215612ed757600080fd5b612ee0846127ed565b9250612eee60208501612c5c565b9150604084013590509250925092565b600080600060608486031215612f1357600080fd5b83359250612f23602085016127ed565b9150612f3160408501612c5c565b90509250925092565b60008060008060808587031215612f5057600080fd5b612f59856127ed565b9350612f6760208601612c5c565b93969395505050506040820135916060013590565b600080600060608486031215612f9157600080fd5b612f9a846127ed565b9250612fa860208501612d68565b915060408401356001600160401b03811115612fc357600080fd5b612fcf86828701612ddb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300157600080fd5b61115082612d68565b634e487b7160e01b600052601160045260246000fd5b60006000198214156130345761303461300a565b5060010190565b60008282101561304d5761304d61300a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b818110156130b957855485168352600195860195928401920161309b565b509098975050505050505050565b600060208083850312156130da57600080fd5b82516001600160401b038111156130f057600080fd5b8301601f8101851361310157600080fd5b805161310f612c0b82612b91565b81815260059190911b8201830190838101908783111561312e57600080fd5b928401925b8284101561314c57835182529284019290840190613133565b979650505050505050565b60008160001904831182151516156131715761317161300a565b500290565b60008261319357634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156131ba576131ba61300a565b01949350505050565b6000602082840312156131d557600080fd5b81516111508161286a565b600082198211156131f3576131f361300a565b500190565b6000816132075761320761300a565b506000190190565b60008083128015600160ff1b85018412161561322d5761322d61300a565b6001600160ff1b03840183138116156132485761324861300a565b50500390565b6000600160ff1b8214156132645761326461300a565b5060000390565b60006001600160601b038381169083168181101561328b5761328b61300a565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122055bf78a9addcfc53e668f5d4aa34693b1a33cd55facc1b2c53fbb2b06fa027ba64736f6c634300080c0033 + ///0x60c060405234801561000f575f5ffd5b5060405161379238038061379283398101604081905261002e9161005c565b6001600160a01b0391821660a05216608052610094565b6001600160a01b0381168114610059575f5ffd5b50565b5f5f6040838503121561006d575f5ffd5b825161007881610045565b602084015190925061008981610045565b809150509250929050565b60805160a05161369e6100f45f395f818161036d015281816106200152818161094b01528181610ca9015281816110b60152818161167c0152818161177b0152818161188f0152611c4201525f818161051b0152611dfc015261369e5ff3fe608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c80639f3ccf6511610109578063c8294c561161009e578063f2be94ae1161006e578063f2be94ae1461053d578063f851e19814610550578063fa28c62714610563578063ff694a7714610576575f5ffd5b8063c8294c56146104c8578063d5eccc05146104db578063dd9846b9146104ee578063df5cf72314610516575f5ffd5b8063bc9a40c3116100d9578063bc9a40c314610467578063bd29b8cd1461047a578063c46778a51461048d578063c601527d146104b5575f5ffd5b80639f3ccf65146103e1578063ac6bfb03146103f4578063adc804da14610414578063b6904b7814610454575f5ffd5b80634bd26e091161017f57806366acfefe1161014f57806366acfefe1461033d5780636d14a987146103685780637c172347146103a757806381c07502146103c1575f5ffd5b80634bd26e09146102d95780635401ed27146103085780635e5a67751461031b5780635f1f2d771461032a575f5ffd5b806320b66298116101ba57806320b662981461026157806325504777146102765780632cd95940146102975780633ca5a5f5146102b7575f5ffd5b80630491b41c146101e057806308732461146102155780631f9b74e014610236575b5f5ffd5b6102026101ee366004612b2b565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b610228610223366004612b44565b610589565b60405161020c929190612b6c565b610249610244366004612ba5565b6105ce565b6040516001600160601b03909116815260200161020c565b61027461026f366004612c1a565b61061e565b005b610289610284366004612cd5565b61093d565b60405161020c929190612d6f565b6102aa6102a5366004612d93565b610bf2565b60405161020c9190612dbd565b6102026102c5366004612b2b565b60ff165f9081526003602052604090205490565b6102026102e7366004612d93565b5f91825260026020908152604080842060ff93909316845291905290205490565b610249610316366004612d93565b610c8f565b610202670de0b6b3a764000081565b610274610338366004612ec4565b610ca7565b61035061034b366004612cd5565b6110aa565b6040516001600160c01b03909116815260200161020c565b61038f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161020c565b6103af602081565b60405160ff909116815260200161020c565b6103d46103cf366004612f7f565b611200565b60405161020c9190612fcd565b61038f6103ef366004612b44565b6114ac565b61040761040236600461300a565b6114e0565b60405161020c919061303a565b610427610422366004612b44565b611576565b6040805182516001600160a01b031681526020928301516001600160601b0316928101929092520161020c565b610407610462366004612b44565b6115ed565b61027461047536600461308a565b61167a565b6102746104883660046130b2565b611770565b61024961049b366004612b2b565b5f602081905290815260409020546001600160601b031681565b6102746104c3366004613175565b61188d565b6102496104d63660046131bf565b61197e565b6102496104e9366004612b2b565b6119fa565b6105016104fc3660046131f9565b611a4b565b60405163ffffffff909116815260200161020c565b61038f7f000000000000000000000000000000000000000000000000000000000000000081565b61024961054b366004613232565b611a5f565b61040761055e366004612d93565b611af2565b6102496105713660046131f9565b611bd8565b610274610584366004613271565b611c37565b6003602052815f5260405f2081815481106105a2575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff82165f9081526001602052604081205483906106075760405162461bcd60e51b81526004016105fe906132ca565b60405180910390fd5b5f6106128585611da0565b509250505b5092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069e919061331b565b6001600160a01b0316336001600160a01b0316146106ce5760405162461bcd60e51b81526004016105fe90613336565b846106e98160ff165f90815260016020526040902054151590565b6107055760405162461bcd60e51b81526004016105fe906132ca565b838061077b576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084016105fe565b8281146107f05760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d617463680000000000000060648201526084016105fe565b60ff87165f908152600360205260408120905b828110156109325785858281811061081d5761081d6133b2565b905060200201602081019061083291906133c6565b82898984818110610845576108456133b2565b905060200201358154811061085c5761085c6133b2565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108c2576108c26133b2565b90506020020135815481106108d9576108d96133b2565b5f918252602090912001546001600160a01b03168888858181106108ff576108ff6133b2565b905060200201602081019061091491906133c6565b604051610922929190612b6c565b60405180910390a2600101610803565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109885760405162461bcd60e51b81526004016105fe906133df565b5f836001600160401b038111156109a1576109a1612e36565b6040519080825280602002602001820160405280156109ca578160200160208202803683370190505b5090505f846001600160401b038111156109e6576109e6612e36565b604051908082528060200260200182016040528015610a0f578160200160208202803683370190505b5090505f5b85811015610be4575f878783818110610a2f57610a2f6133b2565b919091013560f81c5f8181526001602052604090205490925015159050610ab65760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b60648201526084016105fe565b5f5f610ac2838d611da0565b9150915080610b5f5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a4016105fe565b5f610b6b8c8585611f87565b905082878681518110610b8057610b806133b2565b60200260200101906001600160601b031690816001600160601b031681525050610baa8482612200565b868681518110610bbc57610bbc6133b2565b6001600160601b0390921660209283029190910190910152505060019092019150610a149050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610c82575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c2a565b5050505090505b92915050565b5f5f610c9b8484611af2565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d27919061331b565b6001600160a01b0316336001600160a01b031614610d575760405162461bcd60e51b81526004016105fe90613336565b81610d728160ff165f90815260016020526040902054151590565b610d8e5760405162461bcd60e51b81526004016105fe906132ca565b815180610e035760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f766964656400000060648201526084016105fe565b60ff84165f9081526003602090815260408083206004909252822090915b838110156110a1578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e6157610e616133b2565b602002602001015181548110610e7957610e796133b2565b5f91825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610ed657610ed66133b2565b602002602001015181548110610eee57610eee6133b2565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f2d90600190613465565b81548110610f3d57610f3d6133b2565b905f5260205f200183878381518110610f5857610f586133b2565b602002602001015181548110610f7057610f706133b2565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610fc257610fc2613478565b5f8281526020812082015f199081019190915501905581548290610fe890600190613465565b81548110610ff857610ff86133b2565b905f5260205f20015f9054906101000a90046001600160a01b031682878381518110611026576110266133b2565b60200260200101518154811061103e5761103e6133b2565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061107957611079613478565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610e21565b50505050505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110f35760405162461bcd60e51b81526004016105fe906133df565b5f805b838110156111f6575f858583818110611111576111116133b2565b919091013560f81c5f81815260016020526040902054909250151590506111a05760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f74206578697374000000000000000060648201526084016105fe565b5f5f6111ac838b611da0565b91509150806111cd575f9150600160ff84161b6001600160c01b0386161794505b5f6111d98a8585611f87565b90506111e58482612200565b5050600190930192506110f6915050565b5095945050505050565b60605f826001600160401b0381111561121b5761121b612e36565b604051908082528060200260200182016040528015611244578160200160208202803683370190505b5090505f5b838110156114a1575f858583818110611264576112646133b2565b919091013560f81c5f81815260016020526040902054909250151590506113025760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a4016105fe565b60ff81165f908152600160205260408120805463ffffffff8a16929061132a5761132a6133b2565b5f9182526020909120015463ffffffff1611156113d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a4016105fe565b60ff81165f90815260016020526040812054905b818110156114965760ff83165f90815260016020819052604090912063ffffffff8b16916114178486613465565b6114219190613465565b81548110611431576114316133b2565b5f9182526020909120015463ffffffff161161148e5760016114538284613465565b61145d9190613465565b85858151811061146f5761146f6133b2565b602002602001019063ffffffff16908163ffffffff1681525050611496565b6001016113e9565b505050600101611249565b5090505b9392505050565b6004602052815f5260405f2081815481106114c5575f80fd5b5f918252602090912001546001600160a01b03169150829050565b604080516060810182525f80825260208083018290528284018290528582526002815283822060ff88168352905291909120805483908110611524576115246133b2565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106115ac576115ac6133b2565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182525f808252602080830182905282840182905260ff861682526001905291909120805483908110611629576116296133b2565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fa919061331b565b6001600160a01b0316336001600160a01b03161461172a5760405162461bcd60e51b81526004016105fe90613336565b816117458160ff165f90815260016020526040902054151590565b6117615760405162461bcd60e51b81526004016105fe906132ca565b61176b8383612371565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117b85760405162461bcd60e51b81526004016105fe906133df565b5f5b81811015611887575f8383838181106117d5576117d56133b2565b919091013560f81c5f81815260016020526040902054909250151590506118645760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016105fe565b5f61187086835f611f87565b905061187c8282612200565b5050506001016117ba565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190d919061331b565b6001600160a01b0316336001600160a01b03161461193d5760405162461bcd60e51b81526004016105fe90613336565b816119588160ff165f90815260016020526040902054151590565b6119745760405162461bcd60e51b81526004016105fe906132ca565b61176b83836123d9565b60ff83165f9081526001602052604081208054829190849081106119a4576119a46133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610c9b81856127f6565b60ff81165f908152600160208190526040822080549091611a1a91613465565b81548110611a2a57611a2a6133b2565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a5784848461296f565b949350505050565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611a8f57611a8f6133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611ae581866127f6565b6040015195945050505050565b60408051606080820183525f80835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611b4e579150610c899050565b5f85815260026020908152604080832060ff881684529091529020611b74600184613465565b81548110611b8457611b846133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610c89915050565b5f83815260026020908152604080832060ff861684529091528120611bfe85858561296f565b63ffffffff1681548110611c1457611c146133b2565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c7f5760405162461bcd60e51b81526004016105fe906133df565b60ff83165f9081526001602052604090205415611cfc5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b60648201526084016105fe565b611d0683826123d9565b611d108383612371565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b5f5f5f5f611dbc8660ff165f9081526003602052604090205490565b604080518082019091525f808252602082015290915060ff87165f9081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611e2f928c920161348c565b5f60405180830381865afa158015611e49573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e7091908101906134ed565b90505f5b83811015611f545760ff89165f908152600360205260409020805482908110611e9f57611e9f6133b2565b5f9182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611eec57611eec6133b2565b60200260200101511115611f4c57670de0b6b3a764000083602001516001600160601b0316838381518110611f2357611f236133b2565b6020026020010151611f359190613573565b611f3f919061358a565b611f4990866135a9565b94505b600101611e74565b50505060ff86165f90815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b5f83815260026020908152604080832060ff86168452909152812054819080820361204b575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff19909616919092161793909317169190911790556121a6565b5f86815260026020908152604080832060ff891684529091528120612071600184613465565b81548110612081576120816133b2565b5f91825260209091200180546001600160601b03600160401b90910481169450909150851683036120b7575f93505050506114a5565b805463ffffffff4381169116036120ef578054600160401b600160a01b031916600160401b6001600160601b038716021781556121a4565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26121f68285612ad2565b9695505050505050565b60ff82165f90815260016020819052604082208054918391906122239084613465565b81548110612233576122336133b2565b905f5260205f20019050835f0361225e5754600160401b90046001600160601b03169150610c899050565b80545f9061227c90600160401b90046001600160601b031686612ae9565b825490915063ffffffff4381169116036122b7578154600160401b600160a01b031916600160401b6001600160601b03831602178255612368565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b5f81511161243c5760405162461bcd60e51b815260206004820152603860248201525f5160206136495f395f51905f5260448201527f3a206e6f20737472617465676965732070726f7669646564000000000000000060648201526084016105fe565b805160ff83165f908152600360209081526040909120549061245e83836135c8565b11156124cd5760405162461bcd60e51b815260206004820152604560248201525f5160206136495f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a4016105fe565b5f5b828110156127ef575f5b6124e382846135c8565b8110156125b4578482815181106124fc576124fc6133b2565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f208281548110612538576125386133b2565b5f918252602090912001546001600160a01b0316036125ac5760405162461bcd60e51b815260206004820152603d60248201525f5160206136495f395f51905f5260448201527f3a2063616e6e6f74206164642073616d6520737472617465677920327800000060648201526084016105fe565b6001016124d9565b505f8482815181106125c8576125c86133b2565b6020026020010151602001516001600160601b03161161264c5760405162461bcd60e51b815260206004820152604660248201525f5160206136495f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a4016105fe565b60ff85165f9081526003602052604090208451859083908110612671576126716133b2565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106126d5576126d56133b2565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061274b5761274b6133b2565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a758583815181106127a8576127a86133b2565b60200260200101515f01518684815181106127c5576127c56133b2565b6020026020010151602001516040516127df929190612b6c565b60405180910390a26001016124cf565b5050505050565b815f015163ffffffff168163ffffffff16101561289a5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a4016105fe565b602082015163ffffffff1615806128c05750816020015163ffffffff168163ffffffff16105b61296b5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c4016105fe565b5050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612a0d575f86815260026020908152604080832060ff89168452909152902063ffffffff8516906129c1600184613465565b815481106129d1576129d16133b2565b5f9182526020909120015463ffffffff16116129fb576129f2600182613465565b925050506114a5565b80612a05816135db565b91505061298d565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e4016105fe565b5f6114a56001600160601b038085169084166135f0565b5f5f821215612b0c57612afb8261360f565b612b059084613629565b9050610c89565b612b0582846135a9565b803560ff81168114612b26575f5ffd5b919050565b5f60208284031215612b3b575f5ffd5b6114a582612b16565b5f5f60408385031215612b55575f5ffd5b612b5e83612b16565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ba2575f5ffd5b50565b5f5f60408385031215612bb6575f5ffd5b612bbf83612b16565b91506020830135612bcf81612b8e565b809150509250929050565b5f5f83601f840112612bea575f5ffd5b5081356001600160401b03811115612c00575f5ffd5b6020830191508360208260051b8501011115611f80575f5ffd5b5f5f5f5f5f60608688031215612c2e575f5ffd5b612c3786612b16565b945060208601356001600160401b03811115612c51575f5ffd5b612c5d88828901612bda565b90955093505060408601356001600160401b03811115612c7b575f5ffd5b612c8788828901612bda565b969995985093965092949392505050565b5f5f83601f840112612ca8575f5ffd5b5081356001600160401b03811115612cbe575f5ffd5b602083019150836020828501011115611f80575f5ffd5b5f5f5f5f60608587031215612ce8575f5ffd5b8435612cf381612b8e565b93506020850135925060408501356001600160401b03811115612d14575f5ffd5b612d2087828801612c98565b95989497509550505050565b5f8151808452602084019350602083015f5b82811015612d655781516001600160601b0316865260209586019590910190600101612d3e565b5093949350505050565b604081525f612d816040830185612d2c565b82810360208401526123688185612d2c565b5f5f60408385031215612da4575f5ffd5b82359150612db460208401612b16565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015612e2b57612e1583855163ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b6020939093019260609290920191600101612dd6565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612e6c57612e6c612e36565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e9a57612e9a612e36565b604052919050565b5f6001600160401b03821115612eba57612eba612e36565b5060051b60200190565b5f5f60408385031215612ed5575f5ffd5b612ede83612b16565b915060208301356001600160401b03811115612ef8575f5ffd5b8301601f81018513612f08575f5ffd5b8035612f1b612f1682612ea2565b612e72565b8082825260208201915060208360051b850101925087831115612f3c575f5ffd5b6020840193505b82841015612f5e578335825260209384019390910190612f43565b809450505050509250929050565b803563ffffffff81168114612b26575f5ffd5b5f5f5f60408486031215612f91575f5ffd5b612f9a84612f6c565b925060208401356001600160401b03811115612fb4575f5ffd5b612fc086828701612c98565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b81811015612e2b57835163ffffffff16835260209384019390920191600101612fe6565b5f5f5f6060848603121561301c575f5ffd5b61302584612b16565b95602085013595506040909401359392505050565b60608101610c89828463ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b80356001600160601b0381168114612b26575f5ffd5b5f5f6040838503121561309b575f5ffd5b6130a483612b16565b9150612db460208401613074565b5f5f5f604084860312156130c4575f5ffd5b8335925060208401356001600160401b03811115612fb4575f5ffd5b5f82601f8301126130ef575f5ffd5b81356130fd612f1682612ea2565b8082825260208201915060208360061b86010192508583111561311e575f5ffd5b602085015b838110156111f6576040818803121561313a575f5ffd5b613142612e4a565b813561314d81612b8e565b815261315b60208301613074565b602082015280845250602083019250604081019050613123565b5f5f60408385031215613186575f5ffd5b61318f83612b16565b915060208301356001600160401b038111156131a9575f5ffd5b6131b5858286016130e0565b9150509250929050565b5f5f5f606084860312156131d1575f5ffd5b6131da84612b16565b92506131e860208501612f6c565b929592945050506040919091013590565b5f5f5f6060848603121561320b575f5ffd5b8335925061321b60208501612b16565b915061322960408501612f6c565b90509250925092565b5f5f5f5f60808587031215613245575f5ffd5b61324e85612b16565b935061325c60208601612f6c565b93969395505050506040820135916060013590565b5f5f5f60608486031215613283575f5ffd5b61328c84612b16565b925061329a60208501613074565b915060408401356001600160401b038111156132b4575f5ffd5b6132c0868287016130e0565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b5f6020828403121561332b575f5ffd5b81516114a581612b8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156133d6575f5ffd5b6114a582613074565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c8957610c89613451565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b03831681526040602080830182905283549183018290525f84815290812090916060840190835b818110156134e15783546001600160a01b03168352600193840193602090930192016134ba565b50909695505050505050565b5f602082840312156134fd575f5ffd5b81516001600160401b03811115613512575f5ffd5b8201601f81018413613522575f5ffd5b8051613530612f1682612ea2565b8082825260208201915060208360051b850101925086831115613551575f5ffd5b6020840193505b828410156121f6578351825260209384019390910190613558565b8082028115828204841417610c8957610c89613451565b5f826135a457634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610c8957610c89613451565b80820180821115610c8957610c89613451565b5f816135e9576135e9613451565b505f190190565b8181035f83128015838313168383128216171561061757610617613451565b5f600160ff1b820161362357613623613451565b505f0390565b6001600160601b038281168282160390811115610c8957610c8961345156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220bba538e60ec1d03f94aa3e3fa9bc2a258ca4e97dbd75087844a34b07534a150764736f6c634300081b0033 /// ``` #[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", + b"`\xC0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa7\x928\x03\x80a7\x92\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\\V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\xA0R\x16`\x80Ra\0\x94V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0YW__\xFD[PV[__`@\x83\x85\x03\x12\x15a\0mW__\xFD[\x82Qa\0x\x81a\0EV[` \x84\x01Q\x90\x92Pa\0\x89\x81a\0EV[\x80\x91PP\x92P\x92\x90PV[`\x80Q`\xA0Qa6\x9Ea\0\xF4_9_\x81\x81a\x03m\x01R\x81\x81a\x06 \x01R\x81\x81a\tK\x01R\x81\x81a\x0C\xA9\x01R\x81\x81a\x10\xB6\x01R\x81\x81a\x16|\x01R\x81\x81a\x17{\x01R\x81\x81a\x18\x8F\x01Ra\x1CB\x01R_\x81\x81a\x05\x1B\x01Ra\x1D\xFC\x01Ra6\x9E_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\xDCW_5`\xE0\x1C\x80c\x9F<\xCFe\x11a\x01\tW\x80c\xC8)LV\x11a\0\x9EW\x80c\xF2\xBE\x94\xAE\x11a\0nW\x80c\xF2\xBE\x94\xAE\x14a\x05=W\x80c\xF8Q\xE1\x98\x14a\x05PW\x80c\xFA(\xC6'\x14a\x05cW\x80c\xFFiJw\x14a\x05vW__\xFD[\x80c\xC8)LV\x14a\x04\xC8W\x80c\xD5\xEC\xCC\x05\x14a\x04\xDBW\x80c\xDD\x98F\xB9\x14a\x04\xEEW\x80c\xDF\\\xF7#\x14a\x05\x16W__\xFD[\x80c\xBC\x9A@\xC3\x11a\0\xD9W\x80c\xBC\x9A@\xC3\x14a\x04gW\x80c\xBD)\xB8\xCD\x14a\x04zW\x80c\xC4gx\xA5\x14a\x04\x8DW\x80c\xC6\x01R}\x14a\x04\xB5W__\xFD[\x80c\x9F<\xCFe\x14a\x03\xE1W\x80c\xACk\xFB\x03\x14a\x03\xF4W\x80c\xAD\xC8\x04\xDA\x14a\x04\x14W\x80c\xB6\x90Kx\x14a\x04TW__\xFD[\x80cK\xD2n\t\x11a\x01\x7FW\x80cf\xAC\xFE\xFE\x11a\x01OW\x80cf\xAC\xFE\xFE\x14a\x03=W\x80cm\x14\xA9\x87\x14a\x03hW\x80c|\x17#G\x14a\x03\xA7W\x80c\x81\xC0u\x02\x14a\x03\xC1W__\xFD[\x80cK\xD2n\t\x14a\x02\xD9W\x80cT\x01\xED'\x14a\x03\x08W\x80c^Zgu\x14a\x03\x1BW\x80c_\x1F-w\x14a\x03*W__\xFD[\x80c \xB6b\x98\x11a\x01\xBAW\x80c \xB6b\x98\x14a\x02aW\x80c%PGw\x14a\x02vW\x80c,\xD9Y@\x14a\x02\x97W\x80c<\xA5\xA5\xF5\x14a\x02\xB7W__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xE0W\x80c\x08s$a\x14a\x02\x15W\x80c\x1F\x9Bt\xE0\x14a\x026W[__\xFD[a\x02\x02a\x01\xEE6`\x04a++V[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02(a\x02#6`\x04a+DV[a\x05\x89V[`@Qa\x02\x0C\x92\x91\x90a+lV[a\x02Ia\x02D6`\x04a+\xA5V[a\x05\xCEV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x02ta\x02o6`\x04a,\x1AV[a\x06\x1EV[\0[a\x02\x89a\x02\x846`\x04a,\xD5V[a\t=V[`@Qa\x02\x0C\x92\x91\x90a-oV[a\x02\xAAa\x02\xA56`\x04a-\x93V[a\x0B\xF2V[`@Qa\x02\x0C\x91\x90a-\xBDV[a\x02\x02a\x02\xC56`\x04a++V[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\x02a\x02\xE76`\x04a-\x93V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ia\x03\x166`\x04a-\x93V[a\x0C\x8FV[a\x02\x02g\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02ta\x0386`\x04a.\xC4V[a\x0C\xA7V[a\x03Pa\x03K6`\x04a,\xD5V[a\x10\xAAV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\x8F\x7F\0\0\0\0\0\0\0\0\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\x0CV[a\x03\xAF` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\xD4a\x03\xCF6`\x04a/\x7FV[a\x12\0V[`@Qa\x02\x0C\x91\x90a/\xCDV[a\x03\x8Fa\x03\xEF6`\x04a+DV[a\x14\xACV[a\x04\x07a\x04\x026`\x04a0\nV[a\x14\xE0V[`@Qa\x02\x0C\x91\x90a0:V[a\x04'a\x04\"6`\x04a+DV[a\x15vV[`@\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\x0CV[a\x04\x07a\x04b6`\x04a+DV[a\x15\xEDV[a\x02ta\x04u6`\x04a0\x8AV[a\x16zV[a\x02ta\x04\x886`\x04a0\xB2V[a\x17pV[a\x02Ia\x04\x9B6`\x04a++V[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02ta\x04\xC36`\x04a1uV[a\x18\x8DV[a\x02Ia\x04\xD66`\x04a1\xBFV[a\x19~V[a\x02Ia\x04\xE96`\x04a++V[a\x19\xFAV[a\x05\x01a\x04\xFC6`\x04a1\xF9V[a\x1AKV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\x8F\x7F\0\0\0\0\0\0\0\0\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\x02Ia\x05K6`\x04a22V[a\x1A_V[a\x04\x07a\x05^6`\x04a-\x93V[a\x1A\xF2V[a\x02Ia\x05q6`\x04a1\xF9V[a\x1B\xD8V[a\x02ta\x05\x846`\x04a2qV[a\x1C7V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x05\xA2W_\x80\xFD[_\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[`\xFF\x82\x16_\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[`@Q\x80\x91\x03\x90\xFD[_a\x06\x12\x85\x85a\x1D\xA0V[P\x92PP[P\x92\x91PPV[\x7F\0\0\0\0\0\0\0\0\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\x06zW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x9E\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x84a\x06\xE9\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[\x83\x80a\x07{W`@\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\x01a\x05\xFEV[\x82\x81\x14a\x07\xF0W`@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\x05\xFEV[`\xFF\x87\x16_\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\t2W\x85\x85\x82\x81\x81\x10a\x08\x1DWa\x08\x1Da3\xB2V[\x90P` \x02\x01` \x81\x01\x90a\x082\x91\x90a3\xC6V[\x82\x89\x89\x84\x81\x81\x10a\x08EWa\x08Ea3\xB2V[\x90P` \x02\x015\x81T\x81\x10a\x08\\Wa\x08\\a3\xB2V[\x90_R` _ \x01_\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\x08\xC2Wa\x08\xC2a3\xB2V[\x90P` \x02\x015\x81T\x81\x10a\x08\xD9Wa\x08\xD9a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\xFFWa\x08\xFFa3\xB2V[\x90P` \x02\x01` \x81\x01\x90a\t\x14\x91\x90a3\xC6V[`@Qa\t\"\x92\x91\x90a+lV[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x08\x03V[PPPPPPPPPV[``\x803`\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\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA1Wa\t\xA1a.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xCAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE6Wa\t\xE6a.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x0FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\x0B\xE4W_\x87\x87\x83\x81\x81\x10a\n/Wa\n/a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x05\xFEV[__a\n\xC2\x83\x8Da\x1D\xA0V[\x91P\x91P\x80a\x0B_W`@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\x05\xFEV[_a\x0Bk\x8C\x85\x85a\x1F\x87V[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\x80Wa\x0B\x80a3\xB2V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xAA\x84\x82a\"\0V[\x86\x86\x81Q\x81\x10a\x0B\xBCWa\x0B\xBCa3\xB2V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\n\x14\x90PV[P\x90\x97\x90\x96P\x94PPPPPV[_\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\x0C\x82W_\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\x0C*V[PPPP\x90P[\x92\x91PPV[__a\x0C\x9B\x84\x84a\x1A\xF2V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\r\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r'\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rWW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\rr\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[\x81Q\x80a\x0E\x03W`@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\x05\xFEV[`\xFF\x84\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xA1W\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\x0EaWa\x0Eaa3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0EyWa\x0Eya3\xB2V[_\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\x0E\xD6Wa\x0E\xD6a3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xEEWa\x0E\xEEa3\xB2V[_\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\x0F-\x90`\x01\x90a4eV[\x81T\x81\x10a\x0F=Wa\x0F=a3\xB2V[\x90_R` _ \x01\x83\x87\x83\x81Q\x81\x10a\x0FXWa\x0FXa3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0FpWa\x0Fpa3\xB2V[_\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\x0F\xC2Wa\x0F\xC2a4xV[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x0F\xE8\x90`\x01\x90a4eV[\x81T\x81\x10a\x0F\xF8Wa\x0F\xF8a3\xB2V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10&Wa\x10&a3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x10>Wa\x10>a3\xB2V[\x90_R` _ \x01_a\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\x10yWa\x10ya4xV[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0E!V[PPPPPPPV[_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\xF3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_\x80[\x83\x81\x10\x15a\x11\xF6W_\x85\x85\x83\x81\x81\x10a\x11\x11Wa\x11\x11a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x05\xFEV[__a\x11\xAC\x83\x8Ba\x1D\xA0V[\x91P\x91P\x80a\x11\xCDW_\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[_a\x11\xD9\x8A\x85\x85a\x1F\x87V[\x90Pa\x11\xE5\x84\x82a\"\0V[PP`\x01\x90\x93\x01\x92Pa\x10\xF6\x91PPV[P\x95\x94PPPPPV[``_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\x1BWa\x12\x1Ba.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x14\xA1W_\x85\x85\x83\x81\x81\x10a\x12dWa\x12da3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x05\xFEV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13*Wa\x13*a3\xB2V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x13\xD5W`@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\x05\xFEV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x14\x96W`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14\x17\x84\x86a4eV[a\x14!\x91\x90a4eV[\x81T\x81\x10a\x141Wa\x141a3\xB2V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\x8EW`\x01a\x14S\x82\x84a4eV[a\x14]\x91\x90a4eV[\x85\x85\x81Q\x81\x10a\x14oWa\x14oa3\xB2V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x14\x96V[`\x01\x01a\x13\xE9V[PPP`\x01\x01a\x12IV[P\x90P[\x93\x92PPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x14\xC5W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R_\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\x15$Wa\x15$a3\xB2V[_\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_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x15\xACWa\x15\xACa3\xB2V[_\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_\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\x16)Wa\x16)a3\xB2V[_\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[\x7F\0\0\0\0\0\0\0\0\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\x16\xD6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xFA\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\x17E\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17aW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[a\x17k\x83\x83a#qV[PPPV[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\x17\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_[\x81\x81\x10\x15a\x18\x87W_\x83\x83\x83\x81\x81\x10a\x17\xD5Wa\x17\xD5a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x05\xFEV[_a\x18p\x86\x83_a\x1F\x87V[\x90Pa\x18|\x82\x82a\"\0V[PPP`\x01\x01a\x17\xBAV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x18\xE9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\r\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19=W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\x19X\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x19tW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[a\x17k\x83\x83a#\xD9V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x19\xA4Wa\x19\xA4a3\xB2V[_\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\x0C\x9B\x81\x85a'\xF6V[`\xFF\x81\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\x1A\x91a4eV[\x81T\x81\x10a\x1A*Wa\x1A*a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1AW\x84\x84\x84a)oV[\x94\x93PPPPV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\x8FWa\x1A\x8Fa3\xB2V[_\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\x1A\xE5\x81\x86a'\xF6V[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R_\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\x01\x81\x90R\x91\x92\x91\x82\x90\x03a\x1BNW\x91Pa\x0C\x89\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1Bt`\x01\x84a4eV[\x81T\x81\x10a\x1B\x84Wa\x1B\x84a3\xB2V[_\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\x0C\x89\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1B\xFE\x85\x85\x85a)oV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\x14Wa\x1C\x14a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1C\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x1C\xFCW`@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\x05\xFEV[a\x1D\x06\x83\x82a#\xD9V[a\x1D\x10\x83\x83a#qV[PP`\xFF\x16_\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[____a\x1D\xBC\x86`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90\x91P`\xFF\x87\x16_\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\x1E/\x92\x8C\x92\x01a4\x8CV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EIW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1Ep\x91\x90\x81\x01\x90a4\xEDV[\x90P_[\x83\x81\x10\x15a\x1FTW`\xFF\x89\x16_\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1E\x9FWa\x1E\x9Fa3\xB2V[_\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\x1E\xECWa\x1E\xECa3\xB2V[` \x02` \x01\x01Q\x11\x15a\x1FLWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F#Wa\x1F#a3\xB2V[` \x02` \x01\x01Qa\x1F5\x91\x90a5sV[a\x1F?\x91\x90a5\x8AV[a\x1FI\x90\x86a5\xA9V[\x94P[`\x01\x01a\x1EtV[PPP`\xFF\x86\x16_\x90\x81R` \x81\x90R`@\x90 T\x91\x93PP`\x01`\x01``\x1B\x03\x90\x81\x16\x90\x83\x16\x10\x15\x90P[\x92P\x92\x90PV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80\x82\x03a KW_\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!\xA6V[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a q`\x01\x84a4eV[\x81T\x81\x10a \x81Wa \x81a3\xB2V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a \xB7W_\x93PPPPa\x14\xA5V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a \xEFW\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua!\xA4V[\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_\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!\xF6\x82\x85a*\xD2V[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"#\x90\x84a4eV[\x81T\x81\x10a\"3Wa\"3a3\xB2V[\x90_R` _ \x01\x90P\x83_\x03a\"^WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\x89\x90PV[\x80T_\x90a\"|\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a*\xE9V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\"\xB7W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua#hV[\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_\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_\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[_\x81Q\x11a$V[P\x93\x94\x93PPPPV[`@\x81R_a-\x81`@\x83\x01\x85a-,V[\x82\x81\x03` \x84\x01Ra#h\x81\x85a-,V[__`@\x83\x85\x03\x12\x15a-\xA4W__\xFD[\x825\x91Pa-\xB4` \x84\x01a+\x16V[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a.+Wa.\x15\x83\x85Qc\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a-\xD6V[P\x90\x95\x94PPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.lWa.la.6V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x9AWa.\x9Aa.6V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a.\xBAWa.\xBAa.6V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a.\xD5W__\xFD[a.\xDE\x83a+\x16V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\x08W__\xFD[\x805a/\x1Ba/\x16\x82a.\xA2V[a.rV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a/?\xA9\xBC*%\x8C\xA4\xE9}\xBDu\x08xD\xA3K\x07SJ\x15\x07dsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612803565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e36600461281e565b610597565b604051610217929190612848565b61025461024f36600461287f565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a3660046128fa565b610602565b005b61029461028f3660046129bb565b610860565b604051610217929190612a5a565b6102b56102b0366004612a7f565b610a78565b6040516102179190612aab565b61020d6102d0366004612803565b60ff1660009081526003602052604090205490565b61020d6102f3366004612a7f565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612a7f565b610b17565b61020d670de0b6b3a764000081565b61027f610345366004612bb4565b610b30565b61035d6103583660046129bb565b610e78565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004612c70565b610f17565b6040516102179190612cc2565b61039c6103fc36600461281e565b611157565b61041461040f366004612d00565b61118f565b6040516102179190612d33565b61043461042f36600461281e565b611227565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f36600461281e565b6112a1565b61027f610482366004612d7f565b611330565b61027f610495366004612da9565b611351565b6102546104a8366004612803565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004612e75565b6113c3565b6102546104e4366004612ec2565b6113df565b6102546104f7366004612803565b61145d565b61050f61050a366004612efe565b6114b0565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004612f3a565b6114c5565b61041461056c366004612a7f565b61155a565b61025461057f366004612efe565b61163f565b61027f610592366004612f7c565b6116a0565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105ec816117cb565b60006105f88585611847565b5095945050505050565b61060a611a45565b84610614816117cb565b838061068f576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084015b60405180910390fd5b8281146107045760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610686565b60ff87166000908152600360205260408120905b828110156108555785858281811061073257610732612fd9565b90506020020160208101906107479190612fef565b8289898481811061075a5761075a612fd9565b905060200201358154811061077157610771612fd9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106107da576107da612fd9565b90506020020135815481106107f1576107f1612fd9565b6000918252602090912001546001600160a01b031688888581811061081857610818612fd9565b905060200201602081019061082d9190612fef565b60405161083b929190612848565b60405180910390a28061084d81613020565b915050610718565b505050505050505050565b60608061086b611b6e565b6000836001600160401b0381111561088557610885612b23565b6040519080825280602002602001820160405280156108ae578160200160208202803683370190505b5090506000846001600160401b038111156108cb576108cb612b23565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b50905060005b85811015610a6a57600087878381811061091657610916612fd9565b919091013560f81c915061092b9050816117cb565b600080610938838d611847565b91509150806109d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610686565b60006109e28c8585611c21565b9050828786815181106109f7576109f7612fd9565b60200260200101906001600160601b031690816001600160601b031681525050610a218482611ea1565b868681518110610a3357610a33612fd9565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610a6290613020565b9150506108fa565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610b0a576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610ab1565b5050505090505b92915050565b600080610b24848461155a565b60400151949350505050565b610b38611a45565b81610b42816117cb565b815180610bb75760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610686565b60ff841660009081526003602090815260408083206004909252822090915b83811015610e6f578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610c1657610c16612fd9565b602002602001015181548110610c2e57610c2e612fd9565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610c8c57610c8c612fd9565b602002602001015181548110610ca457610ca4612fd9565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ce49060019061303b565b81548110610cf457610cf4612fd9565b9060005260206000200183878381518110610d1157610d11612fd9565b602002602001015181548110610d2957610d29612fd9565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610d7c57610d7c613052565b60008281526020812082016000199081019190915501905581548290610da49060019061303b565b81548110610db457610db4612fd9565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110610de557610de5612fd9565b602002602001015181548110610dfd57610dfd612fd9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480610e3b57610e3b613052565b600082815260209020810160001990810180546001600160a01b031916905501905580610e6781613020565b915050610bd6565b50505050505050565b6000610e82611b6e565b6000805b838110156105f8576000858583818110610ea257610ea2612fd9565b919091013560f81c9150610eb79050816117cb565b600080610ec4838b611847565b9150915080610ee65760009150600160ff84161b6001600160c01b0386161794505b6000610ef38a8585611c21565b9050610eff8482611ea1565b50505050508080610f0f90613020565b915050610e86565b60606000826001600160401b03811115610f3357610f33612b23565b604051908082528060200260200182016040528015610f5c578160200160208202803683370190505b50905060005b8381101561114c576000858583818110610f7e57610f7e612fd9565b919091013560f81c9150610f939050816117cb565b60ff81166000908152600160205260408120805463ffffffff8a169290610fbc57610fbc612fd9565b60009182526020909120015463ffffffff1611156110685760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610686565b60ff8116600090815260016020526040812054905b818110156111365760ff8316600090815260016020819052604090912063ffffffff8b16916110ac848661303b565b6110b6919061303b565b815481106110c6576110c6612fd9565b60009182526020909120015463ffffffff16116111245760016110e9828461303b565b6110f3919061303b565b85858151811061110557611105612fd9565b602002602001019063ffffffff16908163ffffffff1681525050611136565b8061112e81613020565b91505061107d565b505050808061114490613020565b915050610f62565b5090505b9392505050565b6004602052816000526040600020818154811061117357600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106111d4576111d4612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff8316600090815260036020526040902080548390811061125f5761125f612fd9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106112de576112de612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b611338611a45565b81611342816117cb565b61134c838361201b565b505050565b611359611b6e565b60005b818110156113bd57600083838381811061137857611378612fd9565b919091013560f81c915061138d9050816117cb565b600061139b86836000611c21565b90506113a78282611ea1565b50505080806113b590613020565b91505061135c565b50505050565b6113cb611a45565b816113d5816117cb565b61134c8383612084565b60ff8316600090815260016020526040812080548291908490811061140657611406612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610b2481856124c7565b60ff8116600090815260016020819052604082208054909161147e9161303b565b8154811061148e5761148e612fd9565b600091825260209091200154600160401b90046001600160601b031692915050565b60006114bd848484612641565b949350505050565b600082815260026020908152604080832060ff8816845290915281208054829190849081106114f6576114f6612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152905061154d81866124c7565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff871683528152848220548551938401865282845290830182905293820152909190816115b3579150610b119050565b600085815260026020908152604080832060ff8816845290915290206115da60018461303b565b815481106115ea576115ea612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610b11915050565b600083815260026020908152604080832060ff861684529091528120611666858585612641565b63ffffffff168154811061167c5761167c612fd9565b600091825260209091200154600160401b90046001600160601b0316949350505050565b6116a8611b6e565b60ff8316600090815260016020526040902054156117265760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610686565b6117308382612084565b61173a838361201b565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81166000908152600160205260409020546118445760405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608401610686565b50565b6000806000806118668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926118db928c9201613068565b600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906130c7565b905060005b83811015611a115760ff8916600090815260036020526040902080548290811061195157611951612fd9565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b031690820152835190945083908390811061199f5761199f612fd9565b602002602001015111156119ff57670de0b6b3a764000083602001516001600160601b03168383815181106119d6576119d6612fd9565b60200260200101516119e89190613157565b6119f29190613176565b6119fc9086613198565b94505b80611a0981613020565b915050611925565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac791906131c3565b6001600160a01b0316336001600160a01b031614611b6c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a401610686565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b6c5760405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a401610686565b600083815260026020908152604080832060ff86168452909152812054819080611ce557600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611e47565b600086815260026020908152604080832060ff891684529091528120611d0c60018461303b565b81548110611d1c57611d1c612fd9565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611d555760009350505050611150565b80544363ffffffff90811691161415611d8f578054600160401b600160a01b031916600160401b6001600160601b03871602178155611e45565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a2611e9782856127a7565b9695505050505050565b60ff821660009081526001602081905260408220805491839190611ec5908461303b565b81548110611ed557611ed5612fd9565b9060005260206000200190508360001415611f045754600160401b90046001600160601b03169150610b119050565b8054600090611f2390600160401b90046001600160601b0316866127bf565b82549091504363ffffffff90811691161415611f60578154600160401b600160a01b031916600160401b6001600160601b03831602178255612012565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116120e95760405162461bcd60e51b8152602060048201526038602482015260008051602061329483398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610686565b805160ff83166000908152600360209081526040909120549061210c83836131e0565b111561217c5760405162461bcd60e51b8152602060048201526045602482015260008051602061329483398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610686565b60005b828110156124c05760005b61219482846131e0565b811015612275578482815181106121ad576121ad612fd9565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106121ec576121ec612fd9565b6000918252602090912001546001600160a01b031614156122635760405162461bcd60e51b815260206004820152603d602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610686565b8061226d81613020565b91505061218a565b50600084828151811061228a5761228a612fd9565b6020026020010151602001516001600160601b03161161230f5760405162461bcd60e51b8152602060048201526046602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610686565b60ff85166000908152600360205260409020845185908390811061233557612335612fd9565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061239a5761239a612fd9565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061241157612411612fd9565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061246e5761246e612fd9565b60200260200101516000015186848151811061248c5761248c612fd9565b6020026020010151602001516040516124a6929190612848565b60405180910390a2806124b881613020565b91505061217f565b5050505050565b816000015163ffffffff168163ffffffff16101561256c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610686565b602082015163ffffffff1615806125925750816020015163ffffffff168163ffffffff16105b61263d5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610686565b5050565b600083815260026020908152604080832060ff86168452909152812054805b80156126e257600086815260026020908152604080832060ff89168452909152902063ffffffff85169061269560018461303b565b815481106126a5576126a5612fd9565b60009182526020909120015463ffffffff16116126d0576126c760018261303b565b92505050611150565b806126da816131f8565b915050612660565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610686565b60006111506001600160601b0380851690841661320f565b6000808212156127e3576127d28261324e565b6127dc908461326b565b9050610b11565b6127dc8284613198565b803560ff811681146127fe57600080fd5b919050565b60006020828403121561281557600080fd5b611150826127ed565b6000806040838503121561283157600080fd5b61283a836127ed565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b038116811461184457600080fd5b6000806040838503121561289257600080fd5b61289b836127ed565b915060208301356128ab8161286a565b809150509250929050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208260051b8501011115611a3e57600080fd5b60008060008060006060868803121561291257600080fd5b61291b866127ed565b945060208601356001600160401b038082111561293757600080fd5b61294389838a016128b6565b9096509450604088013591508082111561295c57600080fd5b50612969888289016128b6565b969995985093965092949392505050565b60008083601f84011261298c57600080fd5b5081356001600160401b038111156129a357600080fd5b602083019150836020828501011115611a3e57600080fd5b600080600080606085870312156129d157600080fd5b84356129dc8161286a565b93506020850135925060408501356001600160401b038111156129fe57600080fd5b612a0a8782880161297a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612a4f5781516001600160601b031687529582019590820190600101612a2a565b509495945050505050565b604081526000612a6d6040830185612a16565b82810360208401526120128185612a16565b60008060408385031215612a9257600080fd5b82359150612aa2602084016127ed565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757612b0483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612ac7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612b5b57612b5b612b23565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b8957612b89612b23565b604052919050565b60006001600160401b03821115612baa57612baa612b23565b5060051b60200190565b60008060408385031215612bc757600080fd5b612bd0836127ed565b91506020808401356001600160401b03811115612bec57600080fd5b8401601f81018613612bfd57600080fd5b8035612c10612c0b82612b91565b612b61565b81815260059190911b82018301908381019088831115612c2f57600080fd5b928401925b82841015612c4d57833582529284019290840190612c34565b80955050505050509250929050565b803563ffffffff811681146127fe57600080fd5b600080600060408486031215612c8557600080fd5b612c8e84612c5c565b925060208401356001600160401b03811115612ca957600080fd5b612cb58682870161297a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757835163ffffffff1683529284019291840191600101612cde565b600080600060608486031215612d1557600080fd5b612d1e846127ed565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610b11565b80356001600160601b03811681146127fe57600080fd5b60008060408385031215612d9257600080fd5b612d9b836127ed565b9150612aa260208401612d68565b600080600060408486031215612dbe57600080fd5b8335925060208401356001600160401b03811115612ca957600080fd5b600082601f830112612dec57600080fd5b81356020612dfc612c0b83612b91565b82815260069290921b84018101918181019086841115612e1b57600080fd5b8286015b84811015612e6a5760408189031215612e385760008081fd5b612e40612b39565b8135612e4b8161286a565b8152612e58828601612d68565b81860152835291830191604001612e1f565b509695505050505050565b60008060408385031215612e8857600080fd5b612e91836127ed565b915060208301356001600160401b03811115612eac57600080fd5b612eb885828601612ddb565b9150509250929050565b600080600060608486031215612ed757600080fd5b612ee0846127ed565b9250612eee60208501612c5c565b9150604084013590509250925092565b600080600060608486031215612f1357600080fd5b83359250612f23602085016127ed565b9150612f3160408501612c5c565b90509250925092565b60008060008060808587031215612f5057600080fd5b612f59856127ed565b9350612f6760208601612c5c565b93969395505050506040820135916060013590565b600080600060608486031215612f9157600080fd5b612f9a846127ed565b9250612fa860208501612d68565b915060408401356001600160401b03811115612fc357600080fd5b612fcf86828701612ddb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300157600080fd5b61115082612d68565b634e487b7160e01b600052601160045260246000fd5b60006000198214156130345761303461300a565b5060010190565b60008282101561304d5761304d61300a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b818110156130b957855485168352600195860195928401920161309b565b509098975050505050505050565b600060208083850312156130da57600080fd5b82516001600160401b038111156130f057600080fd5b8301601f8101851361310157600080fd5b805161310f612c0b82612b91565b81815260059190911b8201830190838101908783111561312e57600080fd5b928401925b8284101561314c57835182529284019290840190613133565b979650505050505050565b60008160001904831182151516156131715761317161300a565b500290565b60008261319357634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156131ba576131ba61300a565b01949350505050565b6000602082840312156131d557600080fd5b81516111508161286a565b600082198211156131f3576131f361300a565b500190565b6000816132075761320761300a565b506000190190565b60008083128015600160ff1b85018412161561322d5761322d61300a565b6001600160ff1b03840183138116156132485761324861300a565b50500390565b6000600160ff1b8214156132645761326461300a565b5060000390565b60006001600160601b038381169083168181101561328b5761328b61300a565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122055bf78a9addcfc53e668f5d4aa34693b1a33cd55facc1b2c53fbb2b06fa027ba64736f6c634300080c0033 + ///0x608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c80639f3ccf6511610109578063c8294c561161009e578063f2be94ae1161006e578063f2be94ae1461053d578063f851e19814610550578063fa28c62714610563578063ff694a7714610576575f5ffd5b8063c8294c56146104c8578063d5eccc05146104db578063dd9846b9146104ee578063df5cf72314610516575f5ffd5b8063bc9a40c3116100d9578063bc9a40c314610467578063bd29b8cd1461047a578063c46778a51461048d578063c601527d146104b5575f5ffd5b80639f3ccf65146103e1578063ac6bfb03146103f4578063adc804da14610414578063b6904b7814610454575f5ffd5b80634bd26e091161017f57806366acfefe1161014f57806366acfefe1461033d5780636d14a987146103685780637c172347146103a757806381c07502146103c1575f5ffd5b80634bd26e09146102d95780635401ed27146103085780635e5a67751461031b5780635f1f2d771461032a575f5ffd5b806320b66298116101ba57806320b662981461026157806325504777146102765780632cd95940146102975780633ca5a5f5146102b7575f5ffd5b80630491b41c146101e057806308732461146102155780631f9b74e014610236575b5f5ffd5b6102026101ee366004612b2b565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b610228610223366004612b44565b610589565b60405161020c929190612b6c565b610249610244366004612ba5565b6105ce565b6040516001600160601b03909116815260200161020c565b61027461026f366004612c1a565b61061e565b005b610289610284366004612cd5565b61093d565b60405161020c929190612d6f565b6102aa6102a5366004612d93565b610bf2565b60405161020c9190612dbd565b6102026102c5366004612b2b565b60ff165f9081526003602052604090205490565b6102026102e7366004612d93565b5f91825260026020908152604080842060ff93909316845291905290205490565b610249610316366004612d93565b610c8f565b610202670de0b6b3a764000081565b610274610338366004612ec4565b610ca7565b61035061034b366004612cd5565b6110aa565b6040516001600160c01b03909116815260200161020c565b61038f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161020c565b6103af602081565b60405160ff909116815260200161020c565b6103d46103cf366004612f7f565b611200565b60405161020c9190612fcd565b61038f6103ef366004612b44565b6114ac565b61040761040236600461300a565b6114e0565b60405161020c919061303a565b610427610422366004612b44565b611576565b6040805182516001600160a01b031681526020928301516001600160601b0316928101929092520161020c565b610407610462366004612b44565b6115ed565b61027461047536600461308a565b61167a565b6102746104883660046130b2565b611770565b61024961049b366004612b2b565b5f602081905290815260409020546001600160601b031681565b6102746104c3366004613175565b61188d565b6102496104d63660046131bf565b61197e565b6102496104e9366004612b2b565b6119fa565b6105016104fc3660046131f9565b611a4b565b60405163ffffffff909116815260200161020c565b61038f7f000000000000000000000000000000000000000000000000000000000000000081565b61024961054b366004613232565b611a5f565b61040761055e366004612d93565b611af2565b6102496105713660046131f9565b611bd8565b610274610584366004613271565b611c37565b6003602052815f5260405f2081815481106105a2575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff82165f9081526001602052604081205483906106075760405162461bcd60e51b81526004016105fe906132ca565b60405180910390fd5b5f6106128585611da0565b509250505b5092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069e919061331b565b6001600160a01b0316336001600160a01b0316146106ce5760405162461bcd60e51b81526004016105fe90613336565b846106e98160ff165f90815260016020526040902054151590565b6107055760405162461bcd60e51b81526004016105fe906132ca565b838061077b576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084016105fe565b8281146107f05760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d617463680000000000000060648201526084016105fe565b60ff87165f908152600360205260408120905b828110156109325785858281811061081d5761081d6133b2565b905060200201602081019061083291906133c6565b82898984818110610845576108456133b2565b905060200201358154811061085c5761085c6133b2565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108c2576108c26133b2565b90506020020135815481106108d9576108d96133b2565b5f918252602090912001546001600160a01b03168888858181106108ff576108ff6133b2565b905060200201602081019061091491906133c6565b604051610922929190612b6c565b60405180910390a2600101610803565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109885760405162461bcd60e51b81526004016105fe906133df565b5f836001600160401b038111156109a1576109a1612e36565b6040519080825280602002602001820160405280156109ca578160200160208202803683370190505b5090505f846001600160401b038111156109e6576109e6612e36565b604051908082528060200260200182016040528015610a0f578160200160208202803683370190505b5090505f5b85811015610be4575f878783818110610a2f57610a2f6133b2565b919091013560f81c5f8181526001602052604090205490925015159050610ab65760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b60648201526084016105fe565b5f5f610ac2838d611da0565b9150915080610b5f5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a4016105fe565b5f610b6b8c8585611f87565b905082878681518110610b8057610b806133b2565b60200260200101906001600160601b031690816001600160601b031681525050610baa8482612200565b868681518110610bbc57610bbc6133b2565b6001600160601b0390921660209283029190910190910152505060019092019150610a149050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610c82575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c2a565b5050505090505b92915050565b5f5f610c9b8484611af2565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d27919061331b565b6001600160a01b0316336001600160a01b031614610d575760405162461bcd60e51b81526004016105fe90613336565b81610d728160ff165f90815260016020526040902054151590565b610d8e5760405162461bcd60e51b81526004016105fe906132ca565b815180610e035760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f766964656400000060648201526084016105fe565b60ff84165f9081526003602090815260408083206004909252822090915b838110156110a1578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e6157610e616133b2565b602002602001015181548110610e7957610e796133b2565b5f91825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610ed657610ed66133b2565b602002602001015181548110610eee57610eee6133b2565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f2d90600190613465565b81548110610f3d57610f3d6133b2565b905f5260205f200183878381518110610f5857610f586133b2565b602002602001015181548110610f7057610f706133b2565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610fc257610fc2613478565b5f8281526020812082015f199081019190915501905581548290610fe890600190613465565b81548110610ff857610ff86133b2565b905f5260205f20015f9054906101000a90046001600160a01b031682878381518110611026576110266133b2565b60200260200101518154811061103e5761103e6133b2565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061107957611079613478565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610e21565b50505050505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110f35760405162461bcd60e51b81526004016105fe906133df565b5f805b838110156111f6575f858583818110611111576111116133b2565b919091013560f81c5f81815260016020526040902054909250151590506111a05760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f74206578697374000000000000000060648201526084016105fe565b5f5f6111ac838b611da0565b91509150806111cd575f9150600160ff84161b6001600160c01b0386161794505b5f6111d98a8585611f87565b90506111e58482612200565b5050600190930192506110f6915050565b5095945050505050565b60605f826001600160401b0381111561121b5761121b612e36565b604051908082528060200260200182016040528015611244578160200160208202803683370190505b5090505f5b838110156114a1575f858583818110611264576112646133b2565b919091013560f81c5f81815260016020526040902054909250151590506113025760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a4016105fe565b60ff81165f908152600160205260408120805463ffffffff8a16929061132a5761132a6133b2565b5f9182526020909120015463ffffffff1611156113d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a4016105fe565b60ff81165f90815260016020526040812054905b818110156114965760ff83165f90815260016020819052604090912063ffffffff8b16916114178486613465565b6114219190613465565b81548110611431576114316133b2565b5f9182526020909120015463ffffffff161161148e5760016114538284613465565b61145d9190613465565b85858151811061146f5761146f6133b2565b602002602001019063ffffffff16908163ffffffff1681525050611496565b6001016113e9565b505050600101611249565b5090505b9392505050565b6004602052815f5260405f2081815481106114c5575f80fd5b5f918252602090912001546001600160a01b03169150829050565b604080516060810182525f80825260208083018290528284018290528582526002815283822060ff88168352905291909120805483908110611524576115246133b2565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106115ac576115ac6133b2565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182525f808252602080830182905282840182905260ff861682526001905291909120805483908110611629576116296133b2565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fa919061331b565b6001600160a01b0316336001600160a01b03161461172a5760405162461bcd60e51b81526004016105fe90613336565b816117458160ff165f90815260016020526040902054151590565b6117615760405162461bcd60e51b81526004016105fe906132ca565b61176b8383612371565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117b85760405162461bcd60e51b81526004016105fe906133df565b5f5b81811015611887575f8383838181106117d5576117d56133b2565b919091013560f81c5f81815260016020526040902054909250151590506118645760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016105fe565b5f61187086835f611f87565b905061187c8282612200565b5050506001016117ba565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190d919061331b565b6001600160a01b0316336001600160a01b03161461193d5760405162461bcd60e51b81526004016105fe90613336565b816119588160ff165f90815260016020526040902054151590565b6119745760405162461bcd60e51b81526004016105fe906132ca565b61176b83836123d9565b60ff83165f9081526001602052604081208054829190849081106119a4576119a46133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610c9b81856127f6565b60ff81165f908152600160208190526040822080549091611a1a91613465565b81548110611a2a57611a2a6133b2565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a5784848461296f565b949350505050565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611a8f57611a8f6133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611ae581866127f6565b6040015195945050505050565b60408051606080820183525f80835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611b4e579150610c899050565b5f85815260026020908152604080832060ff881684529091529020611b74600184613465565b81548110611b8457611b846133b2565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610c89915050565b5f83815260026020908152604080832060ff861684529091528120611bfe85858561296f565b63ffffffff1681548110611c1457611c146133b2565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c7f5760405162461bcd60e51b81526004016105fe906133df565b60ff83165f9081526001602052604090205415611cfc5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b60648201526084016105fe565b611d0683826123d9565b611d108383612371565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b5f5f5f5f611dbc8660ff165f9081526003602052604090205490565b604080518082019091525f808252602082015290915060ff87165f9081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611e2f928c920161348c565b5f60405180830381865afa158015611e49573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e7091908101906134ed565b90505f5b83811015611f545760ff89165f908152600360205260409020805482908110611e9f57611e9f6133b2565b5f9182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611eec57611eec6133b2565b60200260200101511115611f4c57670de0b6b3a764000083602001516001600160601b0316838381518110611f2357611f236133b2565b6020026020010151611f359190613573565b611f3f919061358a565b611f4990866135a9565b94505b600101611e74565b50505060ff86165f90815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b5f83815260026020908152604080832060ff86168452909152812054819080820361204b575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff19909616919092161793909317169190911790556121a6565b5f86815260026020908152604080832060ff891684529091528120612071600184613465565b81548110612081576120816133b2565b5f91825260209091200180546001600160601b03600160401b90910481169450909150851683036120b7575f93505050506114a5565b805463ffffffff4381169116036120ef578054600160401b600160a01b031916600160401b6001600160601b038716021781556121a4565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26121f68285612ad2565b9695505050505050565b60ff82165f90815260016020819052604082208054918391906122239084613465565b81548110612233576122336133b2565b905f5260205f20019050835f0361225e5754600160401b90046001600160601b03169150610c899050565b80545f9061227c90600160401b90046001600160601b031686612ae9565b825490915063ffffffff4381169116036122b7578154600160401b600160a01b031916600160401b6001600160601b03831602178255612368565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b5f81511161243c5760405162461bcd60e51b815260206004820152603860248201525f5160206136495f395f51905f5260448201527f3a206e6f20737472617465676965732070726f7669646564000000000000000060648201526084016105fe565b805160ff83165f908152600360209081526040909120549061245e83836135c8565b11156124cd5760405162461bcd60e51b815260206004820152604560248201525f5160206136495f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a4016105fe565b5f5b828110156127ef575f5b6124e382846135c8565b8110156125b4578482815181106124fc576124fc6133b2565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f208281548110612538576125386133b2565b5f918252602090912001546001600160a01b0316036125ac5760405162461bcd60e51b815260206004820152603d60248201525f5160206136495f395f51905f5260448201527f3a2063616e6e6f74206164642073616d6520737472617465677920327800000060648201526084016105fe565b6001016124d9565b505f8482815181106125c8576125c86133b2565b6020026020010151602001516001600160601b03161161264c5760405162461bcd60e51b815260206004820152604660248201525f5160206136495f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a4016105fe565b60ff85165f9081526003602052604090208451859083908110612671576126716133b2565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106126d5576126d56133b2565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061274b5761274b6133b2565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a758583815181106127a8576127a86133b2565b60200260200101515f01518684815181106127c5576127c56133b2565b6020026020010151602001516040516127df929190612b6c565b60405180910390a26001016124cf565b5050505050565b815f015163ffffffff168163ffffffff16101561289a5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a4016105fe565b602082015163ffffffff1615806128c05750816020015163ffffffff168163ffffffff16105b61296b5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c4016105fe565b5050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612a0d575f86815260026020908152604080832060ff89168452909152902063ffffffff8516906129c1600184613465565b815481106129d1576129d16133b2565b5f9182526020909120015463ffffffff16116129fb576129f2600182613465565b925050506114a5565b80612a05816135db565b91505061298d565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e4016105fe565b5f6114a56001600160601b038085169084166135f0565b5f5f821215612b0c57612afb8261360f565b612b059084613629565b9050610c89565b612b0582846135a9565b803560ff81168114612b26575f5ffd5b919050565b5f60208284031215612b3b575f5ffd5b6114a582612b16565b5f5f60408385031215612b55575f5ffd5b612b5e83612b16565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ba2575f5ffd5b50565b5f5f60408385031215612bb6575f5ffd5b612bbf83612b16565b91506020830135612bcf81612b8e565b809150509250929050565b5f5f83601f840112612bea575f5ffd5b5081356001600160401b03811115612c00575f5ffd5b6020830191508360208260051b8501011115611f80575f5ffd5b5f5f5f5f5f60608688031215612c2e575f5ffd5b612c3786612b16565b945060208601356001600160401b03811115612c51575f5ffd5b612c5d88828901612bda565b90955093505060408601356001600160401b03811115612c7b575f5ffd5b612c8788828901612bda565b969995985093965092949392505050565b5f5f83601f840112612ca8575f5ffd5b5081356001600160401b03811115612cbe575f5ffd5b602083019150836020828501011115611f80575f5ffd5b5f5f5f5f60608587031215612ce8575f5ffd5b8435612cf381612b8e565b93506020850135925060408501356001600160401b03811115612d14575f5ffd5b612d2087828801612c98565b95989497509550505050565b5f8151808452602084019350602083015f5b82811015612d655781516001600160601b0316865260209586019590910190600101612d3e565b5093949350505050565b604081525f612d816040830185612d2c565b82810360208401526123688185612d2c565b5f5f60408385031215612da4575f5ffd5b82359150612db460208401612b16565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015612e2b57612e1583855163ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b6020939093019260609290920191600101612dd6565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612e6c57612e6c612e36565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e9a57612e9a612e36565b604052919050565b5f6001600160401b03821115612eba57612eba612e36565b5060051b60200190565b5f5f60408385031215612ed5575f5ffd5b612ede83612b16565b915060208301356001600160401b03811115612ef8575f5ffd5b8301601f81018513612f08575f5ffd5b8035612f1b612f1682612ea2565b612e72565b8082825260208201915060208360051b850101925087831115612f3c575f5ffd5b6020840193505b82841015612f5e578335825260209384019390910190612f43565b809450505050509250929050565b803563ffffffff81168114612b26575f5ffd5b5f5f5f60408486031215612f91575f5ffd5b612f9a84612f6c565b925060208401356001600160401b03811115612fb4575f5ffd5b612fc086828701612c98565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b81811015612e2b57835163ffffffff16835260209384019390920191600101612fe6565b5f5f5f6060848603121561301c575f5ffd5b61302584612b16565b95602085013595506040909401359392505050565b60608101610c89828463ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b80356001600160601b0381168114612b26575f5ffd5b5f5f6040838503121561309b575f5ffd5b6130a483612b16565b9150612db460208401613074565b5f5f5f604084860312156130c4575f5ffd5b8335925060208401356001600160401b03811115612fb4575f5ffd5b5f82601f8301126130ef575f5ffd5b81356130fd612f1682612ea2565b8082825260208201915060208360061b86010192508583111561311e575f5ffd5b602085015b838110156111f6576040818803121561313a575f5ffd5b613142612e4a565b813561314d81612b8e565b815261315b60208301613074565b602082015280845250602083019250604081019050613123565b5f5f60408385031215613186575f5ffd5b61318f83612b16565b915060208301356001600160401b038111156131a9575f5ffd5b6131b5858286016130e0565b9150509250929050565b5f5f5f606084860312156131d1575f5ffd5b6131da84612b16565b92506131e860208501612f6c565b929592945050506040919091013590565b5f5f5f6060848603121561320b575f5ffd5b8335925061321b60208501612b16565b915061322960408501612f6c565b90509250925092565b5f5f5f5f60808587031215613245575f5ffd5b61324e85612b16565b935061325c60208601612f6c565b93969395505050506040820135916060013590565b5f5f5f60608486031215613283575f5ffd5b61328c84612b16565b925061329a60208501613074565b915060408401356001600160401b038111156132b4575f5ffd5b6132c0868287016130e0565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b5f6020828403121561332b575f5ffd5b81516114a581612b8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156133d6575f5ffd5b6114a582613074565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c8957610c89613451565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b03831681526040602080830182905283549183018290525f84815290812090916060840190835b818110156134e15783546001600160a01b03168352600193840193602090930192016134ba565b50909695505050505050565b5f602082840312156134fd575f5ffd5b81516001600160401b03811115613512575f5ffd5b8201601f81018413613522575f5ffd5b8051613530612f1682612ea2565b8082825260208201915060208360051b850101925086831115613551575f5ffd5b6020840193505b828410156121f6578351825260209384019390910190613558565b8082028115828204841417610c8957610c89613451565b5f826135a457634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610c8957610c89613451565b80820180821115610c8957610c89613451565b5f816135e9576135e9613451565b505f190190565b8181035f83128015838313168383128216171561061757610617613451565b5f600160ff1b820161362357613623613451565b505f0390565b6001600160601b038281168282160390811115610c8957610c8961345156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220bba538e60ec1d03f94aa3e3fa9bc2a258ca4e97dbd75087844a34b07534a150764736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\xDCW_5`\xE0\x1C\x80c\x9F<\xCFe\x11a\x01\tW\x80c\xC8)LV\x11a\0\x9EW\x80c\xF2\xBE\x94\xAE\x11a\0nW\x80c\xF2\xBE\x94\xAE\x14a\x05=W\x80c\xF8Q\xE1\x98\x14a\x05PW\x80c\xFA(\xC6'\x14a\x05cW\x80c\xFFiJw\x14a\x05vW__\xFD[\x80c\xC8)LV\x14a\x04\xC8W\x80c\xD5\xEC\xCC\x05\x14a\x04\xDBW\x80c\xDD\x98F\xB9\x14a\x04\xEEW\x80c\xDF\\\xF7#\x14a\x05\x16W__\xFD[\x80c\xBC\x9A@\xC3\x11a\0\xD9W\x80c\xBC\x9A@\xC3\x14a\x04gW\x80c\xBD)\xB8\xCD\x14a\x04zW\x80c\xC4gx\xA5\x14a\x04\x8DW\x80c\xC6\x01R}\x14a\x04\xB5W__\xFD[\x80c\x9F<\xCFe\x14a\x03\xE1W\x80c\xACk\xFB\x03\x14a\x03\xF4W\x80c\xAD\xC8\x04\xDA\x14a\x04\x14W\x80c\xB6\x90Kx\x14a\x04TW__\xFD[\x80cK\xD2n\t\x11a\x01\x7FW\x80cf\xAC\xFE\xFE\x11a\x01OW\x80cf\xAC\xFE\xFE\x14a\x03=W\x80cm\x14\xA9\x87\x14a\x03hW\x80c|\x17#G\x14a\x03\xA7W\x80c\x81\xC0u\x02\x14a\x03\xC1W__\xFD[\x80cK\xD2n\t\x14a\x02\xD9W\x80cT\x01\xED'\x14a\x03\x08W\x80c^Zgu\x14a\x03\x1BW\x80c_\x1F-w\x14a\x03*W__\xFD[\x80c \xB6b\x98\x11a\x01\xBAW\x80c \xB6b\x98\x14a\x02aW\x80c%PGw\x14a\x02vW\x80c,\xD9Y@\x14a\x02\x97W\x80c<\xA5\xA5\xF5\x14a\x02\xB7W__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xE0W\x80c\x08s$a\x14a\x02\x15W\x80c\x1F\x9Bt\xE0\x14a\x026W[__\xFD[a\x02\x02a\x01\xEE6`\x04a++V[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02(a\x02#6`\x04a+DV[a\x05\x89V[`@Qa\x02\x0C\x92\x91\x90a+lV[a\x02Ia\x02D6`\x04a+\xA5V[a\x05\xCEV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x02ta\x02o6`\x04a,\x1AV[a\x06\x1EV[\0[a\x02\x89a\x02\x846`\x04a,\xD5V[a\t=V[`@Qa\x02\x0C\x92\x91\x90a-oV[a\x02\xAAa\x02\xA56`\x04a-\x93V[a\x0B\xF2V[`@Qa\x02\x0C\x91\x90a-\xBDV[a\x02\x02a\x02\xC56`\x04a++V[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\x02a\x02\xE76`\x04a-\x93V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ia\x03\x166`\x04a-\x93V[a\x0C\x8FV[a\x02\x02g\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02ta\x0386`\x04a.\xC4V[a\x0C\xA7V[a\x03Pa\x03K6`\x04a,\xD5V[a\x10\xAAV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\x8F\x7F\0\0\0\0\0\0\0\0\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\x0CV[a\x03\xAF` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\xD4a\x03\xCF6`\x04a/\x7FV[a\x12\0V[`@Qa\x02\x0C\x91\x90a/\xCDV[a\x03\x8Fa\x03\xEF6`\x04a+DV[a\x14\xACV[a\x04\x07a\x04\x026`\x04a0\nV[a\x14\xE0V[`@Qa\x02\x0C\x91\x90a0:V[a\x04'a\x04\"6`\x04a+DV[a\x15vV[`@\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\x0CV[a\x04\x07a\x04b6`\x04a+DV[a\x15\xEDV[a\x02ta\x04u6`\x04a0\x8AV[a\x16zV[a\x02ta\x04\x886`\x04a0\xB2V[a\x17pV[a\x02Ia\x04\x9B6`\x04a++V[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02ta\x04\xC36`\x04a1uV[a\x18\x8DV[a\x02Ia\x04\xD66`\x04a1\xBFV[a\x19~V[a\x02Ia\x04\xE96`\x04a++V[a\x19\xFAV[a\x05\x01a\x04\xFC6`\x04a1\xF9V[a\x1AKV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x0CV[a\x03\x8F\x7F\0\0\0\0\0\0\0\0\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\x02Ia\x05K6`\x04a22V[a\x1A_V[a\x04\x07a\x05^6`\x04a-\x93V[a\x1A\xF2V[a\x02Ia\x05q6`\x04a1\xF9V[a\x1B\xD8V[a\x02ta\x05\x846`\x04a2qV[a\x1C7V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x05\xA2W_\x80\xFD[_\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[`\xFF\x82\x16_\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[`@Q\x80\x91\x03\x90\xFD[_a\x06\x12\x85\x85a\x1D\xA0V[P\x92PP[P\x92\x91PPV[\x7F\0\0\0\0\0\0\0\0\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\x06zW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x9E\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x84a\x06\xE9\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[\x83\x80a\x07{W`@\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\x01a\x05\xFEV[\x82\x81\x14a\x07\xF0W`@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\x05\xFEV[`\xFF\x87\x16_\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\t2W\x85\x85\x82\x81\x81\x10a\x08\x1DWa\x08\x1Da3\xB2V[\x90P` \x02\x01` \x81\x01\x90a\x082\x91\x90a3\xC6V[\x82\x89\x89\x84\x81\x81\x10a\x08EWa\x08Ea3\xB2V[\x90P` \x02\x015\x81T\x81\x10a\x08\\Wa\x08\\a3\xB2V[\x90_R` _ \x01_\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\x08\xC2Wa\x08\xC2a3\xB2V[\x90P` \x02\x015\x81T\x81\x10a\x08\xD9Wa\x08\xD9a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\xFFWa\x08\xFFa3\xB2V[\x90P` \x02\x01` \x81\x01\x90a\t\x14\x91\x90a3\xC6V[`@Qa\t\"\x92\x91\x90a+lV[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x08\x03V[PPPPPPPPPV[``\x803`\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\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA1Wa\t\xA1a.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xCAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE6Wa\t\xE6a.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x0FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\x0B\xE4W_\x87\x87\x83\x81\x81\x10a\n/Wa\n/a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x05\xFEV[__a\n\xC2\x83\x8Da\x1D\xA0V[\x91P\x91P\x80a\x0B_W`@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\x05\xFEV[_a\x0Bk\x8C\x85\x85a\x1F\x87V[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\x80Wa\x0B\x80a3\xB2V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xAA\x84\x82a\"\0V[\x86\x86\x81Q\x81\x10a\x0B\xBCWa\x0B\xBCa3\xB2V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\n\x14\x90PV[P\x90\x97\x90\x96P\x94PPPPPV[_\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\x0C\x82W_\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\x0C*V[PPPP\x90P[\x92\x91PPV[__a\x0C\x9B\x84\x84a\x1A\xF2V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\r\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r'\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rWW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\rr\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[\x81Q\x80a\x0E\x03W`@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\x05\xFEV[`\xFF\x84\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xA1W\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\x0EaWa\x0Eaa3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0EyWa\x0Eya3\xB2V[_\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\x0E\xD6Wa\x0E\xD6a3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xEEWa\x0E\xEEa3\xB2V[_\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\x0F-\x90`\x01\x90a4eV[\x81T\x81\x10a\x0F=Wa\x0F=a3\xB2V[\x90_R` _ \x01\x83\x87\x83\x81Q\x81\x10a\x0FXWa\x0FXa3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x0FpWa\x0Fpa3\xB2V[_\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\x0F\xC2Wa\x0F\xC2a4xV[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x0F\xE8\x90`\x01\x90a4eV[\x81T\x81\x10a\x0F\xF8Wa\x0F\xF8a3\xB2V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10&Wa\x10&a3\xB2V[` \x02` \x01\x01Q\x81T\x81\x10a\x10>Wa\x10>a3\xB2V[\x90_R` _ \x01_a\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\x10yWa\x10ya4xV[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0E!V[PPPPPPPV[_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\xF3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_\x80[\x83\x81\x10\x15a\x11\xF6W_\x85\x85\x83\x81\x81\x10a\x11\x11Wa\x11\x11a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x05\xFEV[__a\x11\xAC\x83\x8Ba\x1D\xA0V[\x91P\x91P\x80a\x11\xCDW_\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[_a\x11\xD9\x8A\x85\x85a\x1F\x87V[\x90Pa\x11\xE5\x84\x82a\"\0V[PP`\x01\x90\x93\x01\x92Pa\x10\xF6\x91PPV[P\x95\x94PPPPPV[``_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\x1BWa\x12\x1Ba.6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x14\xA1W_\x85\x85\x83\x81\x81\x10a\x12dWa\x12da3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x05\xFEV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13*Wa\x13*a3\xB2V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x13\xD5W`@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\x05\xFEV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x14\x96W`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14\x17\x84\x86a4eV[a\x14!\x91\x90a4eV[\x81T\x81\x10a\x141Wa\x141a3\xB2V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\x8EW`\x01a\x14S\x82\x84a4eV[a\x14]\x91\x90a4eV[\x85\x85\x81Q\x81\x10a\x14oWa\x14oa3\xB2V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x14\x96V[`\x01\x01a\x13\xE9V[PPP`\x01\x01a\x12IV[P\x90P[\x93\x92PPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x14\xC5W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R_\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\x15$Wa\x15$a3\xB2V[_\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_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x15\xACWa\x15\xACa3\xB2V[_\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_\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\x16)Wa\x16)a3\xB2V[_\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[\x7F\0\0\0\0\0\0\0\0\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\x16\xD6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xFA\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\x17E\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17aW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[a\x17k\x83\x83a#qV[PPPV[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\x17\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[_[\x81\x81\x10\x15a\x18\x87W_\x83\x83\x83\x81\x81\x10a\x17\xD5Wa\x17\xD5a3\xB2V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x05\xFEV[_a\x18p\x86\x83_a\x1F\x87V[\x90Pa\x18|\x82\x82a\"\0V[PPP`\x01\x01a\x17\xBAV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x18\xE9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\r\x91\x90a3\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19=W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a36V[\x81a\x19X\x81`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x19tW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a2\xCAV[a\x17k\x83\x83a#\xD9V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x19\xA4Wa\x19\xA4a3\xB2V[_\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\x0C\x9B\x81\x85a'\xF6V[`\xFF\x81\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\x1A\x91a4eV[\x81T\x81\x10a\x1A*Wa\x1A*a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1AW\x84\x84\x84a)oV[\x94\x93PPPPV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\x8FWa\x1A\x8Fa3\xB2V[_\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\x1A\xE5\x81\x86a'\xF6V[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R_\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\x01\x81\x90R\x91\x92\x91\x82\x90\x03a\x1BNW\x91Pa\x0C\x89\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1Bt`\x01\x84a4eV[\x81T\x81\x10a\x1B\x84Wa\x1B\x84a3\xB2V[_\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\x0C\x89\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1B\xFE\x85\x85\x85a)oV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\x14Wa\x1C\x14a3\xB2V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1C\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\xFE\x90a3\xDFV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x1C\xFCW`@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\x05\xFEV[a\x1D\x06\x83\x82a#\xD9V[a\x1D\x10\x83\x83a#qV[PP`\xFF\x16_\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[____a\x1D\xBC\x86`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90\x91P`\xFF\x87\x16_\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\x1E/\x92\x8C\x92\x01a4\x8CV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EIW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1Ep\x91\x90\x81\x01\x90a4\xEDV[\x90P_[\x83\x81\x10\x15a\x1FTW`\xFF\x89\x16_\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1E\x9FWa\x1E\x9Fa3\xB2V[_\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\x1E\xECWa\x1E\xECa3\xB2V[` \x02` \x01\x01Q\x11\x15a\x1FLWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F#Wa\x1F#a3\xB2V[` \x02` \x01\x01Qa\x1F5\x91\x90a5sV[a\x1F?\x91\x90a5\x8AV[a\x1FI\x90\x86a5\xA9V[\x94P[`\x01\x01a\x1EtV[PPP`\xFF\x86\x16_\x90\x81R` \x81\x90R`@\x90 T\x91\x93PP`\x01`\x01``\x1B\x03\x90\x81\x16\x90\x83\x16\x10\x15\x90P[\x92P\x92\x90PV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80\x82\x03a KW_\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!\xA6V[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a q`\x01\x84a4eV[\x81T\x81\x10a \x81Wa \x81a3\xB2V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a \xB7W_\x93PPPPa\x14\xA5V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a \xEFW\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua!\xA4V[\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_\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!\xF6\x82\x85a*\xD2V[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"#\x90\x84a4eV[\x81T\x81\x10a\"3Wa\"3a3\xB2V[\x90_R` _ \x01\x90P\x83_\x03a\"^WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\x89\x90PV[\x80T_\x90a\"|\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a*\xE9V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\"\xB7W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua#hV[\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_\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_\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[_\x81Q\x11a$V[P\x93\x94\x93PPPPV[`@\x81R_a-\x81`@\x83\x01\x85a-,V[\x82\x81\x03` \x84\x01Ra#h\x81\x85a-,V[__`@\x83\x85\x03\x12\x15a-\xA4W__\xFD[\x825\x91Pa-\xB4` \x84\x01a+\x16V[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a.+Wa.\x15\x83\x85Qc\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a-\xD6V[P\x90\x95\x94PPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.lWa.la.6V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x9AWa.\x9Aa.6V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a.\xBAWa.\xBAa.6V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a.\xD5W__\xFD[a.\xDE\x83a+\x16V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\x08W__\xFD[\x805a/\x1Ba/\x16\x82a.\xA2V[a.rV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a/?\xA9\xBC*%\x8C\xA4\xE9}\xBDu\x08xD\xA3K\x07SJ\x15\x07dsolcC\0\x08\x1B\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinimumStakeForQuorumUpdated { #[allow(missing_docs)] @@ -1598,7 +1623,12 @@ pub mod StakeRegistry { #[allow(missing_docs)] pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1689,7 +1719,12 @@ pub mod StakeRegistry { ```solidity event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorStakeUpdate { #[allow(missing_docs)] @@ -1699,7 +1734,12 @@ pub mod StakeRegistry { #[allow(missing_docs)] pub stake: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1797,13 +1837,23 @@ pub mod StakeRegistry { ```solidity event QuorumCreated(uint8 indexed quorumNumber); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumCreated { #[allow(missing_docs)] pub quorumNumber: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1889,7 +1939,12 @@ pub mod StakeRegistry { ```solidity event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyAddedToQuorum { #[allow(missing_docs)] @@ -1897,7 +1952,12 @@ pub mod StakeRegistry { #[allow(missing_docs)] pub strategy: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1988,7 +2048,12 @@ pub mod StakeRegistry { ```solidity event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyMultiplierUpdated { #[allow(missing_docs)] @@ -1998,7 +2063,12 @@ pub mod StakeRegistry { #[allow(missing_docs)] pub multiplier: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2096,7 +2166,12 @@ pub mod StakeRegistry { ```solidity event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyRemovedFromQuorum { #[allow(missing_docs)] @@ -2104,7 +2179,12 @@ pub mod StakeRegistry { #[allow(missing_docs)] pub strategy: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2195,7 +2275,7 @@ pub mod StakeRegistry { ```solidity constructor(address _registryCoordinator, address _delegationManager); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _registryCoordinator: alloy::sol_types::private::Address, @@ -2271,16 +2351,21 @@ pub mod StakeRegistry { ```solidity function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn { pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2376,16 +2461,21 @@ pub mod StakeRegistry { ```solidity function WEIGHTING_DIVISOR() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2481,7 +2571,7 @@ pub mod StakeRegistry { ```solidity function addStrategies(uint8 quorumNumber, IStakeRegistry.StrategyParams[] memory _strategyParams) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesCall { pub quorumNumber: u8, @@ -2490,10 +2580,15 @@ pub mod StakeRegistry { >, } ///Container type for the return parameters of the [`addStrategies(uint8,(address,uint96)[])`](addStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2610,16 +2705,21 @@ pub mod StakeRegistry { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2715,17 +2815,22 @@ pub mod StakeRegistry { ```solidity function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2840,19 +2945,24 @@ pub mod StakeRegistry { ```solidity function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2964,18 +3074,23 @@ pub mod StakeRegistry { ```solidity function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentTotalStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3077,19 +3192,24 @@ pub mod StakeRegistry { ```solidity function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestStakeUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3202,7 +3322,7 @@ pub mod StakeRegistry { ```solidity function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -3210,12 +3330,17 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3333,7 +3458,7 @@ pub mod StakeRegistry { ```solidity function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberAndIndexCall { pub quorumNumber: u8, @@ -3342,12 +3467,17 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberAndIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3482,21 +3612,26 @@ pub mod StakeRegistry { ```solidity function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeHistoryReturn { pub _0: alloy::sol_types::private::Vec< ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3614,19 +3749,24 @@ pub mod StakeRegistry { ```solidity function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeHistoryLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3738,7 +3878,7 @@ pub mod StakeRegistry { ```solidity function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateAtIndexCall { pub quorumNumber: u8, @@ -3746,12 +3886,17 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3874,7 +4019,7 @@ pub mod StakeRegistry { ```solidity function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateIndexAtBlockNumberCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -3882,12 +4027,17 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateIndexAtBlockNumberReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4006,7 +4156,7 @@ pub mod StakeRegistry { ```solidity function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeAtBlockNumberFromIndexCall { pub quorumNumber: u8, @@ -4014,12 +4164,17 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeAtBlockNumberFromIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4142,18 +4297,23 @@ pub mod StakeRegistry { ```solidity function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeHistoryLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4255,19 +4415,24 @@ pub mod StakeRegistry { ```solidity function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4381,19 +4546,24 @@ pub mod StakeRegistry { ```solidity function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4507,7 +4677,7 @@ pub mod StakeRegistry { ```solidity function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory _strategyParams) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumCall { pub quorumNumber: u8, @@ -4517,10 +4687,15 @@ pub mod StakeRegistry { >, } ///Container type for the return parameters of the [`initializeQuorum(uint8,uint96,(address,uint96)[])`](initializeQuorumCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4648,18 +4823,23 @@ pub mod StakeRegistry { ```solidity function minimumStakeForQuorum(uint8) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumStakeForQuorumReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4759,7 +4939,7 @@ pub mod StakeRegistry { ```solidity function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct modifyStrategyParamsCall { pub quorumNumber: u8, @@ -4769,10 +4949,15 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct modifyStrategyParamsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4900,7 +5085,7 @@ pub mod StakeRegistry { ```solidity function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorCall { pub operator: alloy::sol_types::private::Address, @@ -4908,13 +5093,18 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5048,16 +5238,21 @@ pub mod StakeRegistry { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5153,7 +5348,7 @@ pub mod StakeRegistry { ```solidity function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeStrategiesCall { pub quorumNumber: u8, @@ -5161,10 +5356,15 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeStrategiesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5281,17 +5481,22 @@ pub mod StakeRegistry { ```solidity function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setMinimumStakeForQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5404,19 +5609,24 @@ pub mod StakeRegistry { ```solidity function strategiesPerQuorum(uint8, uint256) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategiesPerQuorumReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5529,20 +5739,25 @@ pub mod StakeRegistry { ```solidity function strategyParams(uint8, uint256) external view returns (address strategy, uint96 multiplier); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5667,19 +5882,24 @@ pub mod StakeRegistry { ```solidity function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StrategyParams memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyParamsByIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5793,18 +6013,23 @@ pub mod StakeRegistry { ```solidity function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyParamsLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5906,7 +6131,7 @@ pub mod StakeRegistry { ```solidity function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorStakeCall { pub operator: alloy::sol_types::private::Address, @@ -5914,12 +6139,17 @@ pub mod StakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6041,19 +6271,24 @@ pub mod StakeRegistry { ```solidity function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct weightOfOperatorForQuorumReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/stakeregistrystorage.rs b/crates/utils/src/deploy/stakeregistrystorage.rs similarity index 96% rename from crates/utils/src/stakeregistrystorage.rs rename to crates/utils/src/deploy/stakeregistrystorage.rs index 489fa6e9..8955d686 100644 --- a/crates/utils/src/stakeregistrystorage.rs +++ b/crates/utils/src/deploy/stakeregistrystorage.rs @@ -7,21 +7,31 @@ library IStakeRegistry { struct StrategyParams { address strategy; uint96 multiplier; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -236,13 +246,18 @@ pub mod IStakeRegistry { /**```solidity struct StrategyParams { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1500,7 +1515,12 @@ interface StakeRegistryStorage { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod StakeRegistryStorage { use super::*; use alloy::sol_types as alloy_sol_types; @@ -1528,7 +1548,12 @@ pub mod StakeRegistryStorage { ```solidity event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinimumStakeForQuorumUpdated { #[allow(missing_docs)] @@ -1536,7 +1561,12 @@ pub mod StakeRegistryStorage { #[allow(missing_docs)] pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1627,7 +1657,12 @@ pub mod StakeRegistryStorage { ```solidity event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorStakeUpdate { #[allow(missing_docs)] @@ -1637,7 +1672,12 @@ pub mod StakeRegistryStorage { #[allow(missing_docs)] pub stake: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1735,13 +1775,23 @@ pub mod StakeRegistryStorage { ```solidity event QuorumCreated(uint8 indexed quorumNumber); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumCreated { #[allow(missing_docs)] pub quorumNumber: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1827,7 +1877,12 @@ pub mod StakeRegistryStorage { ```solidity event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyAddedToQuorum { #[allow(missing_docs)] @@ -1835,7 +1890,12 @@ pub mod StakeRegistryStorage { #[allow(missing_docs)] pub strategy: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1926,7 +1986,12 @@ pub mod StakeRegistryStorage { ```solidity event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyMultiplierUpdated { #[allow(missing_docs)] @@ -1936,7 +2001,12 @@ pub mod StakeRegistryStorage { #[allow(missing_docs)] pub multiplier: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2034,7 +2104,12 @@ pub mod StakeRegistryStorage { ```solidity event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyRemovedFromQuorum { #[allow(missing_docs)] @@ -2042,7 +2117,12 @@ pub mod StakeRegistryStorage { #[allow(missing_docs)] pub strategy: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2133,16 +2213,21 @@ pub mod StakeRegistryStorage { ```solidity function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn { pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2238,16 +2323,21 @@ pub mod StakeRegistryStorage { ```solidity function WEIGHTING_DIVISOR() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2343,7 +2433,7 @@ pub mod StakeRegistryStorage { ```solidity function addStrategies(uint8 quorumNumber, IStakeRegistry.StrategyParams[] memory strategyParams) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesCall { pub quorumNumber: u8, @@ -2352,10 +2442,15 @@ pub mod StakeRegistryStorage { >, } ///Container type for the return parameters of the [`addStrategies(uint8,(address,uint96)[])`](addStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2472,16 +2567,21 @@ pub mod StakeRegistryStorage { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2577,17 +2677,22 @@ pub mod StakeRegistryStorage { ```solidity function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2702,19 +2807,24 @@ pub mod StakeRegistryStorage { ```solidity function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2826,18 +2936,23 @@ pub mod StakeRegistryStorage { ```solidity function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentTotalStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2939,19 +3054,24 @@ pub mod StakeRegistryStorage { ```solidity function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestStakeUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3064,7 +3184,7 @@ pub mod StakeRegistryStorage { ```solidity function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -3072,12 +3192,17 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3195,7 +3320,7 @@ pub mod StakeRegistryStorage { ```solidity function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberAndIndexCall { pub quorumNumber: u8, @@ -3204,12 +3329,17 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeAtBlockNumberAndIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3344,21 +3474,26 @@ pub mod StakeRegistryStorage { ```solidity function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeHistoryReturn { pub _0: alloy::sol_types::private::Vec< ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3476,7 +3611,7 @@ pub mod StakeRegistryStorage { ```solidity function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateAtIndexCall { pub quorumNumber: u8, @@ -3484,12 +3619,17 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3612,7 +3752,7 @@ pub mod StakeRegistryStorage { ```solidity function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateIndexAtBlockNumberCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -3620,12 +3760,17 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getStakeUpdateIndexAtBlockNumberReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3744,7 +3889,7 @@ pub mod StakeRegistryStorage { ```solidity function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeAtBlockNumberFromIndexCall { pub quorumNumber: u8, @@ -3752,12 +3897,17 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeAtBlockNumberFromIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3880,18 +4030,23 @@ pub mod StakeRegistryStorage { ```solidity function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeHistoryLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3993,19 +4148,24 @@ pub mod StakeRegistryStorage { ```solidity function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4119,19 +4279,24 @@ pub mod StakeRegistryStorage { ```solidity function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTotalStakeUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4245,7 +4410,7 @@ pub mod StakeRegistryStorage { ```solidity function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory strategyParams) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumCall { pub quorumNumber: u8, @@ -4255,10 +4420,15 @@ pub mod StakeRegistryStorage { >, } ///Container type for the return parameters of the [`initializeQuorum(uint8,uint96,(address,uint96)[])`](initializeQuorumCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4382,18 +4552,23 @@ pub mod StakeRegistryStorage { ```solidity function minimumStakeForQuorum(uint8) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumStakeForQuorumReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4493,7 +4668,7 @@ pub mod StakeRegistryStorage { ```solidity function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct modifyStrategyParamsCall { pub quorumNumber: u8, @@ -4503,10 +4678,15 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct modifyStrategyParamsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4634,7 +4814,7 @@ pub mod StakeRegistryStorage { ```solidity function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorCall { pub operator: alloy::sol_types::private::Address, @@ -4642,13 +4822,18 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4782,16 +4967,21 @@ pub mod StakeRegistryStorage { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4887,7 +5077,7 @@ pub mod StakeRegistryStorage { ```solidity function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeStrategiesCall { pub quorumNumber: u8, @@ -4895,10 +5085,15 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeStrategiesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5015,19 +5210,24 @@ pub mod StakeRegistryStorage { ```solidity function strategiesPerQuorum(uint8, uint256) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategiesPerQuorumReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5140,20 +5340,25 @@ pub mod StakeRegistryStorage { ```solidity function strategyParams(uint8, uint256) external view returns (address strategy, uint96 multiplier); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5278,19 +5483,24 @@ pub mod StakeRegistryStorage { ```solidity function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StrategyParams memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyParamsByIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5404,18 +5614,23 @@ pub mod StakeRegistryStorage { ```solidity function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyParamsLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5517,7 +5732,7 @@ pub mod StakeRegistryStorage { ```solidity function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorStakeCall { pub operator: alloy::sol_types::private::Address, @@ -5525,12 +5740,17 @@ pub mod StakeRegistryStorage { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorStakeReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5652,19 +5872,24 @@ pub mod StakeRegistryStorage { ```solidity function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct weightOfOperatorForQuorumReturn { pub _0: alloy::sol_types::private::primitives::aliases::U96, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/deploy/storageslot.rs b/crates/utils/src/deploy/storageslot.rs new file mode 100644 index 00000000..ad6d0fc4 --- /dev/null +++ b/crates/utils/src/deploy/storageslot.rs @@ -0,0 +1,224 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod StorageSlot { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e3e52f4e06448ef9387599a86325f1359c680e5da9f7bb769856404a4772ef3264736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 \xE3\xE5/N\x06D\x8E\xF98u\x99\xA8c%\xF15\x9Ch\x0E]\xA9\xF7\xBBv\x98V@JGr\xEF2dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e3e52f4e06448ef9387599a86325f1359c680e5da9f7bb769856404a4772ef3264736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 \xE3\xE5/N\x06D\x8E\xF98u\x99\xA8c%\xF15\x9Ch\x0E]\xA9\xF7\xBBv\x98V@JGr\xEF2dsolcC\0\x08\x1B\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/deploy/strategybase.rs b/crates/utils/src/deploy/strategybase.rs new file mode 100644 index 00000000..0179d649 --- /dev/null +++ b/crates/utils/src/deploy/strategybase.rs @@ -0,0 +1,4702 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StrategyBase { + event ExchangeRateEmitted(uint256 rate); + event Initialized(uint8 version); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event StrategyTokenSet(address token, uint8 decimals); + 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": "ExchangeRateEmitted", + "inputs": [ + { + "name": "rate", + "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": "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": "StrategyTokenSet", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "decimals", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "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::pub_underscore_fields, + clippy::style +)] +pub mod StrategyBase { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561000f575f5ffd5b506040516119fe3803806119fe83398101604081905261002e91610106565b6001600160a01b038116608052610043610049565b50610133565b5f54610100900460ff16156100b45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161015610104575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610116575f5ffd5b81516001600160a01b038116811461012c575f5ffd5b9392505050565b60805161189e6101605f395f818161019301528181610561015281816109d50152610a9d015261189e5ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c80635c975abb116100b4578063ab5921e111610079578063ab5921e114610295578063ce7c2ac2146102aa578063d9caed12146102bd578063e3dae51c146102d0578063f3e73875146102e3578063fabc1cbc146102f6575f5ffd5b80635c975abb1461023c5780637a8b263714610244578063886f1195146102575780638c8710191461026f5780638f6a624014610282575f5ffd5b806347e7ef24116100fa57806347e7ef24146101cc578063485cc955146101df578063553ca5f8146101f2578063595c6a67146102055780635ac86ab71461020d575f5ffd5b806310d67a2f14610136578063136439dd1461014b5780632495a5991461015e57806339b70e381461018e5780633a98ef39146101b5575b5f5ffd5b610149610144366004611568565b610309565b005b610149610159366004611583565b6103c2565b603254610171906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101717f000000000000000000000000000000000000000000000000000000000000000081565b6101be60335481565b604051908152602001610185565b6101be6101da36600461159a565b610503565b6101496101ed3660046115c4565b610744565b6101be610200366004611568565b610853565b610149610866565b61022c61021b366004611609565b6001805460ff9092161b9081161490565b6040519015158152602001610185565b6001546101be565b6101be610252366004611583565b61092e565b5f54610171906201000090046001600160a01b031681565b6101be61027d366004611583565b610977565b6101be610290366004611568565b610981565b61029d61098e565b6040516101859190611624565b6101be6102b8366004611568565b6109ae565b6101496102cb366004611659565b610a40565b6101be6102de366004611583565b610c22565b6101be6102f1366004611583565b610c59565b610149610304366004611583565b610c63565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610359573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037d9190611697565b6001600160a01b0316336001600160a01b0316146103b65760405162461bcd60e51b81526004016103ad906116b2565b60405180910390fd5b6103bf81610dbc565b50565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561040c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043091906116fc565b61044c5760405162461bcd60e51b81526004016103ad9061171b565b600154818116146104c55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103ad565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180545f9182918116036105565760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103ad565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105ce5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103ad565b6105d88484610ebf565b6033545f6105e86103e883611777565b90505f6103e86105f6610f3f565b6106009190611777565b90505f61060d878361178a565b90508061061a848961179d565b61062491906117b4565b9550855f0361068c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103ad565b6106968685611777565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107205760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103ad565b610739826103e86033546107349190611777565b610fae565b505050505092915050565b5f54610100900460ff161580801561076257505f54600160ff909116105b8061077b5750303b15801561077b57505f5460ff166001145b6107de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ad565b5f805460ff1916600117905580156107ff575f805461ff0019166101001790555b6108098383611002565b801561084e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f610860610252836109ae565b92915050565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d491906116fc565b6108f05760405162461bcd60e51b81526004016103ad9061171b565b5f19600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b5f5f6103e86033546109409190611777565b90505f6103e861094e610f3f565b6109589190611777565b905081610965858361179d565b61096f91906117b4565b949350505050565b5f61086082610c22565b5f6108606102f1836109ae565b60606040518060800160405280604d815260200161181c604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a1c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086091906117d3565b60018054600290811603610a925760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103ad565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b0a5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103ad565b610b15848484611148565b60335480831115610ba45760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103ad565b5f610bb16103e883611777565b90505f6103e8610bbf610f3f565b610bc99190611777565b90505f82610bd7878461179d565b610be191906117b4565b9050610bed868561178a565b603355610c0d610bfd828461178a565b6103e86033546107349190611777565b610c188888836111cb565b5050505050505050565b5f5f6103e8603354610c349190611777565b90505f6103e8610c42610f3f565b610c4c9190611777565b905080610965838661179d565b5f6108608261092e565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd79190611697565b6001600160a01b0316336001600160a01b031614610d075760405162461bcd60e51b81526004016103ad906116b2565b600154198119600154191614610d855760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103ad565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016104f8565b6001600160a01b038116610e4a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103ad565b5f54604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a15f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f3b5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103ad565b5050565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa991906117d3565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610fe284670de0b6b3a764000061179d565b610fec91906117b4565b6040519081526020015b60405180910390a15050565b5f54610100900460ff1661106c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ad565b603280546001600160a01b0319166001600160a01b038416179055611091815f6111df565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611103573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112791906117ea565b604080516001600160a01b03909316835260ff909116602083015201610ff6565b6032546001600160a01b0383811691161461084e5760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103ad565b61084e6001600160a01b03831684836112ca565b5f546201000090046001600160a01b031615801561120557506001600160a01b03821615155b6112875760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103ad565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f3b82610dbc565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261084e928692915f916113599185169084906113d6565b80519091501561084e578080602001905181019061137791906116fc565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103ad565b60606113e484845f856113ee565b90505b9392505050565b60608247101561144f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103ad565b6001600160a01b0385163b6114a65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ad565b5f5f866001600160a01b031685876040516114c19190611805565b5f6040518083038185875af1925050503d805f81146114fb576040519150601f19603f3d011682016040523d82523d5f602084013e611500565b606091505b509150915061151082828661151b565b979650505050505050565b6060831561152a5750816113e7565b82511561153a5782518084602001fd5b8160405162461bcd60e51b81526004016103ad9190611624565b6001600160a01b03811681146103bf575f5ffd5b5f60208284031215611578575f5ffd5b81356113e781611554565b5f60208284031215611593575f5ffd5b5035919050565b5f5f604083850312156115ab575f5ffd5b82356115b681611554565b946020939093013593505050565b5f5f604083850312156115d5575f5ffd5b82356115e081611554565b915060208301356115f081611554565b809150509250929050565b60ff811681146103bf575f5ffd5b5f60208284031215611619575f5ffd5b81356113e7816115fb565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f6060848603121561166b575f5ffd5b833561167681611554565b9250602084013561168681611554565b929592945050506040919091013590565b5f602082840312156116a7575f5ffd5b81516113e781611554565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b5f6020828403121561170c575f5ffd5b815180151581146113e7575f5ffd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561086057610860611763565b8181038181111561086057610860611763565b808202811582820484141761086057610860611763565b5f826117ce57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156117e3575f5ffd5b5051919050565b5f602082840312156117fa575f5ffd5b81516113e7816115fb565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220655ed2011f42f57bb42dd9c127949b545f1e220aa320de13ef7f7d428a2c23b664736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`@Qa\x19\xFE8\x03\x80a\x19\xFE\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x06V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80Ra\0Ca\0IV[Pa\x013V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB4W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x01\x04W_\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[_` \x82\x84\x03\x12\x15a\x01\x16W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01,W__\xFD[\x93\x92PPPV[`\x80Qa\x18\x9Ea\x01`_9_\x81\x81a\x01\x93\x01R\x81\x81a\x05a\x01R\x81\x81a\t\xD5\x01Ra\n\x9D\x01Ra\x18\x9E_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x012W_5`\xE0\x1C\x80c\\\x97Z\xBB\x11a\0\xB4W\x80c\xABY!\xE1\x11a\0yW\x80c\xABY!\xE1\x14a\x02\x95W\x80c\xCE|*\xC2\x14a\x02\xAAW\x80c\xD9\xCA\xED\x12\x14a\x02\xBDW\x80c\xE3\xDA\xE5\x1C\x14a\x02\xD0W\x80c\xF3\xE78u\x14a\x02\xE3W\x80c\xFA\xBC\x1C\xBC\x14a\x02\xF6W__\xFD[\x80c\\\x97Z\xBB\x14a\x02=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03}\x91\x90a\x16\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x03\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x90a\x16\xB2V[`@Q\x80\x91\x03\x90\xFD[a\x03\xBF\x81a\r\xBCV[PV[_T`@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\x0CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x040\x91\x90a\x16\xFCV[a\x04LW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x90a\x17\x1BV[`\x01T\x81\x81\x16\x14a\x04\xC5W`@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\xADV[`\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_\x91\x82\x91\x81\x16\x03a\x05VW`@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\xADV[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\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xADV[a\x05\xD8\x84\x84a\x0E\xBFV[`3T_a\x05\xE8a\x03\xE8\x83a\x17wV[\x90P_a\x03\xE8a\x05\xF6a\x0F?V[a\x06\0\x91\x90a\x17wV[\x90P_a\x06\r\x87\x83a\x17\x8AV[\x90P\x80a\x06\x1A\x84\x89a\x17\x9DV[a\x06$\x91\x90a\x17\xB4V[\x95P\x85_\x03a\x06\x8CW`@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\x03\xADV[a\x06\x96\x86\x85a\x17wV[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x07 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xADV[a\x079\x82a\x03\xE8`3Ta\x074\x91\x90a\x17wV[a\x0F\xAEV[PPPPP\x92\x91PPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07bWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07{WP0;\x15\x80\x15a\x07{WP_T`\xFF\x16`\x01\x14[a\x07\xDEW`@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\xADV[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x07\xFFW_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\t\x83\x83a\x10\x02V[\x80\x15a\x08NW_\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[_a\x08`a\x02R\x83a\t\xAEV[\x92\x91PPV[_T`@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\x08\xB0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a\x16\xFCV[a\x08\xF0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x90a\x17\x1BV[_\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\x03\xE8`3Ta\t@\x91\x90a\x17wV[\x90P_a\x03\xE8a\tNa\x0F?V[a\tX\x91\x90a\x17wV[\x90P\x81a\te\x85\x83a\x17\x9DV[a\to\x91\x90a\x17\xB4V[\x94\x93PPPPV[_a\x08`\x82a\x0C\"V[_a\x08`a\x02\xF1\x83a\t\xAEV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\x1C`M\x919\x90P\x90V[`@Qc=?\x06\xC9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R0`$\x83\x01R_\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\n\x1CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08`\x91\x90a\x17\xD3V[`\x01\x80T`\x02\x90\x81\x16\x03a\n\x92W`@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\xADV[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\nW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xADV[a\x0B\x15\x84\x84\x84a\x11HV[`3T\x80\x83\x11\x15a\x0B\xA4W`@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\xADV[_a\x0B\xB1a\x03\xE8\x83a\x17wV[\x90P_a\x03\xE8a\x0B\xBFa\x0F?V[a\x0B\xC9\x91\x90a\x17wV[\x90P_\x82a\x0B\xD7\x87\x84a\x17\x9DV[a\x0B\xE1\x91\x90a\x17\xB4V[\x90Pa\x0B\xED\x86\x85a\x17\x8AV[`3Ua\x0C\ra\x0B\xFD\x82\x84a\x17\x8AV[a\x03\xE8`3Ta\x074\x91\x90a\x17wV[a\x0C\x18\x88\x88\x83a\x11\xCBV[PPPPPPPPV[__a\x03\xE8`3Ta\x0C4\x91\x90a\x17wV[\x90P_a\x03\xE8a\x0CBa\x0F?V[a\x0CL\x91\x90a\x17wV[\x90P\x80a\te\x83\x86a\x17\x9DV[_a\x08`\x82a\t.V[_`\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\x0C\xB3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xD7\x91\x90a\x16\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x90a\x16\xB2V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\x85W`@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\xADV[`\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\x04\xF8V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0EJW`@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\xADV[_T`@\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_\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\x0F;W`@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\xADV[PPV[`2T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R_\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x85W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xA9\x91\x90a\x17\xD3V[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x0F\xE2\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x17\x9DV[a\x0F\xEC\x91\x90a\x17\xB4V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[_Ta\x01\0\x90\x04`\xFF\x16a\x10lW`@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\xADV[`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90Ua\x10\x91\x81_a\x11\xDFV[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11'\x91\x90a\x17\xEAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x0F\xF6V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08NW`@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\xADV[a\x08N`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x12\xCAV[_Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12\x05WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x12\x87W`@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\xADV[`\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\x0F;\x82a\r\xBCV[`@\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\x08N\x92\x86\x92\x91_\x91a\x13Y\x91\x85\x16\x90\x84\x90a\x13\xD6V[\x80Q\x90\x91P\x15a\x08NW\x80\x80` \x01\x90Q\x81\x01\x90a\x13w\x91\x90a\x16\xFCV[a\x08NW`@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\xADV[``a\x13\xE4\x84\x84_\x85a\x13\xEEV[\x90P[\x93\x92PPPV[``\x82G\x10\x15a\x14OW`@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\xADV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x14\xA6W`@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\xADV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x14\xC1\x91\x90a\x18\x05V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x14\xFBW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x15\0V[``\x91P[P\x91P\x91Pa\x15\x10\x82\x82\x86a\x15\x1BV[\x97\x96PPPPPPPV[``\x83\x15a\x15*WP\x81a\x13\xE7V[\x82Q\x15a\x15:W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x91\x90a\x16$V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xBFW__\xFD[_` \x82\x84\x03\x12\x15a\x15xW__\xFD[\x815a\x13\xE7\x81a\x15TV[_` \x82\x84\x03\x12\x15a\x15\x93W__\xFD[P5\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x15\xABW__\xFD[\x825a\x15\xB6\x81a\x15TV[\x94` \x93\x90\x93\x015\x93PPPV[__`@\x83\x85\x03\x12\x15a\x15\xD5W__\xFD[\x825a\x15\xE0\x81a\x15TV[\x91P` \x83\x015a\x15\xF0\x81a\x15TV[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xBFW__\xFD[_` \x82\x84\x03\x12\x15a\x16\x19W__\xFD[\x815a\x13\xE7\x81a\x15\xFBV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[___``\x84\x86\x03\x12\x15a\x16kW__\xFD[\x835a\x16v\x81a\x15TV[\x92P` \x84\x015a\x16\x86\x81a\x15TV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\x16\xA7W__\xFD[\x81Qa\x13\xE7\x81a\x15TV[` \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[_` \x82\x84\x03\x12\x15a\x17\x0CW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\xE7W__\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_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x08`Wa\x08`a\x17cV[\x81\x81\x03\x81\x81\x11\x15a\x08`Wa\x08`a\x17cV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x08`Wa\x08`a\x17cV[_\x82a\x17\xCEWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[_` \x82\x84\x03\x12\x15a\x17\xE3W__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x17\xFAW__\xFD[\x81Qa\x13\xE7\x81a\x15\xFBV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 e^\xD2\x01\x1FB\xF5{\xB4-\xD9\xC1'\x94\x9BT_\x1E\"\n\xA3 \xDE\x13\xEF\x7F}B\x8A,#\xB6dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b5060043610610132575f3560e01c80635c975abb116100b4578063ab5921e111610079578063ab5921e114610295578063ce7c2ac2146102aa578063d9caed12146102bd578063e3dae51c146102d0578063f3e73875146102e3578063fabc1cbc146102f6575f5ffd5b80635c975abb1461023c5780637a8b263714610244578063886f1195146102575780638c8710191461026f5780638f6a624014610282575f5ffd5b806347e7ef24116100fa57806347e7ef24146101cc578063485cc955146101df578063553ca5f8146101f2578063595c6a67146102055780635ac86ab71461020d575f5ffd5b806310d67a2f14610136578063136439dd1461014b5780632495a5991461015e57806339b70e381461018e5780633a98ef39146101b5575b5f5ffd5b610149610144366004611568565b610309565b005b610149610159366004611583565b6103c2565b603254610171906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101717f000000000000000000000000000000000000000000000000000000000000000081565b6101be60335481565b604051908152602001610185565b6101be6101da36600461159a565b610503565b6101496101ed3660046115c4565b610744565b6101be610200366004611568565b610853565b610149610866565b61022c61021b366004611609565b6001805460ff9092161b9081161490565b6040519015158152602001610185565b6001546101be565b6101be610252366004611583565b61092e565b5f54610171906201000090046001600160a01b031681565b6101be61027d366004611583565b610977565b6101be610290366004611568565b610981565b61029d61098e565b6040516101859190611624565b6101be6102b8366004611568565b6109ae565b6101496102cb366004611659565b610a40565b6101be6102de366004611583565b610c22565b6101be6102f1366004611583565b610c59565b610149610304366004611583565b610c63565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610359573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037d9190611697565b6001600160a01b0316336001600160a01b0316146103b65760405162461bcd60e51b81526004016103ad906116b2565b60405180910390fd5b6103bf81610dbc565b50565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561040c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043091906116fc565b61044c5760405162461bcd60e51b81526004016103ad9061171b565b600154818116146104c55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103ad565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180545f9182918116036105565760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103ad565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105ce5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103ad565b6105d88484610ebf565b6033545f6105e86103e883611777565b90505f6103e86105f6610f3f565b6106009190611777565b90505f61060d878361178a565b90508061061a848961179d565b61062491906117b4565b9550855f0361068c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103ad565b6106968685611777565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107205760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103ad565b610739826103e86033546107349190611777565b610fae565b505050505092915050565b5f54610100900460ff161580801561076257505f54600160ff909116105b8061077b5750303b15801561077b57505f5460ff166001145b6107de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ad565b5f805460ff1916600117905580156107ff575f805461ff0019166101001790555b6108098383611002565b801561084e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f610860610252836109ae565b92915050565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d491906116fc565b6108f05760405162461bcd60e51b81526004016103ad9061171b565b5f19600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b5f5f6103e86033546109409190611777565b90505f6103e861094e610f3f565b6109589190611777565b905081610965858361179d565b61096f91906117b4565b949350505050565b5f61086082610c22565b5f6108606102f1836109ae565b60606040518060800160405280604d815260200161181c604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a1c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086091906117d3565b60018054600290811603610a925760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103ad565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b0a5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103ad565b610b15848484611148565b60335480831115610ba45760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103ad565b5f610bb16103e883611777565b90505f6103e8610bbf610f3f565b610bc99190611777565b90505f82610bd7878461179d565b610be191906117b4565b9050610bed868561178a565b603355610c0d610bfd828461178a565b6103e86033546107349190611777565b610c188888836111cb565b5050505050505050565b5f5f6103e8603354610c349190611777565b90505f6103e8610c42610f3f565b610c4c9190611777565b905080610965838661179d565b5f6108608261092e565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd79190611697565b6001600160a01b0316336001600160a01b031614610d075760405162461bcd60e51b81526004016103ad906116b2565b600154198119600154191614610d855760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103ad565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016104f8565b6001600160a01b038116610e4a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103ad565b5f54604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a15f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f3b5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103ad565b5050565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa991906117d3565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610fe284670de0b6b3a764000061179d565b610fec91906117b4565b6040519081526020015b60405180910390a15050565b5f54610100900460ff1661106c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ad565b603280546001600160a01b0319166001600160a01b038416179055611091815f6111df565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611103573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112791906117ea565b604080516001600160a01b03909316835260ff909116602083015201610ff6565b6032546001600160a01b0383811691161461084e5760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103ad565b61084e6001600160a01b03831684836112ca565b5f546201000090046001600160a01b031615801561120557506001600160a01b03821615155b6112875760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103ad565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f3b82610dbc565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261084e928692915f916113599185169084906113d6565b80519091501561084e578080602001905181019061137791906116fc565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103ad565b60606113e484845f856113ee565b90505b9392505050565b60608247101561144f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103ad565b6001600160a01b0385163b6114a65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ad565b5f5f866001600160a01b031685876040516114c19190611805565b5f6040518083038185875af1925050503d805f81146114fb576040519150601f19603f3d011682016040523d82523d5f602084013e611500565b606091505b509150915061151082828661151b565b979650505050505050565b6060831561152a5750816113e7565b82511561153a5782518084602001fd5b8160405162461bcd60e51b81526004016103ad9190611624565b6001600160a01b03811681146103bf575f5ffd5b5f60208284031215611578575f5ffd5b81356113e781611554565b5f60208284031215611593575f5ffd5b5035919050565b5f5f604083850312156115ab575f5ffd5b82356115b681611554565b946020939093013593505050565b5f5f604083850312156115d5575f5ffd5b82356115e081611554565b915060208301356115f081611554565b809150509250929050565b60ff811681146103bf575f5ffd5b5f60208284031215611619575f5ffd5b81356113e7816115fb565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f6060848603121561166b575f5ffd5b833561167681611554565b9250602084013561168681611554565b929592945050506040919091013590565b5f602082840312156116a7575f5ffd5b81516113e781611554565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b5f6020828403121561170c575f5ffd5b815180151581146113e7575f5ffd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561086057610860611763565b8181038181111561086057610860611763565b808202811582820484141761086057610860611763565b5f826117ce57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156117e3575f5ffd5b5051919050565b5f602082840312156117fa575f5ffd5b81516113e7816115fb565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220655ed2011f42f57bb42dd9c127949b545f1e220aa320de13ef7f7d428a2c23b664736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\x012W_5`\xE0\x1C\x80c\\\x97Z\xBB\x11a\0\xB4W\x80c\xABY!\xE1\x11a\0yW\x80c\xABY!\xE1\x14a\x02\x95W\x80c\xCE|*\xC2\x14a\x02\xAAW\x80c\xD9\xCA\xED\x12\x14a\x02\xBDW\x80c\xE3\xDA\xE5\x1C\x14a\x02\xD0W\x80c\xF3\xE78u\x14a\x02\xE3W\x80c\xFA\xBC\x1C\xBC\x14a\x02\xF6W__\xFD[\x80c\\\x97Z\xBB\x14a\x02=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03}\x91\x90a\x16\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x03\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x90a\x16\xB2V[`@Q\x80\x91\x03\x90\xFD[a\x03\xBF\x81a\r\xBCV[PV[_T`@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\x0CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x040\x91\x90a\x16\xFCV[a\x04LW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x90a\x17\x1BV[`\x01T\x81\x81\x16\x14a\x04\xC5W`@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\xADV[`\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_\x91\x82\x91\x81\x16\x03a\x05VW`@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\xADV[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\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xADV[a\x05\xD8\x84\x84a\x0E\xBFV[`3T_a\x05\xE8a\x03\xE8\x83a\x17wV[\x90P_a\x03\xE8a\x05\xF6a\x0F?V[a\x06\0\x91\x90a\x17wV[\x90P_a\x06\r\x87\x83a\x17\x8AV[\x90P\x80a\x06\x1A\x84\x89a\x17\x9DV[a\x06$\x91\x90a\x17\xB4V[\x95P\x85_\x03a\x06\x8CW`@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\x03\xADV[a\x06\x96\x86\x85a\x17wV[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x07 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xADV[a\x079\x82a\x03\xE8`3Ta\x074\x91\x90a\x17wV[a\x0F\xAEV[PPPPP\x92\x91PPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07bWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07{WP0;\x15\x80\x15a\x07{WP_T`\xFF\x16`\x01\x14[a\x07\xDEW`@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\xADV[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x07\xFFW_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\t\x83\x83a\x10\x02V[\x80\x15a\x08NW_\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[_a\x08`a\x02R\x83a\t\xAEV[\x92\x91PPV[_T`@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\x08\xB0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a\x16\xFCV[a\x08\xF0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x90a\x17\x1BV[_\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\x03\xE8`3Ta\t@\x91\x90a\x17wV[\x90P_a\x03\xE8a\tNa\x0F?V[a\tX\x91\x90a\x17wV[\x90P\x81a\te\x85\x83a\x17\x9DV[a\to\x91\x90a\x17\xB4V[\x94\x93PPPPV[_a\x08`\x82a\x0C\"V[_a\x08`a\x02\xF1\x83a\t\xAEV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\x1C`M\x919\x90P\x90V[`@Qc=?\x06\xC9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R0`$\x83\x01R_\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\n\x1CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08`\x91\x90a\x17\xD3V[`\x01\x80T`\x02\x90\x81\x16\x03a\n\x92W`@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\xADV[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\nW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xADV[a\x0B\x15\x84\x84\x84a\x11HV[`3T\x80\x83\x11\x15a\x0B\xA4W`@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\xADV[_a\x0B\xB1a\x03\xE8\x83a\x17wV[\x90P_a\x03\xE8a\x0B\xBFa\x0F?V[a\x0B\xC9\x91\x90a\x17wV[\x90P_\x82a\x0B\xD7\x87\x84a\x17\x9DV[a\x0B\xE1\x91\x90a\x17\xB4V[\x90Pa\x0B\xED\x86\x85a\x17\x8AV[`3Ua\x0C\ra\x0B\xFD\x82\x84a\x17\x8AV[a\x03\xE8`3Ta\x074\x91\x90a\x17wV[a\x0C\x18\x88\x88\x83a\x11\xCBV[PPPPPPPPV[__a\x03\xE8`3Ta\x0C4\x91\x90a\x17wV[\x90P_a\x03\xE8a\x0CBa\x0F?V[a\x0CL\x91\x90a\x17wV[\x90P\x80a\te\x83\x86a\x17\x9DV[_a\x08`\x82a\t.V[_`\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\x0C\xB3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xD7\x91\x90a\x16\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x90a\x16\xB2V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\x85W`@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\xADV[`\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\x04\xF8V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0EJW`@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\xADV[_T`@\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_\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\x0F;W`@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\xADV[PPV[`2T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R_\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x85W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xA9\x91\x90a\x17\xD3V[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x0F\xE2\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x17\x9DV[a\x0F\xEC\x91\x90a\x17\xB4V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[_Ta\x01\0\x90\x04`\xFF\x16a\x10lW`@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\xADV[`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90Ua\x10\x91\x81_a\x11\xDFV[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11'\x91\x90a\x17\xEAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x0F\xF6V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08NW`@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\xADV[a\x08N`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x12\xCAV[_Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12\x05WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x12\x87W`@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\xADV[`\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\x0F;\x82a\r\xBCV[`@\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\x08N\x92\x86\x92\x91_\x91a\x13Y\x91\x85\x16\x90\x84\x90a\x13\xD6V[\x80Q\x90\x91P\x15a\x08NW\x80\x80` \x01\x90Q\x81\x01\x90a\x13w\x91\x90a\x16\xFCV[a\x08NW`@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\xADV[``a\x13\xE4\x84\x84_\x85a\x13\xEEV[\x90P[\x93\x92PPPV[``\x82G\x10\x15a\x14OW`@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\xADV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x14\xA6W`@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\xADV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x14\xC1\x91\x90a\x18\x05V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x14\xFBW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x15\0V[``\x91P[P\x91P\x91Pa\x15\x10\x82\x82\x86a\x15\x1BV[\x97\x96PPPPPPPV[``\x83\x15a\x15*WP\x81a\x13\xE7V[\x82Q\x15a\x15:W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xAD\x91\x90a\x16$V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xBFW__\xFD[_` \x82\x84\x03\x12\x15a\x15xW__\xFD[\x815a\x13\xE7\x81a\x15TV[_` \x82\x84\x03\x12\x15a\x15\x93W__\xFD[P5\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x15\xABW__\xFD[\x825a\x15\xB6\x81a\x15TV[\x94` \x93\x90\x93\x015\x93PPPV[__`@\x83\x85\x03\x12\x15a\x15\xD5W__\xFD[\x825a\x15\xE0\x81a\x15TV[\x91P` \x83\x015a\x15\xF0\x81a\x15TV[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xBFW__\xFD[_` \x82\x84\x03\x12\x15a\x16\x19W__\xFD[\x815a\x13\xE7\x81a\x15\xFBV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[___``\x84\x86\x03\x12\x15a\x16kW__\xFD[\x835a\x16v\x81a\x15TV[\x92P` \x84\x015a\x16\x86\x81a\x15TV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\x16\xA7W__\xFD[\x81Qa\x13\xE7\x81a\x15TV[` \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[_` \x82\x84\x03\x12\x15a\x17\x0CW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\xE7W__\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_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x08`Wa\x08`a\x17cV[\x81\x81\x03\x81\x81\x11\x15a\x08`Wa\x08`a\x17cV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x08`Wa\x08`a\x17cV[_\x82a\x17\xCEWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[_` \x82\x84\x03\x12\x15a\x17\xE3W__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x17\xFAW__\xFD[\x81Qa\x13\xE7\x81a\x15\xFBV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 e^\xD2\x01\x1FB\xF5{\xB4-\xD9\xC1'\x94\x9BT_\x1E\"\n\xA3 \xDE\x13\xEF\x7F}B\x8A,#\xB6dsolcC\0\x08\x1B\x003", + ); + /**Event with signature `ExchangeRateEmitted(uint256)` and selector `0xd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be8`. + ```solidity + event ExchangeRateEmitted(uint256 rate); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ExchangeRateEmitted { + #[allow(missing_docs)] + pub rate: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ExchangeRateEmitted { + 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 = "ExchangeRateEmitted(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { rate: 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.rate, + ), + ) + } + #[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 ExchangeRateEmitted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ExchangeRateEmitted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ExchangeRateEmitted) -> 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `StrategyTokenSet(address,uint8)` and selector `0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507`. + ```solidity + event StrategyTokenSet(address token, uint8 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct StrategyTokenSet { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub decimals: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyTokenSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + 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 = "StrategyTokenSet(address,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 28u8, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, + 199u8, 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, + 50u8, 122u8, 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + token: data.0, + decimals: 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.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 StrategyTokenSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyTokenSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyTokenSet) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositReturn { + pub newShares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct explanationCall {} + ///Container type for the return parameters of the [`explanation()`](explanationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct explanationReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sharesToUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sharesToUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSharesCall {} + ///Container type for the return parameters of the [`totalShares()`](totalSharesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct underlyingToSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct underlyingToSharesViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct underlyingTokenCall {} + ///Container type for the return parameters of the [`underlyingToken()`](underlyingTokenCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct underlyingTokenReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct userUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct userUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 { + ExchangeRateEmitted(ExchangeRateEmitted), + Initialized(Initialized), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + StrategyTokenSet(StrategyTokenSet), + 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]] = &[ + [ + 28u8, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, 199u8, + 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, 50u8, 122u8, + 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ], + [ + 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, + ], + [ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for StrategyBaseEvents { + const NAME: &'static str = "StrategyBaseEvents"; + 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::ExchangeRateEmitted) + } + 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::StrategyTokenSet) + } + 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::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + 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::StrategyTokenSet(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::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + 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::StrategyTokenSet(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 [`ExchangeRateEmitted`] event. + pub fn ExchangeRateEmitted_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 [`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 [`StrategyTokenSet`] event. + pub fn StrategyTokenSet_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/deploy/strategybasetvllimits.rs similarity index 71% rename from crates/utils/src/strategybasetvllimits.rs rename to crates/utils/src/deploy/strategybasetvllimits.rs index e3f13136..57a11b9e 100644 --- a/crates/utils/src/strategybasetvllimits.rs +++ b/crates/utils/src/deploy/strategybasetvllimits.rs @@ -3,11 +3,13 @@ Generated by the following Solidity interface... ```solidity interface StrategyBaseTVLLimits { + event ExchangeRateEmitted(uint256 rate); 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 StrategyTokenSet(address token, uint8 decimals); event Unpaused(address indexed account, uint256 newPausedStatus); constructor(address _strategyManager); @@ -486,6 +488,19 @@ interface StrategyBaseTVLLimits { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "event", + "name": "ExchangeRateEmitted", + "inputs": [ + { + "name": "rate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, { "type": "event", "name": "Initialized", @@ -575,6 +590,25 @@ interface StrategyBaseTVLLimits { ], "anonymous": false }, + { + "type": "event", + "name": "StrategyTokenSet", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "decimals", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, { "type": "event", "name": "Unpaused", @@ -596,41 +630,154 @@ interface StrategyBaseTVLLimits { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod StrategyBaseTVLLimits { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b5060405162001d5c38038062001d5c833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611be36200017960003960008181610216015281816107a901528181610b470152610c120152611be36000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b8565b6103ba565b005b6101a66101b6366004611802565b61049d565b6101a66101c936600461181f565b610550565b6101a66101dc366004611841565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185a565b610749565b6101a6610279366004611886565b6108ed565b61024161028c366004611802565b6109bb565b6101a66109cf565b6102b86102a73660046118bf565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611841565b610a9b565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611841565b610ae6565b610241610326366004611802565b610af1565b610333610aff565b6040516102089190611912565b61024161034e366004611802565b610b1f565b6101a6610361366004611945565b610bb4565b60645460655460408051928352602083019190915201610208565b61024161038f366004611841565b610d7d565b6102416103a2366004611841565b610db6565b6101a66103b5366004611841565b610dc1565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611986565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1d565b610450838361102a565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119d4565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119f1565b61054d816110bb565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119d4565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119f1565b6106018282610f1d565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a3b565b6106925760405162461bcd60e51b815260040161041090611a5d565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001805460009182918116141561079e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108165760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61082084846111c0565b60335460006108316103e883611abb565b905060006103e86108406112a2565b61084a9190611abb565b905060006108588783611ad3565b9050806108658489611aea565b61086f9190611b09565b9550856108d55760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108df8685611abb565b603355505050505092915050565b600054610100900460ff161580801561090d5750600054600160ff909116105b806109275750303b158015610927575060005460ff166001145b6109435760405162461bcd60e51b815260040161041090611986565b6000805460ff191660011790558015610966576000805461ff0019166101001790555b610970838361102a565b80156109b6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109c96102e783610b1f565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611a3b565b610a5c5760405162461bcd60e51b815260040161041090611a5d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610aae9190611abb565b905060006103e8610abd6112a2565b610ac79190611abb565b905081610ad48583611aea565b610ade9190611b09565b949350505050565b60006109c982610d7d565b60006109c96103a283610b1f565b60606040518060800160405280604d8152602001611b61604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611b2b565b6001805460029081161415610c075760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c7f5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8a848484611314565b60335480831115610d195760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d276103e883611abb565b905060006103e8610d366112a2565b610d409190611abb565b9050600082610d4f8784611aea565b610d599190611b09565b9050610d658685611ad3565b603355610d73888883611397565b5050505050505050565b6000806103e8603354610d909190611abb565b905060006103e8610d9f6112a2565b610da99190611abb565b905080610ad48386611aea565b60006109c982610a9b565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3891906119d4565b6001600160a01b0316336001600160a01b031614610e685760405162461bcd60e51b8152600401610410906119f1565b600154198119600154191614610ee65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a18082111561101f5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ab565b6001600160a01b0381166111495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122a5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112356112a2565b11156112985760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611497565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130f9190611b2b565b905090565b6032546001600160a01b038381169116146109b65760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b66001600160a01b0383168483611513565b6000546201000090046001600160a01b03161580156113d257506001600160a01b03821615155b6114545760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bb565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b6928692916000916115a3918516908490611620565b8051909150156109b657808060200190518101906115c19190611a3b565b6109b65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b606061162f8484600085611639565b90505b9392505050565b60608247101561169a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170d9190611b44565b60006040518083038185875af1925050503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f82828661176a565b979650505050505050565b60608315611779575081611632565b8251156117895782518084602001fd5b8160405162461bcd60e51b81526004016104109190611912565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117ce57600080fd5b843593506020850135925060408501356117e7816117a3565b915060608501356117f7816117a3565b939692955090935050565b60006020828403121561181457600080fd5b8135611632816117a3565b6000806040838503121561183257600080fd5b50508035926020909101359150565b60006020828403121561185357600080fd5b5035919050565b6000806040838503121561186d57600080fd5b8235611878816117a3565b946020939093013593505050565b6000806040838503121561189957600080fd5b82356118a4816117a3565b915060208301356118b4816117a3565b809150509250929050565b6000602082840312156118d157600080fd5b813560ff8116811461163257600080fd5b60005b838110156118fd5781810151838201526020016118e5565b8381111561190c576000848401525b50505050565b60208152600082518060208401526119318160408501602087016118e2565b601f01601f19169190910160400192915050565b60008060006060848603121561195a57600080fd5b8335611965816117a3565b92506020840135611975816117a3565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119e657600080fd5b8151611632816117a3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4d57600080fd5b8151801515811461163257600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ace57611ace611aa5565b500190565b600082821015611ae557611ae5611aa5565b500390565b6000816000190483118215151615611b0457611b04611aa5565b500290565b600082611b2657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b3d57600080fd5b5051919050565b60008251611b568184602087016118e2565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212204112a75df884a07f55b081677eb067dc6e24c942e163b4ef04a0cea4b7183af264736f6c634300080c0033 + ///0x60a060405234801561000f575f5ffd5b50604051611e87380380611e8783398101604081905261002e91610108565b6001600160a01b0381166080528061004461004b565b5050610135565b5f54610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161015610106575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610118575f5ffd5b81516001600160a01b038116811461012e575f5ffd5b9392505050565b608051611d256101625f395f818161020e0152818161078f01528181610bbc0152610c840152611d255ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80635c975abb116100d9578063ab5921e111610093578063df6fadc11161006e578063df6fadc11461035d578063e3dae51c14610378578063f3e738751461038b578063fabc1cbc1461039e575f5ffd5b8063ab5921e114610322578063ce7c2ac214610337578063d9caed121461034a575f5ffd5b80635c975abb146102c057806361b01b5d146102c85780637a8b2637146102d1578063886f1195146102e45780638c871019146102fc5780638f6a62401461030f575f5ffd5b80633a98ef3911610144578063485cc9551161011f578063485cc95514610263578063553ca5f814610276578063595c6a67146102895780635ac86ab714610291575f5ffd5b80633a98ef391461023057806343fe08b01461024757806347e7ef2414610250575f5ffd5b8063019e27291461018b57806310d67a2f146101a057806311c70c9d146101b3578063136439dd146101c65780632495a599146101d957806339b70e3814610209575b5f5ffd5b61019e61019936600461193a565b6103b1565b005b61019e6101ae366004611981565b61048e565b61019e6101c136600461199c565b61053e565b61019e6101d43660046119bc565b6105f0565b6032546101ec906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ec7f000000000000000000000000000000000000000000000000000000000000000081565b61023960335481565b604051908152602001610200565b61023960645481565b61023961025e3660046119d3565b610731565b61019e6102713660046119fd565b610972565b610239610284366004611981565b610a3a565b61019e610a4d565b6102b061029f366004611a42565b6001805460ff9092161b9081161490565b6040519015158152602001610200565b600154610239565b61023960655481565b6102396102df3660046119bc565b610b15565b5f546101ec906201000090046001600160a01b031681565b61023961030a3660046119bc565b610b5e565b61023961031d366004611981565b610b68565b61032a610b75565b6040516102009190611a5d565b610239610345366004611981565b610b95565b61019e610358366004611a92565b610c27565b60645460655460408051928352602083019190915201610200565b6102396103863660046119bc565b610e09565b6102396103993660046119bc565b610e40565b61019e6103ac3660046119bc565b610e4a565b5f54610100900460ff16158080156103cf57505f54600160ff909116105b806103e85750303b1580156103e857505f5460ff166001145b61040d5760405162461bcd60e51b815260040161040490611ad0565b60405180910390fd5b5f805460ff19166001179055801561042e575f805461ff0019166101001790555b6104388585610fa3565b61044283836110b0565b8015610487575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104de573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105029190611b1e565b6001600160a01b0316336001600160a01b0316146105325760405162461bcd60e51b815260040161040490611b39565b61053b816111fe565b50565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b29190611b1e565b6001600160a01b0316336001600160a01b0316146105e25760405162461bcd60e51b815260040161040490611b39565b6105ec8282610fa3565b5050565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561063a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065e9190611b83565b61067a5760405162461bcd60e51b815260040161040490611ba2565b600154818116146106f35760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610404565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180545f9182918116036107845760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610404565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107fc5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610404565b6108068484611301565b6033545f6108166103e883611bfe565b90505f6103e86108246113e3565b61082e9190611bfe565b90505f61083b8783611c11565b9050806108488489611c24565b6108529190611c3b565b9550855f036108ba5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610404565b6108c48685611bfe565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561094e5760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f53484152455360000000006064820152608401610404565b610967826103e86033546109629190611bfe565b611452565b505050505092915050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b6109c55760405162461bcd60e51b815260040161040490611ad0565b5f805460ff1916600117905580156109e6575f805461ff0019166101001790555b6109f083836110b0565b8015610a35575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f610a476102df83610b95565b92915050565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abb9190611b83565b610ad75760405162461bcd60e51b815260040161040490611ba2565b5f19600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b5f5f6103e8603354610b279190611bfe565b90505f6103e8610b356113e3565b610b3f9190611bfe565b905081610b4c8583611c24565b610b569190611c3b565b949350505050565b5f610a4782610e09565b5f610a4761039983610b95565b60606040518060800160405280604d8152602001611ca3604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610c03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a479190611c5a565b60018054600290811603610c795760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610404565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cf15760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610404565b610cfc84848461149e565b60335480831115610d8b5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610404565b5f610d986103e883611bfe565b90505f6103e8610da66113e3565b610db09190611bfe565b90505f82610dbe8784611c24565b610dc89190611c3b565b9050610dd48685611c11565b603355610df4610de48284611c11565b6103e86033546109629190611bfe565b610dff888883611521565b5050505050505050565b5f5f6103e8603354610e1b9190611bfe565b90505f6103e8610e296113e3565b610e339190611bfe565b905080610b4c8386611c24565b5f610a4782610b15565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebe9190611b1e565b6001600160a01b0316336001600160a01b031614610eee5760405162461bcd60e51b815260040161040490611b39565b600154198119600154191614610f6c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610404565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610726565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110a55760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610404565b606491909155606555565b5f54610100900460ff1661111a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610404565b603280546001600160a01b0319166001600160a01b03841617905561113f815f611535565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d59190611c71565b604080516001600160a01b03909316835260ff9091166020830152015b60405180910390a15050565b6001600160a01b03811661128c5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610404565b5f54604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a15f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561136b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610404565b6065546113766113e3565b11156113d95760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610404565b6105ec8282611620565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611429573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144d9190611c5a565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161148684670de0b6b3a7640000611c24565b6114909190611c3b565b6040519081526020016111f2565b6032546001600160a01b03838116911614610a355760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610404565b610a356001600160a01b038316848361169c565b5f546201000090046001600160a01b031615801561155b57506001600160a01b03821615155b6115dd5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610404565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26105ec826111fe565b6032546001600160a01b038381169116146105ec5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610404565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610a35928692915f9161172b9185169084906117a8565b805190915015610a3557808060200190518101906117499190611b83565b610a355760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610404565b60606117b684845f856117c0565b90505b9392505050565b6060824710156118215760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610404565b6001600160a01b0385163b6118785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610404565b5f5f866001600160a01b031685876040516118939190611c8c565b5f6040518083038185875af1925050503d805f81146118cd576040519150601f19603f3d011682016040523d82523d5f602084013e6118d2565b606091505b50915091506118e28282866118ed565b979650505050505050565b606083156118fc5750816117b9565b82511561190c5782518084602001fd5b8160405162461bcd60e51b81526004016104049190611a5d565b6001600160a01b038116811461053b575f5ffd5b5f5f5f5f6080858703121561194d575f5ffd5b8435935060208501359250604085013561196681611926565b9150606085013561197681611926565b939692955090935050565b5f60208284031215611991575f5ffd5b81356117b981611926565b5f5f604083850312156119ad575f5ffd5b50508035926020909101359150565b5f602082840312156119cc575f5ffd5b5035919050565b5f5f604083850312156119e4575f5ffd5b82356119ef81611926565b946020939093013593505050565b5f5f60408385031215611a0e575f5ffd5b8235611a1981611926565b91506020830135611a2981611926565b809150509250929050565b60ff8116811461053b575f5ffd5b5f60208284031215611a52575f5ffd5b81356117b981611a34565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215611aa4575f5ffd5b8335611aaf81611926565b92506020840135611abf81611926565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f60208284031215611b2e575f5ffd5b81516117b981611926565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b5f60208284031215611b93575f5ffd5b815180151581146117b9575f5ffd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a4757610a47611bea565b81810381811115610a4757610a47611bea565b8082028115828204841417610a4757610a47611bea565b5f82611c5557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c6a575f5ffd5b5051919050565b5f60208284031215611c81575f5ffd5b81516117b981611a34565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201a3a53117d7cbffcbbaaf50e52ad969dae88cb4d1814fb121f536c6ef441304564736f6c634300081b0033 /// ``` #[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", + b"`\xA0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x1E\x878\x03\x80a\x1E\x87\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Da\0KV[PPa\x015V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB6W`@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[_T`\xFF\x90\x81\x16\x10\x15a\x01\x06W_\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[_` \x82\x84\x03\x12\x15a\x01\x18W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01.W__\xFD[\x93\x92PPPV[`\x80Qa\x1D%a\x01b_9_\x81\x81a\x02\x0E\x01R\x81\x81a\x07\x8F\x01R\x81\x81a\x0B\xBC\x01Ra\x0C\x84\x01Ra\x1D%_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x87W_5`\xE0\x1C\x80c\\\x97Z\xBB\x11a\0\xD9W\x80c\xABY!\xE1\x11a\0\x93W\x80c\xDFo\xAD\xC1\x11a\0nW\x80c\xDFo\xAD\xC1\x14a\x03]W\x80c\xE3\xDA\xE5\x1C\x14a\x03xW\x80c\xF3\xE78u\x14a\x03\x8BW\x80c\xFA\xBC\x1C\xBC\x14a\x03\x9EW__\xFD[\x80c\xABY!\xE1\x14a\x03\"W\x80c\xCE|*\xC2\x14a\x037W\x80c\xD9\xCA\xED\x12\x14a\x03JW__\xFD[\x80c\\\x97Z\xBB\x14a\x02\xC0W\x80ca\xB0\x1B]\x14a\x02\xC8W\x80cz\x8B&7\x14a\x02\xD1W\x80c\x88o\x11\x95\x14a\x02\xE4W\x80c\x8C\x87\x10\x19\x14a\x02\xFCW\x80c\x8Fjb@\x14a\x03\x0FW__\xFD[\x80c:\x98\xEF9\x11a\x01DW\x80cH\\\xC9U\x11a\x01\x1FW\x80cH\\\xC9U\x14a\x02cW\x80cU<\xA5\xF8\x14a\x02vW\x80cY\\jg\x14a\x02\x89W\x80cZ\xC8j\xB7\x14a\x02\x91W__\xFD[\x80c:\x98\xEF9\x14a\x020W\x80cC\xFE\x08\xB0\x14a\x02GW\x80cG\xE7\xEF$\x14a\x02PW__\xFD[\x80c\x01\x9E')\x14a\x01\x8BW\x80c\x10\xD6z/\x14a\x01\xA0W\x80c\x11\xC7\x0C\x9D\x14a\x01\xB3W\x80c\x13d9\xDD\x14a\x01\xC6W\x80c$\x95\xA5\x99\x14a\x01\xD9W\x80c9\xB7\x0E8\x14a\x02\tW[__\xFD[a\x01\x9Ea\x01\x996`\x04a\x19:V[a\x03\xB1V[\0[a\x01\x9Ea\x01\xAE6`\x04a\x19\x81V[a\x04\x8EV[a\x01\x9Ea\x01\xC16`\x04a\x19\x9CV[a\x05>V[a\x01\x9Ea\x01\xD46`\x04a\x19\xBCV[a\x05\xF0V[`2Ta\x01\xEC\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\xEC\x7F\0\0\0\0\0\0\0\0\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\x029`3T\x81V[`@Q\x90\x81R` \x01a\x02\0V[a\x029`dT\x81V[a\x029a\x02^6`\x04a\x19\xD3V[a\x071V[a\x01\x9Ea\x02q6`\x04a\x19\xFDV[a\trV[a\x029a\x02\x846`\x04a\x19\x81V[a\n:V[a\x01\x9Ea\nMV[a\x02\xB0a\x02\x9F6`\x04a\x1ABV[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02\0V[`\x01Ta\x029V[a\x029`eT\x81V[a\x029a\x02\xDF6`\x04a\x19\xBCV[a\x0B\x15V[_Ta\x01\xEC\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x029a\x03\n6`\x04a\x19\xBCV[a\x0B^V[a\x029a\x03\x1D6`\x04a\x19\x81V[a\x0BhV[a\x03*a\x0BuV[`@Qa\x02\0\x91\x90a\x1A]V[a\x029a\x03E6`\x04a\x19\x81V[a\x0B\x95V[a\x01\x9Ea\x03X6`\x04a\x1A\x92V[a\x0C'V[`dT`eT`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x02\0V[a\x029a\x03\x866`\x04a\x19\xBCV[a\x0E\tV[a\x029a\x03\x996`\x04a\x19\xBCV[a\x0E@V[a\x01\x9Ea\x03\xAC6`\x04a\x19\xBCV[a\x0EJV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x03\xCFWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x03\xE8WP0;\x15\x80\x15a\x03\xE8WP_T`\xFF\x16`\x01\x14[a\x04\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1A\xD0V[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x04.W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x048\x85\x85a\x0F\xA3V[a\x04B\x83\x83a\x10\xB0V[\x80\x15a\x04\x87W_\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[_`\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\x04\xDEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x02\x91\x90a\x1B\x1EV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x052W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B9V[a\x05;\x81a\x11\xFEV[PV[_`\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\x8EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xB2\x91\x90a\x1B\x1EV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B9V[a\x05\xEC\x82\x82a\x0F\xA3V[PPV[_T`@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\x06:W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06^\x91\x90a\x1B\x83V[a\x06zW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B\xA2V[`\x01T\x81\x81\x16\x14a\x06\xF3W`@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\x04V[`\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_\x91\x82\x91\x81\x16\x03a\x07\x84W`@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\x04V[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\x07\xFCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x04\x04V[a\x08\x06\x84\x84a\x13\x01V[`3T_a\x08\x16a\x03\xE8\x83a\x1B\xFEV[\x90P_a\x03\xE8a\x08$a\x13\xE3V[a\x08.\x91\x90a\x1B\xFEV[\x90P_a\x08;\x87\x83a\x1C\x11V[\x90P\x80a\x08H\x84\x89a\x1C$V[a\x08R\x91\x90a\x1C;V[\x95P\x85_\x03a\x08\xBAW`@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\x04V[a\x08\xC4\x86\x85a\x1B\xFEV[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\tNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x04\x04V[a\tg\x82a\x03\xE8`3Ta\tb\x91\x90a\x1B\xFEV[a\x14RV[PPPPP\x92\x91PPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\t\x90WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\t\xA9WP0;\x15\x80\x15a\t\xA9WP_T`\xFF\x16`\x01\x14[a\t\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1A\xD0V[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\xE6W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t\xF0\x83\x83a\x10\xB0V[\x80\x15a\n5W_\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[_a\nGa\x02\xDF\x83a\x0B\x95V[\x92\x91PPV[_T`@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\x97W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xBB\x91\x90a\x1B\x83V[a\n\xD7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B\xA2V[_\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\x03\xE8`3Ta\x0B'\x91\x90a\x1B\xFEV[\x90P_a\x03\xE8a\x0B5a\x13\xE3V[a\x0B?\x91\x90a\x1B\xFEV[\x90P\x81a\x0BL\x85\x83a\x1C$V[a\x0BV\x91\x90a\x1C;V[\x94\x93PPPPV[_a\nG\x82a\x0E\tV[_a\nGa\x03\x99\x83a\x0B\x95V[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x1C\xA3`M\x919\x90P\x90V[`@Qc=?\x06\xC9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R0`$\x83\x01R_\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\x0C\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nG\x91\x90a\x1CZV[`\x01\x80T`\x02\x90\x81\x16\x03a\x0CyW`@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\x04V[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\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x04\x04V[a\x0C\xFC\x84\x84\x84a\x14\x9EV[`3T\x80\x83\x11\x15a\r\x8BW`@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\x04V[_a\r\x98a\x03\xE8\x83a\x1B\xFEV[\x90P_a\x03\xE8a\r\xA6a\x13\xE3V[a\r\xB0\x91\x90a\x1B\xFEV[\x90P_\x82a\r\xBE\x87\x84a\x1C$V[a\r\xC8\x91\x90a\x1C;V[\x90Pa\r\xD4\x86\x85a\x1C\x11V[`3Ua\r\xF4a\r\xE4\x82\x84a\x1C\x11V[a\x03\xE8`3Ta\tb\x91\x90a\x1B\xFEV[a\r\xFF\x88\x88\x83a\x15!V[PPPPPPPPV[__a\x03\xE8`3Ta\x0E\x1B\x91\x90a\x1B\xFEV[\x90P_a\x03\xE8a\x0E)a\x13\xE3V[a\x0E3\x91\x90a\x1B\xFEV[\x90P\x80a\x0BL\x83\x86a\x1C$V[_a\nG\x82a\x0B\x15V[_`\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\x9AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xBE\x91\x90a\x1B\x1EV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0E\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B9V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x0FlW`@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\x04V[`\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\xA5W`@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\x04V[`d\x91\x90\x91U`eUV[_Ta\x01\0\x90\x04`\xFF\x16a\x11\x1AW`@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\x04V[`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90Ua\x11?\x81_a\x155V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xB1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\xD5\x91\x90a\x1CqV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\x8CW`@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\x04V[_T`@\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_\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\x13kW`@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\x04V[`eTa\x13va\x13\xE3V[\x11\x15a\x13\xD9W`@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\x04V[a\x05\xEC\x82\x82a\x16 V[`2T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R_\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14)W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14M\x91\x90a\x1CZV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x14\x86\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x1C$V[a\x14\x90\x91\x90a\x1C;V[`@Q\x90\x81R` \x01a\x11\xF2V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\n5W`@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\x04V[a\n5`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x16\x9CV[_Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x15[WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x15\xDDW`@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\x04V[`\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\x05\xEC\x82a\x11\xFEV[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x05\xECW`@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\x04V[`@\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\n5\x92\x86\x92\x91_\x91a\x17+\x91\x85\x16\x90\x84\x90a\x17\xA8V[\x80Q\x90\x91P\x15a\n5W\x80\x80` \x01\x90Q\x81\x01\x90a\x17I\x91\x90a\x1B\x83V[a\n5W`@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\x04V[``a\x17\xB6\x84\x84_\x85a\x17\xC0V[\x90P[\x93\x92PPPV[``\x82G\x10\x15a\x18!W`@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\x04V[`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x18xW`@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\x04V[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x18\x93\x91\x90a\x1C\x8CV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x18\xCDW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x18\xD2V[``\x91P[P\x91P\x91Pa\x18\xE2\x82\x82\x86a\x18\xEDV[\x97\x96PPPPPPPV[``\x83\x15a\x18\xFCWP\x81a\x17\xB9V[\x82Q\x15a\x19\x0CW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x91\x90a\x1A]V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05;W__\xFD[____`\x80\x85\x87\x03\x12\x15a\x19MW__\xFD[\x845\x93P` \x85\x015\x92P`@\x85\x015a\x19f\x81a\x19&V[\x91P``\x85\x015a\x19v\x81a\x19&V[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a\x19\x91W__\xFD[\x815a\x17\xB9\x81a\x19&V[__`@\x83\x85\x03\x12\x15a\x19\xADW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a\x19\xCCW__\xFD[P5\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x19\xE4W__\xFD[\x825a\x19\xEF\x81a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[__`@\x83\x85\x03\x12\x15a\x1A\x0EW__\xFD[\x825a\x1A\x19\x81a\x19&V[\x91P` \x83\x015a\x1A)\x81a\x19&V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x05;W__\xFD[_` \x82\x84\x03\x12\x15a\x1ARW__\xFD[\x815a\x17\xB9\x81a\x1A4V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[___``\x84\x86\x03\x12\x15a\x1A\xA4W__\xFD[\x835a\x1A\xAF\x81a\x19&V[\x92P` \x84\x015a\x1A\xBF\x81a\x19&V[\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[_` \x82\x84\x03\x12\x15a\x1B.W__\xFD[\x81Qa\x17\xB9\x81a\x19&V[` \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[_` \x82\x84\x03\x12\x15a\x1B\x93W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x17\xB9W__\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_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\nGWa\nGa\x1B\xEAV[\x81\x81\x03\x81\x81\x11\x15a\nGWa\nGa\x1B\xEAV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\nGWa\nGa\x1B\xEAV[_\x82a\x1CUWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[_` \x82\x84\x03\x12\x15a\x1CjW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1C\x81W__\xFD[\x81Qa\x17\xB9\x81a\x1A4V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \x1A:S\x11}|\xBF\xFC\xBB\xAA\xF5\x0ER\xAD\x96\x9D\xAE\x88\xCBM\x18\x14\xFB\x12\x1FSln\xF4A0EdsolcC\0\x08\x1B\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b8565b6103ba565b005b6101a66101b6366004611802565b61049d565b6101a66101c936600461181f565b610550565b6101a66101dc366004611841565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185a565b610749565b6101a6610279366004611886565b6108ed565b61024161028c366004611802565b6109bb565b6101a66109cf565b6102b86102a73660046118bf565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611841565b610a9b565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611841565b610ae6565b610241610326366004611802565b610af1565b610333610aff565b6040516102089190611912565b61024161034e366004611802565b610b1f565b6101a6610361366004611945565b610bb4565b60645460655460408051928352602083019190915201610208565b61024161038f366004611841565b610d7d565b6102416103a2366004611841565b610db6565b6101a66103b5366004611841565b610dc1565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611986565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1d565b610450838361102a565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119d4565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119f1565b61054d816110bb565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119d4565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119f1565b6106018282610f1d565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a3b565b6106925760405162461bcd60e51b815260040161041090611a5d565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001805460009182918116141561079e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108165760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61082084846111c0565b60335460006108316103e883611abb565b905060006103e86108406112a2565b61084a9190611abb565b905060006108588783611ad3565b9050806108658489611aea565b61086f9190611b09565b9550856108d55760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108df8685611abb565b603355505050505092915050565b600054610100900460ff161580801561090d5750600054600160ff909116105b806109275750303b158015610927575060005460ff166001145b6109435760405162461bcd60e51b815260040161041090611986565b6000805460ff191660011790558015610966576000805461ff0019166101001790555b610970838361102a565b80156109b6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109c96102e783610b1f565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611a3b565b610a5c5760405162461bcd60e51b815260040161041090611a5d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610aae9190611abb565b905060006103e8610abd6112a2565b610ac79190611abb565b905081610ad48583611aea565b610ade9190611b09565b949350505050565b60006109c982610d7d565b60006109c96103a283610b1f565b60606040518060800160405280604d8152602001611b61604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611b2b565b6001805460029081161415610c075760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c7f5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8a848484611314565b60335480831115610d195760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d276103e883611abb565b905060006103e8610d366112a2565b610d409190611abb565b9050600082610d4f8784611aea565b610d599190611b09565b9050610d658685611ad3565b603355610d73888883611397565b5050505050505050565b6000806103e8603354610d909190611abb565b905060006103e8610d9f6112a2565b610da99190611abb565b905080610ad48386611aea565b60006109c982610a9b565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3891906119d4565b6001600160a01b0316336001600160a01b031614610e685760405162461bcd60e51b8152600401610410906119f1565b600154198119600154191614610ee65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a18082111561101f5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ab565b6001600160a01b0381166111495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122a5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112356112a2565b11156112985760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611497565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130f9190611b2b565b905090565b6032546001600160a01b038381169116146109b65760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b66001600160a01b0383168483611513565b6000546201000090046001600160a01b03161580156113d257506001600160a01b03821615155b6114545760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bb565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b6928692916000916115a3918516908490611620565b8051909150156109b657808060200190518101906115c19190611a3b565b6109b65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b606061162f8484600085611639565b90505b9392505050565b60608247101561169a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170d9190611b44565b60006040518083038185875af1925050503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f82828661176a565b979650505050505050565b60608315611779575081611632565b8251156117895782518084602001fd5b8160405162461bcd60e51b81526004016104109190611912565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117ce57600080fd5b843593506020850135925060408501356117e7816117a3565b915060608501356117f7816117a3565b939692955090935050565b60006020828403121561181457600080fd5b8135611632816117a3565b6000806040838503121561183257600080fd5b50508035926020909101359150565b60006020828403121561185357600080fd5b5035919050565b6000806040838503121561186d57600080fd5b8235611878816117a3565b946020939093013593505050565b6000806040838503121561189957600080fd5b82356118a4816117a3565b915060208301356118b4816117a3565b809150509250929050565b6000602082840312156118d157600080fd5b813560ff8116811461163257600080fd5b60005b838110156118fd5781810151838201526020016118e5565b8381111561190c576000848401525b50505050565b60208152600082518060208401526119318160408501602087016118e2565b601f01601f19169190910160400192915050565b60008060006060848603121561195a57600080fd5b8335611965816117a3565b92506020840135611975816117a3565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119e657600080fd5b8151611632816117a3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4d57600080fd5b8151801515811461163257600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ace57611ace611aa5565b500190565b600082821015611ae557611ae5611aa5565b500390565b6000816000190483118215151615611b0457611b04611aa5565b500290565b600082611b2657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b3d57600080fd5b5051919050565b60008251611b568184602087016118e2565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212204112a75df884a07f55b081677eb067dc6e24c942e163b4ef04a0cea4b7183af264736f6c634300080c0033 + ///0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80635c975abb116100d9578063ab5921e111610093578063df6fadc11161006e578063df6fadc11461035d578063e3dae51c14610378578063f3e738751461038b578063fabc1cbc1461039e575f5ffd5b8063ab5921e114610322578063ce7c2ac214610337578063d9caed121461034a575f5ffd5b80635c975abb146102c057806361b01b5d146102c85780637a8b2637146102d1578063886f1195146102e45780638c871019146102fc5780638f6a62401461030f575f5ffd5b80633a98ef3911610144578063485cc9551161011f578063485cc95514610263578063553ca5f814610276578063595c6a67146102895780635ac86ab714610291575f5ffd5b80633a98ef391461023057806343fe08b01461024757806347e7ef2414610250575f5ffd5b8063019e27291461018b57806310d67a2f146101a057806311c70c9d146101b3578063136439dd146101c65780632495a599146101d957806339b70e3814610209575b5f5ffd5b61019e61019936600461193a565b6103b1565b005b61019e6101ae366004611981565b61048e565b61019e6101c136600461199c565b61053e565b61019e6101d43660046119bc565b6105f0565b6032546101ec906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ec7f000000000000000000000000000000000000000000000000000000000000000081565b61023960335481565b604051908152602001610200565b61023960645481565b61023961025e3660046119d3565b610731565b61019e6102713660046119fd565b610972565b610239610284366004611981565b610a3a565b61019e610a4d565b6102b061029f366004611a42565b6001805460ff9092161b9081161490565b6040519015158152602001610200565b600154610239565b61023960655481565b6102396102df3660046119bc565b610b15565b5f546101ec906201000090046001600160a01b031681565b61023961030a3660046119bc565b610b5e565b61023961031d366004611981565b610b68565b61032a610b75565b6040516102009190611a5d565b610239610345366004611981565b610b95565b61019e610358366004611a92565b610c27565b60645460655460408051928352602083019190915201610200565b6102396103863660046119bc565b610e09565b6102396103993660046119bc565b610e40565b61019e6103ac3660046119bc565b610e4a565b5f54610100900460ff16158080156103cf57505f54600160ff909116105b806103e85750303b1580156103e857505f5460ff166001145b61040d5760405162461bcd60e51b815260040161040490611ad0565b60405180910390fd5b5f805460ff19166001179055801561042e575f805461ff0019166101001790555b6104388585610fa3565b61044283836110b0565b8015610487575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104de573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105029190611b1e565b6001600160a01b0316336001600160a01b0316146105325760405162461bcd60e51b815260040161040490611b39565b61053b816111fe565b50565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b29190611b1e565b6001600160a01b0316336001600160a01b0316146105e25760405162461bcd60e51b815260040161040490611b39565b6105ec8282610fa3565b5050565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561063a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065e9190611b83565b61067a5760405162461bcd60e51b815260040161040490611ba2565b600154818116146106f35760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610404565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180545f9182918116036107845760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610404565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107fc5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610404565b6108068484611301565b6033545f6108166103e883611bfe565b90505f6103e86108246113e3565b61082e9190611bfe565b90505f61083b8783611c11565b9050806108488489611c24565b6108529190611c3b565b9550855f036108ba5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610404565b6108c48685611bfe565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561094e5760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f53484152455360000000006064820152608401610404565b610967826103e86033546109629190611bfe565b611452565b505050505092915050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b6109c55760405162461bcd60e51b815260040161040490611ad0565b5f805460ff1916600117905580156109e6575f805461ff0019166101001790555b6109f083836110b0565b8015610a35575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f610a476102df83610b95565b92915050565b5f5460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abb9190611b83565b610ad75760405162461bcd60e51b815260040161040490611ba2565b5f19600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b5f5f6103e8603354610b279190611bfe565b90505f6103e8610b356113e3565b610b3f9190611bfe565b905081610b4c8583611c24565b610b569190611c3b565b949350505050565b5f610a4782610e09565b5f610a4761039983610b95565b60606040518060800160405280604d8152602001611ca3604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610c03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a479190611c5a565b60018054600290811603610c795760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610404565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cf15760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610404565b610cfc84848461149e565b60335480831115610d8b5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610404565b5f610d986103e883611bfe565b90505f6103e8610da66113e3565b610db09190611bfe565b90505f82610dbe8784611c24565b610dc89190611c3b565b9050610dd48685611c11565b603355610df4610de48284611c11565b6103e86033546109629190611bfe565b610dff888883611521565b5050505050505050565b5f5f6103e8603354610e1b9190611bfe565b90505f6103e8610e296113e3565b610e339190611bfe565b905080610b4c8386611c24565b5f610a4782610b15565b5f60029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebe9190611b1e565b6001600160a01b0316336001600160a01b031614610eee5760405162461bcd60e51b815260040161040490611b39565b600154198119600154191614610f6c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610404565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610726565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110a55760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610404565b606491909155606555565b5f54610100900460ff1661111a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610404565b603280546001600160a01b0319166001600160a01b03841617905561113f815f611535565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d59190611c71565b604080516001600160a01b03909316835260ff9091166020830152015b60405180910390a15050565b6001600160a01b03811661128c5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610404565b5f54604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a15f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561136b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610404565b6065546113766113e3565b11156113d95760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610404565b6105ec8282611620565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611429573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144d9190611c5a565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161148684670de0b6b3a7640000611c24565b6114909190611c3b565b6040519081526020016111f2565b6032546001600160a01b03838116911614610a355760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610404565b610a356001600160a01b038316848361169c565b5f546201000090046001600160a01b031615801561155b57506001600160a01b03821615155b6115dd5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610404565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26105ec826111fe565b6032546001600160a01b038381169116146105ec5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610404565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610a35928692915f9161172b9185169084906117a8565b805190915015610a3557808060200190518101906117499190611b83565b610a355760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610404565b60606117b684845f856117c0565b90505b9392505050565b6060824710156118215760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610404565b6001600160a01b0385163b6118785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610404565b5f5f866001600160a01b031685876040516118939190611c8c565b5f6040518083038185875af1925050503d805f81146118cd576040519150601f19603f3d011682016040523d82523d5f602084013e6118d2565b606091505b50915091506118e28282866118ed565b979650505050505050565b606083156118fc5750816117b9565b82511561190c5782518084602001fd5b8160405162461bcd60e51b81526004016104049190611a5d565b6001600160a01b038116811461053b575f5ffd5b5f5f5f5f6080858703121561194d575f5ffd5b8435935060208501359250604085013561196681611926565b9150606085013561197681611926565b939692955090935050565b5f60208284031215611991575f5ffd5b81356117b981611926565b5f5f604083850312156119ad575f5ffd5b50508035926020909101359150565b5f602082840312156119cc575f5ffd5b5035919050565b5f5f604083850312156119e4575f5ffd5b82356119ef81611926565b946020939093013593505050565b5f5f60408385031215611a0e575f5ffd5b8235611a1981611926565b91506020830135611a2981611926565b809150509250929050565b60ff8116811461053b575f5ffd5b5f60208284031215611a52575f5ffd5b81356117b981611a34565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215611aa4575f5ffd5b8335611aaf81611926565b92506020840135611abf81611926565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f60208284031215611b2e575f5ffd5b81516117b981611926565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b5f60208284031215611b93575f5ffd5b815180151581146117b9575f5ffd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a4757610a47611bea565b81810381811115610a4757610a47611bea565b8082028115828204841417610a4757610a47611bea565b5f82611c5557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c6a575f5ffd5b5051919050565b5f60208284031215611c81575f5ffd5b81516117b981611a34565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201a3a53117d7cbffcbbaaf50e52ad969dae88cb4d1814fb121f536c6ef441304564736f6c634300081b0033 /// ``` #[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", + b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\x87W_5`\xE0\x1C\x80c\\\x97Z\xBB\x11a\0\xD9W\x80c\xABY!\xE1\x11a\0\x93W\x80c\xDFo\xAD\xC1\x11a\0nW\x80c\xDFo\xAD\xC1\x14a\x03]W\x80c\xE3\xDA\xE5\x1C\x14a\x03xW\x80c\xF3\xE78u\x14a\x03\x8BW\x80c\xFA\xBC\x1C\xBC\x14a\x03\x9EW__\xFD[\x80c\xABY!\xE1\x14a\x03\"W\x80c\xCE|*\xC2\x14a\x037W\x80c\xD9\xCA\xED\x12\x14a\x03JW__\xFD[\x80c\\\x97Z\xBB\x14a\x02\xC0W\x80ca\xB0\x1B]\x14a\x02\xC8W\x80cz\x8B&7\x14a\x02\xD1W\x80c\x88o\x11\x95\x14a\x02\xE4W\x80c\x8C\x87\x10\x19\x14a\x02\xFCW\x80c\x8Fjb@\x14a\x03\x0FW__\xFD[\x80c:\x98\xEF9\x11a\x01DW\x80cH\\\xC9U\x11a\x01\x1FW\x80cH\\\xC9U\x14a\x02cW\x80cU<\xA5\xF8\x14a\x02vW\x80cY\\jg\x14a\x02\x89W\x80cZ\xC8j\xB7\x14a\x02\x91W__\xFD[\x80c:\x98\xEF9\x14a\x020W\x80cC\xFE\x08\xB0\x14a\x02GW\x80cG\xE7\xEF$\x14a\x02PW__\xFD[\x80c\x01\x9E')\x14a\x01\x8BW\x80c\x10\xD6z/\x14a\x01\xA0W\x80c\x11\xC7\x0C\x9D\x14a\x01\xB3W\x80c\x13d9\xDD\x14a\x01\xC6W\x80c$\x95\xA5\x99\x14a\x01\xD9W\x80c9\xB7\x0E8\x14a\x02\tW[__\xFD[a\x01\x9Ea\x01\x996`\x04a\x19:V[a\x03\xB1V[\0[a\x01\x9Ea\x01\xAE6`\x04a\x19\x81V[a\x04\x8EV[a\x01\x9Ea\x01\xC16`\x04a\x19\x9CV[a\x05>V[a\x01\x9Ea\x01\xD46`\x04a\x19\xBCV[a\x05\xF0V[`2Ta\x01\xEC\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\xEC\x7F\0\0\0\0\0\0\0\0\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\x029`3T\x81V[`@Q\x90\x81R` \x01a\x02\0V[a\x029`dT\x81V[a\x029a\x02^6`\x04a\x19\xD3V[a\x071V[a\x01\x9Ea\x02q6`\x04a\x19\xFDV[a\trV[a\x029a\x02\x846`\x04a\x19\x81V[a\n:V[a\x01\x9Ea\nMV[a\x02\xB0a\x02\x9F6`\x04a\x1ABV[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02\0V[`\x01Ta\x029V[a\x029`eT\x81V[a\x029a\x02\xDF6`\x04a\x19\xBCV[a\x0B\x15V[_Ta\x01\xEC\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x029a\x03\n6`\x04a\x19\xBCV[a\x0B^V[a\x029a\x03\x1D6`\x04a\x19\x81V[a\x0BhV[a\x03*a\x0BuV[`@Qa\x02\0\x91\x90a\x1A]V[a\x029a\x03E6`\x04a\x19\x81V[a\x0B\x95V[a\x01\x9Ea\x03X6`\x04a\x1A\x92V[a\x0C'V[`dT`eT`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x02\0V[a\x029a\x03\x866`\x04a\x19\xBCV[a\x0E\tV[a\x029a\x03\x996`\x04a\x19\xBCV[a\x0E@V[a\x01\x9Ea\x03\xAC6`\x04a\x19\xBCV[a\x0EJV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x03\xCFWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x03\xE8WP0;\x15\x80\x15a\x03\xE8WP_T`\xFF\x16`\x01\x14[a\x04\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1A\xD0V[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x04.W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x048\x85\x85a\x0F\xA3V[a\x04B\x83\x83a\x10\xB0V[\x80\x15a\x04\x87W_\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[_`\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\x04\xDEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x02\x91\x90a\x1B\x1EV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x052W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B9V[a\x05;\x81a\x11\xFEV[PV[_`\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\x8EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xB2\x91\x90a\x1B\x1EV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B9V[a\x05\xEC\x82\x82a\x0F\xA3V[PPV[_T`@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\x06:W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06^\x91\x90a\x1B\x83V[a\x06zW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B\xA2V[`\x01T\x81\x81\x16\x14a\x06\xF3W`@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\x04V[`\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_\x91\x82\x91\x81\x16\x03a\x07\x84W`@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\x04V[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\x07\xFCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x04\x04V[a\x08\x06\x84\x84a\x13\x01V[`3T_a\x08\x16a\x03\xE8\x83a\x1B\xFEV[\x90P_a\x03\xE8a\x08$a\x13\xE3V[a\x08.\x91\x90a\x1B\xFEV[\x90P_a\x08;\x87\x83a\x1C\x11V[\x90P\x80a\x08H\x84\x89a\x1C$V[a\x08R\x91\x90a\x1C;V[\x95P\x85_\x03a\x08\xBAW`@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\x04V[a\x08\xC4\x86\x85a\x1B\xFEV[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\tNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x04\x04V[a\tg\x82a\x03\xE8`3Ta\tb\x91\x90a\x1B\xFEV[a\x14RV[PPPPP\x92\x91PPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\t\x90WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\t\xA9WP0;\x15\x80\x15a\t\xA9WP_T`\xFF\x16`\x01\x14[a\t\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1A\xD0V[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\xE6W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t\xF0\x83\x83a\x10\xB0V[\x80\x15a\n5W_\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[_a\nGa\x02\xDF\x83a\x0B\x95V[\x92\x91PPV[_T`@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\x97W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xBB\x91\x90a\x1B\x83V[a\n\xD7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B\xA2V[_\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\x03\xE8`3Ta\x0B'\x91\x90a\x1B\xFEV[\x90P_a\x03\xE8a\x0B5a\x13\xE3V[a\x0B?\x91\x90a\x1B\xFEV[\x90P\x81a\x0BL\x85\x83a\x1C$V[a\x0BV\x91\x90a\x1C;V[\x94\x93PPPPV[_a\nG\x82a\x0E\tV[_a\nGa\x03\x99\x83a\x0B\x95V[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x1C\xA3`M\x919\x90P\x90V[`@Qc=?\x06\xC9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R0`$\x83\x01R_\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\x0C\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nG\x91\x90a\x1CZV[`\x01\x80T`\x02\x90\x81\x16\x03a\x0CyW`@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\x04V[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\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x04\x04V[a\x0C\xFC\x84\x84\x84a\x14\x9EV[`3T\x80\x83\x11\x15a\r\x8BW`@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\x04V[_a\r\x98a\x03\xE8\x83a\x1B\xFEV[\x90P_a\x03\xE8a\r\xA6a\x13\xE3V[a\r\xB0\x91\x90a\x1B\xFEV[\x90P_\x82a\r\xBE\x87\x84a\x1C$V[a\r\xC8\x91\x90a\x1C;V[\x90Pa\r\xD4\x86\x85a\x1C\x11V[`3Ua\r\xF4a\r\xE4\x82\x84a\x1C\x11V[a\x03\xE8`3Ta\tb\x91\x90a\x1B\xFEV[a\r\xFF\x88\x88\x83a\x15!V[PPPPPPPPV[__a\x03\xE8`3Ta\x0E\x1B\x91\x90a\x1B\xFEV[\x90P_a\x03\xE8a\x0E)a\x13\xE3V[a\x0E3\x91\x90a\x1B\xFEV[\x90P\x80a\x0BL\x83\x86a\x1C$V[_a\nG\x82a\x0B\x15V[_`\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\x9AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xBE\x91\x90a\x1B\x1EV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0E\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x90a\x1B9V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x0FlW`@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\x04V[`\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\xA5W`@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\x04V[`d\x91\x90\x91U`eUV[_Ta\x01\0\x90\x04`\xFF\x16a\x11\x1AW`@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\x04V[`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90Ua\x11?\x81_a\x155V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xB1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\xD5\x91\x90a\x1CqV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\x8CW`@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\x04V[_T`@\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_\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\x13kW`@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\x04V[`eTa\x13va\x13\xE3V[\x11\x15a\x13\xD9W`@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\x04V[a\x05\xEC\x82\x82a\x16 V[`2T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R_\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14)W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14M\x91\x90a\x1CZV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x14\x86\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x1C$V[a\x14\x90\x91\x90a\x1C;V[`@Q\x90\x81R` \x01a\x11\xF2V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\n5W`@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\x04V[a\n5`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x16\x9CV[_Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x15[WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x15\xDDW`@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\x04V[`\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\x05\xEC\x82a\x11\xFEV[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x05\xECW`@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\x04V[`@\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\n5\x92\x86\x92\x91_\x91a\x17+\x91\x85\x16\x90\x84\x90a\x17\xA8V[\x80Q\x90\x91P\x15a\n5W\x80\x80` \x01\x90Q\x81\x01\x90a\x17I\x91\x90a\x1B\x83V[a\n5W`@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\x04V[``a\x17\xB6\x84\x84_\x85a\x17\xC0V[\x90P[\x93\x92PPPV[``\x82G\x10\x15a\x18!W`@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\x04V[`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x18xW`@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\x04V[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x18\x93\x91\x90a\x1C\x8CV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x18\xCDW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x18\xD2V[``\x91P[P\x91P\x91Pa\x18\xE2\x82\x82\x86a\x18\xEDV[\x97\x96PPPPPPPV[``\x83\x15a\x18\xFCWP\x81a\x17\xB9V[\x82Q\x15a\x19\x0CW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x04\x91\x90a\x1A]V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05;W__\xFD[____`\x80\x85\x87\x03\x12\x15a\x19MW__\xFD[\x845\x93P` \x85\x015\x92P`@\x85\x015a\x19f\x81a\x19&V[\x91P``\x85\x015a\x19v\x81a\x19&V[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a\x19\x91W__\xFD[\x815a\x17\xB9\x81a\x19&V[__`@\x83\x85\x03\x12\x15a\x19\xADW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a\x19\xCCW__\xFD[P5\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x19\xE4W__\xFD[\x825a\x19\xEF\x81a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[__`@\x83\x85\x03\x12\x15a\x1A\x0EW__\xFD[\x825a\x1A\x19\x81a\x19&V[\x91P` \x83\x015a\x1A)\x81a\x19&V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x05;W__\xFD[_` \x82\x84\x03\x12\x15a\x1ARW__\xFD[\x815a\x17\xB9\x81a\x1A4V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[___``\x84\x86\x03\x12\x15a\x1A\xA4W__\xFD[\x835a\x1A\xAF\x81a\x19&V[\x92P` \x84\x015a\x1A\xBF\x81a\x19&V[\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[_` \x82\x84\x03\x12\x15a\x1B.W__\xFD[\x81Qa\x17\xB9\x81a\x19&V[` \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[_` \x82\x84\x03\x12\x15a\x1B\x93W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x17\xB9W__\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_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\nGWa\nGa\x1B\xEAV[\x81\x81\x03\x81\x81\x11\x15a\nGWa\nGa\x1B\xEAV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\nGWa\nGa\x1B\xEAV[_\x82a\x1CUWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[_` \x82\x84\x03\x12\x15a\x1CjW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1C\x81W__\xFD[\x81Qa\x17\xB9\x81a\x1A4V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \x1A:S\x11}|\xBF\xFC\xBB\xAA\xF5\x0ER\xAD\x96\x9D\xAE\x88\xCBM\x18\x14\xFB\x12\x1FSln\xF4A0EdsolcC\0\x08\x1B\x003", ); + /**Event with signature `ExchangeRateEmitted(uint256)` and selector `0xd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be8`. + ```solidity + event ExchangeRateEmitted(uint256 rate); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ExchangeRateEmitted { + #[allow(missing_docs)] + pub rate: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ExchangeRateEmitted { + 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 = "ExchangeRateEmitted(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { rate: 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.rate, + ), + ) + } + #[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 ExchangeRateEmitted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ExchangeRateEmitted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ExchangeRateEmitted) -> 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -712,7 +859,12 @@ pub mod StrategyBaseTVLLimits { ```solidity event MaxPerDepositUpdated(uint256 previousValue, uint256 newValue); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MaxPerDepositUpdated { #[allow(missing_docs)] @@ -720,7 +872,12 @@ pub mod StrategyBaseTVLLimits { #[allow(missing_docs)] pub newValue: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -811,7 +968,12 @@ pub mod StrategyBaseTVLLimits { ```solidity event MaxTotalDepositsUpdated(uint256 previousValue, uint256 newValue); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MaxTotalDepositsUpdated { #[allow(missing_docs)] @@ -819,7 +981,12 @@ pub mod StrategyBaseTVLLimits { #[allow(missing_docs)] pub newValue: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -910,7 +1077,12 @@ pub mod StrategyBaseTVLLimits { ```solidity event Paused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -918,7 +1090,12 @@ pub mod StrategyBaseTVLLimits { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1009,7 +1186,12 @@ pub mod StrategyBaseTVLLimits { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -1017,7 +1199,12 @@ pub mod StrategyBaseTVLLimits { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1104,11 +1291,125 @@ pub mod StrategyBaseTVLLimits { } } }; + /**Event with signature `StrategyTokenSet(address,uint8)` and selector `0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507`. + ```solidity + event StrategyTokenSet(address token, uint8 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct StrategyTokenSet { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub decimals: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyTokenSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + 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 = "StrategyTokenSet(address,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 28u8, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, + 199u8, 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, + 50u8, 122u8, 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + token: data.0, + decimals: 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.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 StrategyTokenSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyTokenSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyTokenSet) -> 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -1116,7 +1417,12 @@ pub mod StrategyBaseTVLLimits { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1207,7 +1513,7 @@ pub mod StrategyBaseTVLLimits { ```solidity constructor(address _strategyManager); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _strategyManager: alloy::sol_types::private::Address, @@ -1269,19 +1575,24 @@ pub mod StrategyBaseTVLLimits { ```solidity function deposit(address token, uint256 amount) external returns (uint256 newShares); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositReturn { pub newShares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1396,16 +1707,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function explanation() external pure returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct explanationCall {} ///Container type for the return parameters of the [`explanation()`](explanationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct explanationReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1501,17 +1817,22 @@ pub mod StrategyBaseTVLLimits { ```solidity function getTVLLimits() external view returns (uint256, uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getTVLLimitsCall {} ///Container type for the return parameters of the [`getTVLLimits()`](getTVLLimitsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1619,7 +1940,7 @@ pub mod StrategyBaseTVLLimits { ```solidity function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken, address _pauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initialize_0Call { pub _maxPerDeposit: alloy::sol_types::private::primitives::aliases::U256, @@ -1628,10 +1949,15 @@ pub mod StrategyBaseTVLLimits { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initialize_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1765,17 +2091,22 @@ pub mod StrategyBaseTVLLimits { ```solidity function initialize(address _underlyingToken, address _pauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initialize_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1890,16 +2221,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function maxPerDeposit() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct maxPerDepositCall {} ///Container type for the return parameters of the [`maxPerDeposit()`](maxPerDepositCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct maxPerDepositReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1995,16 +2331,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function maxTotalDeposits() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct maxTotalDepositsCall {} ///Container type for the return parameters of the [`maxTotalDeposits()`](maxTotalDepositsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct maxTotalDepositsReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2100,16 +2441,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2211,14 +2557,19 @@ pub mod StrategyBaseTVLLimits { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2314,18 +2665,23 @@ pub mod StrategyBaseTVLLimits { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2425,16 +2781,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2530,16 +2891,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2635,16 +3001,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2746,17 +3117,22 @@ pub mod StrategyBaseTVLLimits { ```solidity function setTVLLimits(uint256 newMaxPerDeposit, uint256 newMaxTotalDeposits) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setTVLLimitsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2871,18 +3247,23 @@ pub mod StrategyBaseTVLLimits { ```solidity function shares(address user) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2982,18 +3363,23 @@ pub mod StrategyBaseTVLLimits { ```solidity function sharesToUnderlying(uint256 amountShares) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesToUnderlyingReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3095,18 +3481,23 @@ pub mod StrategyBaseTVLLimits { ```solidity function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesToUnderlyingViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3208,16 +3599,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function strategyManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerCall {} ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3313,16 +3709,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function totalShares() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSharesCall {} ///Container type for the return parameters of the [`totalShares()`](totalSharesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3418,18 +3819,23 @@ pub mod StrategyBaseTVLLimits { ```solidity function underlyingToShares(uint256 amountUnderlying) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingToSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3531,18 +3937,23 @@ pub mod StrategyBaseTVLLimits { ```solidity function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingToSharesViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3644,16 +4055,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function underlyingToken() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingTokenCall {} ///Container type for the return parameters of the [`underlyingToken()`](underlyingTokenCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingTokenReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3749,16 +4165,21 @@ pub mod StrategyBaseTVLLimits { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3860,18 +4281,23 @@ pub mod StrategyBaseTVLLimits { ```solidity function userUnderlying(address user) external returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct userUnderlyingReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3971,18 +4397,23 @@ pub mod StrategyBaseTVLLimits { ```solidity function userUnderlyingView(address user) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct userUnderlyingViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4082,7 +4513,7 @@ pub mod StrategyBaseTVLLimits { ```solidity function withdraw(address recipient, address token, uint256 amountShares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawCall { pub recipient: alloy::sol_types::private::Address, @@ -4090,10 +4521,15 @@ pub mod StrategyBaseTVLLimits { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4837,11 +5273,13 @@ pub mod StrategyBaseTVLLimits { } ///Container for all the [`StrategyBaseTVLLimits`](self) events. pub enum StrategyBaseTVLLimitsEvents { + ExchangeRateEmitted(ExchangeRateEmitted), Initialized(Initialized), MaxPerDepositUpdated(MaxPerDepositUpdated), MaxTotalDepositsUpdated(MaxTotalDepositsUpdated), Paused(Paused), PauserRegistrySet(PauserRegistrySet), + StrategyTokenSet(StrategyTokenSet), Unpaused(Unpaused), } #[automatically_derived] @@ -4853,6 +5291,11 @@ pub mod StrategyBaseTVLLimits { /// /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 28u8, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, 199u8, + 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, 50u8, 122u8, + 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ], [ 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, @@ -4878,6 +5321,11 @@ pub mod StrategyBaseTVLLimits { 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, ], + [ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ], [ 249u8, 126u8, 212u8, 224u8, 131u8, 172u8, 172u8, 103u8, 131u8, 0u8, 37u8, 236u8, 188u8, 117u8, 109u8, 143u8, 232u8, 71u8, 205u8, 189u8, 202u8, 76u8, 238u8, 63u8, @@ -4888,13 +5336,19 @@ pub mod StrategyBaseTVLLimits { #[automatically_derived] impl alloy_sol_types::SolEventInterface for StrategyBaseTVLLimitsEvents { const NAME: &'static str = "StrategyBaseTVLLimitsEvents"; - const COUNT: usize = 6usize; + const COUNT: usize = 8usize; 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::ExchangeRateEmitted) + } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, @@ -4923,6 +5377,12 @@ pub mod StrategyBaseTVLLimits { ) .map(Self::PauserRegistrySet) } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyTokenSet) + } Some(::SIGNATURE_HASH) => { ::decode_raw_log(topics, data, validate) .map(Self::Unpaused) @@ -4943,6 +5403,9 @@ pub mod StrategyBaseTVLLimits { impl alloy_sol_types::private::IntoLogData for StrategyBaseTVLLimitsEvents { fn to_log_data(&self) -> alloy_sol_types::private::LogData { match self { + Self::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::Initialized(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -4956,11 +5419,17 @@ pub mod StrategyBaseTVLLimits { Self::PauserRegistrySet(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::StrategyTokenSet(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::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::Initialized(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -4974,6 +5443,9 @@ pub mod StrategyBaseTVLLimits { Self::PauserRegistrySet(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::StrategyTokenSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::Unpaused(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -5361,6 +5833,12 @@ pub mod StrategyBaseTVLLimits { ) -> alloy_contract::Event { alloy_contract::Event::new_sol(&self.provider, &self.address) } + ///Creates a new event filter for the [`ExchangeRateEmitted`] event. + pub fn ExchangeRateEmitted_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::() @@ -5387,6 +5865,10 @@ pub mod StrategyBaseTVLLimits { ) -> alloy_contract::Event { self.event_filter::() } + ///Creates a new event filter for the [`StrategyTokenSet`] event. + pub fn StrategyTokenSet_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/deploy/strings.rs b/crates/utils/src/deploy/strings.rs new file mode 100644 index 00000000..368a962d --- /dev/null +++ b/crates/utils/src/deploy/strings.rs @@ -0,0 +1,224 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod Strings { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122023fac766a07bbc3c921a7f36b4379c0715894509892f7efd147d78b848061a7a64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`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__\xFD\xFE\xA2dipfsX\"\x12 #\xFA\xC7f\xA0{\xBC<\x92\x1A\x7F6\xB47\x9C\x07\x15\x89E\t\x89/~\xFD\x14}x\xB8H\x06\x1AzdsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122023fac766a07bbc3c921a7f36b4379c0715894509892f7efd147d78b848061a7a64736f6c634300081b0033 + /// ``` + #[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__\xFD\xFE\xA2dipfsX\"\x12 #\xFA\xC7f\xA0{\xBC<\x92\x1A\x7F6\xB47\x9C\x07\x15\x89E\t\x89/~\xFD\x14}x\xB8H\x06\x1AzdsolcC\0\x08\x1B\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/tokenandstrategycontractsparser.rs b/crates/utils/src/deploy/tokenandstrategycontractsparser.rs similarity index 90% rename from crates/utils/src/tokenandstrategycontractsparser.rs rename to crates/utils/src/deploy/tokenandstrategycontractsparser.rs index 6f5a1905..3c13073c 100644 --- a/crates/utils/src/tokenandstrategycontractsparser.rs +++ b/crates/utils/src/deploy/tokenandstrategycontractsparser.rs @@ -25,44 +25,54 @@ interface TokenAndStrategyContractsParser { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod TokenAndStrategyContractsParser { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220b554c03c78d34bd0a56dfaab3a6a28d9d4d850856514e47bd387e3eacd4b3bc664736f6c634300080c0033 + ///0x6080604052600c805462ff00ff191662010001179055348015601f575f5ffd5b50608680602b5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063f8ccbf4714602a575b5f5ffd5b600c54603c9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212209a4bf75164add2d8f0fa22fd3af639a3236f68ab93df4980004de8f0264e52d064736f6c634300081b0033 /// ``` #[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 v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xC0V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x02\xDDW`@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\x01\xA7V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xF7\x91\x90a\x04\x88V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x03/W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x034V[``\x91P[P\x90\x92P\x90Pa\x03E\x82\x82\x86a\x03OV[\x96\x95PPPPPPV[``\x83\x15a\x03^WP\x81a\x01?V[\x82Q\x15a\x03nW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xA7\x91\x90a\x04\x9EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x9EW__\xFD[\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[___``\x84\x86\x03\x12\x15a\x03\xC9W__\xFD[a\x03\xD2\x84a\x03\x88V[\x92Pa\x03\xE0` \x85\x01a\x03\x88V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\xFBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x04\x0BW__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04$Wa\x04$a\x03\xA3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x04RWa\x04Ra\x03\xA3V[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x04iW__\xFD[\x81` \x84\x01` \x83\x01^_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[a\x07\xCB\x80a\x04\xE0_9_\xF3\xFE`\x80`@R`\x046\x10a\0MW_5`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0dW\x80cO\x1E\xF2\x86\x14a\0\x83W\x80c\\`\xDA\x1B\x14a\0\x96W\x80c\x8F(9p\x14a\0\xC6W\x80c\xF8Q\xA4@\x14a\0\xE5Wa\0\\V[6a\0\\Wa\0Za\0\xF9V[\0[a\0Za\0\xF9V[4\x80\x15a\0oW__\xFD[Pa\0Za\0~6`\x04a\x06\x8CV[a\x01\x13V[a\0Za\0\x916`\x04a\x06\xA5V[a\x01NV[4\x80\x15a\0\xA1W__\xFD[Pa\0\xAAa\x01\xB4V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD1W__\xFD[Pa\0Za\0\xE06`\x04a\x06\x8CV[a\x01\xE4V[4\x80\x15a\0\xF0W__\xFD[Pa\0\xAAa\x02\x04V[a\x01\x01a\x02$V[a\x01\x11a\x01\x0Ca\x02\xB9V[a\x02\xC2V[V[a\x01\x1Ba\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x03\x12V[PV[a\x01Ca\0\xF9V[a\x01Va\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xACWa\x01\xA7\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_\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x12\x91PPV[PPPV[a\x01\xA7a\0\xF9V[_a\x01\xBDa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xD9Wa\x01\xD4a\x02\xB9V[\x90P\x90V[a\x01\xE1a\0\xF9V[\x90V[a\x01\xECa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81a\x03\x80\x80\x15a\x02\xDCW=_\xF3[=_\xFD[_\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\x1B\x83a\x03\xB7V[_\x82Q\x11\x80a\x03'WP\x80[\x15a\x01\xA7Wa\x036\x83\x83a\x03\xF6V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03ea\x02\xE0V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01C\x81a\x04\"V[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x03V[a\x03\xC0\x81a\x04\xCBV[`@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_\x90\xA2PV[``a\x04\x1B\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x07o`'\x919a\x05_V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04\x87W`@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\x02\xB0V[\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[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x058W`@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\x02\xB0V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04\xAAV[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x05\xC7W`@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\x02\xB0V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05\xE1\x91\x90a\x07#V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x06\x19W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x06\x1EV[``\x91P[P\x91P\x91Pa\x06.\x82\x82\x86a\x068V[\x96\x95PPPPPPV[``\x83\x15a\x06GWP\x81a\x04\x1BV[\x82Q\x15a\x06WW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB0\x91\x90a\x079V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x87W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\x9CW__\xFD[a\x04\x1B\x82a\x06qV[___`@\x84\x86\x03\x12\x15a\x06\xB7W__\xFD[a\x06\xC0\x84a\x06qV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xDBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x06\xEBW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x01W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x07\x12W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xF7\xD2\xAB\x95a\x9B\xF8R\xF9-\xBB\x93]\\\x891\x9E\xD0\xB1/\xB2K\xC3\x10\xAD\xF1-s%\xF5/\xCBdsolcC\0\x08\x1B\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 + ///0x60806040526004361061004d575f3560e01c80633659cfe6146100645780634f1ef286146100835780635c60da1b146100965780638f283970146100c6578063f851a440146100e55761005c565b3661005c5761005a6100f9565b005b61005a6100f9565b34801561006f575f5ffd5b5061005a61007e36600461068c565b610113565b61005a6100913660046106a5565b61014e565b3480156100a1575f5ffd5b506100aa6101b4565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d1575f5ffd5b5061005a6100e036600461068c565b6101e4565b3480156100f0575f5ffd5b506100aa610204565b610101610224565b61011161010c6102b9565b6102c2565b565b61011b6102e0565b6001600160a01b03163303610146576101438160405180602001604052805f8152505f610312565b50565b6101436100f9565b6101566102e0565b6001600160a01b031633036101ac576101a78383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610312915050565b505050565b6101a76100f9565b5f6101bd6102e0565b6001600160a01b031633036101d9576101d46102b9565b905090565b6101e16100f9565b90565b6101ec6102e0565b6001600160a01b03163303610146576101438161033c565b5f61020d6102e0565b6001600160a01b031633036101d9576101d46102e0565b61022c6102e0565b6001600160a01b031633036101115760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101d4610390565b365f5f375f5f365f845af43d5f5f3e8080156102dc573d5ff35b3d5ffd5b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61031b836103b7565b5f825111806103275750805b156101a75761033683836103f6565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103656102e0565b604080516001600160a01b03928316815291841660208301520160405180910390a161014381610422565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610303565b6103c0816104cb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061041b838360405180606001604052806027815260200161076f6027913961055f565b9392505050565b6001600160a01b0381166104875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b0565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6105385760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102b0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104aa565b60606001600160a01b0384163b6105c75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b0565b5f5f856001600160a01b0316856040516105e19190610723565b5f60405180830381855af49150503d805f8114610619576040519150601f19603f3d011682016040523d82523d5f602084013e61061e565b606091505b509150915061062e828286610638565b9695505050505050565b6060831561064757508161041b565b8251156106575782518084602001fd5b8160405162461bcd60e51b81526004016102b09190610739565b80356001600160a01b0381168114610687575f5ffd5b919050565b5f6020828403121561069c575f5ffd5b61041b82610671565b5f5f5f604084860312156106b7575f5ffd5b6106c084610671565b9250602084013567ffffffffffffffff8111156106db575f5ffd5b8401601f810186136106eb575f5ffd5b803567ffffffffffffffff811115610701575f5ffd5b866020828401011115610712575f5ffd5b939660209190910195509293505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f7d2ab95619bf852f92dbb935d5c89319ed0b12fb24bc310adf12d7325f52fcb64736f6c634300081b0033 + /// ``` + #[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\0MW_5`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0dW\x80cO\x1E\xF2\x86\x14a\0\x83W\x80c\\`\xDA\x1B\x14a\0\x96W\x80c\x8F(9p\x14a\0\xC6W\x80c\xF8Q\xA4@\x14a\0\xE5Wa\0\\V[6a\0\\Wa\0Za\0\xF9V[\0[a\0Za\0\xF9V[4\x80\x15a\0oW__\xFD[Pa\0Za\0~6`\x04a\x06\x8CV[a\x01\x13V[a\0Za\0\x916`\x04a\x06\xA5V[a\x01NV[4\x80\x15a\0\xA1W__\xFD[Pa\0\xAAa\x01\xB4V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD1W__\xFD[Pa\0Za\0\xE06`\x04a\x06\x8CV[a\x01\xE4V[4\x80\x15a\0\xF0W__\xFD[Pa\0\xAAa\x02\x04V[a\x01\x01a\x02$V[a\x01\x11a\x01\x0Ca\x02\xB9V[a\x02\xC2V[V[a\x01\x1Ba\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x03\x12V[PV[a\x01Ca\0\xF9V[a\x01Va\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xACWa\x01\xA7\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_\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x12\x91PPV[PPPV[a\x01\xA7a\0\xF9V[_a\x01\xBDa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\xD9Wa\x01\xD4a\x02\xB9V[\x90P\x90V[a\x01\xE1a\0\xF9V[\x90V[a\x01\xECa\x02\xE0V[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01FWa\x01C\x81a\x03\x80\x80\x15a\x02\xDCW=_\xF3[=_\xFD[_\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\x1B\x83a\x03\xB7V[_\x82Q\x11\x80a\x03'WP\x80[\x15a\x01\xA7Wa\x036\x83\x83a\x03\xF6V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03ea\x02\xE0V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01C\x81a\x04\"V[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x03V[a\x03\xC0\x81a\x04\xCBV[`@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_\x90\xA2PV[``a\x04\x1B\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x07o`'\x919a\x05_V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04\x87W`@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\x02\xB0V[\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[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x058W`@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\x02\xB0V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04\xAAV[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x05\xC7W`@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\x02\xB0V[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05\xE1\x91\x90a\x07#V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x06\x19W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x06\x1EV[``\x91P[P\x91P\x91Pa\x06.\x82\x82\x86a\x068V[\x96\x95PPPPPPV[``\x83\x15a\x06GWP\x81a\x04\x1BV[\x82Q\x15a\x06WW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB0\x91\x90a\x079V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x87W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\x9CW__\xFD[a\x04\x1B\x82a\x06qV[___`@\x84\x86\x03\x12\x15a\x06\xB7W__\xFD[a\x06\xC0\x84a\x06qV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xDBW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x06\xEBW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x01W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x07\x12W__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xF7\xD2\xAB\x95a\x9B\xF8R\xF9-\xBB\x93]\\\x891\x9E\xD0\xB1/\xB2K\xC3\x10\xAD\xF1-s%\xF5/\xCBdsolcC\0\x08\x1B\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct adminCall {} + ///Container type for the return parameters of the [`admin()`](adminCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct adminReturn { + pub admin_: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct changeAdminReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct implementationCall {} + ///Container type for the return parameters of the [`implementation()`](implementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct implementationReturn { + pub implementation_: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct upgradeToReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct upgradeToAndCallReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/deploy/updateoperators.rs b/crates/utils/src/deploy/updateoperators.rs new file mode 100644 index 00000000..e4ec9fb4 --- /dev/null +++ b/crates/utils/src/deploy/updateoperators.rs @@ -0,0 +1,715 @@ +/** + +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::pub_underscore_fields, + clippy::style +)] +pub mod UpdateOperators { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c80546201000162ff00ff19909116179055600f80546001600160a01b031916735fbdb2315678afecb367f032d93f642f64180aa31790553480156047575f5ffd5b5061176e806100555f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80630a9254e414610043578063c04062261461004d578063f8ccbf4714610055575b5f5ffd5b61004b61007c565b005b61004b610159565b600c546100689062010000900460ff1681565b604051901515815260200160405180910390f35b600a600e55617a69461480610092575046610539145b156100c0576040518060600160405280603b81526020016116da603b9139600d906100bd90826112a6565b50565b60405163f877cb1960e01b81526020600482015260086024820152674d4e454d4f4e494360c01b6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb19906064015f60405180830381865afa158015610125573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261014c91908101906113d8565b600d906100bd90826112a6565b5f610162610773565b90505f61016d6109e6565b90505f600e5467ffffffffffffffff81111561018b5761018b61120e565b6040519080825280602002602001820160405280156101b4578160200160208202803683370190505b5090505f600e5467ffffffffffffffff8111156101d3576101d361120e565b6040519080825280602002602001820160405280156101fc578160200160208202803683370190505b5090505f600e5467ffffffffffffffff81111561021b5761021b61120e565b604051908082528060200260200182016040528015610244578160200160208202803683370190505b5090505f5b600e548110156103b0575f6102e6600d805461026490611222565b80601f016020809104026020016040519081016040528092919081815260200182805461029090611222565b80156102db5780601f106102b2576101008083540402835291602001916102db565b820191905f5260205f20905b8154815290600101906020018083116102be57829003601f168201915b505050505083610a69565b509050808583815181106102fc576102fc61141d565b60200260200101906001600160a01b031690816001600160a01b031681525050674563918244f400008483815181106103375761033761141d565b60200260200101818152505061038a825f1b60405160200161035b91815260200190565b604051602081830303815290604052805190602001205f1c670de0b6b3a7640000678ac7230489e80000610b64565b83838151811061039c5761039c61141d565b602090810291909101015250600101610249565b505f5160206116ba5f395f51905f525f1c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156103f8575f5ffd5b505af115801561040a573d5f5f3e3d5ffd5b505050506104195f8484610ba7565b8351610426908483610ba7565b5f5160206116ba5f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561046d575f5ffd5b505af115801561047f573d5f5f3e3d5ffd5b505f925050505b600e5481101561076b57600d80545f91607891839161052a916104a890611222565b80601f01602080910402602001604051908101604052809291908181526020018280546104d490611222565b801561051f5780601f106104f65761010080835404028352916020019161051f565b820191905f5260205f20905b81548152906001019060200180831161050257829003601f168201915b505050505085610a69565b60405163ce817d4760e01b815260048101829052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ce817d47906024015f604051808303815f87803b158015610578575f5ffd5b505af115801561058a573d5f5f3e3d5ffd5b5050600f5460405163566add5160e11b815260806004820152601c60848201527f746573745f6d6f646966795f6f70657261746f725f64657461696c730000000060a4820152602481018890524360448201524260648201526001600160a01b03909116925063acd5baa2915060c4015f604051808303815f87803b158015610611575f5ffd5b505af1158015610623573d5f5f3e3d5ffd5b5050505088606001516001600160a01b031663f16172b060405180606001604052808a88815181106106575761065761141d565b60200260200101516001600160a01b03168152602001866001600160a01b031681526020018563ffffffff168152506040518263ffffffff1660e01b81526004016106d2919081516001600160a01b0390811682526020808401519091169082015260409182015163ffffffff169181019190915260600190565b5f604051808303815f87803b1580156106e9575f5ffd5b505af11580156106fb573d5f5f3e3d5ffd5b505050505f5160206116ba5f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610746575f5ffd5b505af1158015610758573d5f5f3e3d5ffd5b5050600190950194506104869350505050565b505050505050565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525f6107f26040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610cf2565b90505f610834826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e00815250610ee4565b90505f610876836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c617965725061757365725265670000815250610ee4565b90505f6108b8846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e61676572000000000000815250610ee4565b90505f6108f285604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b815250610ee4565b90505f610934866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f7279000000000000000000815250610ee4565b90505f61096b87604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b815250610ee4565b90505f6109908860405180606001604052806025815260200161169560259139610ee4565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a08301525f60c083015290911660e082015292915050565b604080518082019091525f80825260208201525f610a1b60405180606001604052806024815260200161171560249139610cf2565b90505f610a4a826040518060400160405280600a8152602001692e61646472657373657360b01b815250610f67565b90505f81806020019051810190610a619190611445565b949350505050565b604051636229498b60e01b81525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90636229498b90610aa690879087906004016114d2565b602060405180830381865afa158015610ac1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae591906114f9565b604051630884001960e21b815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906322100064906024016020604051808303815f875af1158015610b37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5b9190611510565b91509250929050565b5f610b70848484610fe4565b9050610ba06040518060400160405280600c81526020016b109bdd5b99081c995cdd5b1d60a21b815250826111a1565b9392505050565b5f5b8251811015610cec576001600160a01b038416610c2e57828181518110610bd257610bd261141d565b60200260200101516001600160a01b03166108fc838381518110610bf857610bf861141d565b602002602001015190811502906040515f60405180830381858888f19350505050158015610c28573d5f5f3e3d5ffd5b50610ce4565b836001600160a01b031663a9059cbb848381518110610c4f57610c4f61141d565b6020026020010151848481518110610c6957610c6961141d565b60200260200101516040518363ffffffff1660e01b8152600401610ca29291906001600160a01b03929092168252602082015260400190565b6020604051808303815f875af1158015610cbe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce2919061152b565b505b600101610ba9565b50505050565b60605f5f5160206116ba5f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015610d3f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d6691908101906113d8565b604051602001610d769190611561565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015610dd4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dfb91908101906113d8565b604051602001610e0b919061158b565b60405160208183030381529060405290505f84604051602001610e2e91906115a7565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610e6f908690869086906020016115c7565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610e9a91906115e4565b5f60405180830381865afa158015610eb4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610edb91908101906113d8565b95945050505050565b604051631e19e65760e01b81525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790610f1f90869086906004016115f6565b602060405180830381865afa158015610f3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5e9190611510565b90505b92915050565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef190610fa390869086906004016115f6565b5f60405180830381865afa158015610fbd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f5e91908101906113d8565b5f8183111561105f5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b82841015801561106f5750818411155b1561107b575082610ba0565b5f611086848461162e565b611091906001611641565b9050600385111580156110a357508481115b156110ba576110b28585611641565b915050610ba0565b6110c660035f1961162e565b85101580156110de57506110db855f1961162e565b81115b156110f8576110ee855f1961162e565b6110b2908461162e565b8285111561114b575f61110b848761162e565b90505f6111188383611654565b9050805f0361112c57849350505050610ba0565b60016111388288611641565b611142919061162e565b93505050611199565b83851015611199575f61115e868661162e565b90505f61116b8383611654565b9050805f0361117f57859350505050610ba0565b611189818661162e565b611194906001611641565b935050505b509392505050565b6111e682826040516024016111b7929190611673565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526111ea565b5050565b6100bd8180516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061123657607f821691505b60208210810361125457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156112a157805f5260205f20601f840160051c8101602085101561127f5750805b601f840160051c820191505b8181101561129e575f815560010161128b565b50505b505050565b815167ffffffffffffffff8111156112c0576112c061120e565b6112d4816112ce8454611222565b8461125a565b6020601f821160018114611306575f83156112ef5750848201515b5f19600385901b1c1916600184901b17845561129e565b5f84815260208120601f198516915b828110156113355787850151825560209485019460019092019101611315565b508482101561135257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f67ffffffffffffffff84111561137b5761137b61120e565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156113aa576113aa61120e565b6040528381529050808284018510156113c1575f5ffd5b8383602083015e5f60208583010152509392505050565b5f602082840312156113e8575f5ffd5b815167ffffffffffffffff8111156113fe575f5ffd5b8201601f8101841361140e575f5ffd5b610a6184825160208401611361565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03811681146100bd575f5ffd5b5f6040828403128015611456575f5ffd5b506040805190810167ffffffffffffffff8111828210171561147a5761147a61120e565b604052825161148881611431565b8152602083015161149881611431565b60208201529392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b604081525f6114e460408301856114a4565b905063ffffffff831660208301529392505050565b5f60208284031215611509575f5ffd5b5051919050565b5f60208284031215611520575f5ffd5b8151610ba081611431565b5f6020828403121561153b575f5ffd5b81518015158114610ba0575f5ffd5b5f81518060208401855e5f93019283525090919050565b5f61156c828461154a565b6e2f7363726970742f6f75747075742f60881b8152600f019392505050565b5f611596828461154a565b602f60f81b81526001019392505050565b5f6115b2828461154a565b64173539b7b760d91b81526005019392505050565b5f610edb6115de6115d8848861154a565b8661154a565b8461154a565b602081525f610f5e60208301846114a4565b604081525f61160860408301856114a4565b8281036020840152610edb81856114a4565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f6157610f6161161a565b80820180821115610f6157610f6161161a565b5f8261166e57634e487b7160e01b5f52601260045260245ffd5b500690565b604081525f61168560408301856114a4565b9050826020830152939250505056fe2e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573742074657374207465737420746573742074657374207465737420746573742074657374207465737420746573742074657374206a756e6b746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220b2a3eaf248eb9d1c152629a7bb794f85b69c12fdd729e6b74accef839791583564736f6c634300081b0033 + /// ``` + #[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\x15`GW__\xFD[Pa\x17n\x80a\0U_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0MW\x80c\xF8\xCC\xBFG\x14a\0UW[__\xFD[a\0Ka\0|V[\0[a\0Ka\x01YV[`\x0CTa\0h\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\x92WPFa\x059\x14[\x15a\0\xC0W`@Q\x80``\x01`@R\x80`;\x81R` \x01a\x16\xDA`;\x919`\r\x90a\0\xBD\x90\x82a\x12\xA6V[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_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01%W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x01L\x91\x90\x81\x01\x90a\x13\xD8V[`\r\x90a\0\xBD\x90\x82a\x12\xA6V[_a\x01ba\x07sV[\x90P_a\x01ma\t\xE6V[\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x8BWa\x01\x8Ba\x12\x0EV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xB4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xD3Wa\x01\xD3a\x12\x0EV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xFCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\x1BWa\x02\x1Ba\x12\x0EV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[`\x0ET\x81\x10\x15a\x03\xB0W_a\x02\xE6`\r\x80Ta\x02d\x90a\x12\"V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\x90\x90a\x12\"V[\x80\x15a\x02\xDBW\x80`\x1F\x10a\x02\xB2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xDBV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xBEW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x83a\niV[P\x90P\x80\x85\x83\x81Q\x81\x10a\x02\xFCWa\x02\xFCa\x14\x1DV[` \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\x037Wa\x037a\x14\x1DV[` \x02` \x01\x01\x81\x81RPPa\x03\x8A\x82_\x1B`@Q` \x01a\x03[\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Cg\r\xE0\xB6\xB3\xA7d\0\0g\x8A\xC7#\x04\x89\xE8\0\0a\x0BdV[\x83\x83\x81Q\x81\x10a\x03\x9CWa\x03\x9Ca\x14\x1DV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\x02IV[P_Q` a\x16\xBA_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\xF8W__\xFD[PZ\xF1\x15\x80\x15a\x04\nW=__>=_\xFD[PPPPa\x04\x19_\x84\x84a\x0B\xA7V[\x83Qa\x04&\x90\x84\x83a\x0B\xA7V[_Q` a\x16\xBA_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04mW__\xFD[PZ\xF1\x15\x80\x15a\x04\x7FW=__>=_\xFD[P_\x92PPP[`\x0ET\x81\x10\x15a\x07kW`\r\x80T_\x91`x\x91\x83\x91a\x05*\x91a\x04\xA8\x90a\x12\"V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\xD4\x90a\x12\"V[\x80\x15a\x05\x1FW\x80`\x1F\x10a\x04\xF6Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x1FV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\x02W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x85a\niV[`@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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x05xW__\xFD[PZ\xF1\x15\x80\x15a\x05\x8AW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\x11W__\xFD[PZ\xF1\x15\x80\x15a\x06#W=__>=_\xFD[PPPP\x88``\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xF1ar\xB0`@Q\x80``\x01`@R\x80\x8A\x88\x81Q\x81\x10a\x06WWa\x06Wa\x14\x1DV[` \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\x06\xD2\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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\xE9W__\xFD[PZ\xF1\x15\x80\x15a\x06\xFBW=__>=_\xFD[PPPP_Q` a\x16\xBA_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07FW__\xFD[PZ\xF1\x15\x80\x15a\x07XW=__>=_\xFD[PP`\x01\x90\x95\x01\x94Pa\x04\x86\x93PPPPV[PPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R_\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_a\x07\xF2`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\x0C\xF2V[\x90P_a\x084\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x0E\xE4V[\x90P_a\x08v\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x0E\xE4V[\x90P_a\x08\xB8\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x0E\xE4V[\x90P_a\x08\xF2\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\x0E\xE4V[\x90P_a\t4\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x0E\xE4V[\x90P_a\tk\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x0E\xE4V[\x90P_a\t\x90\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a\x16\x95`%\x919a\x0E\xE4V[`@\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_`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\n\x1B`@Q\x80``\x01`@R\x80`$\x81R` \x01a\x17\x15`$\x919a\x0C\xF2V[\x90P_a\nJ\x82`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.addresses`\xB0\x1B\x81RPa\x0FgV[\x90P_\x81\x80` \x01\x90Q\x81\x01\x90a\na\x91\x90a\x14EV[\x94\x93PPPPV[`@Qcb)I\x8B`\xE0\x1B\x81R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cb)I\x8B\x90a\n\xA6\x90\x87\x90\x87\x90`\x04\x01a\x14\xD2V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xC1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xE5\x91\x90a\x14\xF9V[`@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_\x87Z\xF1\x15\x80\x15a\x0B7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B[\x91\x90a\x15\x10V[\x91P\x92P\x92\x90PV[_a\x0Bp\x84\x84\x84a\x0F\xE4V[\x90Pa\x0B\xA0`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x10\x9B\xDD[\x99\x08\x1C\x99\\\xDD[\x1D`\xA2\x1B\x81RP\x82a\x11\xA1V[\x93\x92PPPV[_[\x82Q\x81\x10\x15a\x0C\xECW`\x01`\x01`\xA0\x1B\x03\x84\x16a\x0C.W\x82\x81\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a\x14\x1DV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a\x08\xFC\x83\x83\x81Q\x81\x10a\x0B\xF8Wa\x0B\xF8a\x14\x1DV[` \x02` \x01\x01Q\x90\x81\x15\x02\x90`@Q_`@Q\x80\x83\x03\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\x0C(W=__>=_\xFD[Pa\x0C\xE4V[\x83`\x01`\x01`\xA0\x1B\x03\x16c\xA9\x05\x9C\xBB\x84\x83\x81Q\x81\x10a\x0COWa\x0COa\x14\x1DV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a\x0CiWa\x0Cia\x14\x1DV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\xA2\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x0C\xBEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xE2\x91\x90a\x15+V[P[`\x01\x01a\x0B\xA9V[PPPPV[``__Q` a\x16\xBA_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r?W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rf\x91\x90\x81\x01\x90a\x13\xD8V[`@Q` \x01a\rv\x91\x90a\x15aV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xD4W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\xFB\x91\x90\x81\x01\x90a\x13\xD8V[`@Q` \x01a\x0E\x0B\x91\x90a\x15\x8BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x84`@Q` \x01a\x0E.\x91\x90a\x15\xA7V[`@\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\x0Eo\x90\x86\x90\x86\x90\x86\x90` \x01a\x15\xC7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x9A\x91\x90a\x15\xE4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB4W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xDB\x91\x90\x81\x01\x90a\x13\xD8V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x0F\x1F\x90\x86\x90\x86\x90`\x04\x01a\x15\xF6V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F:W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F^\x91\x90a\x15\x10V[\x90P[\x92\x91PPV[`@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\x0F\xA3\x90\x86\x90\x86\x90`\x04\x01a\x15\xF6V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xBDW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F^\x91\x90\x81\x01\x90a\x13\xD8V[_\x81\x83\x11\x15a\x10_W`@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\x10oWP\x81\x84\x11\x15[\x15a\x10{WP\x82a\x0B\xA0V[_a\x10\x86\x84\x84a\x16.V[a\x10\x91\x90`\x01a\x16AV[\x90P`\x03\x85\x11\x15\x80\x15a\x10\xA3WP\x84\x81\x11[\x15a\x10\xBAWa\x10\xB2\x85\x85a\x16AV[\x91PPa\x0B\xA0V[a\x10\xC6`\x03_\x19a\x16.V[\x85\x10\x15\x80\x15a\x10\xDEWPa\x10\xDB\x85_\x19a\x16.V[\x81\x11[\x15a\x10\xF8Wa\x10\xEE\x85_\x19a\x16.V[a\x10\xB2\x90\x84a\x16.V[\x82\x85\x11\x15a\x11KW_a\x11\x0B\x84\x87a\x16.V[\x90P_a\x11\x18\x83\x83a\x16TV[\x90P\x80_\x03a\x11,W\x84\x93PPPPa\x0B\xA0V[`\x01a\x118\x82\x88a\x16AV[a\x11B\x91\x90a\x16.V[\x93PPPa\x11\x99V[\x83\x85\x10\x15a\x11\x99W_a\x11^\x86\x86a\x16.V[\x90P_a\x11k\x83\x83a\x16TV[\x90P\x80_\x03a\x11\x7FW\x85\x93PPPPa\x0B\xA0V[a\x11\x89\x81\x86a\x16.V[a\x11\x94\x90`\x01a\x16AV[\x93PPP[P\x93\x92PPPV[a\x11\xE6\x82\x82`@Q`$\x01a\x11\xB7\x92\x91\x90a\x16sV[`@\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\x11\xEAV[PPV[a\0\xBD\x81\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x126W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x12TWcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x12\xA1W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x12\x7FWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x12\x9EW_\x81U`\x01\x01a\x12\x8BV[PP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xC0Wa\x12\xC0a\x12\x0EV[a\x12\xD4\x81a\x12\xCE\x84Ta\x12\"V[\x84a\x12ZV[` `\x1F\x82\x11`\x01\x81\x14a\x13\x06W_\x83\x15a\x12\xEFWP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\x12\x9EV[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x135W\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x13\x15V[P\x84\x82\x10\x15a\x13RW\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[__g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11\x15a\x13{Wa\x13{a\x12\x0EV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x13\xAAWa\x13\xAAa\x12\x0EV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x85\x10\x15a\x13\xC1W__\xFD[\x83\x83` \x83\x01^_` \x85\x83\x01\x01RP\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x13\xE8W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\xFEW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x14\x0EW__\xFD[a\na\x84\x82Q` \x84\x01a\x13aV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xBDW__\xFD[_`@\x82\x84\x03\x12\x80\x15a\x14VW__\xFD[P`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14zWa\x14za\x12\x0EV[`@R\x82Qa\x14\x88\x81a\x141V[\x81R` \x83\x01Qa\x14\x98\x81a\x141V[` \x82\x01R\x93\x92PPPV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`@\x81R_a\x14\xE4`@\x83\x01\x85a\x14\xA4V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x15\tW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x15 W__\xFD[\x81Qa\x0B\xA0\x81a\x141V[_` \x82\x84\x03\x12\x15a\x15;W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x0B\xA0W__\xFD[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a\x15l\x82\x84a\x15JV[n/script/output/`\x88\x1B\x81R`\x0F\x01\x93\x92PPPV[_a\x15\x96\x82\x84a\x15JV[`/`\xF8\x1B\x81R`\x01\x01\x93\x92PPPV[_a\x15\xB2\x82\x84a\x15JV[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x93\x92PPPV[_a\x0E\xDBa\x15\xDEa\x15\xD8\x84\x88a\x15JV[\x86a\x15JV[\x84a\x15JV[` \x81R_a\x0F^` \x83\x01\x84a\x14\xA4V[`@\x81R_a\x16\x08`@\x83\x01\x85a\x14\xA4V[\x82\x81\x03` \x84\x01Ra\x0E\xDB\x81\x85a\x14\xA4V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0FaWa\x0Faa\x16\x1AV[\x80\x82\x01\x80\x82\x11\x15a\x0FaWa\x0Faa\x16\x1AV[_\x82a\x16nWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[`@\x81R_a\x16\x85`@\x83\x01\x85a\x14\xA4V[\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 \xB2\xA3\xEA\xF2H\xEB\x9D\x1C\x15&)\xA7\xBByO\x85\xB6\x9C\x12\xFD\xD7)\xE6\xB7J\xCC\xEF\x83\x97\x91X5dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80630a9254e414610043578063c04062261461004d578063f8ccbf4714610055575b5f5ffd5b61004b61007c565b005b61004b610159565b600c546100689062010000900460ff1681565b604051901515815260200160405180910390f35b600a600e55617a69461480610092575046610539145b156100c0576040518060600160405280603b81526020016116da603b9139600d906100bd90826112a6565b50565b60405163f877cb1960e01b81526020600482015260086024820152674d4e454d4f4e494360c01b6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb19906064015f60405180830381865afa158015610125573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261014c91908101906113d8565b600d906100bd90826112a6565b5f610162610773565b90505f61016d6109e6565b90505f600e5467ffffffffffffffff81111561018b5761018b61120e565b6040519080825280602002602001820160405280156101b4578160200160208202803683370190505b5090505f600e5467ffffffffffffffff8111156101d3576101d361120e565b6040519080825280602002602001820160405280156101fc578160200160208202803683370190505b5090505f600e5467ffffffffffffffff81111561021b5761021b61120e565b604051908082528060200260200182016040528015610244578160200160208202803683370190505b5090505f5b600e548110156103b0575f6102e6600d805461026490611222565b80601f016020809104026020016040519081016040528092919081815260200182805461029090611222565b80156102db5780601f106102b2576101008083540402835291602001916102db565b820191905f5260205f20905b8154815290600101906020018083116102be57829003601f168201915b505050505083610a69565b509050808583815181106102fc576102fc61141d565b60200260200101906001600160a01b031690816001600160a01b031681525050674563918244f400008483815181106103375761033761141d565b60200260200101818152505061038a825f1b60405160200161035b91815260200190565b604051602081830303815290604052805190602001205f1c670de0b6b3a7640000678ac7230489e80000610b64565b83838151811061039c5761039c61141d565b602090810291909101015250600101610249565b505f5160206116ba5f395f51905f525f1c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156103f8575f5ffd5b505af115801561040a573d5f5f3e3d5ffd5b505050506104195f8484610ba7565b8351610426908483610ba7565b5f5160206116ba5f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561046d575f5ffd5b505af115801561047f573d5f5f3e3d5ffd5b505f925050505b600e5481101561076b57600d80545f91607891839161052a916104a890611222565b80601f01602080910402602001604051908101604052809291908181526020018280546104d490611222565b801561051f5780601f106104f65761010080835404028352916020019161051f565b820191905f5260205f20905b81548152906001019060200180831161050257829003601f168201915b505050505085610a69565b60405163ce817d4760e01b815260048101829052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ce817d47906024015f604051808303815f87803b158015610578575f5ffd5b505af115801561058a573d5f5f3e3d5ffd5b5050600f5460405163566add5160e11b815260806004820152601c60848201527f746573745f6d6f646966795f6f70657261746f725f64657461696c730000000060a4820152602481018890524360448201524260648201526001600160a01b03909116925063acd5baa2915060c4015f604051808303815f87803b158015610611575f5ffd5b505af1158015610623573d5f5f3e3d5ffd5b5050505088606001516001600160a01b031663f16172b060405180606001604052808a88815181106106575761065761141d565b60200260200101516001600160a01b03168152602001866001600160a01b031681526020018563ffffffff168152506040518263ffffffff1660e01b81526004016106d2919081516001600160a01b0390811682526020808401519091169082015260409182015163ffffffff169181019190915260600190565b5f604051808303815f87803b1580156106e9575f5ffd5b505af11580156106fb573d5f5f3e3d5ffd5b505050505f5160206116ba5f395f51905f525f1c6001600160a01b03166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610746575f5ffd5b505af1158015610758573d5f5f3e3d5ffd5b5050600190950194506104869350505050565b505050505050565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525f6107f26040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610cf2565b90505f610834826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e00815250610ee4565b90505f610876836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c617965725061757365725265670000815250610ee4565b90505f6108b8846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e61676572000000000000815250610ee4565b90505f6108f285604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b815250610ee4565b90505f610934866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f7279000000000000000000815250610ee4565b90505f61096b87604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b815250610ee4565b90505f6109908860405180606001604052806025815260200161169560259139610ee4565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a08301525f60c083015290911660e082015292915050565b604080518082019091525f80825260208201525f610a1b60405180606001604052806024815260200161171560249139610cf2565b90505f610a4a826040518060400160405280600a8152602001692e61646472657373657360b01b815250610f67565b90505f81806020019051810190610a619190611445565b949350505050565b604051636229498b60e01b81525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90636229498b90610aa690879087906004016114d2565b602060405180830381865afa158015610ac1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae591906114f9565b604051630884001960e21b815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906322100064906024016020604051808303815f875af1158015610b37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5b9190611510565b91509250929050565b5f610b70848484610fe4565b9050610ba06040518060400160405280600c81526020016b109bdd5b99081c995cdd5b1d60a21b815250826111a1565b9392505050565b5f5b8251811015610cec576001600160a01b038416610c2e57828181518110610bd257610bd261141d565b60200260200101516001600160a01b03166108fc838381518110610bf857610bf861141d565b602002602001015190811502906040515f60405180830381858888f19350505050158015610c28573d5f5f3e3d5ffd5b50610ce4565b836001600160a01b031663a9059cbb848381518110610c4f57610c4f61141d565b6020026020010151848481518110610c6957610c6961141d565b60200260200101516040518363ffffffff1660e01b8152600401610ca29291906001600160a01b03929092168252602082015260400190565b6020604051808303815f875af1158015610cbe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce2919061152b565b505b600101610ba9565b50505050565b60605f5f5160206116ba5f395f51905f525f1c6001600160a01b031663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa158015610d3f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d6691908101906113d8565b604051602001610d769190611561565b60408051808303601f190181529082905263348051d760e11b825246600483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015610dd4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dfb91908101906113d8565b604051602001610e0b919061158b565b60405160208183030381529060405290505f84604051602001610e2e91906115a7565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610e6f908690869086906020016115c7565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610e9a91906115e4565b5f60405180830381865afa158015610eb4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610edb91908101906113d8565b95945050505050565b604051631e19e65760e01b81525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790610f1f90869086906004016115f6565b602060405180830381865afa158015610f3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5e9190611510565b90505b92915050565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef190610fa390869086906004016115f6565b5f60405180830381865afa158015610fbd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f5e91908101906113d8565b5f8183111561105f5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b82841015801561106f5750818411155b1561107b575082610ba0565b5f611086848461162e565b611091906001611641565b9050600385111580156110a357508481115b156110ba576110b28585611641565b915050610ba0565b6110c660035f1961162e565b85101580156110de57506110db855f1961162e565b81115b156110f8576110ee855f1961162e565b6110b2908461162e565b8285111561114b575f61110b848761162e565b90505f6111188383611654565b9050805f0361112c57849350505050610ba0565b60016111388288611641565b611142919061162e565b93505050611199565b83851015611199575f61115e868661162e565b90505f61116b8383611654565b9050805f0361117f57859350505050610ba0565b611189818661162e565b611194906001611641565b935050505b509392505050565b6111e682826040516024016111b7929190611673565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526111ea565b5050565b6100bd8180516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061123657607f821691505b60208210810361125457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156112a157805f5260205f20601f840160051c8101602085101561127f5750805b601f840160051c820191505b8181101561129e575f815560010161128b565b50505b505050565b815167ffffffffffffffff8111156112c0576112c061120e565b6112d4816112ce8454611222565b8461125a565b6020601f821160018114611306575f83156112ef5750848201515b5f19600385901b1c1916600184901b17845561129e565b5f84815260208120601f198516915b828110156113355787850151825560209485019460019092019101611315565b508482101561135257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f67ffffffffffffffff84111561137b5761137b61120e565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156113aa576113aa61120e565b6040528381529050808284018510156113c1575f5ffd5b8383602083015e5f60208583010152509392505050565b5f602082840312156113e8575f5ffd5b815167ffffffffffffffff8111156113fe575f5ffd5b8201601f8101841361140e575f5ffd5b610a6184825160208401611361565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03811681146100bd575f5ffd5b5f6040828403128015611456575f5ffd5b506040805190810167ffffffffffffffff8111828210171561147a5761147a61120e565b604052825161148881611431565b8152602083015161149881611431565b60208201529392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b604081525f6114e460408301856114a4565b905063ffffffff831660208301529392505050565b5f60208284031215611509575f5ffd5b5051919050565b5f60208284031215611520575f5ffd5b8151610ba081611431565b5f6020828403121561153b575f5ffd5b81518015158114610ba0575f5ffd5b5f81518060208401855e5f93019283525090919050565b5f61156c828461154a565b6e2f7363726970742f6f75747075742f60881b8152600f019392505050565b5f611596828461154a565b602f60f81b81526001019392505050565b5f6115b2828461154a565b64173539b7b760d91b81526005019392505050565b5f610edb6115de6115d8848861154a565b8661154a565b8461154a565b602081525f610f5e60208301846114a4565b604081525f61160860408301856114a4565b8281036020840152610edb81856114a4565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f6157610f6161161a565b80820180821115610f6157610f6161161a565b5f8261166e57634e487b7160e01b5f52601260045260245ffd5b500690565b604081525f61168560408301856114a4565b9050826020830152939250505056fe2e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573742074657374207465737420746573742074657374207465737420746573742074657374207465737420746573742074657374206a756e6b746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220b2a3eaf248eb9d1c152629a7bb794f85b69c12fdd729e6b74accef839791583564736f6c634300081b0033 + /// ``` + #[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\x0FW__\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0MW\x80c\xF8\xCC\xBFG\x14a\0UW[__\xFD[a\0Ka\0|V[\0[a\0Ka\x01YV[`\x0CTa\0h\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\x92WPFa\x059\x14[\x15a\0\xC0W`@Q\x80``\x01`@R\x80`;\x81R` \x01a\x16\xDA`;\x919`\r\x90a\0\xBD\x90\x82a\x12\xA6V[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_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01%W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x01L\x91\x90\x81\x01\x90a\x13\xD8V[`\r\x90a\0\xBD\x90\x82a\x12\xA6V[_a\x01ba\x07sV[\x90P_a\x01ma\t\xE6V[\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x8BWa\x01\x8Ba\x12\x0EV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xB4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xD3Wa\x01\xD3a\x12\x0EV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xFCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\x1BWa\x02\x1Ba\x12\x0EV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[`\x0ET\x81\x10\x15a\x03\xB0W_a\x02\xE6`\r\x80Ta\x02d\x90a\x12\"V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\x90\x90a\x12\"V[\x80\x15a\x02\xDBW\x80`\x1F\x10a\x02\xB2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xDBV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xBEW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x83a\niV[P\x90P\x80\x85\x83\x81Q\x81\x10a\x02\xFCWa\x02\xFCa\x14\x1DV[` \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\x037Wa\x037a\x14\x1DV[` \x02` \x01\x01\x81\x81RPPa\x03\x8A\x82_\x1B`@Q` \x01a\x03[\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Cg\r\xE0\xB6\xB3\xA7d\0\0g\x8A\xC7#\x04\x89\xE8\0\0a\x0BdV[\x83\x83\x81Q\x81\x10a\x03\x9CWa\x03\x9Ca\x14\x1DV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\x02IV[P_Q` a\x16\xBA_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\xF8W__\xFD[PZ\xF1\x15\x80\x15a\x04\nW=__>=_\xFD[PPPPa\x04\x19_\x84\x84a\x0B\xA7V[\x83Qa\x04&\x90\x84\x83a\x0B\xA7V[_Q` a\x16\xBA_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04mW__\xFD[PZ\xF1\x15\x80\x15a\x04\x7FW=__>=_\xFD[P_\x92PPP[`\x0ET\x81\x10\x15a\x07kW`\r\x80T_\x91`x\x91\x83\x91a\x05*\x91a\x04\xA8\x90a\x12\"V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\xD4\x90a\x12\"V[\x80\x15a\x05\x1FW\x80`\x1F\x10a\x04\xF6Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x1FV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\x02W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x85a\niV[`@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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x05xW__\xFD[PZ\xF1\x15\x80\x15a\x05\x8AW=__>=_\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_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\x11W__\xFD[PZ\xF1\x15\x80\x15a\x06#W=__>=_\xFD[PPPP\x88``\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xF1ar\xB0`@Q\x80``\x01`@R\x80\x8A\x88\x81Q\x81\x10a\x06WWa\x06Wa\x14\x1DV[` \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\x06\xD2\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[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\xE9W__\xFD[PZ\xF1\x15\x80\x15a\x06\xFBW=__>=_\xFD[PPPP_Q` a\x16\xBA_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07FW__\xFD[PZ\xF1\x15\x80\x15a\x07XW=__>=_\xFD[PP`\x01\x90\x95\x01\x94Pa\x04\x86\x93PPPPV[PPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R_\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_a\x07\xF2`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\x0C\xF2V[\x90P_a\x084\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x0E\xE4V[\x90P_a\x08v\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x0E\xE4V[\x90P_a\x08\xB8\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x0E\xE4V[\x90P_a\x08\xF2\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\x0E\xE4V[\x90P_a\t4\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x0E\xE4V[\x90P_a\tk\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x0E\xE4V[\x90P_a\t\x90\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a\x16\x95`%\x919a\x0E\xE4V[`@\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_`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\n\x1B`@Q\x80``\x01`@R\x80`$\x81R` \x01a\x17\x15`$\x919a\x0C\xF2V[\x90P_a\nJ\x82`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.addresses`\xB0\x1B\x81RPa\x0FgV[\x90P_\x81\x80` \x01\x90Q\x81\x01\x90a\na\x91\x90a\x14EV[\x94\x93PPPPV[`@Qcb)I\x8B`\xE0\x1B\x81R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cb)I\x8B\x90a\n\xA6\x90\x87\x90\x87\x90`\x04\x01a\x14\xD2V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xC1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xE5\x91\x90a\x14\xF9V[`@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_\x87Z\xF1\x15\x80\x15a\x0B7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B[\x91\x90a\x15\x10V[\x91P\x92P\x92\x90PV[_a\x0Bp\x84\x84\x84a\x0F\xE4V[\x90Pa\x0B\xA0`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x10\x9B\xDD[\x99\x08\x1C\x99\\\xDD[\x1D`\xA2\x1B\x81RP\x82a\x11\xA1V[\x93\x92PPPV[_[\x82Q\x81\x10\x15a\x0C\xECW`\x01`\x01`\xA0\x1B\x03\x84\x16a\x0C.W\x82\x81\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a\x14\x1DV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a\x08\xFC\x83\x83\x81Q\x81\x10a\x0B\xF8Wa\x0B\xF8a\x14\x1DV[` \x02` \x01\x01Q\x90\x81\x15\x02\x90`@Q_`@Q\x80\x83\x03\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\x0C(W=__>=_\xFD[Pa\x0C\xE4V[\x83`\x01`\x01`\xA0\x1B\x03\x16c\xA9\x05\x9C\xBB\x84\x83\x81Q\x81\x10a\x0COWa\x0COa\x14\x1DV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a\x0CiWa\x0Cia\x14\x1DV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\xA2\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x0C\xBEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xE2\x91\x90a\x15+V[P[`\x01\x01a\x0B\xA9V[PPPPV[``__Q` a\x16\xBA_9_Q\x90_R_\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r?W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rf\x91\x90\x81\x01\x90a\x13\xD8V[`@Q` \x01a\rv\x91\x90a\x15aV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xD4W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\xFB\x91\x90\x81\x01\x90a\x13\xD8V[`@Q` \x01a\x0E\x0B\x91\x90a\x15\x8BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_\x84`@Q` \x01a\x0E.\x91\x90a\x15\xA7V[`@\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\x0Eo\x90\x86\x90\x86\x90\x86\x90` \x01a\x15\xC7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x9A\x91\x90a\x15\xE4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB4W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xDB\x91\x90\x81\x01\x90a\x13\xD8V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x0F\x1F\x90\x86\x90\x86\x90`\x04\x01a\x15\xF6V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F:W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F^\x91\x90a\x15\x10V[\x90P[\x92\x91PPV[`@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\x0F\xA3\x90\x86\x90\x86\x90`\x04\x01a\x15\xF6V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xBDW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F^\x91\x90\x81\x01\x90a\x13\xD8V[_\x81\x83\x11\x15a\x10_W`@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\x10oWP\x81\x84\x11\x15[\x15a\x10{WP\x82a\x0B\xA0V[_a\x10\x86\x84\x84a\x16.V[a\x10\x91\x90`\x01a\x16AV[\x90P`\x03\x85\x11\x15\x80\x15a\x10\xA3WP\x84\x81\x11[\x15a\x10\xBAWa\x10\xB2\x85\x85a\x16AV[\x91PPa\x0B\xA0V[a\x10\xC6`\x03_\x19a\x16.V[\x85\x10\x15\x80\x15a\x10\xDEWPa\x10\xDB\x85_\x19a\x16.V[\x81\x11[\x15a\x10\xF8Wa\x10\xEE\x85_\x19a\x16.V[a\x10\xB2\x90\x84a\x16.V[\x82\x85\x11\x15a\x11KW_a\x11\x0B\x84\x87a\x16.V[\x90P_a\x11\x18\x83\x83a\x16TV[\x90P\x80_\x03a\x11,W\x84\x93PPPPa\x0B\xA0V[`\x01a\x118\x82\x88a\x16AV[a\x11B\x91\x90a\x16.V[\x93PPPa\x11\x99V[\x83\x85\x10\x15a\x11\x99W_a\x11^\x86\x86a\x16.V[\x90P_a\x11k\x83\x83a\x16TV[\x90P\x80_\x03a\x11\x7FW\x85\x93PPPPa\x0B\xA0V[a\x11\x89\x81\x86a\x16.V[a\x11\x94\x90`\x01a\x16AV[\x93PPP[P\x93\x92PPPV[a\x11\xE6\x82\x82`@Q`$\x01a\x11\xB7\x92\x91\x90a\x16sV[`@\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\x11\xEAV[PPV[a\0\xBD\x81\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x126W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x12TWcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x12\xA1W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x12\x7FWP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x12\x9EW_\x81U`\x01\x01a\x12\x8BV[PP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xC0Wa\x12\xC0a\x12\x0EV[a\x12\xD4\x81a\x12\xCE\x84Ta\x12\"V[\x84a\x12ZV[` `\x1F\x82\x11`\x01\x81\x14a\x13\x06W_\x83\x15a\x12\xEFWP\x84\x82\x01Q[_\x19`\x03\x85\x90\x1B\x1C\x19\x16`\x01\x84\x90\x1B\x17\x84Ua\x12\x9EV[_\x84\x81R` \x81 `\x1F\x19\x85\x16\x91[\x82\x81\x10\x15a\x135W\x87\x85\x01Q\x82U` \x94\x85\x01\x94`\x01\x90\x92\x01\x91\x01a\x13\x15V[P\x84\x82\x10\x15a\x13RW\x86\x84\x01Q_\x19`\x03\x87\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPP`\x01\x90\x81\x1B\x01\x90UPV[__g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11\x15a\x13{Wa\x13{a\x12\x0EV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x13\xAAWa\x13\xAAa\x12\x0EV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x85\x10\x15a\x13\xC1W__\xFD[\x83\x83` \x83\x01^_` \x85\x83\x01\x01RP\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x13\xE8W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\xFEW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x14\x0EW__\xFD[a\na\x84\x82Q` \x84\x01a\x13aV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xBDW__\xFD[_`@\x82\x84\x03\x12\x80\x15a\x14VW__\xFD[P`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14zWa\x14za\x12\x0EV[`@R\x82Qa\x14\x88\x81a\x141V[\x81R` \x83\x01Qa\x14\x98\x81a\x141V[` \x82\x01R\x93\x92PPPV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`@\x81R_a\x14\xE4`@\x83\x01\x85a\x14\xA4V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x15\tW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x15 W__\xFD[\x81Qa\x0B\xA0\x81a\x141V[_` \x82\x84\x03\x12\x15a\x15;W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x0B\xA0W__\xFD[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a\x15l\x82\x84a\x15JV[n/script/output/`\x88\x1B\x81R`\x0F\x01\x93\x92PPPV[_a\x15\x96\x82\x84a\x15JV[`/`\xF8\x1B\x81R`\x01\x01\x93\x92PPPV[_a\x15\xB2\x82\x84a\x15JV[d\x1759\xB7\xB7`\xD9\x1B\x81R`\x05\x01\x93\x92PPPV[_a\x0E\xDBa\x15\xDEa\x15\xD8\x84\x88a\x15JV[\x86a\x15JV[\x84a\x15JV[` \x81R_a\x0F^` \x83\x01\x84a\x14\xA4V[`@\x81R_a\x16\x08`@\x83\x01\x85a\x14\xA4V[\x82\x81\x03` \x84\x01Ra\x0E\xDB\x81\x85a\x14\xA4V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0FaWa\x0Faa\x16\x1AV[\x80\x82\x01\x80\x82\x11\x15a\x0FaWa\x0Faa\x16\x1AV[_\x82a\x16nWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[`@\x81R_a\x16\x85`@\x83\x01\x85a\x14\xA4V[\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 \xB2\xA3\xEA\xF2H\xEB\x9D\x1C\x15&)\xA7\xBByO\x85\xB6\x9C\x12\xFD\xD7)\xE6\xB7J\xCC\xEF\x83\x97\x91X5dsolcC\0\x08\x1B\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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/crates/utils/src/deploymockavs.rs b/crates/utils/src/deploymockavs.rs deleted file mode 100644 index ee4168d5..00000000 --- a/crates/utils/src/deploymockavs.rs +++ /dev/null @@ -1,2701 +0,0 @@ -/** - -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/deploytokensstrategiescreatequorums.rs b/crates/utils/src/deploytokensstrategiescreatequorums.rs deleted file mode 100644 index fcf8a147..00000000 --- a/crates/utils/src/deploytokensstrategiescreatequorums.rs +++ /dev/null @@ -1,567 +0,0 @@ -/** - -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/ejectionmanager.rs b/crates/utils/src/ejectionmanager.rs deleted file mode 100644 index 44ce05ce..00000000 --- a/crates/utils/src/ejectionmanager.rs +++ /dev/null @@ -1,3818 +0,0 @@ -///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/iejectionmanager.rs b/crates/utils/src/iejectionmanager.rs deleted file mode 100644 index 7ce4f530..00000000 --- a/crates/utils/src/iejectionmanager.rs +++ /dev/null @@ -1,1809 +0,0 @@ -/** - -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/lib.rs b/crates/utils/src/lib.rs index 31df9400..c4a6a293 100644 --- a/crates/utils/src/lib.rs +++ b/crates/utils/src/lib.rs @@ -1,189 +1,2 @@ -#![doc( - html_logo_url = "https://github.com/Layr-Labs/eigensdk-rs/assets/91280922/bd13caec-3c00-4afc-839a-b83d2890beb5", - issue_tracker_base_url = "https://github.com/Layr-Labs/eigensdk-rs/issues/" -)] -#![cfg(not(doctest))] -#![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; - -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::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: &str, - rpc_url: &str, -) -> alloy::providers::fillers::FillProvider< - JoinFill< - JoinFill< - Identity, - JoinFill>>, - >, - WalletFiller, - >, - RootProvider>, - Http, - Ethereum, -> { - 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() - .with_recommended_fillers() - .wallet(wallet.clone()) - .on_http(url) -} - -#[allow(clippy::type_complexity)] -pub fn get_provider( - rpc_url: &str, -) -> FillProvider< - JoinFill< - Identity, - JoinFill>>, - >, - RootProvider>, - Http, - Ethereum, -> { - let url = Url::parse(rpc_url).expect("Wrong rpc url"); - ProviderBuilder::new() - .with_recommended_fillers() - .on_http(url) -} - -#[allow(clippy::type_complexity)] -pub async fn get_ws_provider( - rpc_url: &str, -) -> Result, RpcError> { - let ws = WsConnect::new(rpc_url); - ProviderBuilder::new().on_ws(ws).await -} - -/// Emitted when a new pubkey is registered -pub const NEW_PUBKEY_REGISTRATION_EVENT: &str = - "NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))"; - -pub const OPERATOR_SOCKET_UPDATE: &str = "OperatorSocketUpdate(bytes32,string)"; +pub mod deploy; +pub mod middleware; diff --git a/crates/utils/src/address.rs b/crates/utils/src/middleware/address.rs similarity index 93% rename from crates/utils/src/address.rs rename to crates/utils/src/middleware/address.rs index b545c367..9153723d 100644 --- a/crates/utils/src/address.rs +++ b/crates/utils/src/middleware/address.rs @@ -9,29 +9,34 @@ interface Address {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod Address { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e007c97e6583d7762f50b4057f1f6ec1f4f767c599ec480095bc4d502af0445a64736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cd848d3ac021671bdc8ef06c662339c78dca4007b05f8386a1a64a151f2781af64736f6c634300080c0033 /// ``` #[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", + 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 \xCD\x84\x8D:\xC0!g\x1B\xDC\x8E\xF0lf#9\xC7\x8D\xCA@\x07\xB0_\x83\x86\xA1\xA6J\x15\x1F'\x81\xAFdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e007c97e6583d7762f50b4057f1f6ec1f4f767c599ec480095bc4d502af0445a64736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cd848d3ac021671bdc8ef06c662339c78dca4007b05f8386a1a64a151f2781af64736f6c634300080c0033 /// ``` #[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", + 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 \xCD\x84\x8D:\xC0!g\x1B\xDC\x8E\xF0lf#9\xC7\x8D\xCA@\x07\xB0_\x83\x86\xA1\xA6J\x15\x1F'\x81\xAFdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Address`](self) contract instance. diff --git a/crates/utils/src/addressupgradeable.rs b/crates/utils/src/middleware/addressupgradeable.rs similarity index 93% rename from crates/utils/src/addressupgradeable.rs rename to crates/utils/src/middleware/addressupgradeable.rs index df8d6d6f..6b52d112 100644 --- a/crates/utils/src/addressupgradeable.rs +++ b/crates/utils/src/middleware/addressupgradeable.rs @@ -9,29 +9,34 @@ interface AddressUpgradeable {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod AddressUpgradeable { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202382384818553f39ddee6894afdb124a50f5332f98a500b284cf4b607c9d9fe264736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204adbbb57a91b021345a543c392ce65bc288f2e75832d7c5e153e2df4a508252764736f6c634300080c0033 /// ``` #[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", + 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 J\xDB\xBBW\xA9\x1B\x02\x13E\xA5C\xC3\x92\xCEe\xBC(\x8F.u\x83-|^\x15>-\xF4\xA5\x08%'dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202382384818553f39ddee6894afdb124a50f5332f98a500b284cf4b607c9d9fe264736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204adbbb57a91b021345a543c392ce65bc288f2e75832d7c5e153e2df4a508252764736f6c634300080c0033 /// ``` #[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", + 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 J\xDB\xBBW\xA9\x1B\x02\x13E\xA5C\xC3\x92\xCEe\xBC(\x8F.u\x83-|^\x15>-\xF4\xA5\x08%'dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`AddressUpgradeable`](self) contract instance. diff --git a/crates/utils/src/avsdirectory.rs b/crates/utils/src/middleware/avsdirectory.rs similarity index 96% rename from crates/utils/src/avsdirectory.rs rename to crates/utils/src/middleware/avsdirectory.rs index 62e9a32d..46d4c5c4 100644 --- a/crates/utils/src/avsdirectory.rs +++ b/crates/utils/src/middleware/avsdirectory.rs @@ -6,11 +6,16 @@ library IAVSDirectory { type OperatorAVSRegistrationStatus is uint8; } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IAVSDirectory { use super::*; use alloy::sol_types as alloy_sol_types; - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAVSRegistrationStatus(u8); const _: () = { @@ -257,21 +262,31 @@ library ISignatureUtils { struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1157,35 +1172,45 @@ interface AVSDirectory { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod AVSDirectory { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220cc67a152cc7c400395ce51d5dfaff570c2a26ca74b9216e02fcc583940ccb22f64736f6c634300080c0033 + ///0x60c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c0033 /// ``` #[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=`\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::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1486,7 +1536,12 @@ pub mod AVSDirectory { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1494,7 +1549,12 @@ pub mod AVSDirectory { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1589,7 +1649,12 @@ pub mod AVSDirectory { ```solidity event Paused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -1597,7 +1662,12 @@ pub mod AVSDirectory { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1688,7 +1758,12 @@ pub mod AVSDirectory { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -1696,7 +1771,12 @@ pub mod AVSDirectory { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1787,7 +1867,12 @@ pub mod AVSDirectory { ```solidity event Unpaused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -1795,7 +1880,12 @@ pub mod AVSDirectory { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1886,7 +1976,7 @@ pub mod AVSDirectory { ```solidity constructor(address _delegation); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _delegation: alloy::sol_types::private::Address, @@ -1948,16 +2038,21 @@ pub mod AVSDirectory { ```solidity function DOMAIN_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DOMAIN_TYPEHASHReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2053,16 +2148,21 @@ pub mod AVSDirectory { ```solidity function OPERATOR_AVS_REGISTRATION_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2158,20 +2258,25 @@ pub mod AVSDirectory { ```solidity function avsOperatorStatus(address, address) external view returns (IAVSDirectory.OperatorAVSRegistrationStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsOperatorStatusReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2288,7 +2393,7 @@ pub mod AVSDirectory { ```solidity function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateOperatorAVSRegistrationDigestHashCall { pub operator: alloy::sol_types::private::Address, @@ -2297,12 +2402,17 @@ pub mod AVSDirectory { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateOperatorAVSRegistrationDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2440,16 +2550,21 @@ pub mod AVSDirectory { ```solidity function cancelSalt(bytes32 salt) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct cancelSaltReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2549,16 +2664,21 @@ pub mod AVSDirectory { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2654,16 +2774,21 @@ pub mod AVSDirectory { ```solidity function deregisterOperatorFromAVS(address operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorFromAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2763,16 +2888,21 @@ pub mod AVSDirectory { ```solidity function domainSeparator() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct domainSeparatorCall {} ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct domainSeparatorReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2868,7 +2998,7 @@ pub mod AVSDirectory { ```solidity function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeCall { pub initialOwner: alloy::sol_types::private::Address, @@ -2876,10 +3006,15 @@ pub mod AVSDirectory { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3005,19 +3140,24 @@ pub mod AVSDirectory { ```solidity function operatorSaltIsSpent(address, bytes32) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorSaltIsSpentReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3132,16 +3272,21 @@ pub mod AVSDirectory { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3237,16 +3382,21 @@ pub mod AVSDirectory { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3348,14 +3498,19 @@ pub mod AVSDirectory { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3451,18 +3606,23 @@ pub mod AVSDirectory { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3562,16 +3722,21 @@ pub mod AVSDirectory { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3667,16 +3832,21 @@ pub mod AVSDirectory { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3772,7 +3942,7 @@ pub mod AVSDirectory { ```solidity function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSCall { pub operator: alloy::sol_types::private::Address, @@ -3780,10 +3950,15 @@ pub mod AVSDirectory { ::RustType, } ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3899,14 +4074,19 @@ pub mod AVSDirectory { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4002,16 +4182,21 @@ pub mod AVSDirectory { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4113,16 +4298,21 @@ pub mod AVSDirectory { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4222,16 +4412,21 @@ pub mod AVSDirectory { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4333,16 +4528,21 @@ pub mod AVSDirectory { ```solidity function updateAVSMetadataURI(string memory metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/avsdirectorymock.rs b/crates/utils/src/middleware/avsdirectorymock.rs new file mode 100644 index 00000000..97485f80 --- /dev/null +++ b/crates/utils/src/middleware/avsdirectorymock.rs @@ -0,0 +1,2753 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IAVSDirectory { + type OperatorAVSRegistrationStatus is uint8; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IAVSDirectory { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 AVSDirectoryMock { + event AVSMetadataURIUpdated(address indexed avs, string metadataURI); + event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, IAVSDirectory.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 cancelSalt(bytes32 salt) external; + function deregisterOperatorFromAVS(address operator) external; + function domainSeparator() external view returns (bytes32); + 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": "cancelSalt", + "inputs": [ + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "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::pub_underscore_fields, + clippy::style +)] +pub mod AVSDirectoryMock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506103e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a98fb3551161005b578063a98fb35514610103578063d79aceab14610111578063ec76f44214610118578063f698da251461011157600080fd5b8063374823b51461008d5780639926ee7d146100b8578063a1060c88146100cc578063a364f4da146100f2575b600080fd5b6100a361009b366004610142565b600092915050565b60405190151581526020015b60405180910390f35b6100ca6100c63660046101dc565b5050565b005b6100e46100da3660046102c1565b6000949350505050565b6040519081526020016100af565b6100ca610100366004610303565b50565b6100ca6100c6366004610325565b60006100e4565b6100ca610100366004610397565b80356001600160a01b038116811461013d57600080fd5b919050565b6000806040838503121561015557600080fd5b61015e83610126565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156101a5576101a561016c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156101d4576101d461016c565b604052919050565b600080604083850312156101ef57600080fd5b6101f883610126565b915060208084013567ffffffffffffffff8082111561021657600080fd5b908501906060828803121561022a57600080fd5b610232610182565b82358281111561024157600080fd5b8301601f8101891361025257600080fd5b8035838111156102645761026461016c565b610276601f8201601f191687016101ab565b9350808452898682840101111561028c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b600080600080608085870312156102d757600080fd5b6102e085610126565b93506102ee60208601610126565b93969395505050506040820135916060013590565b60006020828403121561031557600080fd5b61031e82610126565b9392505050565b6000806020838503121561033857600080fd5b823567ffffffffffffffff8082111561035057600080fd5b818501915085601f83011261036457600080fd5b81358181111561037357600080fd5b86602082850101111561038557600080fd5b60209290920196919550909350505050565b6000602082840312156103a957600080fd5b503591905056fea2646970667358221220b4ce23c32e90dd0ccee3681aa8c575c3396d30579f50b64aaeb230a9808a9b4264736f6c634300080c0033 + /// ``` + #[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\x03\xE6\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xA9\x8F\xB3U\x11a\0[W\x80c\xA9\x8F\xB3U\x14a\x01\x03W\x80c\xD7\x9A\xCE\xAB\x14a\x01\x11W\x80c\xECv\xF4B\x14a\x01\x18W\x80c\xF6\x98\xDA%\x14a\x01\x11W`\0\x80\xFD[\x80c7H#\xB5\x14a\0\x8DW\x80c\x99&\xEE}\x14a\0\xB8W\x80c\xA1\x06\x0C\x88\x14a\0\xCCW\x80c\xA3d\xF4\xDA\x14a\0\xF2W[`\0\x80\xFD[a\0\xA3a\0\x9B6`\x04a\x01BV[`\0\x92\x91PPV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCAa\0\xC66`\x04a\x01\xDCV[PPV[\0[a\0\xE4a\0\xDA6`\x04a\x02\xC1V[`\0\x94\x93PPPPV[`@Q\x90\x81R` \x01a\0\xAFV[a\0\xCAa\x01\x006`\x04a\x03\x03V[PV[a\0\xCAa\0\xC66`\x04a\x03%V[`\0a\0\xE4V[a\0\xCAa\x01\x006`\x04a\x03\x97V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01=W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01UW`\0\x80\xFD[a\x01^\x83a\x01&V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA5Wa\x01\xA5a\x01lV[`@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\x01\xD4Wa\x01\xD4a\x01lV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xEFW`\0\x80\xFD[a\x01\xF8\x83a\x01&V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x16W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x02*W`\0\x80\xFD[a\x022a\x01\x82V[\x825\x82\x81\x11\x15a\x02AW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x02RW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x02dWa\x02da\x01lV[a\x02v`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\x01\xABV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x02\x8CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x02\xD7W`\0\x80\xFD[a\x02\xE0\x85a\x01&V[\x93Pa\x02\xEE` \x86\x01a\x01&V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x03\x15W`\0\x80\xFD[a\x03\x1E\x82a\x01&V[\x93\x92PPPV[`\0\x80` \x83\x85\x03\x12\x15a\x038W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03PW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x03dW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x03sW`\0\x80\xFD[\x86` \x82\x85\x01\x01\x11\x15a\x03\x85W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x03\xA9W`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB4\xCE#\xC3.\x90\xDD\x0C\xCE\xE3h\x1A\xA8\xC5u\xC39m0W\x9FP\xB6J\xAE\xB20\xA9\x80\x8A\x9BBdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063a98fb3551161005b578063a98fb35514610103578063d79aceab14610111578063ec76f44214610118578063f698da251461011157600080fd5b8063374823b51461008d5780639926ee7d146100b8578063a1060c88146100cc578063a364f4da146100f2575b600080fd5b6100a361009b366004610142565b600092915050565b60405190151581526020015b60405180910390f35b6100ca6100c63660046101dc565b5050565b005b6100e46100da3660046102c1565b6000949350505050565b6040519081526020016100af565b6100ca610100366004610303565b50565b6100ca6100c6366004610325565b60006100e4565b6100ca610100366004610397565b80356001600160a01b038116811461013d57600080fd5b919050565b6000806040838503121561015557600080fd5b61015e83610126565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156101a5576101a561016c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156101d4576101d461016c565b604052919050565b600080604083850312156101ef57600080fd5b6101f883610126565b915060208084013567ffffffffffffffff8082111561021657600080fd5b908501906060828803121561022a57600080fd5b610232610182565b82358281111561024157600080fd5b8301601f8101891361025257600080fd5b8035838111156102645761026461016c565b610276601f8201601f191687016101ab565b9350808452898682840101111561028c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b600080600080608085870312156102d757600080fd5b6102e085610126565b93506102ee60208601610126565b93969395505050506040820135916060013590565b60006020828403121561031557600080fd5b61031e82610126565b9392505050565b6000806020838503121561033857600080fd5b823567ffffffffffffffff8082111561035057600080fd5b818501915085601f83011261036457600080fd5b81358181111561037357600080fd5b86602082850101111561038557600080fd5b60209290920196919550909350505050565b6000602082840312156103a957600080fd5b503591905056fea2646970667358221220b4ce23c32e90dd0ccee3681aa8c575c3396d30579f50b64aaeb230a9808a9b4264736f6c634300080c0033 + /// ``` + #[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\x80c\xA9\x8F\xB3U\x11a\0[W\x80c\xA9\x8F\xB3U\x14a\x01\x03W\x80c\xD7\x9A\xCE\xAB\x14a\x01\x11W\x80c\xECv\xF4B\x14a\x01\x18W\x80c\xF6\x98\xDA%\x14a\x01\x11W`\0\x80\xFD[\x80c7H#\xB5\x14a\0\x8DW\x80c\x99&\xEE}\x14a\0\xB8W\x80c\xA1\x06\x0C\x88\x14a\0\xCCW\x80c\xA3d\xF4\xDA\x14a\0\xF2W[`\0\x80\xFD[a\0\xA3a\0\x9B6`\x04a\x01BV[`\0\x92\x91PPV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCAa\0\xC66`\x04a\x01\xDCV[PPV[\0[a\0\xE4a\0\xDA6`\x04a\x02\xC1V[`\0\x94\x93PPPPV[`@Q\x90\x81R` \x01a\0\xAFV[a\0\xCAa\x01\x006`\x04a\x03\x03V[PV[a\0\xCAa\0\xC66`\x04a\x03%V[`\0a\0\xE4V[a\0\xCAa\x01\x006`\x04a\x03\x97V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01=W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01UW`\0\x80\xFD[a\x01^\x83a\x01&V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA5Wa\x01\xA5a\x01lV[`@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\x01\xD4Wa\x01\xD4a\x01lV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xEFW`\0\x80\xFD[a\x01\xF8\x83a\x01&V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x16W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x02*W`\0\x80\xFD[a\x022a\x01\x82V[\x825\x82\x81\x11\x15a\x02AW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x02RW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x02dWa\x02da\x01lV[a\x02v`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\x01\xABV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x02\x8CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x02\xD7W`\0\x80\xFD[a\x02\xE0\x85a\x01&V[\x93Pa\x02\xEE` \x86\x01a\x01&V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x03\x15W`\0\x80\xFD[a\x03\x1E\x82a\x01&V[\x93\x92PPPV[`\0\x80` \x83\x85\x03\x12\x15a\x038W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03PW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x03dW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x03sW`\0\x80\xFD[\x86` \x82\x85\x01\x01\x11\x15a\x03\x85W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x03\xA9W`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB4\xCE#\xC3.\x90\xDD\x0C\xCE\xE3h\x1A\xA8\xC5u\xC39m0W\x9FP\xB6J\xAE\xB20\xA9\x80\x8A\x9BBdsolcC\0\x08\x0C\x003", + ); + /**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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, IAVSDirectory.OperatorAVSRegistrationStatus status); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateOperatorAVSRegistrationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct cancelSaltReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSaltIsSpentReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`AVSDirectoryMock`](self) function calls. + pub enum AVSDirectoryMockCalls { + OPERATOR_AVS_REGISTRATION_TYPEHASH(OPERATOR_AVS_REGISTRATION_TYPEHASHCall), + calculateOperatorAVSRegistrationDigestHash(calculateOperatorAVSRegistrationDigestHashCall), + cancelSalt(cancelSaltCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + domainSeparator(domainSeparatorCall), + operatorSaltIsSpent(operatorSaltIsSpentCall), + registerOperatorToAVS(registerOperatorToAVSCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl AVSDirectoryMockCalls { + /// 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], + [236u8, 118u8, 244u8, 66u8], + [246u8, 152u8, 218u8, 37u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for AVSDirectoryMockCalls { + const NAME: &'static str = "AVSDirectoryMockCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 8usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::calculateOperatorAVSRegistrationDigestHash(_) => { + ::SELECTOR + } + Self::cancelSalt(_) => { + ::SELECTOR + } + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::domainSeparator(_) => { + ::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(AVSDirectoryMockCalls::operatorSaltIsSpent) + } + operatorSaltIsSpent + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryMockCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn calculateOperatorAVSRegistrationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + AVSDirectoryMockCalls::calculateOperatorAVSRegistrationDigestHash, + ) + } + calculateOperatorAVSRegistrationDigestHash + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryMockCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryMockCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn OPERATOR_AVS_REGISTRATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + AVSDirectoryMockCalls::OPERATOR_AVS_REGISTRATION_TYPEHASH, + ) + } + OPERATOR_AVS_REGISTRATION_TYPEHASH + }, + { + fn cancelSalt( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryMockCalls::cancelSalt) + } + cancelSalt + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryMockCalls::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::OPERATOR_AVS_REGISTRATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::cancelSalt(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::domainSeparator(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::cancelSalt(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::domainSeparator(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 [`AVSDirectoryMock`](self) events. + pub enum AVSDirectoryMockEvents { + AVSMetadataURIUpdated(AVSMetadataURIUpdated), + OperatorAVSRegistrationStatusUpdated(OperatorAVSRegistrationStatusUpdated), + } + #[automatically_derived] + impl AVSDirectoryMockEvents { + /// 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 AVSDirectoryMockEvents { + const NAME: &'static str = "AVSDirectoryMockEvents"; + 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 AVSDirectoryMockEvents { + 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 [`AVSDirectoryMock`](self) contract instance. + + See the [wrapper's documentation](`AVSDirectoryMockInstance`) 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, + ) -> AVSDirectoryMockInstance { + AVSDirectoryMockInstance::::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>> + { + AVSDirectoryMockInstance::::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 { + AVSDirectoryMockInstance::::deploy_builder(provider) + } + /**A [`AVSDirectoryMock`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`AVSDirectoryMock`](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 AVSDirectoryMockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for AVSDirectoryMockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("AVSDirectoryMockInstance") + .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, + > AVSDirectoryMockInstance + { + /**Creates a new wrapper around an on-chain [`AVSDirectoryMock`](self) contract instance. + + See the [wrapper's documentation](`AVSDirectoryMockInstance`) 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 AVSDirectoryMockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> AVSDirectoryMockInstance { + AVSDirectoryMockInstance { + 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, + > AVSDirectoryMockInstance + { + /// 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 [`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 [`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 [`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, + > AVSDirectoryMockInstance + { + /// 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/ecdsaservicemanagerbase.rs b/crates/utils/src/middleware/avsdirectorystorage.rs similarity index 55% rename from crates/utils/src/ecdsaservicemanagerbase.rs rename to crates/utils/src/middleware/avsdirectorystorage.rs index cab35d5d..9037bb71 100644 --- a/crates/utils/src/ecdsaservicemanagerbase.rs +++ b/crates/utils/src/middleware/avsdirectorystorage.rs @@ -2,484 +2,132 @@ /** ```solidity -library IRewardsCoordinator { - struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } - struct StrategyAndMultiplier { address strategy; uint96 multiplier; } +library IAVSDirectory { + type OperatorAVSRegistrationStatus is uint8; } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] -pub mod IRewardsCoordinator { +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IAVSDirectory { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + pub struct OperatorAVSRegistrationStatus(u8); 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), - ) - } + impl alloy_sol_types::private::SolTypeValue for u8 { #[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) + 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 { - ::eip712_hash_struct(self) + as alloy_sol_types::SolType>::tokenize(self).0 } #[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, - ) + as alloy_sol_types::SolType>::abi_encode_packed_to(self, 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, + as alloy_sol_types::SolType>::abi_encoded_size( + self, ) } } #[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; + impl OperatorAVSRegistrationStatus { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. #[inline] - fn valid_token(token: &Self::Token<'_>) -> bool { - as alloy_sol_types::SolType>::valid_token(token) + pub const fn from(value: u8) -> Self { + Self(value) } + /// Return the underlying value. #[inline] - fn detokenize(token: Self::Token<'_>) -> Self::RustType { - let tuple = as alloy_sol_types::SolType>::detokenize(token); - >>::from(tuple) + pub const fn into(self) -> u8 { + self.0 } - } - #[automatically_derived] - impl alloy_sol_types::SolStruct for RewardsSubmission { - const NAME: &'static str = "RewardsSubmission"; + /// Return the single encoding of this value, delegating to the + /// underlying type. #[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)", - ) + 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] - 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)) + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) } } - }; - /**```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; + 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; + 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() + Self::type_check(token).is_ok() } #[inline] - fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { - ::eip712_root_type() + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) } #[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() + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) } } #[automatically_derived] - impl alloy_sol_types::EventTopic for StrategyAndMultiplier { + impl alloy_sol_types::EventTopic for OperatorAVSRegistrationStatus { #[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, - ) + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) } #[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, - ); + 8, + > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, 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)) + as alloy_sol_types::EventTopic>::encode_topic( + rust, + ) } } }; use alloy::contract as alloy_contract; - /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + /**Creates a new wrapper around an on-chain [`IAVSDirectory`](self) contract instance. - See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + See the [wrapper's documentation](`IAVSDirectoryInstance`) for more details.*/ #[inline] pub const fn new< T: alloy_contract::private::Transport + ::core::clone::Clone, @@ -488,13 +136,13 @@ pub mod IRewardsCoordinator { >( address: alloy_sol_types::private::Address, provider: P, - ) -> IRewardsCoordinatorInstance { - IRewardsCoordinatorInstance::::new(address, provider) + ) -> IAVSDirectoryInstance { + IAVSDirectoryInstance::::new(address, provider) } - /**A [`IRewardsCoordinator`](self) instance. + /**A [`IAVSDirectory`](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 + [`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!) @@ -503,16 +151,16 @@ pub mod IRewardsCoordinator { See the [module-level documentation](self) for all the available methods.*/ #[derive(Clone)] - pub struct IRewardsCoordinatorInstance { + 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 IRewardsCoordinatorInstance { + impl ::core::fmt::Debug for IAVSDirectoryInstance { #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple("IRewardsCoordinatorInstance") + f.debug_tuple("IAVSDirectoryInstance") .field(&self.address) .finish() } @@ -523,11 +171,11 @@ pub mod IRewardsCoordinator { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IRewardsCoordinatorInstance + > IAVSDirectoryInstance { - /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + /**Creates a new wrapper around an on-chain [`IAVSDirectory`](self) contract instance. - See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + See the [wrapper's documentation](`IAVSDirectoryInstance`) for more details.*/ #[inline] pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { Self { @@ -557,11 +205,11 @@ pub mod IRewardsCoordinator { &self.provider } } - impl IRewardsCoordinatorInstance { + impl IAVSDirectoryInstance { /// Clones the provider and returns a new instance with the cloned provider. #[inline] - pub fn with_cloned_provider(self) -> IRewardsCoordinatorInstance { - IRewardsCoordinatorInstance { + pub fn with_cloned_provider(self) -> IAVSDirectoryInstance { + IAVSDirectoryInstance { address: self.address, provider: ::core::clone::Clone::clone(&self.provider), _network_transport: ::core::marker::PhantomData, @@ -574,7 +222,7 @@ pub mod IRewardsCoordinator { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IRewardsCoordinatorInstance + > IAVSDirectoryInstance { /// Creates a new call builder using this contract instance's provider and address. /// @@ -593,7 +241,7 @@ pub mod IRewardsCoordinator { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IRewardsCoordinatorInstance + > IAVSDirectoryInstance { /// Creates a new event filter using this contract instance's provider and address. /// @@ -614,21 +262,31 @@ library ISignatureUtils { struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -962,18 +620,8 @@ pub mod ISignatureUtils { 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 IAVSDirectory { + type OperatorAVSRegistrationStatus is uint8; } library ISignatureUtils { @@ -984,24 +632,21 @@ library ISignatureUtils { } } -interface ECDSAServiceManagerBase { - event Initialized(uint8 version); - event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); - event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); +interface AVSDirectoryStorage { + event AVSMetadataURIUpdated(address indexed avs, string metadataURI); + event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, IAVSDirectory.OperatorAVSRegistrationStatus status); - function avsDirectory() external view returns (address); - function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + 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 getOperatorRestakedStrategies(address _operator) external view returns (address[] memory); - function getRestakeableStrategies() external view returns (address[] memory); - function owner() external view returns (address); + function domainSeparator() external view returns (bytes32); + function operatorSaltIsSpent(address, bytes32) external view returns (bool); 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; + function updateAVSMetadataURI(string memory metadataURI) external; } ``` @@ -1010,157 +655,122 @@ interface ECDSAServiceManagerBase { [ { "type": "function", - "name": "avsDirectory", + "name": "DOMAIN_TYPEHASH", "inputs": [], "outputs": [ { "name": "", - "type": "address", - "internalType": "address" + "type": "bytes32", + "internalType": "bytes32" } ], "stateMutability": "view" }, { "type": "function", - "name": "createAVSRewardsSubmission", - "inputs": [ + "name": "OPERATOR_AVS_REGISTRATION_TYPEHASH", + "inputs": [], + "outputs": [ { - "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" - } - ] + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], - "outputs": [], - "stateMutability": "nonpayable" + "stateMutability": "view" }, { "type": "function", - "name": "deregisterOperatorFromAVS", + "name": "avsOperatorStatus", "inputs": [ { - "name": "operator", + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", "type": "address", "internalType": "address" } ], - "outputs": [], - "stateMutability": "nonpayable" + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IAVSDirectory.OperatorAVSRegistrationStatus" + } + ], + "stateMutability": "view" }, { "type": "function", - "name": "getOperatorRestakedStrategies", + "name": "calculateOperatorAVSRegistrationDigestHash", "inputs": [ { - "name": "_operator", + "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": "address[]", - "internalType": "address[]" + "type": "bytes32", + "internalType": "bytes32" } ], "stateMutability": "view" }, { "type": "function", - "name": "getRestakeableStrategies", - "inputs": [], - "outputs": [ + "name": "cancelSalt", + "inputs": [ { - "name": "", - "type": "address[]", - "internalType": "address[]" + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" } ], - "stateMutability": "view" + "outputs": [], + "stateMutability": "nonpayable" }, { "type": "function", - "name": "owner", + "name": "delegation", "inputs": [], "outputs": [ { "name": "", "type": "address", - "internalType": "address" + "internalType": "contract IDelegationManager" } ], "stateMutability": "view" }, { "type": "function", - "name": "registerOperatorToAVS", + "name": "deregisterOperatorFromAVS", "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": [], @@ -1168,58 +778,71 @@ interface ECDSAServiceManagerBase { }, { "type": "function", - "name": "renounceOwnership", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "rewardsInitiator", + "name": "domainSeparator", "inputs": [], "outputs": [ { "name": "", - "type": "address", - "internalType": "address" + "type": "bytes32", + "internalType": "bytes32" } ], "stateMutability": "view" }, { "type": "function", - "name": "setRewardsInitiator", + "name": "operatorSaltIsSpent", "inputs": [ { - "name": "newRewardsInitiator", + "name": "", "type": "address", "internalType": "address" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "stakeRegistry", - "inputs": [], "outputs": [ { "name": "", - "type": "address", - "internalType": "address" + "type": "bool", + "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", - "name": "transferOwnership", + "name": "registerOperatorToAVS", "inputs": [ { - "name": "newOwner", + "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": [], @@ -1230,7 +853,7 @@ interface ECDSAServiceManagerBase { "name": "updateAVSMetadataURI", "inputs": [ { - "name": "_metadataURI", + "name": "metadataURI", "type": "string", "internalType": "string" } @@ -1240,59 +863,57 @@ interface ECDSAServiceManagerBase { }, { "type": "event", - "name": "Initialized", + "name": "AVSMetadataURIUpdated", "inputs": [ { - "name": "version", - "type": "uint8", + "name": "avs", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "metadataURI", + "type": "string", "indexed": false, - "internalType": "uint8" + "internalType": "string" } ], "anonymous": false }, { "type": "event", - "name": "OwnershipTransferred", + "name": "OperatorAVSRegistrationStatusUpdated", "inputs": [ { - "name": "previousOwner", + "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { - "name": "newOwner", + "name": "avs", "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", + "name": "status", + "type": "uint8", "indexed": false, - "internalType": "address" + "internalType": "enum IAVSDirectory.OperatorAVSRegistrationStatus" } ], "anonymous": false } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] -pub mod ECDSAServiceManagerBase { +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod AVSDirectoryStorage { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. @@ -1315,124 +936,45 @@ pub mod ECDSAServiceManagerBase { 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`. + /**Event with signature `AVSMetadataURIUpdated(address,string)` and selector `0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713`. ```solidity - event Initialized(uint8 version); + event AVSMetadataURIUpdated(address indexed avs, string metadataURI); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct Initialized { + pub struct AVSMetadataURIUpdated { #[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, + pub avs: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newOwner: alloy::sol_types::private::Address, + pub metadataURI: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] - impl alloy_sol_types::SolEvent for OwnershipTransferred { - type DataTuple<'a> = (); + 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, - alloy::sol_types::sol_data::Address, ); - const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE: &'static str = "AVSMetadataURIUpdated(address,string)"; 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, + 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)] @@ -1442,8 +984,8 @@ pub mod ECDSAServiceManagerBase { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - previousOwner: topics.1, - newOwner: topics.2, + avs: topics.1, + metadataURI: data.0, } } #[inline] @@ -1461,15 +1003,15 @@ pub mod ECDSAServiceManagerBase { } #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { - () + ( + ::tokenize( + &self.metadataURI, + ), + ) } #[inline] fn topics(&self) -> ::RustType { - ( - Self::SIGNATURE_HASH.into(), - self.previousOwner.clone(), - self.newOwner.clone(), - ) + (Self::SIGNATURE_HASH.into(), self.avs.clone()) } #[inline] fn encode_topics_raw( @@ -1481,16 +1023,13 @@ pub mod ECDSAServiceManagerBase { } out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); out[1usize] = ::encode_topic( - &self.previousOwner, - ); - out[2usize] = ::encode_topic( - &self.newOwner, + &self.avs, ); Ok(()) } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + impl alloy_sol_types::private::IntoLogData for AVSMetadataURIUpdated { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -1499,42 +1038,57 @@ pub mod ECDSAServiceManagerBase { } } #[automatically_derived] - impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + impl From<&AVSMetadataURIUpdated> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + fn from(this: &AVSMetadataURIUpdated) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`. + /**Event with signature `OperatorAVSRegistrationStatusUpdated(address,address,uint8)` and selector `0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41`. ```solidity - event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, IAVSDirectory.OperatorAVSRegistrationStatus status); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct RewardsInitiatorUpdated { + pub struct OperatorAVSRegistrationStatusUpdated { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub prevRewardsInitiator: alloy::sol_types::private::Address, + pub avs: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newRewardsInitiator: alloy::sol_types::private::Address, + pub status: + ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] - impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { - type DataTuple<'a> = ( + 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, ); - 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: &'static str = + "OperatorAVSRegistrationStatusUpdated(address,address,uint8)"; 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, + 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)] @@ -1544,8 +1098,9 @@ pub mod ECDSAServiceManagerBase { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - prevRewardsInitiator: data.0, - newRewardsInitiator: data.1, + operator: topics.1, + avs: topics.2, + status: data.0, } } #[inline] @@ -1564,293 +1119,82 @@ pub mod ECDSAServiceManagerBase { #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( - ::tokenize( - &self.prevRewardsInitiator, - ), - ::tokenize( - &self.newRewardsInitiator, + ::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 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 { - () - } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.avs.clone(), + ) } - #[automatically_derived] - #[doc(hidden)] - impl ::core::convert::From> for createAVSRewardsSubmissionReturn { - fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_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::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() + impl alloy_sol_types::private::IntoLogData for OperatorAVSRegistrationStatusUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) } - #[inline] - fn tokenize(&self) -> Self::Token<'_> { - ( as alloy_sol_types::SolType>::tokenize( - &self.rewardsSubmissions, - ),) + 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 abi_decode_returns( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - as alloy_sol_types::SolType>::abi_decode_sequence( - data, validate, - ) - .map(Into::into) + fn from( + this: &OperatorAVSRegistrationStatusUpdated, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + /**Function with signature `DOMAIN_TYPEHASH()` and selector `0x20606b70`. ```solidity - function deregisterOperatorFromAVS(address operator) external; + function DOMAIN_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + 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, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct deregisterOperatorFromAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1862,24 +1206,24 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: deregisterOperatorFromAVSCall) -> Self { - (value.operator,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHCall) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for deregisterOperatorFromAVSCall { + impl ::core::convert::From> for DOMAIN_TYPEHASHCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { operator: tuple.0 } + Self {} } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + 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) { @@ -1891,28 +1235,28 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: deregisterOperatorFromAVSReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + impl ::core::convert::From> for DOMAIN_TYPEHASHReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + impl alloy_sol_types::SolCall for DOMAIN_TYPEHASHCall { + type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = deregisterOperatorFromAVSReturn; - type ReturnTuple<'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 = "deregisterOperatorFromAVS(address)"; - const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + 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, @@ -1921,11 +1265,7 @@ pub mod ECDSAServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( - ::tokenize( - &self.operator, - ), - ) + () } #[inline] fn abi_decode_returns( @@ -1939,29 +1279,32 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`. + /**Function with signature `OPERATOR_AVS_REGISTRATION_TYPEHASH()` and selector `0xd79aceab`. ```solidity - function getOperatorRestakedStrategies(address _operator) external view returns (address[] memory); + function OPERATOR_AVS_REGISTRATION_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + 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, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getOperatorRestakedStrategiesReturn { - pub _0: alloy::sol_types::private::Vec, + pub struct OPERATOR_AVS_REGISTRATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1973,26 +1316,24 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getOperatorRestakedStrategiesCall) -> Self { - (value._operator,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_AVS_REGISTRATION_TYPEHASHCall) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + impl ::core::convert::From> for OPERATOR_AVS_REGISTRATION_TYPEHASHCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _operator: tuple.0 } + Self {} } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = - (alloy::sol_types::sol_data::Array,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = - (alloy::sol_types::private::Vec,); + 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) { @@ -2004,29 +1345,28 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + 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 getOperatorRestakedStrategiesReturn { + 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 getOperatorRestakedStrategiesCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + 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 = getOperatorRestakedStrategiesReturn; - type ReturnTuple<'a> = - (alloy::sol_types::sol_data::Array,); + 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 = "getOperatorRestakedStrategies(address)"; - const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8]; + 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, @@ -2035,11 +1375,7 @@ pub mod ECDSAServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( - ::tokenize( - &self._operator, - ), - ) + () } #[inline] fn abi_decode_returns( @@ -2053,27 +1389,42 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`. + /**Function with signature `avsOperatorStatus(address,address)` and selector `0x49075da3`. ```solidity - function getRestakeableStrategies() external view returns (address[] memory); + function avsOperatorStatus(address, address) external view returns (IAVSDirectory.OperatorAVSRegistrationStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getRestakeableStrategiesCall {} - ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + 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, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getRestakeableStrategiesReturn { - pub _0: alloy::sol_types::private::Vec, + pub struct avsOperatorStatusReturn { + pub _0: + ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + 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) { @@ -2085,26 +1436,29 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getRestakeableStrategiesCall) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsOperatorStatusCall) -> Self { + (value._0, value._1) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getRestakeableStrategiesCall { + impl ::core::convert::From> for avsOperatorStatusCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { + _0: tuple.0, + _1: tuple.1, + } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = - (alloy::sol_types::sol_data::Array,); + type UnderlyingSolTuple<'a> = (IAVSDirectory::OperatorAVSRegistrationStatus,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = - (alloy::sol_types::private::Vec,); + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2116,29 +1470,31 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getRestakeableStrategiesReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsOperatorStatusReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getRestakeableStrategiesReturn { + impl ::core::convert::From> for avsOperatorStatusReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { - type Parameters<'a> = (); + 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 = getRestakeableStrategiesReturn; - type ReturnTuple<'a> = - (alloy::sol_types::sol_data::Array,); + type Return = avsOperatorStatusReturn; + type ReturnTuple<'a> = (IAVSDirectory::OperatorAVSRegistrationStatus,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "getRestakeableStrategies()"; - const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; + 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, @@ -2147,7 +1503,14 @@ pub mod ECDSAServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + ::tokenize( + &self._0, + ), + ::tokenize( + &self._1, + ), + ) } #[inline] fn abi_decode_returns( @@ -2161,27 +1524,47 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `owner()` and selector `0x8da5cb5b`. + /**Function with signature `calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)` and selector `0xa1060c88`. ```solidity - function owner() external view returns (address); + function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ownerCall {} - ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + 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, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ownerReturn { - pub _0: alloy::sol_types::private::Address, + pub struct calculateOperatorAVSRegistrationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + 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> = (); + 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) { @@ -2193,24 +1576,33 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: ownerCall) -> Self { - () + 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 ownerCall { + impl ::core::convert::From> + for calculateOperatorAVSRegistrationDigestHashCall + { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { + operator: tuple.0, + avs: tuple.1, + salt: tuple.2, + expiry: tuple.3, + } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + 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) { @@ -2222,28 +1614,38 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: ownerReturn) -> Self { + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateOperatorAVSRegistrationDigestHashReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for ownerReturn { + impl ::core::convert::From> + for calculateOperatorAVSRegistrationDigestHashReturn + { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for ownerCall { - type Parameters<'a> = (); + 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 = ownerReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + 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 = "owner()"; - const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + 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, @@ -2252,7 +1654,20 @@ pub mod ECDSAServiceManagerBase { } #[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( @@ -2266,35 +1681,32 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + /**Function with signature `cancelSalt(bytes32)` and selector `0xec76f442`. ```solidity - function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function cancelSalt(bytes32 salt) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct registerOperatorToAVSCall { - pub operator: alloy::sol_types::private::Address, - pub operatorSignature: - ::RustType, + pub struct cancelSaltCall { + pub salt: alloy::sol_types::private::FixedBytes<32>, } - ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`cancelSalt(bytes32)`](cancelSaltCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct registerOperatorToAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct cancelSaltReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Address, - ISignatureUtils::SignatureWithSaltAndExpiry, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Address, - ::RustType, - ); + 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) { @@ -2306,19 +1718,16 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: registerOperatorToAVSCall) -> Self { - (value.operator, value.operatorSignature) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cancelSaltCall) -> Self { + (value.salt,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for registerOperatorToAVSCall { + impl ::core::convert::From> for cancelSaltCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - operator: tuple.0, - operatorSignature: tuple.1, - } + Self { salt: tuple.0 } } } } @@ -2338,32 +1747,28 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: registerOperatorToAVSReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cancelSaltReturn) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for registerOperatorToAVSReturn { + impl ::core::convert::From> for cancelSaltReturn { 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, - ); + 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 = registerOperatorToAVSReturn; + type Return = cancelSaltReturn; 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]; + 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, @@ -2373,12 +1778,9 @@ pub mod ECDSAServiceManagerBase { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.operator, - ), - ::tokenize( - &self.operatorSignature, - ), + as alloy_sol_types::SolType>::tokenize(&self.salt), ) } #[inline] @@ -2393,18 +1795,25 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + /**Function with signature `delegation()` and selector `0xdf5cf723`. ```solidity - function renounceOwnership() external; + function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct renounceOwnershipCall {} - ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2423,14 +1832,14 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: renounceOwnershipCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for renounceOwnershipCall { + impl ::core::convert::From> for delegationCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } @@ -2438,9 +1847,9 @@ pub mod ECDSAServiceManagerBase { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2452,28 +1861,28 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: renounceOwnershipReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for renounceOwnershipReturn { + impl ::core::convert::From> for delegationReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for renounceOwnershipCall { + impl alloy_sol_types::SolCall for delegationCall { type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = renounceOwnershipReturn; - type ReturnTuple<'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 = "renounceOwnership()"; - const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -2496,27 +1905,32 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `rewardsInitiator()` and selector `0xfc299dee`. + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. ```solidity - function rewardsInitiator() external view returns (address); + function deregisterOperatorFromAVS(address operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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, + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2528,24 +1942,24 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: rewardsInitiatorCall) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for rewardsInitiatorCall { + impl ::core::convert::From> for deregisterOperatorFromAVSCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { operator: tuple.0 } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2557,28 +1971,28 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: rewardsInitiatorReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for rewardsInitiatorReturn { + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for rewardsInitiatorCall { - type Parameters<'a> = (); + 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 = rewardsInitiatorReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "rewardsInitiator()"; - const SELECTOR: [u8; 4] = [252u8, 41u8, 157u8, 238u8]; + 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, @@ -2587,7 +2001,11 @@ pub mod ECDSAServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + ::tokenize( + &self.operator, + ), + ) } #[inline] fn abi_decode_returns( @@ -2601,27 +2019,32 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `setRewardsInitiator(address)` and selector `0x3bc28c8c`. + /**Function with signature `domainSeparator()` and selector `0xf698da25`. ```solidity - function setRewardsInitiator(address newRewardsInitiator) external; + function domainSeparator() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct setRewardsInitiatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2633,26 +2056,24 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: setRewardsInitiatorCall) -> Self { - (value.newRewardsInitiator,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorCall) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for setRewardsInitiatorCall { + impl ::core::convert::From> for domainSeparatorCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - newRewardsInitiator: tuple.0, - } + Self {} } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + 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) { @@ -2664,28 +2085,28 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: setRewardsInitiatorReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for setRewardsInitiatorReturn { + impl ::core::convert::From> for domainSeparatorReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for setRewardsInitiatorCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + impl alloy_sol_types::SolCall for domainSeparatorCall { + type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = setRewardsInitiatorReturn; - type ReturnTuple<'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 = "setRewardsInitiator(address)"; - const SELECTOR: [u8; 4] = [59u8, 194u8, 140u8, 140u8]; + const SIGNATURE: &'static str = "domainSeparator()"; + const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -2694,11 +2115,7 @@ pub mod ECDSAServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( - ::tokenize( - &self.newRewardsInitiator, - ), - ) + () } #[inline] fn abi_decode_returns( @@ -2712,27 +2129,41 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `stakeRegistry()` and selector `0x68304835`. + /**Function with signature `operatorSaltIsSpent(address,bytes32)` and selector `0x374823b5`. ```solidity - function stakeRegistry() external view returns (address); + function operatorSaltIsSpent(address, bytes32) external view returns (bool); ```*/ - #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct stakeRegistryReturn { + pub struct operatorSaltIsSpentCall { pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + ///Container type for the return parameters of the [`operatorSaltIsSpent(address,bytes32)`](operatorSaltIsSpentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSaltIsSpentReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + 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) { @@ -2744,24 +2175,27 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: stakeRegistryCall) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSaltIsSpentCall) -> Self { + (value._0, value._1) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for stakeRegistryCall { + impl ::core::convert::From> for operatorSaltIsSpentCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { + _0: tuple.0, + _1: tuple.1, + } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (bool,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -2773,28 +2207,31 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: stakeRegistryReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSaltIsSpentReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for stakeRegistryReturn { + impl ::core::convert::From> for operatorSaltIsSpentReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for stakeRegistryCall { - type Parameters<'a> = (); + 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 = stakeRegistryReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + 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 = "stakeRegistry()"; - const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + 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, @@ -2803,7 +2240,14 @@ pub mod ECDSAServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + ::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize(&self._1), + ) } #[inline] fn abi_decode_returns( @@ -2817,27 +2261,40 @@ pub mod ECDSAServiceManagerBase { } } }; - /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. ```solidity - function transferOwnership(address newOwner) external; + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct transferOwnershipCall { - pub newOwner: alloy::sol_types::private::Address, + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, } - ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct registerOperatorToAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + 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) { @@ -2849,16 +2306,19 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: transferOwnershipCall) -> Self { - (value.newOwner,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for transferOwnershipCall { + impl ::core::convert::From> for registerOperatorToAVSCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { newOwner: tuple.0 } + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } } } } @@ -2878,28 +2338,32 @@ pub mod ECDSAServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: transferOwnershipReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for transferOwnershipReturn { + impl ::core::convert::From> for registerOperatorToAVSReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self {} } } } #[automatically_derived] - impl alloy_sol_types::SolCall for transferOwnershipCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + 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 = transferOwnershipReturn; + type Return = registerOperatorToAVSReturn; 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]; + 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, @@ -2910,7 +2374,10 @@ pub mod ECDSAServiceManagerBase { fn tokenize(&self) -> Self::Token<'_> { ( ::tokenize( - &self.newOwner, + &self.operator, + ), + ::tokenize( + &self.operatorSignature, ), ) } @@ -2928,18 +2395,23 @@ pub mod ECDSAServiceManagerBase { }; /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. ```solidity - function updateAVSMetadataURI(string memory _metadataURI) external; + function updateAVSMetadataURI(string memory metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURICall { - pub _metadataURI: alloy::sol_types::private::String, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2960,7 +2432,7 @@ pub mod ECDSAServiceManagerBase { #[doc(hidden)] impl ::core::convert::From for UnderlyingRustTuple<'_> { fn from(value: updateAVSMetadataURICall) -> Self { - (value._metadataURI,) + (value.metadataURI,) } } #[automatically_derived] @@ -2968,7 +2440,7 @@ pub mod ECDSAServiceManagerBase { impl ::core::convert::From> for updateAVSMetadataURICall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - _metadataURI: tuple.0, + metadataURI: tuple.0, } } } @@ -3021,7 +2493,7 @@ pub mod ECDSAServiceManagerBase { fn tokenize(&self) -> Self::Token<'_> { ( ::tokenize( - &self._metadataURI, + &self.metadataURI, ), ) } @@ -3037,24 +2509,22 @@ pub mod ECDSAServiceManagerBase { } } }; - ///Container for all the [`ECDSAServiceManagerBase`](self) function calls. - pub enum ECDSAServiceManagerBaseCalls { - avsDirectory(avsDirectoryCall), - createAVSRewardsSubmission(createAVSRewardsSubmissionCall), + ///Container for all the [`AVSDirectoryStorage`](self) function calls. + pub enum AVSDirectoryStorageCalls { + DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall), + OPERATOR_AVS_REGISTRATION_TYPEHASH(OPERATOR_AVS_REGISTRATION_TYPEHASHCall), + avsOperatorStatus(avsOperatorStatusCall), + calculateOperatorAVSRegistrationDigestHash(calculateOperatorAVSRegistrationDigestHashCall), + cancelSalt(cancelSaltCall), + delegation(delegationCall), deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), - getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), - getRestakeableStrategies(getRestakeableStrategiesCall), - owner(ownerCall), + domainSeparator(domainSeparatorCall), + operatorSaltIsSpent(operatorSaltIsSpentCall), registerOperatorToAVS(registerOperatorToAVSCall), - renounceOwnership(renounceOwnershipCall), - rewardsInitiator(rewardsInitiatorCall), - setRewardsInitiator(setRewardsInitiatorCall), - stakeRegistry(stakeRegistryCall), - transferOwnership(transferOwnershipCall), updateAVSMetadataURI(updateAVSMetadataURICall), } #[automatically_derived] - impl ECDSAServiceManagerBaseCalls { + impl AVSDirectoryStorageCalls { /// All the selectors of this enum. /// /// Note that the selectors might not be in the same order as the variants. @@ -3062,58 +2532,56 @@ pub mod ECDSAServiceManagerBase { /// /// 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], + [32u8, 96u8, 107u8, 112u8], + [55u8, 72u8, 35u8, 181u8], + [73u8, 7u8, 93u8, 163u8], [153u8, 38u8, 238u8, 125u8], + [161u8, 6u8, 12u8, 136u8], [163u8, 100u8, 244u8, 218u8], [169u8, 143u8, 179u8, 85u8], - [228u8, 129u8, 175u8, 157u8], - [242u8, 253u8, 227u8, 139u8], - [252u8, 41u8, 157u8, 238u8], - [252u8, 227u8, 108u8, 125u8], + [215u8, 154u8, 206u8, 171u8], + [223u8, 92u8, 247u8, 35u8], + [236u8, 118u8, 244u8, 66u8], + [246u8, 152u8, 218u8, 37u8], ]; } #[automatically_derived] - impl alloy_sol_types::SolInterface for ECDSAServiceManagerBaseCalls { - const NAME: &'static str = "ECDSAServiceManagerBaseCalls"; + impl alloy_sol_types::SolInterface for AVSDirectoryStorageCalls { + const NAME: &'static str = "AVSDirectoryStorageCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 13usize; + const COUNT: usize = 11usize; #[inline] fn selector(&self) -> [u8; 4] { match self { - Self::avsDirectory(_) => ::SELECTOR, - Self::createAVSRewardsSubmission(_) => { - ::SELECTOR + Self::DOMAIN_TYPEHASH(_) => { + ::SELECTOR } - Self::deregisterOperatorFromAVS(_) => { - ::SELECTOR + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(_) => { + ::SELECTOR } - Self::getOperatorRestakedStrategies(_) => { - ::SELECTOR + Self::avsOperatorStatus(_) => { + ::SELECTOR } - Self::getRestakeableStrategies(_) => { - ::SELECTOR + Self::calculateOperatorAVSRegistrationDigestHash(_) => { + ::SELECTOR } - Self::owner(_) => ::SELECTOR, - Self::registerOperatorToAVS(_) => { - ::SELECTOR + Self::cancelSalt(_) => { + ::SELECTOR + } + Self::delegation(_) => { + ::SELECTOR } - Self::renounceOwnership(_) => { - ::SELECTOR + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR } - Self::rewardsInitiator(_) => { - ::SELECTOR + Self::domainSeparator(_) => { + ::SELECTOR } - Self::setRewardsInitiator(_) => { - ::SELECTOR + Self::operatorSaltIsSpent(_) => { + ::SELECTOR } - Self::stakeRegistry(_) => ::SELECTOR, - Self::transferOwnership(_) => { - ::SELECTOR + Self::registerOperatorToAVS(_) => { + ::SELECTOR } Self::updateAVSMetadataURI(_) => { ::SELECTOR @@ -3139,101 +2607,79 @@ pub mod ECDSAServiceManagerBase { &[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 - }, + -> alloy_sol_types::Result] = &[ { - fn setRewardsInitiator( + fn DOMAIN_TYPEHASH( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ) -> alloy_sol_types::Result { + ::abi_decode_raw( data, validate, ) - .map(ECDSAServiceManagerBaseCalls::setRewardsInitiator) + .map(AVSDirectoryStorageCalls::DOMAIN_TYPEHASH) } - setRewardsInitiator + DOMAIN_TYPEHASH }, { - fn stakeRegistry( + fn operatorSaltIsSpent( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ) -> alloy_sol_types::Result { + ::abi_decode_raw( data, validate, ) - .map(ECDSAServiceManagerBaseCalls::stakeRegistry) + .map(AVSDirectoryStorageCalls::operatorSaltIsSpent) } - stakeRegistry + operatorSaltIsSpent }, { - fn avsDirectory( + fn avsOperatorStatus( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ) -> alloy_sol_types::Result { + ::abi_decode_raw( data, validate, ) - .map(ECDSAServiceManagerBaseCalls::avsDirectory) + .map(AVSDirectoryStorageCalls::avsOperatorStatus) } - avsDirectory + avsOperatorStatus }, { - fn renounceOwnership( + fn registerOperatorToAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( + ) -> alloy_sol_types::Result { + ::abi_decode_raw( data, validate, ) - .map(ECDSAServiceManagerBaseCalls::renounceOwnership) + .map(AVSDirectoryStorageCalls::registerOperatorToAVS) } - renounceOwnership - }, - { - fn owner( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw(data, validate) - .map(ECDSAServiceManagerBaseCalls::owner) - } - owner + registerOperatorToAVS }, { - fn registerOperatorToAVS( + fn calculateOperatorAVSRegistrationDigestHash( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAServiceManagerBaseCalls::registerOperatorToAVS) + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + AVSDirectoryStorageCalls::calculateOperatorAVSRegistrationDigestHash, + ) } - registerOperatorToAVS + calculateOperatorAVSRegistrationDigestHash }, { fn deregisterOperatorFromAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ECDSAServiceManagerBaseCalls::deregisterOperatorFromAVS) + .map(AVSDirectoryStorageCalls::deregisterOperatorFromAVS) } deregisterOperatorFromAVS }, @@ -3241,64 +2687,60 @@ pub mod ECDSAServiceManagerBase { fn updateAVSMetadataURI( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ECDSAServiceManagerBaseCalls::updateAVSMetadataURI) + .map(AVSDirectoryStorageCalls::updateAVSMetadataURI) } updateAVSMetadataURI }, { - fn getRestakeableStrategies( + fn OPERATOR_AVS_REGISTRATION_TYPEHASH( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAServiceManagerBaseCalls::getRestakeableStrategies) + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + AVSDirectoryStorageCalls::OPERATOR_AVS_REGISTRATION_TYPEHASH, + ) } - getRestakeableStrategies + OPERATOR_AVS_REGISTRATION_TYPEHASH }, { - fn transferOwnership( + fn delegation( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAServiceManagerBaseCalls::transferOwnership) + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryStorageCalls::delegation) } - transferOwnership + delegation }, { - fn rewardsInitiator( + fn cancelSalt( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAServiceManagerBaseCalls::rewardsInitiator) + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryStorageCalls::cancelSalt) } - rewardsInitiator + cancelSalt }, { - fn createAVSRewardsSubmission( + fn domainSeparator( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map( - ECDSAServiceManagerBaseCalls::createAVSRewardsSubmission, - ) + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryStorageCalls::domainSeparator) } - createAVSRewardsSubmission + domainSeparator }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { @@ -3312,138 +2754,138 @@ pub mod ECDSAServiceManagerBase { #[inline] fn abi_encoded_size(&self) -> usize { match self { - Self::avsDirectory(inner) => { - ::abi_encoded_size( + 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::createAVSRewardsSubmission(inner) => { - ::abi_encoded_size( + 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::getOperatorRestakedStrategies(inner) => { - ::abi_encoded_size( + Self::domainSeparator(inner) => { + ::abi_encoded_size( inner, ) } - Self::getRestakeableStrategies(inner) => { - ::abi_encoded_size( + Self::operatorSaltIsSpent(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( + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( inner, ) } - Self::rewardsInitiator(inner) => { - ::abi_encoded_size( + } + } + #[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::setRewardsInitiator(inner) => { - ::abi_encoded_size( + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(inner) => { + ::abi_encode_raw( inner, + out, ) } - Self::stakeRegistry(inner) => { - ::abi_encoded_size( + Self::avsOperatorStatus(inner) => { + ::abi_encode_raw( inner, + out, ) } - Self::transferOwnership(inner) => { - ::abi_encoded_size( + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encode_raw( inner, + out, ) } - Self::updateAVSMetadataURI(inner) => { - ::abi_encoded_size( + Self::cancelSalt(inner) => { + ::abi_encode_raw( inner, + out, ) } - } - } - #[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::delegation(inner) => { + ::abi_encode_raw( + inner, + out, ) } Self::deregisterOperatorFromAVS(inner) => { ::abi_encode_raw( - inner, out, + inner, + out, ) } - Self::getOperatorRestakedStrategies(inner) => { - ::abi_encode_raw( - inner, out, + Self::domainSeparator(inner) => { + ::abi_encode_raw( + inner, + out, ) } - Self::getRestakeableStrategies(inner) => { - ::abi_encode_raw( - inner, out, + Self::operatorSaltIsSpent(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, + 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, + inner, + out, ) } } } } - ///Container for all the [`ECDSAServiceManagerBase`](self) events. - pub enum ECDSAServiceManagerBaseEvents { - Initialized(Initialized), - OwnershipTransferred(OwnershipTransferred), - RewardsInitiatorUpdated(RewardsInitiatorUpdated), + ///Container for all the [`AVSDirectoryStorage`](self) events. + pub enum AVSDirectoryStorageEvents { + AVSMetadataURIUpdated(AVSMetadataURIUpdated), + OperatorAVSRegistrationStatusUpdated(OperatorAVSRegistrationStatusUpdated), } #[automatically_derived] - impl ECDSAServiceManagerBaseEvents { + impl AVSDirectoryStorageEvents { /// All the selectors of this enum. /// /// Note that the selectors might not be in the same order as the variants. @@ -3452,95 +2894,88 @@ pub mod ECDSAServiceManagerBase { /// 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, + 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, ], [ - 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, + 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 ECDSAServiceManagerBaseEvents { - const NAME: &'static str = "ECDSAServiceManagerBaseEvents"; - const COUNT: usize = 3usize; + impl alloy_sol_types::SolEventInterface for AVSDirectoryStorageEvents { + const NAME: &'static str = "AVSDirectoryStorageEvents"; + 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) - } - 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(), + 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 ECDSAServiceManagerBaseEvents { + impl alloy_sol_types::private::IntoLogData for AVSDirectoryStorageEvents { 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) => { + Self::AVSMetadataURIUpdated(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } - Self::RewardsInitiatorUpdated(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::Initialized(inner) => { + Self::AVSMetadataURIUpdated(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) => { + 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 [`ECDSAServiceManagerBase`](self) contract instance. + /**Creates a new wrapper around an on-chain [`AVSDirectoryStorage`](self) contract instance. - See the [wrapper's documentation](`ECDSAServiceManagerBaseInstance`) for more details.*/ + See the [wrapper's documentation](`AVSDirectoryStorageInstance`) for more details.*/ #[inline] pub const fn new< T: alloy_contract::private::Transport + ::core::clone::Clone, @@ -3549,8 +2984,8 @@ pub mod ECDSAServiceManagerBase { >( address: alloy_sol_types::private::Address, provider: P, - ) -> ECDSAServiceManagerBaseInstance { - ECDSAServiceManagerBaseInstance::::new(address, provider) + ) -> AVSDirectoryStorageInstance { + AVSDirectoryStorageInstance::::new(address, provider) } /**Deploys this contract using the given `provider` and constructor arguments, if any. @@ -3564,10 +2999,9 @@ pub mod ECDSAServiceManagerBase { N: alloy_contract::private::Network, >( provider: P, - ) -> impl ::core::future::Future< - Output = alloy_contract::Result>, - > { - ECDSAServiceManagerBaseInstance::::deploy(provider) + ) -> impl ::core::future::Future>> + { + AVSDirectoryStorageInstance::::deploy(provider) } /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` and constructor arguments, if any. @@ -3582,12 +3016,12 @@ pub mod ECDSAServiceManagerBase { >( provider: P, ) -> alloy_contract::RawCallBuilder { - ECDSAServiceManagerBaseInstance::::deploy_builder(provider) + AVSDirectoryStorageInstance::::deploy_builder(provider) } - /**A [`ECDSAServiceManagerBase`](self) instance. + /**A [`AVSDirectoryStorage`](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 + [`AVSDirectoryStorage`](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!) @@ -3596,16 +3030,16 @@ pub mod ECDSAServiceManagerBase { See the [module-level documentation](self) for all the available methods.*/ #[derive(Clone)] - pub struct ECDSAServiceManagerBaseInstance { + pub struct AVSDirectoryStorageInstance { address: alloy_sol_types::private::Address, provider: P, _network_transport: ::core::marker::PhantomData<(N, T)>, } #[automatically_derived] - impl ::core::fmt::Debug for ECDSAServiceManagerBaseInstance { + impl ::core::fmt::Debug for AVSDirectoryStorageInstance { #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple("ECDSAServiceManagerBaseInstance") + f.debug_tuple("AVSDirectoryStorageInstance") .field(&self.address) .finish() } @@ -3616,11 +3050,11 @@ pub mod ECDSAServiceManagerBase { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ECDSAServiceManagerBaseInstance + > AVSDirectoryStorageInstance { - /**Creates a new wrapper around an on-chain [`ECDSAServiceManagerBase`](self) contract instance. + /**Creates a new wrapper around an on-chain [`AVSDirectoryStorage`](self) contract instance. - See the [wrapper's documentation](`ECDSAServiceManagerBaseInstance`) for more details.*/ + See the [wrapper's documentation](`AVSDirectoryStorageInstance`) for more details.*/ #[inline] pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { Self { @@ -3637,7 +3071,7 @@ pub mod ECDSAServiceManagerBase { #[inline] pub async fn deploy( provider: P, - ) -> alloy_contract::Result> { + ) -> 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)) @@ -3675,11 +3109,11 @@ pub mod ECDSAServiceManagerBase { &self.provider } } - impl ECDSAServiceManagerBaseInstance { + impl AVSDirectoryStorageInstance { /// Clones the provider and returns a new instance with the cloned provider. #[inline] - pub fn with_cloned_provider(self) -> ECDSAServiceManagerBaseInstance { - ECDSAServiceManagerBaseInstance { + pub fn with_cloned_provider(self) -> AVSDirectoryStorageInstance { + AVSDirectoryStorageInstance { address: self.address, provider: ::core::clone::Clone::clone(&self.provider), _network_transport: ::core::marker::PhantomData, @@ -3692,7 +3126,7 @@ pub mod ECDSAServiceManagerBase { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ECDSAServiceManagerBaseInstance + > AVSDirectoryStorageInstance { /// Creates a new call builder using this contract instance's provider and address. /// @@ -3704,18 +3138,53 @@ pub mod ECDSAServiceManagerBase { ) -> 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 [`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 [`createAVSRewardsSubmission`] function. - pub fn createAVSRewardsSubmission( + ///Creates a new call builder for the [`cancelSalt`] function. + pub fn cancelSalt( &self, - rewardsSubmissions: alloy::sol_types::private::Vec< - ::RustType, - >, - ) -> alloy_contract::SolCallBuilder { - self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions }) + 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( @@ -3724,22 +3193,19 @@ pub mod ECDSAServiceManagerBase { ) -> alloy_contract::SolCallBuilder { self.call_builder(&deregisterOperatorFromAVSCall { operator }) } - ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function. - pub fn getOperatorRestakedStrategies( + ///Creates a new call builder for the [`domainSeparator`] function. + pub fn domainSeparator( &self, - _operator: alloy::sol_types::private::Address, - ) -> alloy_contract::SolCallBuilder { - self.call_builder(&getOperatorRestakedStrategiesCall { _operator }) + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&domainSeparatorCall {}) } - ///Creates a new call builder for the [`getRestakeableStrategies`] function. - pub fn getRestakeableStrategies( + ///Creates a new call builder for the [`operatorSaltIsSpent`] function. + pub fn operatorSaltIsSpent( &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 {}) + _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 [`registerOperatorToAVS`] function. pub fn registerOperatorToAVS( @@ -3752,44 +3218,12 @@ pub mod ECDSAServiceManagerBase { 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, + metadataURI: alloy::sol_types::private::String, ) -> alloy_contract::SolCallBuilder { - self.call_builder(&updateAVSMetadataURICall { _metadataURI }) + self.call_builder(&updateAVSMetadataURICall { metadataURI }) } } /// Event filters. @@ -3798,7 +3232,7 @@ pub mod ECDSAServiceManagerBase { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ECDSAServiceManagerBaseInstance + > AVSDirectoryStorageInstance { /// Creates a new event filter using this contract instance's provider and address. /// @@ -3809,21 +3243,17 @@ pub mod ECDSAServiceManagerBase { ) -> 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( + ///Creates a new event filter for the [`AVSMetadataURIUpdated`] event. + pub fn AVSMetadataURIUpdated_filter( &self, - ) -> alloy_contract::Event { - self.event_filter::() + ) -> alloy_contract::Event { + self.event_filter::() } - ///Creates a new event filter for the [`RewardsInitiatorUpdated`] event. - pub fn RewardsInitiatorUpdated_filter( + ///Creates a new event filter for the [`OperatorAVSRegistrationStatusUpdated`] event. + pub fn OperatorAVSRegistrationStatusUpdated_filter( &self, - ) -> alloy_contract::Event { - self.event_filter::() + ) -> alloy_contract::Event { + self.event_filter::() } } } diff --git a/crates/utils/src/middleware/beaconchainoraclemock.rs b/crates/utils/src/middleware/beaconchainoraclemock.rs new file mode 100644 index 00000000..5a65af85 --- /dev/null +++ b/crates/utils/src/middleware/beaconchainoraclemock.rs @@ -0,0 +1,2531 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BeaconChainOracleMock { + function addOracleSigners(address[] memory _oracleSigners) external; + function beaconStateRootAtBlockNumber(uint64 blockNumber) external view returns (bytes32); + function hasVoted(uint64 blockNumber, address oracleSigner) external view returns (bool); + function isOracleSigner(address _oracleSigner) external view returns (bool); + function latestConfirmedOracleBlockNumber() external view returns (uint64); + function removeOracleSigners(address[] memory _oracleSigners) external; + function setBlockRoot(uint64 timestamp, bytes32 blockRoot) external; + function setThreshold(uint256 _threshold) external; + function stateRootVotes(uint64 blockNumber, bytes32 stateRoot) external view returns (uint256); + function threshold() external view returns (uint256); + function timestampToBlockRoot(uint256 timestamp) external view returns (bytes32); + function totalOracleSigners() external view returns (uint256); + function voteForBeaconChainStateRoot(uint64 blockNumber, bytes32 stateRoot) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "addOracleSigners", + "inputs": [ + { + "name": "_oracleSigners", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "beaconStateRootAtBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "hasVoted", + "inputs": [ + { + "name": "blockNumber", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "oracleSigner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isOracleSigner", + "inputs": [ + { + "name": "_oracleSigner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "latestConfirmedOracleBlockNumber", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeOracleSigners", + "inputs": [ + { + "name": "_oracleSigners", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setBlockRoot", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "blockRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setThreshold", + "inputs": [ + { + "name": "_threshold", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stateRootVotes", + "inputs": [ + { + "name": "blockNumber", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "stateRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "threshold", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "timestampToBlockRoot", + "inputs": [ + { + "name": "timestamp", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalOracleSigners", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "voteForBeaconChainStateRoot", + "inputs": [ + { + "name": "blockNumber", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "stateRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BeaconChainOracleMock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033 + /// ``` + #[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\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033 + /// ``` + #[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}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `addOracleSigners(address[])` and selector `0x30904457`. + ```solidity + function addOracleSigners(address[] memory _oracleSigners) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addOracleSignersCall { + pub _oracleSigners: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`addOracleSigners(address[])`](addOracleSignersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addOracleSignersReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: addOracleSignersCall) -> Self { + (value._oracleSigners,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addOracleSignersCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _oracleSigners: 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: addOracleSignersReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addOracleSignersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addOracleSignersCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addOracleSignersReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addOracleSigners(address[])"; + const SELECTOR: [u8; 4] = [48u8, 144u8, 68u8, 87u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self._oracleSigners, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `beaconStateRootAtBlockNumber(uint64)` and selector `0x864b8a69`. + ```solidity + function beaconStateRootAtBlockNumber(uint64 blockNumber) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconStateRootAtBlockNumberCall { + pub blockNumber: u64, + } + ///Container type for the return parameters of the [`beaconStateRootAtBlockNumber(uint64)`](beaconStateRootAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconStateRootAtBlockNumberReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: beaconStateRootAtBlockNumberCall) -> Self { + (value.blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconStateRootAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: 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: beaconStateRootAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconStateRootAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for beaconStateRootAtBlockNumberCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = beaconStateRootAtBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "beaconStateRootAtBlockNumber(uint64)"; + const SELECTOR: [u8; 4] = [134u8, 75u8, 138u8, 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.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 `hasVoted(uint64,address)` and selector `0xc61ff600`. + ```solidity + function hasVoted(uint64 blockNumber, address oracleSigner) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasVotedCall { + pub blockNumber: u64, + pub oracleSigner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`hasVoted(uint64,address)`](hasVotedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasVotedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: hasVotedCall) -> Self { + (value.blockNumber, value.oracleSigner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasVotedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + oracleSigner: 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: hasVotedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasVotedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for hasVotedCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = hasVotedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "hasVoted(uint64,address)"; + const SELECTOR: [u8; 4] = [198u8, 31u8, 246u8, 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.blockNumber, + ), + ::tokenize( + &self.oracleSigner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isOracleSigner(address)` and selector `0x7a000989`. + ```solidity + function isOracleSigner(address _oracleSigner) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isOracleSignerCall { + pub _oracleSigner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isOracleSigner(address)`](isOracleSignerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isOracleSignerReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: isOracleSignerCall) -> Self { + (value._oracleSigner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOracleSignerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _oracleSigner: 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: isOracleSignerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOracleSignerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isOracleSignerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isOracleSignerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isOracleSigner(address)"; + const SELECTOR: [u8; 4] = [122u8, 0u8, 9u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._oracleSigner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `latestConfirmedOracleBlockNumber()` and selector `0x2dae03e1`. + ```solidity + function latestConfirmedOracleBlockNumber() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestConfirmedOracleBlockNumberCall {} + ///Container type for the return parameters of the [`latestConfirmedOracleBlockNumber()`](latestConfirmedOracleBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestConfirmedOracleBlockNumberReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: latestConfirmedOracleBlockNumberCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for latestConfirmedOracleBlockNumberCall { + 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: latestConfirmedOracleBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for latestConfirmedOracleBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for latestConfirmedOracleBlockNumberCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = latestConfirmedOracleBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "latestConfirmedOracleBlockNumber()"; + const SELECTOR: [u8; 4] = [45u8, 174u8, 3u8, 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 `removeOracleSigners(address[])` and selector `0xa3b2aa96`. + ```solidity + function removeOracleSigners(address[] memory _oracleSigners) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeOracleSignersCall { + pub _oracleSigners: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`removeOracleSigners(address[])`](removeOracleSignersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeOracleSignersReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: removeOracleSignersCall) -> Self { + (value._oracleSigners,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeOracleSignersCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _oracleSigners: 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: removeOracleSignersReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeOracleSignersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeOracleSignersCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeOracleSignersReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeOracleSigners(address[])"; + const SELECTOR: [u8; 4] = [163u8, 178u8, 170u8, 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._oracleSigners, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setBlockRoot(uint64,bytes32)` and selector `0xacd414a8`. + ```solidity + function setBlockRoot(uint64 timestamp, bytes32 blockRoot) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBlockRootCall { + pub timestamp: u64, + pub blockRoot: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`setBlockRoot(uint64,bytes32)`](setBlockRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBlockRootReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, 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: setBlockRootCall) -> Self { + (value.timestamp, value.blockRoot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setBlockRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + timestamp: tuple.0, + blockRoot: 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: setBlockRootReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setBlockRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setBlockRootCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setBlockRootReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setBlockRoot(uint64,bytes32)"; + const SELECTOR: [u8; 4] = [172u8, 212u8, 20u8, 168u8]; + #[inline] + fn new<'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), + as alloy_sol_types::SolType>::tokenize(&self.blockRoot), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setThreshold(uint256)` and selector `0x960bfe04`. + ```solidity + function setThreshold(uint256 _threshold) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setThresholdCall { + pub _threshold: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`setThreshold(uint256)`](setThresholdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setThresholdReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setThresholdCall) -> Self { + (value._threshold,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setThresholdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _threshold: 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: setThresholdReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setThresholdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setThresholdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setThresholdReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setThreshold(uint256)"; + const SELECTOR: [u8; 4] = [150u8, 11u8, 254u8, 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._threshold, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stateRootVotes(uint64,bytes32)` and selector `0x0690526a`. + ```solidity + function stateRootVotes(uint64 blockNumber, bytes32 stateRoot) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stateRootVotesCall { + pub blockNumber: u64, + pub stateRoot: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`stateRootVotes(uint64,bytes32)`](stateRootVotesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stateRootVotesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, 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: stateRootVotesCall) -> Self { + (value.blockNumber, value.stateRoot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stateRootVotesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + stateRoot: 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: stateRootVotesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stateRootVotesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stateRootVotesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stateRootVotesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stateRootVotes(uint64,bytes32)"; + const SELECTOR: [u8; 4] = [6u8, 144u8, 82u8, 106u8]; + #[inline] + fn new<'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.stateRoot), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `threshold()` and selector `0x42cde4e8`. + ```solidity + function threshold() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct thresholdCall {} + ///Container type for the return parameters of the [`threshold()`](thresholdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct thresholdReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: thresholdCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for thresholdCall { + 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: thresholdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for thresholdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for thresholdCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = thresholdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "threshold()"; + const SELECTOR: [u8; 4] = [66u8, 205u8, 228u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timestampToBlockRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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) + } + } + }; + /**Function with signature `totalOracleSigners()` and selector `0x7d21af06`. + ```solidity + function totalOracleSigners() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalOracleSignersCall {} + ///Container type for the return parameters of the [`totalOracleSigners()`](totalOracleSignersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalOracleSignersReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalOracleSignersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOracleSignersCall { + 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: totalOracleSignersReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOracleSignersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalOracleSignersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalOracleSignersReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalOracleSigners()"; + const SELECTOR: [u8; 4] = [125u8, 33u8, 175u8, 6u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `voteForBeaconChainStateRoot(uint64,bytes32)` and selector `0xa22f141e`. + ```solidity + function voteForBeaconChainStateRoot(uint64 blockNumber, bytes32 stateRoot) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct voteForBeaconChainStateRootCall { + pub blockNumber: u64, + pub stateRoot: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`voteForBeaconChainStateRoot(uint64,bytes32)`](voteForBeaconChainStateRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct voteForBeaconChainStateRootReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, 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: voteForBeaconChainStateRootCall) -> Self { + (value.blockNumber, value.stateRoot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for voteForBeaconChainStateRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + stateRoot: 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: voteForBeaconChainStateRootReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for voteForBeaconChainStateRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for voteForBeaconChainStateRootCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = voteForBeaconChainStateRootReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "voteForBeaconChainStateRoot(uint64,bytes32)"; + const SELECTOR: [u8; 4] = [162u8, 47u8, 20u8, 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.blockNumber), + as alloy_sol_types::SolType>::tokenize(&self.stateRoot), + ) + } + #[inline] + fn 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 [`BeaconChainOracleMock`](self) function calls. + pub enum BeaconChainOracleMockCalls { + addOracleSigners(addOracleSignersCall), + beaconStateRootAtBlockNumber(beaconStateRootAtBlockNumberCall), + hasVoted(hasVotedCall), + isOracleSigner(isOracleSignerCall), + latestConfirmedOracleBlockNumber(latestConfirmedOracleBlockNumberCall), + removeOracleSigners(removeOracleSignersCall), + setBlockRoot(setBlockRootCall), + setThreshold(setThresholdCall), + stateRootVotes(stateRootVotesCall), + threshold(thresholdCall), + timestampToBlockRoot(timestampToBlockRootCall), + totalOracleSigners(totalOracleSignersCall), + voteForBeaconChainStateRoot(voteForBeaconChainStateRootCall), + } + #[automatically_derived] + impl BeaconChainOracleMockCalls { + /// 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, 144u8, 82u8, 106u8], + [45u8, 174u8, 3u8, 225u8], + [48u8, 144u8, 68u8, 87u8], + [66u8, 205u8, 228u8, 232u8], + [100u8, 53u8, 153u8, 242u8], + [122u8, 0u8, 9u8, 137u8], + [125u8, 33u8, 175u8, 6u8], + [134u8, 75u8, 138u8, 105u8], + [150u8, 11u8, 254u8, 4u8], + [162u8, 47u8, 20u8, 30u8], + [163u8, 178u8, 170u8, 150u8], + [172u8, 212u8, 20u8, 168u8], + [198u8, 31u8, 246u8, 0u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BeaconChainOracleMockCalls { + const NAME: &'static str = "BeaconChainOracleMockCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::addOracleSigners(_) => { + ::SELECTOR + } + Self::beaconStateRootAtBlockNumber(_) => { + ::SELECTOR + } + Self::hasVoted(_) => ::SELECTOR, + Self::isOracleSigner(_) => { + ::SELECTOR + } + Self::latestConfirmedOracleBlockNumber(_) => { + ::SELECTOR + } + Self::removeOracleSigners(_) => { + ::SELECTOR + } + Self::setBlockRoot(_) => ::SELECTOR, + Self::setThreshold(_) => ::SELECTOR, + Self::stateRootVotes(_) => { + ::SELECTOR + } + Self::threshold(_) => ::SELECTOR, + Self::timestampToBlockRoot(_) => { + ::SELECTOR + } + Self::totalOracleSigners(_) => { + ::SELECTOR + } + Self::voteForBeaconChainStateRoot(_) => { + ::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 stateRootVotes( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BeaconChainOracleMockCalls::stateRootVotes) + } + stateRootVotes + }, + { + fn latestConfirmedOracleBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + BeaconChainOracleMockCalls::latestConfirmedOracleBlockNumber, + ) + } + latestConfirmedOracleBlockNumber + }, + { + fn addOracleSigners( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BeaconChainOracleMockCalls::addOracleSigners) + } + addOracleSigners + }, + { + fn threshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BeaconChainOracleMockCalls::threshold) + } + threshold + }, + { + fn timestampToBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BeaconChainOracleMockCalls::timestampToBlockRoot) + } + timestampToBlockRoot + }, + { + fn isOracleSigner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BeaconChainOracleMockCalls::isOracleSigner) + } + isOracleSigner + }, + { + fn totalOracleSigners( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BeaconChainOracleMockCalls::totalOracleSigners) + } + totalOracleSigners + }, + { + fn beaconStateRootAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + BeaconChainOracleMockCalls::beaconStateRootAtBlockNumber, + ) + } + beaconStateRootAtBlockNumber + }, + { + fn setThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BeaconChainOracleMockCalls::setThreshold) + } + setThreshold + }, + { + fn voteForBeaconChainStateRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BeaconChainOracleMockCalls::voteForBeaconChainStateRoot) + } + voteForBeaconChainStateRoot + }, + { + fn removeOracleSigners( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BeaconChainOracleMockCalls::removeOracleSigners) + } + removeOracleSigners + }, + { + fn setBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BeaconChainOracleMockCalls::setBlockRoot) + } + setBlockRoot + }, + { + fn hasVoted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BeaconChainOracleMockCalls::hasVoted) + } + hasVoted + }, + ]; + 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::addOracleSigners(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::beaconStateRootAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::hasVoted(inner) => { + ::abi_encoded_size(inner) + } + Self::isOracleSigner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::latestConfirmedOracleBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeOracleSigners(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setBlockRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setThreshold(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stateRootVotes(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::threshold(inner) => { + ::abi_encoded_size(inner) + } + Self::timestampToBlockRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::totalOracleSigners(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::voteForBeaconChainStateRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::addOracleSigners(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconStateRootAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::hasVoted(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isOracleSigner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::latestConfirmedOracleBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeOracleSigners(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setBlockRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setThreshold(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stateRootVotes(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::threshold(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::timestampToBlockRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::totalOracleSigners(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::voteForBeaconChainStateRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BeaconChainOracleMock`](self) contract instance. + + See the [wrapper's documentation](`BeaconChainOracleMockInstance`) 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, + ) -> BeaconChainOracleMockInstance { + BeaconChainOracleMockInstance::::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>, + > { + BeaconChainOracleMockInstance::::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 { + BeaconChainOracleMockInstance::::deploy_builder(provider) + } + /**A [`BeaconChainOracleMock`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BeaconChainOracleMock`](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 BeaconChainOracleMockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BeaconChainOracleMockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BeaconChainOracleMockInstance") + .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, + > BeaconChainOracleMockInstance + { + /**Creates a new wrapper around an on-chain [`BeaconChainOracleMock`](self) contract instance. + + See the [wrapper's documentation](`BeaconChainOracleMockInstance`) 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 BeaconChainOracleMockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BeaconChainOracleMockInstance { + BeaconChainOracleMockInstance { + 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, + > BeaconChainOracleMockInstance + { + /// 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 [`addOracleSigners`] function. + pub fn addOracleSigners( + &self, + _oracleSigners: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addOracleSignersCall { _oracleSigners }) + } + ///Creates a new call builder for the [`beaconStateRootAtBlockNumber`] function. + pub fn beaconStateRootAtBlockNumber( + &self, + blockNumber: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&beaconStateRootAtBlockNumberCall { blockNumber }) + } + ///Creates a new call builder for the [`hasVoted`] function. + pub fn hasVoted( + &self, + blockNumber: u64, + oracleSigner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&hasVotedCall { + blockNumber, + oracleSigner, + }) + } + ///Creates a new call builder for the [`isOracleSigner`] function. + pub fn isOracleSigner( + &self, + _oracleSigner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isOracleSignerCall { _oracleSigner }) + } + ///Creates a new call builder for the [`latestConfirmedOracleBlockNumber`] function. + pub fn latestConfirmedOracleBlockNumber( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&latestConfirmedOracleBlockNumberCall {}) + } + ///Creates a new call builder for the [`removeOracleSigners`] function. + pub fn removeOracleSigners( + &self, + _oracleSigners: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&removeOracleSignersCall { _oracleSigners }) + } + ///Creates a new call builder for the [`setBlockRoot`] function. + pub fn setBlockRoot( + &self, + timestamp: u64, + blockRoot: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setBlockRootCall { + timestamp, + blockRoot, + }) + } + ///Creates a new call builder for the [`setThreshold`] function. + pub fn setThreshold( + &self, + _threshold: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setThresholdCall { _threshold }) + } + ///Creates a new call builder for the [`stateRootVotes`] function. + pub fn stateRootVotes( + &self, + blockNumber: u64, + stateRoot: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stateRootVotesCall { + blockNumber, + stateRoot, + }) + } + ///Creates a new call builder for the [`threshold`] function. + pub fn threshold(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&thresholdCall {}) + } + ///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 }) + } + ///Creates a new call builder for the [`totalOracleSigners`] function. + pub fn totalOracleSigners( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalOracleSignersCall {}) + } + ///Creates a new call builder for the [`voteForBeaconChainStateRoot`] function. + pub fn voteForBeaconChainStateRoot( + &self, + blockNumber: u64, + stateRoot: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&voteForBeaconChainStateRootCall { + blockNumber, + stateRoot, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BeaconChainOracleMockInstance + { + /// 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/beaconchainproofs.rs b/crates/utils/src/middleware/beaconchainproofs.rs similarity index 93% rename from crates/utils/src/beaconchainproofs.rs rename to crates/utils/src/middleware/beaconchainproofs.rs index c7db72ed..d2ebdcb1 100644 --- a/crates/utils/src/beaconchainproofs.rs +++ b/crates/utils/src/middleware/beaconchainproofs.rs @@ -9,29 +9,34 @@ interface BeaconChainProofs {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod BeaconChainProofs { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1f2903735d092efdfdc6493572b1023dbececa57b01ff35963592dbf55571a164736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122083b78525ce2712320f6a45b30ee1ad2afd7f645d534359eb7eef049fc7adc10964736f6c634300080c0033 /// ``` #[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", + 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 \x83\xB7\x85%\xCE'\x122\x0FjE\xB3\x0E\xE1\xAD*\xFD\x7Fd]SCY\xEB~\xEF\x04\x9F\xC7\xAD\xC1\tdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1f2903735d092efdfdc6493572b1023dbececa57b01ff35963592dbf55571a164736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122083b78525ce2712320f6a45b30ee1ad2afd7f645d534359eb7eef049fc7adc10964736f6c634300080c0033 /// ``` #[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", + 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 \x83\xB7\x85%\xCE'\x122\x0FjE\xB3\x0E\xE1\xAD*\xFD\x7Fd]SCY\xEB~\xEF\x04\x9F\xC7\xAD\xC1\tdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance. diff --git a/crates/utils/src/middleware/beaconproxy.rs b/crates/utils/src/middleware/beaconproxy.rs new file mode 100644 index 00000000..d5e12576 --- /dev/null +++ b/crates/utils/src/middleware/beaconproxy.rs @@ -0,0 +1,818 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BeaconProxy { + event AdminChanged(address previousAdmin, address newAdmin); + event BeaconUpgraded(address indexed beacon); + event Upgraded(address indexed implementation); + + constructor(address beacon, bytes data) payable; + + fallback() external payable; + + receive() external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "beacon", + "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::pub_underscore_fields, + clippy::style +)] +pub mod BeaconProxy { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201511439840571c52808c506d2bac622012f1c4a3ce20c713ce01822de788447164736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`@Qa\x08\xFA8\x03\x80a\x08\xFA\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04VV[a\0.\x82\x82`\0a\x005V[PPa\x05\x80V[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05\x16V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05\x16V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xD3`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x03IW`@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\x01iV[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x03d\x91\x90a\x051V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x03\x9FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xA4V[``\x91P[P\x90\x92P\x90Pa\x03\xB5\x82\x82\x86a\x03\xBFV[\x96\x95PPPPPPV[``\x83\x15a\x03\xCEWP\x81a\x02\xC8V[\x82Q\x15a\x03\xDEW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05MV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x0FW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04EW\x81\x81\x01Q\x83\x82\x01R` \x01a\x04-V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04iW`\0\x80\xFD[a\x04r\x83a\x03\xF8V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x8FW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xA3W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xB5Wa\x04\xB5a\x04\x14V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xDDWa\x04\xDDa\x04\x14V[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x04\xF6W`\0\x80\xFD[a\x05\x07\x83` \x83\x01` \x88\x01a\x04*V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x05(W`\0\x80\xFD[a\x02\xC8\x82a\x03\xF8V[`\0\x82Qa\x05C\x81\x84` \x87\x01a\x04*V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05l\x81`@\x85\x01` \x87\x01a\x04*V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03D\x80a\x05\x8F`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xE8`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02?V[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x01\x91W`@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\x01\xAC\x91\x90a\x02\x98V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\xE7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xECV[``\x91P[P\x91P\x91Pa\x01\xFC\x82\x82\x86a\x02\x06V[\x96\x95PPPPPPV[``\x83\x15a\x02\x15WP\x81a\0NV[\x82Q\x15a\x02%W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x88\x91\x90a\x02\xB4V[`\0` \x82\x84\x03\x12\x15a\x02QW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x83W\x81\x81\x01Q\x83\x82\x01R` \x01a\x02kV[\x83\x81\x11\x15a\x02\x92W`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xAA\x81\x84` \x87\x01a\x02hV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xD3\x81`@\x85\x01` \x87\x01a\x02hV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \x15\x11C\x98@W\x1CR\x80\x8CPm+\xACb \x12\xF1\xC4\xA3\xCE \xC7\x13\xCE\x01\x82-\xE7\x88DqdsolcC\0\x08\x0C\x003Address: low-level delegate call failed", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201511439840571c52808c506d2bac622012f1c4a3ce20c713ce01822de788447164736f6c634300080c0033 + /// ``` + #[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\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xE8`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02?V[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x01\x91W`@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\x01\xAC\x91\x90a\x02\x98V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\xE7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xECV[``\x91P[P\x91P\x91Pa\x01\xFC\x82\x82\x86a\x02\x06V[\x96\x95PPPPPPV[``\x83\x15a\x02\x15WP\x81a\0NV[\x82Q\x15a\x02%W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x88\x91\x90a\x02\xB4V[`\0` \x82\x84\x03\x12\x15a\x02QW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x83W\x81\x81\x01Q\x83\x82\x01R` \x01a\x02kV[\x83\x81\x11\x15a\x02\x92W`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xAA\x81\x84` \x87\x01a\x02hV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xD3\x81`@\x85\x01` \x87\x01a\x02hV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \x15\x11C\x98@W\x1CR\x80\x8CPm+\xACb \x12\xF1\xC4\xA3\xCE \xC7\x13\xCE\x01\x82-\xE7\x88DqdsolcC\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 beacon, bytes data) payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub beacon: 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.beacon, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beacon: 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.beacon, + ), + ::tokenize( + &self.data, + ), + ) + } + } + }; + ///Container for all the [`BeaconProxy`](self) events. + pub enum BeaconProxyEvents { + AdminChanged(AdminChanged), + BeaconUpgraded(BeaconUpgraded), + Upgraded(Upgraded), + } + #[automatically_derived] + impl BeaconProxyEvents { + /// 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 BeaconProxyEvents { + const NAME: &'static str = "BeaconProxyEvents"; + 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 BeaconProxyEvents { + 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 [`BeaconProxy`](self) contract instance. + + See the [wrapper's documentation](`BeaconProxyInstance`) 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, + ) -> BeaconProxyInstance { + BeaconProxyInstance::::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, + beacon: alloy::sol_types::private::Address, + data: alloy::sol_types::private::Bytes, + ) -> impl ::core::future::Future>> + { + BeaconProxyInstance::::deploy(provider, beacon, 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, + beacon: alloy::sol_types::private::Address, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::RawCallBuilder { + BeaconProxyInstance::::deploy_builder(provider, beacon, data) + } + /**A [`BeaconProxy`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BeaconProxy`](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 BeaconProxyInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BeaconProxyInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BeaconProxyInstance") + .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, + > BeaconProxyInstance + { + /**Creates a new wrapper around an on-chain [`BeaconProxy`](self) contract instance. + + See the [wrapper's documentation](`BeaconProxyInstance`) 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, + beacon: alloy::sol_types::private::Address, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, beacon, 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, + beacon: 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 { beacon, 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 BeaconProxyInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BeaconProxyInstance { + BeaconProxyInstance { + 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, + > BeaconProxyInstance + { + /// 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, + > BeaconProxyInstance + { + /// 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/middleware/bitmapstrings.rs b/crates/utils/src/middleware/bitmapstrings.rs new file mode 100644 index 00000000..a12020e3 --- /dev/null +++ b/crates/utils/src/middleware/bitmapstrings.rs @@ -0,0 +1,224 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BitmapStrings {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BitmapStrings { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e597494803d26eff74ea106072c628da8258f5e8c2c81b675527dfce431f94664736f6c634300080c0033 + /// ``` + #[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 nYt\x94\x80=&\xEF\xF7N\xA1\x06\x07,b\x8D\xA8%\x8F^\x8C,\x81\xB6uR}\xFC\xE41\xF9FdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e597494803d26eff74ea106072c628da8258f5e8c2c81b675527dfce431f94664736f6c634300080c0033 + /// ``` + #[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 nYt\x94\x80=&\xEF\xF7N\xA1\x06\x07,b\x8D\xA8%\x8F^\x8C,\x81\xB6uR}\xFC\xE41\xF9FdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BitmapStrings`](self) contract instance. + + See the [wrapper's documentation](`BitmapStringsInstance`) 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, + ) -> BitmapStringsInstance { + BitmapStringsInstance::::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>> + { + BitmapStringsInstance::::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 { + BitmapStringsInstance::::deploy_builder(provider) + } + /**A [`BitmapStrings`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BitmapStrings`](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 BitmapStringsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BitmapStringsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BitmapStringsInstance") + .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, + > BitmapStringsInstance + { + /**Creates a new wrapper around an on-chain [`BitmapStrings`](self) contract instance. + + See the [wrapper's documentation](`BitmapStringsInstance`) 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 BitmapStringsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BitmapStringsInstance { + BitmapStringsInstance { + 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, + > BitmapStringsInstance + { + /// 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, + > BitmapStringsInstance + { + /// 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/bitmaputils.rs b/crates/utils/src/middleware/bitmaputils.rs similarity index 93% rename from crates/utils/src/bitmaputils.rs rename to crates/utils/src/middleware/bitmaputils.rs index d2a1c903..0bd2c8dc 100644 --- a/crates/utils/src/bitmaputils.rs +++ b/crates/utils/src/middleware/bitmaputils.rs @@ -9,29 +9,34 @@ interface BitmapUtils {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod BitmapUtils { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220120dc0c9f38680615baacfa26aef773872b06e00c56b044d51beecc0f15da70664736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e7eb5ae7517179bcfbaca0ea6acd2066c61da84099241a093ac3ed16f64a1a064736f6c634300080c0033 /// ``` #[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", + 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 .~\xB5\xAEu\x17\x17\x9B\xCF\xBA\xCA\x0E\xA6\xAC\xD2\x06la\xDA\x84\t\x92A\xA0\x93\xAC>\xD1od\xA1\xA0dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220120dc0c9f38680615baacfa26aef773872b06e00c56b044d51beecc0f15da70664736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e7eb5ae7517179bcfbaca0ea6acd2066c61da84099241a093ac3ed16f64a1a064736f6c634300080c0033 /// ``` #[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", + 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 .~\xB5\xAEu\x17\x17\x9B\xCF\xBA\xCA\x0E\xA6\xAC\xD2\x06la\xDA\x84\t\x92A\xA0\x93\xAC>\xD1od\xA1\xA0dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`BitmapUtils`](self) contract instance. diff --git a/crates/utils/src/middleware/bitmaputilswrapper.rs b/crates/utils/src/middleware/bitmaputilswrapper.rs new file mode 100644 index 00000000..2ca8eb74 --- /dev/null +++ b/crates/utils/src/middleware/bitmaputilswrapper.rs @@ -0,0 +1,2260 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BitmapUtilsWrapper { + function bitmapToBytesArray(uint256 bitmap) external pure returns (bytes memory bytesArray); + function countNumOnes(uint256 n) external pure returns (uint16); + function isArrayStrictlyAscendingOrdered(bytes memory bytesArray) external pure returns (bool); + function isEmpty(uint256 bitmap) external pure returns (bool); + function isSet(uint256 bitmap, uint8 numberToCheckForInclusion) external pure returns (bool); + function isSubsetOf(uint256 a, uint256 b) external pure returns (bool); + function minus(uint256 a, uint256 b) external pure returns (uint256); + function noBitsInCommon(uint256 a, uint256 b) external pure returns (bool); + function orderedBytesArrayToBitmap(bytes memory orderedBytesArray) external pure returns (uint256); + function plus(uint256 a, uint256 b) external pure returns (uint256); + function setBit(uint256 bitmap, uint8 bit) external pure returns (uint256); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "bitmapToBytesArray", + "inputs": [ + { + "name": "bitmap", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "bytesArray", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "countNumOnes", + "inputs": [ + { + "name": "n", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "isArrayStrictlyAscendingOrdered", + "inputs": [ + { + "name": "bytesArray", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "isEmpty", + "inputs": [ + { + "name": "bitmap", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "isSet", + "inputs": [ + { + "name": "bitmap", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "numberToCheckForInclusion", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "isSubsetOf", + "inputs": [ + { + "name": "a", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "b", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "minus", + "inputs": [ + { + "name": "a", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "b", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "noBitsInCommon", + "inputs": [ + { + "name": "a", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "b", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "orderedBytesArrayToBitmap", + "inputs": [ + { + "name": "orderedBytesArray", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "plus", + "inputs": [ + { + "name": "a", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "b", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "setBit", + "inputs": [ + { + "name": "bitmap", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bit", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BitmapUtilsWrapper { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506107d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80636c73bd87116100715780636c73bd871461013057806376370f1f14610143578063a8e3eabb14610169578063dd5471851461017c578063f4f3bdc11461019c578063f90cfeef146101af57600080fd5b80631ff4adba146100ae57806320e88403146100d65780634ee29090146100f757806362e2ef331461010a57806366098d4f1461011d575b600080fd5b6100c16100bc3660046105d0565b6101c2565b60405190151581526020015b60405180910390f35b6100e96100e4366004610606565b6101da565b6040519081526020016100cd565b6100e96101053660046105d0565b61021b565b6100c1610118366004610678565b61022b565b6100e961012b366004610678565b610236565b6100c161013e366004610606565b610240565b61015661015136600461069a565b61024c565b60405161ffff90911681526020016100cd565b6100c1610177366004610678565b610257565b61018f61018a36600461069a565b610263565b6040516100cd91906106b3565b6100e96101aa366004610678565b61026e565b6100c16101bd36600461069a565b610279565b6000600160ff831684901c8116145b90505b92915050565b60006101d183838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061028292505050565b6000600160ff83161b83176101d1565b6000818316156101d1565b60008183176101d1565b60006101d18383610414565b60006101d4826104d8565b600081831683146101d1565b60606101d482610503565b6000811983166101d1565b600081156101d4565b6000610100825111156103105760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4015b60405180910390fd5b815161031e57506000919050565b6000808360008151811061033457610334610708565b0160200151600160f89190911c81901b92505b845181101561040b5784818151811061036257610362610708565b0160200151600160f89190911c1b91508282116103f75760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610307565b9181179161040481610734565b9050610347565b50909392505050565b6000610100821115610428575060006101d4565b81610435575060016101d4565b60008383600081811061044a5761044a610708565b909101356001600160f81b0319169150600190505b838110156104cd5760f882901c85858381811061047e5761047e610708565b9050013560f81c60f81b60f81c60ff161161049e576000925050506101d4565b8484828181106104b0576104b0610708565b9050013560f81c60f81b9150806104c690610734565b905061045f565b506001949350505050565b6000805b82156101d4576104ed60018461074f565b90921691806104fb81610766565b9150506104dc565b6060600080610511846104d8565b61ffff1667ffffffffffffffff81111561052d5761052d610788565b6040519080825280601f01601f191660200182016040528015610557576020820181803683370190505b5090506000805b82518210801561056f575061010081105b156105c6576001811b9350858416156105b6578060f81b83838151811061059857610598610708565b60200101906001600160f81b031916908160001a9053508160010191505b6105bf81610734565b905061055e565b5090949350505050565b600080604083850312156105e357600080fd5b82359150602083013560ff811681146105fb57600080fd5b809150509250929050565b6000806020838503121561061957600080fd5b823567ffffffffffffffff8082111561063157600080fd5b818501915085601f83011261064557600080fd5b81358181111561065457600080fd5b86602082850101111561066657600080fd5b60209290920196919550909350505050565b6000806040838503121561068b57600080fd5b50508035926020909101359150565b6000602082840312156106ac57600080fd5b5035919050565b600060208083528351808285015260005b818110156106e0578581018301518582016040015282016106c4565b818111156106f2576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156107485761074861071e565b5060010190565b6000828210156107615761076161071e565b500390565b600061ffff8083168181141561077e5761077e61071e565b6001019392505050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220a42977e548d0080e94bbae1e1c9d5355b5c5d16041675977464912ecb7fe12bd64736f6c634300080c0033 + /// ``` + #[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\xD4\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80cls\xBD\x87\x11a\0qW\x80cls\xBD\x87\x14a\x010W\x80cv7\x0F\x1F\x14a\x01CW\x80c\xA8\xE3\xEA\xBB\x14a\x01iW\x80c\xDDTq\x85\x14a\x01|W\x80c\xF4\xF3\xBD\xC1\x14a\x01\x9CW\x80c\xF9\x0C\xFE\xEF\x14a\x01\xAFW`\0\x80\xFD[\x80c\x1F\xF4\xAD\xBA\x14a\0\xAEW\x80c \xE8\x84\x03\x14a\0\xD6W\x80cN\xE2\x90\x90\x14a\0\xF7W\x80cb\xE2\xEF3\x14a\x01\nW\x80cf\t\x8DO\x14a\x01\x1DW[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x05\xD0V[a\x01\xC2V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xE9a\0\xE46`\x04a\x06\x06V[a\x01\xDAV[`@Q\x90\x81R` \x01a\0\xCDV[a\0\xE9a\x01\x056`\x04a\x05\xD0V[a\x02\x1BV[a\0\xC1a\x01\x186`\x04a\x06xV[a\x02+V[a\0\xE9a\x01+6`\x04a\x06xV[a\x026V[a\0\xC1a\x01>6`\x04a\x06\x06V[a\x02@V[a\x01Va\x01Q6`\x04a\x06\x9AV[a\x02LV[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xCDV[a\0\xC1a\x01w6`\x04a\x06xV[a\x02WV[a\x01\x8Fa\x01\x8A6`\x04a\x06\x9AV[a\x02cV[`@Qa\0\xCD\x91\x90a\x06\xB3V[a\0\xE9a\x01\xAA6`\x04a\x06xV[a\x02nV[a\0\xC1a\x01\xBD6`\x04a\x06\x9AV[a\x02yV[`\0`\x01`\xFF\x83\x16\x84\x90\x1C\x81\x16\x14[\x90P[\x92\x91PPV[`\0a\x01\xD1\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\x91RPa\x02\x82\x92PPPV[`\0`\x01`\xFF\x83\x16\x1B\x83\x17a\x01\xD1V[`\0\x81\x83\x16\x15a\x01\xD1V[`\0\x81\x83\x17a\x01\xD1V[`\0a\x01\xD1\x83\x83a\x04\x14V[`\0a\x01\xD4\x82a\x04\xD8V[`\0\x81\x83\x16\x83\x14a\x01\xD1V[``a\x01\xD4\x82a\x05\x03V[`\0\x81\x19\x83\x16a\x01\xD1V[`\0\x81\x15a\x01\xD4V[`\0a\x01\0\x82Q\x11\x15a\x03\x10W`@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\x01[`@Q\x80\x91\x03\x90\xFD[\x81Qa\x03\x1EWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a\x034Wa\x034a\x07\x08V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\x04\x0BW\x84\x81\x81Q\x81\x10a\x03bWa\x03ba\x07\x08V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\x03\xF7W`@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\x03\x07V[\x91\x81\x17\x91a\x04\x04\x81a\x074V[\x90Pa\x03GV[P\x90\x93\x92PPPV[`\0a\x01\0\x82\x11\x15a\x04(WP`\0a\x01\xD4V[\x81a\x045WP`\x01a\x01\xD4V[`\0\x83\x83`\0\x81\x81\x10a\x04JWa\x04Ja\x07\x08V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x91P`\x01\x90P[\x83\x81\x10\x15a\x04\xCDW`\xF8\x82\x90\x1C\x85\x85\x83\x81\x81\x10a\x04~Wa\x04~a\x07\x08V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C`\xFF\x16\x11a\x04\x9EW`\0\x92PPPa\x01\xD4V[\x84\x84\x82\x81\x81\x10a\x04\xB0Wa\x04\xB0a\x07\x08V[\x90P\x015`\xF8\x1C`\xF8\x1B\x91P\x80a\x04\xC6\x90a\x074V[\x90Pa\x04_V[P`\x01\x94\x93PPPPV[`\0\x80[\x82\x15a\x01\xD4Wa\x04\xED`\x01\x84a\x07OV[\x90\x92\x16\x91\x80a\x04\xFB\x81a\x07fV[\x91PPa\x04\xDCV[```\0\x80a\x05\x11\x84a\x04\xD8V[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05-Wa\x05-a\x07\x88V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x05WW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x05oWPa\x01\0\x81\x10[\x15a\x05\xC6W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x05\xB6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x05\x98Wa\x05\x98a\x07\x08V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x05\xBF\x81a\x074V[\x90Pa\x05^V[P\x90\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x05\xE3W`\0\x80\xFD[\x825\x91P` \x83\x015`\xFF\x81\x16\x81\x14a\x05\xFBW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x06\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x061W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x06EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x06TW`\0\x80\xFD[\x86` \x82\x85\x01\x01\x11\x15a\x06fW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06\x8BW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x06\xACW`\0\x80\xFD[P5\x91\x90PV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x06\xE0W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x06\xC4V[\x81\x81\x11\x15a\x06\xF2W`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x07HWa\x07Ha\x07\x1EV[P`\x01\x01\x90V[`\0\x82\x82\x10\x15a\x07aWa\x07aa\x07\x1EV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x07~Wa\x07~a\x07\x1EV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xA4)w\xE5H\xD0\x08\x0E\x94\xBB\xAE\x1E\x1C\x9DSU\xB5\xC5\xD1`AgYwFI\x12\xEC\xB7\xFE\x12\xBDdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80636c73bd87116100715780636c73bd871461013057806376370f1f14610143578063a8e3eabb14610169578063dd5471851461017c578063f4f3bdc11461019c578063f90cfeef146101af57600080fd5b80631ff4adba146100ae57806320e88403146100d65780634ee29090146100f757806362e2ef331461010a57806366098d4f1461011d575b600080fd5b6100c16100bc3660046105d0565b6101c2565b60405190151581526020015b60405180910390f35b6100e96100e4366004610606565b6101da565b6040519081526020016100cd565b6100e96101053660046105d0565b61021b565b6100c1610118366004610678565b61022b565b6100e961012b366004610678565b610236565b6100c161013e366004610606565b610240565b61015661015136600461069a565b61024c565b60405161ffff90911681526020016100cd565b6100c1610177366004610678565b610257565b61018f61018a36600461069a565b610263565b6040516100cd91906106b3565b6100e96101aa366004610678565b61026e565b6100c16101bd36600461069a565b610279565b6000600160ff831684901c8116145b90505b92915050565b60006101d183838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061028292505050565b6000600160ff83161b83176101d1565b6000818316156101d1565b60008183176101d1565b60006101d18383610414565b60006101d4826104d8565b600081831683146101d1565b60606101d482610503565b6000811983166101d1565b600081156101d4565b6000610100825111156103105760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4015b60405180910390fd5b815161031e57506000919050565b6000808360008151811061033457610334610708565b0160200151600160f89190911c81901b92505b845181101561040b5784818151811061036257610362610708565b0160200151600160f89190911c1b91508282116103f75760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610307565b9181179161040481610734565b9050610347565b50909392505050565b6000610100821115610428575060006101d4565b81610435575060016101d4565b60008383600081811061044a5761044a610708565b909101356001600160f81b0319169150600190505b838110156104cd5760f882901c85858381811061047e5761047e610708565b9050013560f81c60f81b60f81c60ff161161049e576000925050506101d4565b8484828181106104b0576104b0610708565b9050013560f81c60f81b9150806104c690610734565b905061045f565b506001949350505050565b6000805b82156101d4576104ed60018461074f565b90921691806104fb81610766565b9150506104dc565b6060600080610511846104d8565b61ffff1667ffffffffffffffff81111561052d5761052d610788565b6040519080825280601f01601f191660200182016040528015610557576020820181803683370190505b5090506000805b82518210801561056f575061010081105b156105c6576001811b9350858416156105b6578060f81b83838151811061059857610598610708565b60200101906001600160f81b031916908160001a9053508160010191505b6105bf81610734565b905061055e565b5090949350505050565b600080604083850312156105e357600080fd5b82359150602083013560ff811681146105fb57600080fd5b809150509250929050565b6000806020838503121561061957600080fd5b823567ffffffffffffffff8082111561063157600080fd5b818501915085601f83011261064557600080fd5b81358181111561065457600080fd5b86602082850101111561066657600080fd5b60209290920196919550909350505050565b6000806040838503121561068b57600080fd5b50508035926020909101359150565b6000602082840312156106ac57600080fd5b5035919050565b600060208083528351808285015260005b818110156106e0578581018301518582016040015282016106c4565b818111156106f2576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156107485761074861071e565b5060010190565b6000828210156107615761076161071e565b500390565b600061ffff8083168181141561077e5761077e61071e565b6001019392505050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220a42977e548d0080e94bbae1e1c9d5355b5c5d16041675977464912ecb7fe12bd64736f6c634300080c0033 + /// ``` + #[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\x80cls\xBD\x87\x11a\0qW\x80cls\xBD\x87\x14a\x010W\x80cv7\x0F\x1F\x14a\x01CW\x80c\xA8\xE3\xEA\xBB\x14a\x01iW\x80c\xDDTq\x85\x14a\x01|W\x80c\xF4\xF3\xBD\xC1\x14a\x01\x9CW\x80c\xF9\x0C\xFE\xEF\x14a\x01\xAFW`\0\x80\xFD[\x80c\x1F\xF4\xAD\xBA\x14a\0\xAEW\x80c \xE8\x84\x03\x14a\0\xD6W\x80cN\xE2\x90\x90\x14a\0\xF7W\x80cb\xE2\xEF3\x14a\x01\nW\x80cf\t\x8DO\x14a\x01\x1DW[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x05\xD0V[a\x01\xC2V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xE9a\0\xE46`\x04a\x06\x06V[a\x01\xDAV[`@Q\x90\x81R` \x01a\0\xCDV[a\0\xE9a\x01\x056`\x04a\x05\xD0V[a\x02\x1BV[a\0\xC1a\x01\x186`\x04a\x06xV[a\x02+V[a\0\xE9a\x01+6`\x04a\x06xV[a\x026V[a\0\xC1a\x01>6`\x04a\x06\x06V[a\x02@V[a\x01Va\x01Q6`\x04a\x06\x9AV[a\x02LV[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xCDV[a\0\xC1a\x01w6`\x04a\x06xV[a\x02WV[a\x01\x8Fa\x01\x8A6`\x04a\x06\x9AV[a\x02cV[`@Qa\0\xCD\x91\x90a\x06\xB3V[a\0\xE9a\x01\xAA6`\x04a\x06xV[a\x02nV[a\0\xC1a\x01\xBD6`\x04a\x06\x9AV[a\x02yV[`\0`\x01`\xFF\x83\x16\x84\x90\x1C\x81\x16\x14[\x90P[\x92\x91PPV[`\0a\x01\xD1\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\x91RPa\x02\x82\x92PPPV[`\0`\x01`\xFF\x83\x16\x1B\x83\x17a\x01\xD1V[`\0\x81\x83\x16\x15a\x01\xD1V[`\0\x81\x83\x17a\x01\xD1V[`\0a\x01\xD1\x83\x83a\x04\x14V[`\0a\x01\xD4\x82a\x04\xD8V[`\0\x81\x83\x16\x83\x14a\x01\xD1V[``a\x01\xD4\x82a\x05\x03V[`\0\x81\x19\x83\x16a\x01\xD1V[`\0\x81\x15a\x01\xD4V[`\0a\x01\0\x82Q\x11\x15a\x03\x10W`@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\x01[`@Q\x80\x91\x03\x90\xFD[\x81Qa\x03\x1EWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a\x034Wa\x034a\x07\x08V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\x04\x0BW\x84\x81\x81Q\x81\x10a\x03bWa\x03ba\x07\x08V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\x03\xF7W`@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\x03\x07V[\x91\x81\x17\x91a\x04\x04\x81a\x074V[\x90Pa\x03GV[P\x90\x93\x92PPPV[`\0a\x01\0\x82\x11\x15a\x04(WP`\0a\x01\xD4V[\x81a\x045WP`\x01a\x01\xD4V[`\0\x83\x83`\0\x81\x81\x10a\x04JWa\x04Ja\x07\x08V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x91P`\x01\x90P[\x83\x81\x10\x15a\x04\xCDW`\xF8\x82\x90\x1C\x85\x85\x83\x81\x81\x10a\x04~Wa\x04~a\x07\x08V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C`\xFF\x16\x11a\x04\x9EW`\0\x92PPPa\x01\xD4V[\x84\x84\x82\x81\x81\x10a\x04\xB0Wa\x04\xB0a\x07\x08V[\x90P\x015`\xF8\x1C`\xF8\x1B\x91P\x80a\x04\xC6\x90a\x074V[\x90Pa\x04_V[P`\x01\x94\x93PPPPV[`\0\x80[\x82\x15a\x01\xD4Wa\x04\xED`\x01\x84a\x07OV[\x90\x92\x16\x91\x80a\x04\xFB\x81a\x07fV[\x91PPa\x04\xDCV[```\0\x80a\x05\x11\x84a\x04\xD8V[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05-Wa\x05-a\x07\x88V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x05WW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x05oWPa\x01\0\x81\x10[\x15a\x05\xC6W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x05\xB6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x05\x98Wa\x05\x98a\x07\x08V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x05\xBF\x81a\x074V[\x90Pa\x05^V[P\x90\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x05\xE3W`\0\x80\xFD[\x825\x91P` \x83\x015`\xFF\x81\x16\x81\x14a\x05\xFBW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x06\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x061W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x06EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x06TW`\0\x80\xFD[\x86` \x82\x85\x01\x01\x11\x15a\x06fW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06\x8BW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x06\xACW`\0\x80\xFD[P5\x91\x90PV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x06\xE0W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x06\xC4V[\x81\x81\x11\x15a\x06\xF2W`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x07HWa\x07Ha\x07\x1EV[P`\x01\x01\x90V[`\0\x82\x82\x10\x15a\x07aWa\x07aa\x07\x1EV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x07~Wa\x07~a\x07\x1EV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xA4)w\xE5H\xD0\x08\x0E\x94\xBB\xAE\x1E\x1C\x9DSU\xB5\xC5\xD1`AgYwFI\x12\xEC\xB7\xFE\x12\xBDdsolcC\0\x08\x0C\x003", + ); + /**Function with signature `bitmapToBytesArray(uint256)` and selector `0xdd547185`. + ```solidity + function bitmapToBytesArray(uint256 bitmap) external pure returns (bytes memory bytesArray); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct bitmapToBytesArrayCall { + pub bitmap: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`bitmapToBytesArray(uint256)`](bitmapToBytesArrayCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct bitmapToBytesArrayReturn { + pub bytesArray: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: bitmapToBytesArrayCall) -> Self { + (value.bitmap,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for bitmapToBytesArrayCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { bitmap: tuple.0 } + } + } + } + { + #[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: bitmapToBytesArrayReturn) -> Self { + (value.bytesArray,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for bitmapToBytesArrayReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + bytesArray: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for bitmapToBytesArrayCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = bitmapToBytesArrayReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "bitmapToBytesArray(uint256)"; + const SELECTOR: [u8; 4] = [221u8, 84u8, 113u8, 133u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.bitmap, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `countNumOnes(uint256)` and selector `0x76370f1f`. + ```solidity + function countNumOnes(uint256 n) external pure returns (uint16); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct countNumOnesCall { + pub n: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`countNumOnes(uint256)`](countNumOnesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct countNumOnesReturn { + pub _0: u16, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: countNumOnesCall) -> Self { + (value.n,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for countNumOnesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { n: tuple.0 } + } + } + } + { + #[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: countNumOnesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for countNumOnesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for countNumOnesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = countNumOnesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "countNumOnes(uint256)"; + const SELECTOR: [u8; 4] = [118u8, 55u8, 15u8, 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.n, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isArrayStrictlyAscendingOrdered(bytes)` and selector `0x6c73bd87`. + ```solidity + function isArrayStrictlyAscendingOrdered(bytes memory bytesArray) external pure returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isArrayStrictlyAscendingOrderedCall { + pub bytesArray: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`isArrayStrictlyAscendingOrdered(bytes)`](isArrayStrictlyAscendingOrderedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isArrayStrictlyAscendingOrderedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: isArrayStrictlyAscendingOrderedCall) -> Self { + (value.bytesArray,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isArrayStrictlyAscendingOrderedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + bytesArray: 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: isArrayStrictlyAscendingOrderedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isArrayStrictlyAscendingOrderedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isArrayStrictlyAscendingOrderedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isArrayStrictlyAscendingOrderedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isArrayStrictlyAscendingOrdered(bytes)"; + const SELECTOR: [u8; 4] = [108u8, 115u8, 189u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.bytesArray, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isEmpty(uint256)` and selector `0xf90cfeef`. + ```solidity + function isEmpty(uint256 bitmap) external pure returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isEmptyCall { + pub bitmap: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`isEmpty(uint256)`](isEmptyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isEmptyReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: isEmptyCall) -> Self { + (value.bitmap,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isEmptyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { bitmap: 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: isEmptyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isEmptyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isEmptyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isEmptyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isEmpty(uint256)"; + const SELECTOR: [u8; 4] = [249u8, 12u8, 254u8, 239u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.bitmap, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isSet(uint256,uint8)` and selector `0x1ff4adba`. + ```solidity + function isSet(uint256 bitmap, uint8 numberToCheckForInclusion) external pure returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isSetCall { + pub bitmap: alloy::sol_types::private::primitives::aliases::U256, + pub numberToCheckForInclusion: u8, + } + ///Container type for the return parameters of the [`isSet(uint256,uint8)`](isSetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isSetReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::primitives::aliases::U256, 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: isSetCall) -> Self { + (value.bitmap, value.numberToCheckForInclusion) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isSetCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + bitmap: tuple.0, + numberToCheckForInclusion: 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: isSetReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isSetReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isSetCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isSetReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isSet(uint256,uint8)"; + const SELECTOR: [u8; 4] = [31u8, 244u8, 173u8, 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.bitmap, + ), + as alloy_sol_types::SolType>::tokenize( + &self.numberToCheckForInclusion, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isSubsetOf(uint256,uint256)` and selector `0xa8e3eabb`. + ```solidity + function isSubsetOf(uint256 a, uint256 b) external pure returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isSubsetOfCall { + pub a: alloy::sol_types::private::primitives::aliases::U256, + pub b: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`isSubsetOf(uint256,uint256)`](isSubsetOfCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isSubsetOfReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: isSubsetOfCall) -> Self { + (value.a, value.b) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isSubsetOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + a: tuple.0, + b: 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: isSubsetOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isSubsetOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isSubsetOfCall { + 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 = isSubsetOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isSubsetOf(uint256,uint256)"; + const SELECTOR: [u8; 4] = [168u8, 227u8, 234u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.a, + ), + as alloy_sol_types::SolType>::tokenize( + &self.b, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minus(uint256,uint256)` and selector `0xf4f3bdc1`. + ```solidity + function minus(uint256 a, uint256 b) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minusCall { + pub a: alloy::sol_types::private::primitives::aliases::U256, + pub b: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`minus(uint256,uint256)`](minusCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minusReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: minusCall) -> Self { + (value.a, value.b) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minusCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + a: tuple.0, + b: 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: minusReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minusReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minusCall { + 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 = minusReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minus(uint256,uint256)"; + const SELECTOR: [u8; 4] = [244u8, 243u8, 189u8, 193u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.a, + ), + as alloy_sol_types::SolType>::tokenize( + &self.b, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `noBitsInCommon(uint256,uint256)` and selector `0x62e2ef33`. + ```solidity + function noBitsInCommon(uint256 a, uint256 b) external pure returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct noBitsInCommonCall { + pub a: alloy::sol_types::private::primitives::aliases::U256, + pub b: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`noBitsInCommon(uint256,uint256)`](noBitsInCommonCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct noBitsInCommonReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: noBitsInCommonCall) -> Self { + (value.a, value.b) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noBitsInCommonCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + a: tuple.0, + b: 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: noBitsInCommonReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noBitsInCommonReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for noBitsInCommonCall { + 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 = noBitsInCommonReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "noBitsInCommon(uint256,uint256)"; + const SELECTOR: [u8; 4] = [98u8, 226u8, 239u8, 51u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.a, + ), + as alloy_sol_types::SolType>::tokenize( + &self.b, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `orderedBytesArrayToBitmap(bytes)` and selector `0x20e88403`. + ```solidity + function orderedBytesArrayToBitmap(bytes memory orderedBytesArray) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct orderedBytesArrayToBitmapCall { + pub orderedBytesArray: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`orderedBytesArrayToBitmap(bytes)`](orderedBytesArrayToBitmapCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct orderedBytesArrayToBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: orderedBytesArrayToBitmapCall) -> Self { + (value.orderedBytesArray,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for orderedBytesArrayToBitmapCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orderedBytesArray: 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: orderedBytesArrayToBitmapReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for orderedBytesArrayToBitmapReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for orderedBytesArrayToBitmapCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = orderedBytesArrayToBitmapReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "orderedBytesArrayToBitmap(bytes)"; + const SELECTOR: [u8; 4] = [32u8, 232u8, 132u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.orderedBytesArray, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `plus(uint256,uint256)` and selector `0x66098d4f`. + ```solidity + function plus(uint256 a, uint256 b) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct plusCall { + pub a: alloy::sol_types::private::primitives::aliases::U256, + pub b: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`plus(uint256,uint256)`](plusCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct plusReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: plusCall) -> Self { + (value.a, value.b) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for plusCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + a: tuple.0, + b: 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: plusReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for plusReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for plusCall { + 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 = plusReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "plus(uint256,uint256)"; + const SELECTOR: [u8; 4] = [102u8, 9u8, 141u8, 79u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.a, + ), + as alloy_sol_types::SolType>::tokenize( + &self.b, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setBit(uint256,uint8)` and selector `0x4ee29090`. + ```solidity + function setBit(uint256 bitmap, uint8 bit) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBitCall { + pub bitmap: alloy::sol_types::private::primitives::aliases::U256, + pub bit: u8, + } + ///Container type for the return parameters of the [`setBit(uint256,uint8)`](setBitCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBitReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::primitives::aliases::U256, 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: setBitCall) -> Self { + (value.bitmap, value.bit) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setBitCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + bitmap: tuple.0, + bit: 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: setBitReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setBitReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setBitCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setBitReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setBit(uint256,uint8)"; + const SELECTOR: [u8; 4] = [78u8, 226u8, 144u8, 144u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.bitmap, + ), + as alloy_sol_types::SolType>::tokenize( + &self.bit, + ), + ) + } + #[inline] + fn 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 [`BitmapUtilsWrapper`](self) function calls. + pub enum BitmapUtilsWrapperCalls { + bitmapToBytesArray(bitmapToBytesArrayCall), + countNumOnes(countNumOnesCall), + isArrayStrictlyAscendingOrdered(isArrayStrictlyAscendingOrderedCall), + isEmpty(isEmptyCall), + isSet(isSetCall), + isSubsetOf(isSubsetOfCall), + minus(minusCall), + noBitsInCommon(noBitsInCommonCall), + orderedBytesArrayToBitmap(orderedBytesArrayToBitmapCall), + plus(plusCall), + setBit(setBitCall), + } + #[automatically_derived] + impl BitmapUtilsWrapperCalls { + /// 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]] = &[ + [31u8, 244u8, 173u8, 186u8], + [32u8, 232u8, 132u8, 3u8], + [78u8, 226u8, 144u8, 144u8], + [98u8, 226u8, 239u8, 51u8], + [102u8, 9u8, 141u8, 79u8], + [108u8, 115u8, 189u8, 135u8], + [118u8, 55u8, 15u8, 31u8], + [168u8, 227u8, 234u8, 187u8], + [221u8, 84u8, 113u8, 133u8], + [244u8, 243u8, 189u8, 193u8], + [249u8, 12u8, 254u8, 239u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BitmapUtilsWrapperCalls { + const NAME: &'static str = "BitmapUtilsWrapperCalls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 11usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::bitmapToBytesArray(_) => { + ::SELECTOR + } + Self::countNumOnes(_) => ::SELECTOR, + Self::isArrayStrictlyAscendingOrdered(_) => { + ::SELECTOR + } + Self::isEmpty(_) => ::SELECTOR, + Self::isSet(_) => ::SELECTOR, + Self::isSubsetOf(_) => ::SELECTOR, + Self::minus(_) => ::SELECTOR, + Self::noBitsInCommon(_) => { + ::SELECTOR + } + Self::orderedBytesArrayToBitmap(_) => { + ::SELECTOR + } + Self::plus(_) => ::SELECTOR, + Self::setBit(_) => ::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 isSet( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BitmapUtilsWrapperCalls::isSet) + } + isSet + }, + { + fn orderedBytesArrayToBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BitmapUtilsWrapperCalls::orderedBytesArrayToBitmap) + } + orderedBytesArrayToBitmap + }, + { + fn setBit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BitmapUtilsWrapperCalls::setBit) + } + setBit + }, + { + fn noBitsInCommon( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BitmapUtilsWrapperCalls::noBitsInCommon) + } + noBitsInCommon + }, + { + fn plus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BitmapUtilsWrapperCalls::plus) + } + plus + }, + { + fn isArrayStrictlyAscendingOrdered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + BitmapUtilsWrapperCalls::isArrayStrictlyAscendingOrdered, + ) + } + isArrayStrictlyAscendingOrdered + }, + { + fn countNumOnes( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BitmapUtilsWrapperCalls::countNumOnes) + } + countNumOnes + }, + { + fn isSubsetOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BitmapUtilsWrapperCalls::isSubsetOf) + } + isSubsetOf + }, + { + fn bitmapToBytesArray( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BitmapUtilsWrapperCalls::bitmapToBytesArray) + } + bitmapToBytesArray + }, + { + fn minus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BitmapUtilsWrapperCalls::minus) + } + minus + }, + { + fn isEmpty( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BitmapUtilsWrapperCalls::isEmpty) + } + isEmpty + }, + ]; + 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::bitmapToBytesArray(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::countNumOnes(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isArrayStrictlyAscendingOrdered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isEmpty(inner) => { + ::abi_encoded_size(inner) + } + Self::isSet(inner) => { + ::abi_encoded_size(inner) + } + Self::isSubsetOf(inner) => { + ::abi_encoded_size(inner) + } + Self::minus(inner) => { + ::abi_encoded_size(inner) + } + Self::noBitsInCommon(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::orderedBytesArrayToBitmap(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::plus(inner) => { + ::abi_encoded_size(inner) + } + Self::setBit(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::bitmapToBytesArray(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::countNumOnes(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isArrayStrictlyAscendingOrdered(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isEmpty(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isSet(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isSubsetOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minus(inner) => { + ::abi_encode_raw(inner, out) + } + Self::noBitsInCommon(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::orderedBytesArrayToBitmap(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::plus(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setBit(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BitmapUtilsWrapper`](self) contract instance. + + See the [wrapper's documentation](`BitmapUtilsWrapperInstance`) 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, + ) -> BitmapUtilsWrapperInstance { + BitmapUtilsWrapperInstance::::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>> + { + BitmapUtilsWrapperInstance::::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 { + BitmapUtilsWrapperInstance::::deploy_builder(provider) + } + /**A [`BitmapUtilsWrapper`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BitmapUtilsWrapper`](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 BitmapUtilsWrapperInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BitmapUtilsWrapperInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BitmapUtilsWrapperInstance") + .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, + > BitmapUtilsWrapperInstance + { + /**Creates a new wrapper around an on-chain [`BitmapUtilsWrapper`](self) contract instance. + + See the [wrapper's documentation](`BitmapUtilsWrapperInstance`) 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 BitmapUtilsWrapperInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BitmapUtilsWrapperInstance { + BitmapUtilsWrapperInstance { + 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, + > BitmapUtilsWrapperInstance + { + /// 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 [`bitmapToBytesArray`] function. + pub fn bitmapToBytesArray( + &self, + bitmap: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&bitmapToBytesArrayCall { bitmap }) + } + ///Creates a new call builder for the [`countNumOnes`] function. + pub fn countNumOnes( + &self, + n: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&countNumOnesCall { n }) + } + ///Creates a new call builder for the [`isArrayStrictlyAscendingOrdered`] function. + pub fn isArrayStrictlyAscendingOrdered( + &self, + bytesArray: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isArrayStrictlyAscendingOrderedCall { bytesArray }) + } + ///Creates a new call builder for the [`isEmpty`] function. + pub fn isEmpty( + &self, + bitmap: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isEmptyCall { bitmap }) + } + ///Creates a new call builder for the [`isSet`] function. + pub fn isSet( + &self, + bitmap: alloy::sol_types::private::primitives::aliases::U256, + numberToCheckForInclusion: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isSetCall { + bitmap, + numberToCheckForInclusion, + }) + } + ///Creates a new call builder for the [`isSubsetOf`] function. + pub fn isSubsetOf( + &self, + a: alloy::sol_types::private::primitives::aliases::U256, + b: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isSubsetOfCall { a, b }) + } + ///Creates a new call builder for the [`minus`] function. + pub fn minus( + &self, + a: alloy::sol_types::private::primitives::aliases::U256, + b: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&minusCall { a, b }) + } + ///Creates a new call builder for the [`noBitsInCommon`] function. + pub fn noBitsInCommon( + &self, + a: alloy::sol_types::private::primitives::aliases::U256, + b: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&noBitsInCommonCall { a, b }) + } + ///Creates a new call builder for the [`orderedBytesArrayToBitmap`] function. + pub fn orderedBytesArrayToBitmap( + &self, + orderedBytesArray: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&orderedBytesArrayToBitmapCall { orderedBytesArray }) + } + ///Creates a new call builder for the [`plus`] function. + pub fn plus( + &self, + a: alloy::sol_types::private::primitives::aliases::U256, + b: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&plusCall { a, b }) + } + ///Creates a new call builder for the [`setBit`] function. + pub fn setBit( + &self, + bitmap: alloy::sol_types::private::primitives::aliases::U256, + bit: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setBitCall { bitmap, bit }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BitmapUtilsWrapperInstance + { + /// 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/middleware/blsapkregistry.rs similarity index 74% rename from crates/utils/src/blsapkregistry.rs rename to crates/utils/src/middleware/blsapkregistry.rs index 01ce7879..6beb82fc 100644 --- a/crates/utils/src/blsapkregistry.rs +++ b/crates/utils/src/middleware/blsapkregistry.rs @@ -7,20 +7,30 @@ library BN254 { struct G2Point { uint256[2] X; uint256[2] Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -196,13 +206,18 @@ pub mod BN254 { /**```solidity struct G2Point { uint256[2] X; uint256[2] Y; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -528,21 +543,31 @@ library IBLSApkRegistry { struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -755,14 +780,19 @@ pub mod IBLSApkRegistry { /**```solidity struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PubkeyRegistrationParams { pub pubkeyRegistrationSignature: ::RustType, pub pubkeyG1: ::RustType, pub pubkeyG2: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1763,41 +1793,56 @@ interface BLSApkRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod BLSApkRegistry { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b506040516200203538038062002035833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611eca6200016b6000396000818161030f0152610fd60152611eca6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118b7565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118b7565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a03660046118ea565b61045b565b005b6101ca6101b53660046118ea565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed366004611975565b610570565b61021b610200366004611a1b565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6102826102413660046118ea565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a34565b6102a261029d366004611a4b565b6105ee565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611a75565b610681565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a4b565b61081c565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118b7565b610867565b604080518351815260209384015193810193909352820152606001610152565b6101416103b33660046118ea565b6005602052600090815260409020805460019091015482565b6101846103da366004611abd565b610934565b6103f26103ed366004611b1a565b610d48565b6040516101529190611b92565b61018461040d3660046118b7565b60016020526000908152604090205481565b61021b61042d366004611a1b565b6002602052600090815260409020546001600160a01b031681565b6101a5610456366004611975565b610f62565b610463610fcb565b60ff8116600090815260046020526040902054156104e75760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084015b60405180910390fd5b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b610578610fcb565b600061058383610867565b5090506105908282611082565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836105d1856001600160a01b031660009081526001602052604090205490565b846040516105e193929190611bdc565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061062b5761062b611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106106a8576106a8611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b90910481169282019290925292508516101561076f5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104de565b604081015163ffffffff1615806107955750806040015163ffffffff168463ffffffff16105b6108135760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104de565b51949350505050565b6004602052816000526040600020818154811061083857600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061092a5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104de565b9094909350915050565b600061093e610fcb565b600061096c61095536869003860160408701611c5e565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58114156109f4576040805162461bcd60e51b8152602060048201526024810191909152600080516020611e7583398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104de565b6001600160a01b03851660009081526001602052604090205415610a7e5760405162461bcd60e51b81526020600482015260476024820152600080516020611e7583398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104de565b6000818152600260205260409020546001600160a01b031615610b025760405162461bcd60e51b81526020600482015260426024820152600080516020611e7583398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104de565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610b5b918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611c90565b6040516020818303038152906040528051906020012060001c610b7e9190611cdb565b9050610c18610bb7610ba283610b9c368a90038a0160408b01611c5e565b906112cd565b610bb136899003890189611c5e565b90611364565b610bbf6113f8565b610c01610bf285610b9c604080518082018252600080825260209182015281518083019092526001825260029082015290565b610bb1368a90038a018a611c5e565b610c13368a90038a0160808b01611d4d565b6114b8565b610cb35760405162461bcd60e51b815260206004820152606c6024820152600080516020611e7583398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104de565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610d379160808a0190611daa565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610d6557610d65611905565b604051908082528060200260200182016040528015610d8e578160200160208202803683370190505b50905060005b84811015610f59576000868683818110610db057610db0611c48565b919091013560f81c6000818152600460205260409020549092509050801580610e13575060ff821660009081526004602052604081208054909190610df757610df7611c48565b600091825260209091200154600160c01b900463ffffffff1686105b15610ea05760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104de565b805b8015610f435760ff831660009081526004602052604090208790610ec7600184611df4565b81548110610ed757610ed7611c48565b600091825260209091200154600160c01b900463ffffffff1611610f3157610f00600182611df4565b858581518110610f1257610f12611c48565b602002602001019063ffffffff16908163ffffffff1681525050610f43565b80610f3b81611e0b565b915050610ea2565b5050508080610f5190611e22565b915050610d94565b50949350505050565b610f6a610fcb565b6000610f7583610867565b509050610f8a82610f8583611725565b611082565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836105d1856001600160a01b031660009081526001602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110805760405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a4016104de565b565b604080518082019091526000808252602082015260005b83518110156112c75760008482815181106110b6576110b6611c48565b0160209081015160f81c60008181526004909252604090912054909150806111465760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104de565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261117a9086611364565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111c39085611df4565b815481106111d3576111d3611c48565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112145780546001600160c01b031916604083901c1781556112b0565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050505080806112bf90611e22565b915050611099565b50505050565b60408051808201909152600080825260208201526112e96117e4565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561131c5761131e565bfe5b508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104de565b505092915050565b6040805180820190915260008082526020820152611380611802565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561131c57508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104de565b611400611820565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916114e7611845565b60005b60028110156116ac576000611500826006611e3d565b905084826002811061151457611514611c48565b60200201515183611526836000611e5c565b600c811061153657611536611c48565b602002015284826002811061154d5761154d611c48565b602002015160200151838260016115649190611e5c565b600c811061157457611574611c48565b602002015283826002811061158b5761158b611c48565b602002015151518361159e836002611e5c565b600c81106115ae576115ae611c48565b60200201528382600281106115c5576115c5611c48565b60200201515160016020020151836115de836003611e5c565b600c81106115ee576115ee611c48565b602002015283826002811061160557611605611c48565b60200201516020015160006002811061162057611620611c48565b602002015183611631836004611e5c565b600c811061164157611641611c48565b602002015283826002811061165857611658611c48565b60200201516020015160016002811061167357611673611c48565b602002015183611684836005611e5c565b600c811061169457611694611c48565b602002015250806116a481611e22565b9150506114ea565b506116b5611864565b60006020826101808560086107d05a03fa905080801561131c5750806117155760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104de565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561174a57506020820151155b15611768575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117ad9190611cdb565b6117d7907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611df4565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611833611882565b8152602001611840611882565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117df57600080fd5b6000602082840312156118c957600080fd5b6118d2826118a0565b9392505050565b803560ff811681146117df57600080fd5b6000602082840312156118fc57600080fd5b6118d2826118d9565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561193e5761193e611905565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196d5761196d611905565b604052919050565b6000806040838503121561198857600080fd5b611991836118a0565b915060208084013567ffffffffffffffff808211156119af57600080fd5b818601915086601f8301126119c357600080fd5b8135818111156119d5576119d5611905565b6119e7601f8201601f19168501611944565b915080825287848285010111156119fd57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a2d57600080fd5b5035919050565b81518152602080830151908201526040810161067b565b60008060408385031215611a5e57600080fd5b611a67836118d9565b946020939093013593505050565b600080600060608486031215611a8a57600080fd5b611a93846118d9565b9250602084013563ffffffff81168114611aac57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611ad457600080fd5b611add856118a0565b9350610100601f1982011215611af257600080fd5b602085019250604061011f1982011215611b0b57600080fd5b50610120840190509250925092565b600080600060408486031215611b2f57600080fd5b833567ffffffffffffffff80821115611b4757600080fd5b818601915086601f830112611b5b57600080fd5b813581811115611b6a57600080fd5b876020828501011115611b7c57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bd057835163ffffffff1683529284019291840191600101611bae565b50909695505050505050565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611c1e57858101830151858201608001528201611c02565b81811115611c30576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611c7057600080fd5b611c7861191b565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611cf857634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d0e57600080fd5b611d1661191b565b806040840185811115611d2857600080fd5b845b81811015611d42578035845260209384019301611d2a565b509095945050505050565b600060808284031215611d5f57600080fd5b6040516040810181811067ffffffffffffffff82111715611d8257611d82611905565b604052611d8f8484611cfd565b8152611d9e8460408501611cfd565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611e0657611e06611dde565b500390565b600081611e1a57611e1a611dde565b506000190190565b6000600019821415611e3657611e36611dde565b5060010190565b6000816000190483118215151615611e5757611e57611dde565b500290565b60008219821115611e6f57611e6f611dde565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220ca1b3198ddd9d622c9fe5e8a42fb3885da9ab1818a063d1bfd99cde5d97a14b564736f6c634300080c0033 + ///0x60a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c0033 /// ``` #[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", + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0!\x0B8\x03\x80b\0!\x0B\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\x1F\x8Bb\0\x01\x80`\09`\0\x81\x81a\x03\x0F\x01R\x81\x81a\x04f\x01R\x81\x81a\x05\xBF\x01R\x81\x81a\t\xC5\x01Ra\x101\x01Ra\x1F\x8B`\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\x19\x04V[`\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\x19\x04V[`\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\x197V[a\x04[V[\0[a\x01\xCAa\x01\xB56`\x04a\x197V[`\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\x19\xC2V[a\x05\xB4V[a\x02\x1Ba\x02\x006`\x04a\x1AhV[`\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\x197V[`@\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\x1A\x81V[a\x02\xA2a\x02\x9D6`\x04a\x1A\x98V[a\x06rV[`@\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\x1A\xC2V[a\x07\x05V[`@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\x1A\x98V[a\x08\xA0V[`@\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\x19\x04V[a\x08\xEBV[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01RV[a\x01Aa\x03\xB36`\x04a\x197V[`\x05` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x84a\x03\xDA6`\x04a\x1B\nV[a\t\xB8V[a\x03\xF2a\x03\xED6`\x04a\x1BgV[a\x0E\x0CV[`@Qa\x01R\x91\x90a\x1B\xDFV[a\x01\x84a\x04\r6`\x04a\x19\x04V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[a\x02\x1Ba\x04-6`\x04a\x1AhV[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xA5a\x04V6`\x04a\x19\xC2V[a\x10&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\x04\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16`\0\x90\x81R`\x04` R`@\x90 T\x15a\x05+W`@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\x01a\x04\xA3V[`\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[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\xFCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x06\x07\x83a\x08\xEBV[P\x90Pa\x06\x14\x82\x82a\x10\xCFV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06e\x93\x92\x91\x90a\x1C\x9DV[`@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\xAFWa\x06\xAFa\x1D\tV[`\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\x07,Wa\x07,a\x1D\tV[`\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\x07\xF3W`@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\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118b7565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118b7565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a03660046118ea565b61045b565b005b6101ca6101b53660046118ea565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed366004611975565b610570565b61021b610200366004611a1b565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6102826102413660046118ea565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a34565b6102a261029d366004611a4b565b6105ee565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611a75565b610681565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a4b565b61081c565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118b7565b610867565b604080518351815260209384015193810193909352820152606001610152565b6101416103b33660046118ea565b6005602052600090815260409020805460019091015482565b6101846103da366004611abd565b610934565b6103f26103ed366004611b1a565b610d48565b6040516101529190611b92565b61018461040d3660046118b7565b60016020526000908152604090205481565b61021b61042d366004611a1b565b6002602052600090815260409020546001600160a01b031681565b6101a5610456366004611975565b610f62565b610463610fcb565b60ff8116600090815260046020526040902054156104e75760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084015b60405180910390fd5b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b610578610fcb565b600061058383610867565b5090506105908282611082565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836105d1856001600160a01b031660009081526001602052604090205490565b846040516105e193929190611bdc565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061062b5761062b611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106106a8576106a8611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b90910481169282019290925292508516101561076f5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104de565b604081015163ffffffff1615806107955750806040015163ffffffff168463ffffffff16105b6108135760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104de565b51949350505050565b6004602052816000526040600020818154811061083857600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061092a5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104de565b9094909350915050565b600061093e610fcb565b600061096c61095536869003860160408701611c5e565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58114156109f4576040805162461bcd60e51b8152602060048201526024810191909152600080516020611e7583398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104de565b6001600160a01b03851660009081526001602052604090205415610a7e5760405162461bcd60e51b81526020600482015260476024820152600080516020611e7583398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104de565b6000818152600260205260409020546001600160a01b031615610b025760405162461bcd60e51b81526020600482015260426024820152600080516020611e7583398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104de565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610b5b918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611c90565b6040516020818303038152906040528051906020012060001c610b7e9190611cdb565b9050610c18610bb7610ba283610b9c368a90038a0160408b01611c5e565b906112cd565b610bb136899003890189611c5e565b90611364565b610bbf6113f8565b610c01610bf285610b9c604080518082018252600080825260209182015281518083019092526001825260029082015290565b610bb1368a90038a018a611c5e565b610c13368a90038a0160808b01611d4d565b6114b8565b610cb35760405162461bcd60e51b815260206004820152606c6024820152600080516020611e7583398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104de565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610d379160808a0190611daa565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610d6557610d65611905565b604051908082528060200260200182016040528015610d8e578160200160208202803683370190505b50905060005b84811015610f59576000868683818110610db057610db0611c48565b919091013560f81c6000818152600460205260409020549092509050801580610e13575060ff821660009081526004602052604081208054909190610df757610df7611c48565b600091825260209091200154600160c01b900463ffffffff1686105b15610ea05760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104de565b805b8015610f435760ff831660009081526004602052604090208790610ec7600184611df4565b81548110610ed757610ed7611c48565b600091825260209091200154600160c01b900463ffffffff1611610f3157610f00600182611df4565b858581518110610f1257610f12611c48565b602002602001019063ffffffff16908163ffffffff1681525050610f43565b80610f3b81611e0b565b915050610ea2565b5050508080610f5190611e22565b915050610d94565b50949350505050565b610f6a610fcb565b6000610f7583610867565b509050610f8a82610f8583611725565b611082565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836105d1856001600160a01b031660009081526001602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110805760405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a4016104de565b565b604080518082019091526000808252602082015260005b83518110156112c75760008482815181106110b6576110b6611c48565b0160209081015160f81c60008181526004909252604090912054909150806111465760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104de565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261117a9086611364565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111c39085611df4565b815481106111d3576111d3611c48565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112145780546001600160c01b031916604083901c1781556112b0565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050505080806112bf90611e22565b915050611099565b50505050565b60408051808201909152600080825260208201526112e96117e4565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561131c5761131e565bfe5b508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104de565b505092915050565b6040805180820190915260008082526020820152611380611802565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561131c57508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104de565b611400611820565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916114e7611845565b60005b60028110156116ac576000611500826006611e3d565b905084826002811061151457611514611c48565b60200201515183611526836000611e5c565b600c811061153657611536611c48565b602002015284826002811061154d5761154d611c48565b602002015160200151838260016115649190611e5c565b600c811061157457611574611c48565b602002015283826002811061158b5761158b611c48565b602002015151518361159e836002611e5c565b600c81106115ae576115ae611c48565b60200201528382600281106115c5576115c5611c48565b60200201515160016020020151836115de836003611e5c565b600c81106115ee576115ee611c48565b602002015283826002811061160557611605611c48565b60200201516020015160006002811061162057611620611c48565b602002015183611631836004611e5c565b600c811061164157611641611c48565b602002015283826002811061165857611658611c48565b60200201516020015160016002811061167357611673611c48565b602002015183611684836005611e5c565b600c811061169457611694611c48565b602002015250806116a481611e22565b9150506114ea565b506116b5611864565b60006020826101808560086107d05a03fa905080801561131c5750806117155760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104de565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561174a57506020820151155b15611768575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117ad9190611cdb565b6117d7907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611df4565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611833611882565b8152602001611840611882565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117df57600080fd5b6000602082840312156118c957600080fd5b6118d2826118a0565b9392505050565b803560ff811681146117df57600080fd5b6000602082840312156118fc57600080fd5b6118d2826118d9565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561193e5761193e611905565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196d5761196d611905565b604052919050565b6000806040838503121561198857600080fd5b611991836118a0565b915060208084013567ffffffffffffffff808211156119af57600080fd5b818601915086601f8301126119c357600080fd5b8135818111156119d5576119d5611905565b6119e7601f8201601f19168501611944565b915080825287848285010111156119fd57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a2d57600080fd5b5035919050565b81518152602080830151908201526040810161067b565b60008060408385031215611a5e57600080fd5b611a67836118d9565b946020939093013593505050565b600080600060608486031215611a8a57600080fd5b611a93846118d9565b9250602084013563ffffffff81168114611aac57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611ad457600080fd5b611add856118a0565b9350610100601f1982011215611af257600080fd5b602085019250604061011f1982011215611b0b57600080fd5b50610120840190509250925092565b600080600060408486031215611b2f57600080fd5b833567ffffffffffffffff80821115611b4757600080fd5b818601915086601f830112611b5b57600080fd5b813581811115611b6a57600080fd5b876020828501011115611b7c57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bd057835163ffffffff1683529284019291840191600101611bae565b50909695505050505050565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611c1e57858101830151858201608001528201611c02565b81811115611c30576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611c7057600080fd5b611c7861191b565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611cf857634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d0e57600080fd5b611d1661191b565b806040840185811115611d2857600080fd5b845b81811015611d42578035845260209384019301611d2a565b509095945050505050565b600060808284031215611d5f57600080fd5b6040516040810181811067ffffffffffffffff82111715611d8257611d82611905565b604052611d8f8484611cfd565b8152611d9e8460408501611cfd565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611e0657611e06611dde565b500390565b600081611e1a57611e1a611dde565b506000190190565b6000600019821415611e3657611e36611dde565b5060010190565b6000816000190483118215151615611e5757611e57611dde565b500290565b60008219821115611e6f57611e6f611dde565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220ca1b3198ddd9d622c9fe5e8a42fb3885da9ab1818a063d1bfd99cde5d97a14b564736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c0033 /// ``` #[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", + 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\x19\x04V[`\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\x19\x04V[`\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\x197V[a\x04[V[\0[a\x01\xCAa\x01\xB56`\x04a\x197V[`\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\x19\xC2V[a\x05\xB4V[a\x02\x1Ba\x02\x006`\x04a\x1AhV[`\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\x197V[`@\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\x1A\x81V[a\x02\xA2a\x02\x9D6`\x04a\x1A\x98V[a\x06rV[`@\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\x1A\xC2V[a\x07\x05V[`@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\x1A\x98V[a\x08\xA0V[`@\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\x19\x04V[a\x08\xEBV[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01RV[a\x01Aa\x03\xB36`\x04a\x197V[`\x05` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x84a\x03\xDA6`\x04a\x1B\nV[a\t\xB8V[a\x03\xF2a\x03\xED6`\x04a\x1BgV[a\x0E\x0CV[`@Qa\x01R\x91\x90a\x1B\xDFV[a\x01\x84a\x04\r6`\x04a\x19\x04V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[a\x02\x1Ba\x04-6`\x04a\x1AhV[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xA5a\x04V6`\x04a\x19\xC2V[a\x10&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\x04\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16`\0\x90\x81R`\x04` R`@\x90 T\x15a\x05+W`@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\x01a\x04\xA3V[`\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[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\xFCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x06\x07\x83a\x08\xEBV[P\x90Pa\x06\x14\x82\x82a\x10\xCFV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06e\x93\x92\x91\x90a\x1C\x9DV[`@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\xAFWa\x06\xAFa\x1D\tV[`\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\x07,Wa\x07,a\x1D\tV[`\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\x07\xF3W`@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\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1879,7 +1924,12 @@ pub mod BLSApkRegistry { ```solidity event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct NewPubkeyRegistration { #[allow(missing_docs)] @@ -1889,7 +1939,12 @@ pub mod BLSApkRegistry { #[allow(missing_docs)] pub pubkeyG2: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1981,7 +2036,12 @@ pub mod BLSApkRegistry { ```solidity event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorAddedToQuorums { #[allow(missing_docs)] @@ -1991,7 +2051,12 @@ pub mod BLSApkRegistry { #[allow(missing_docs)] pub quorumNumbers: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2087,7 +2152,12 @@ pub mod BLSApkRegistry { ```solidity event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRemovedFromQuorums { #[allow(missing_docs)] @@ -2097,7 +2167,12 @@ pub mod BLSApkRegistry { #[allow(missing_docs)] pub quorumNumbers: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2193,7 +2268,7 @@ pub mod BLSApkRegistry { ```solidity constructor(address _registryCoordinator); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _registryCoordinator: alloy::sol_types::private::Address, @@ -2255,21 +2330,26 @@ pub mod BLSApkRegistry { ```solidity function apkHistory(uint8, uint256) external view returns (bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2398,19 +2478,24 @@ pub mod BLSApkRegistry { ```solidity function currentApk(uint8) external view returns (uint256 X, uint256 Y); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2522,17 +2607,22 @@ pub mod BLSApkRegistry { ```solidity function deregisterOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2647,18 +2737,23 @@ pub mod BLSApkRegistry { ```solidity function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2761,7 +2856,7 @@ pub mod BLSApkRegistry { ```solidity function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkHashAtBlockNumberAndIndexCall { pub quorumNumber: u8, @@ -2769,12 +2864,17 @@ pub mod BLSApkRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkHashAtBlockNumberAndIndexReturn { pub _0: alloy::sol_types::private::FixedBytes<24>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2896,18 +2996,23 @@ pub mod BLSApkRegistry { ```solidity function getApkHistoryLength(uint8 quorumNumber) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkHistoryLengthReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3009,19 +3114,24 @@ pub mod BLSApkRegistry { ```solidity function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3138,19 +3248,24 @@ pub mod BLSApkRegistry { ```solidity function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IBLSApkRegistry.ApkUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApkUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3264,18 +3379,23 @@ pub mod BLSApkRegistry { ```solidity function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorFromPubkeyHashReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3377,18 +3497,23 @@ pub mod BLSApkRegistry { ```solidity function getOperatorId(address operator) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorIdReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3488,19 +3613,24 @@ pub mod BLSApkRegistry { ```solidity function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3607,16 +3737,21 @@ pub mod BLSApkRegistry { ```solidity function initializeQuorum(uint8 quorumNumber) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3718,19 +3853,24 @@ pub mod BLSApkRegistry { ```solidity function operatorToPubkey(address) external view returns (uint256 X, uint256 Y); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3842,18 +3982,23 @@ pub mod BLSApkRegistry { ```solidity function operatorToPubkeyHash(address) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorToPubkeyHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3953,18 +4098,23 @@ pub mod BLSApkRegistry { ```solidity function pubkeyHashToOperator(bytes32) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pubkeyHashToOperatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4064,7 +4214,7 @@ pub mod BLSApkRegistry { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerBLSPublicKeyCall { pub operator: alloy::sol_types::private::Address, @@ -4073,12 +4223,17 @@ pub mod BLSApkRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerBLSPublicKeyReturn { pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4206,17 +4361,22 @@ pub mod BLSApkRegistry { ```solidity function registerOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4331,16 +4491,21 @@ pub mod BLSApkRegistry { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/blsapkregistryharness.rs b/crates/utils/src/middleware/blsapkregistryharness.rs new file mode 100644 index 00000000..326fc949 --- /dev/null +++ b/crates/utils/src/middleware/blsapkregistryharness.rs @@ -0,0 +1,5832 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 BLSApkRegistryHarness { + 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); + function setBLSPublicKey(address account, BN254.G1Point memory pk) external; +} +``` + +...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": "function", + "name": "setBLSPublicKey", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + }, + { + "name": "pk", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "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": "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::pub_underscore_fields, + clippy::style +)] +pub mod BLSApkRegistryHarness { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b50604051620021d2380380620021d2833981016040819052620000349162000118565b6001600160a01b03811660805280806200004d62000056565b5050506200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b608051612050620001826000396000818161031a015281816104db0152818161063401528181610a3a01526110a601526120506000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c80636d14a987116100ad578063d5254a8c11610071578063d5254a8c146103ea578063de29fac01461040a578063df4d09e01461042a578063e8bb9ae614610494578063f4e24fe5146104bd57600080fd5b80636d14a987146103155780637916cea61461033c5780637ff81a871461037d578063a3db80e2146103b0578063bf79ce58146103d757600080fd5b80633fb27952116100f45780633fb27952146101ea57806347b314e8146101fd5780635f61a8841461023e578063605747d51461029a57806368bccaac146102e857600080fd5b8062a1f4cb1461012557806313542a4e1461016657806326d941f21461019d578063377ed99d146101b2575b600080fd5b61014c610133366004611979565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61018f610174366004611979565b6001600160a01b031660009081526001602052604090205490565b60405190815260200161015d565b6101b06101ab3660046119ac565b6104d0565b005b6101d56101c03660046119ac565b60ff1660009081526004602052604090205490565b60405163ffffffff909116815260200161015d565b6101b06101f8366004611a37565b610629565b61022661020b366004611add565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161015d565b61028d61024c3660046119ac565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b60405161015d9190611af6565b6102ad6102a8366004611b0d565b6106e7565b60408051825167ffffffffffffffff1916815260208084015163ffffffff90811691830191909152928201519092169082015260600161015d565b6102fb6102f6366004611b37565b61077a565b60405167ffffffffffffffff19909116815260200161015d565b6102267f000000000000000000000000000000000000000000000000000000000000000081565b61034f61034a366004611b0d565b610915565b6040805167ffffffffffffffff19909416845263ffffffff928316602085015291169082015260600161015d565b61039061038b366004611979565b610960565b60408051835181526020938401519381019390935282015260600161015d565b61014c6103be3660046119ac565b6005602052600090815260409020805460019091015482565b61018f6103e5366004611b7f565b610a2d565b6103fd6103f8366004611bdc565b610e81565b60405161015d9190611c54565b61018f610418366004611979565b60016020526000908152604090205481565b6101b0610438366004611cce565b8051600090815260208083018051825260408084206001600160a01b039690961680855260018085528286208890559685526002845281852080546001600160a01b031916821790558452600390925291209151825551910155565b6102266104a2366004611add565b6002602052600090815260409020546001600160a01b031681565b6101b06104cb366004611a37565b61109b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105215760405162461bcd60e51b815260040161051890611d02565b60405180910390fd5b60ff8116600090815260046020526040902054156105a05760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608401610518565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106715760405162461bcd60e51b815260040161051890611d02565b600061067c83610960565b5090506106898282611144565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836106ca856001600160a01b031660009081526001602052604090205490565b846040516106da93929190611d76565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061072457610724611de2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106107a1576107a1611de2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156108685760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608401610518565b604081015163ffffffff16158061088e5750806040015163ffffffff168463ffffffff16105b61090c5760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a401610518565b51949350505050565b6004602052816000526040600020818154811061093157600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b038216600081815260036020908152604080832081518083018352815481526001918201548185015294845290915281205490919080610a235760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608401610518565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a775760405162461bcd60e51b815260040161051890611d02565b6000610aa5610a8e36869003860160408701611df8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610b2d576040805162461bcd60e51b8152602060048201526024810191909152600080516020611ffb83398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152608401610518565b6001600160a01b03851660009081526001602052604090205415610bb75760405162461bcd60e51b81526020600482015260476024820152600080516020611ffb83398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a401610518565b6000818152600260205260409020546001600160a01b031615610c3b5760405162461bcd60e51b81526020600482015260426024820152600080516020611ffb83398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a401610518565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c94918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611e14565b6040516020818303038152906040528051906020012060001c610cb79190611e5f565b9050610d51610cf0610cdb83610cd5368a90038a0160408b01611df8565b9061138f565b610cea36899003890189611df8565b90611426565b610cf86114ba565b610d3a610d2b85610cd5604080518082018252600080825260209182015281518083019092526001825260029082015290565b610cea368a90038a018a611df8565b610d4c368a90038a0160808b01611ef1565b61157a565b610dec5760405162461bcd60e51b815260206004820152606c6024820152600080516020611ffb83398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c401610518565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610e709160808a0190611f30565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e9e57610e9e6119c7565b604051908082528060200260200182016040528015610ec7578160200160208202803683370190505b50905060005b84811015611092576000868683818110610ee957610ee9611de2565b919091013560f81c6000818152600460205260409020549092509050801580610f4c575060ff821660009081526004602052604081208054909190610f3057610f30611de2565b600091825260209091200154600160c01b900463ffffffff1686105b15610fd95760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a401610518565b805b801561107c5760ff831660009081526004602052604090208790611000600184611f7a565b8154811061101057611010611de2565b600091825260209091200154600160c01b900463ffffffff161161106a57611039600182611f7a565b85858151811061104b5761104b611de2565b602002602001019063ffffffff16908163ffffffff168152505061107c565b8061107481611f91565b915050610fdb565b505050808061108a90611fa8565b915050610ecd565b50949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110e35760405162461bcd60e51b815260040161051890611d02565b60006110ee83610960565b509050611103826110fe836117e7565b611144565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836106ca856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561138957600084828151811061117857611178611de2565b0160209081015160f81c60008181526004909252604090912054909150806112085760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608401610518565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261123c9086611426565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112859085611f7a565b8154811061129557611295611de2565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112d65780546001600160c01b031916604083901c178155611372565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061138190611fa8565b91505061115b565b50505050565b60408051808201909152600080825260208201526113ab6118a6565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113de576113e0565bfe5b508061141e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610518565b505092915050565b60408051808201909152600080825260208201526114426118c4565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113de57508061141e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610518565b6114c26118e2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916115a9611907565b60005b600281101561176e5760006115c2826006611fc3565b90508482600281106115d6576115d6611de2565b602002015151836115e8836000611fe2565b600c81106115f8576115f8611de2565b602002015284826002811061160f5761160f611de2565b602002015160200151838260016116269190611fe2565b600c811061163657611636611de2565b602002015283826002811061164d5761164d611de2565b6020020151515183611660836002611fe2565b600c811061167057611670611de2565b602002015283826002811061168757611687611de2565b60200201515160016020020151836116a0836003611fe2565b600c81106116b0576116b0611de2565b60200201528382600281106116c7576116c7611de2565b6020020151602001516000600281106116e2576116e2611de2565b6020020151836116f3836004611fe2565b600c811061170357611703611de2565b602002015283826002811061171a5761171a611de2565b60200201516020015160016002811061173557611735611de2565b602002015183611746836005611fe2565b600c811061175657611756611de2565b6020020152508061176681611fa8565b9150506115ac565b50611777611926565b60006020826101808560086107d05a03fa90508080156113de5750806117d75760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606401610518565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561180c57506020820151155b1561182a575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161186f9190611e5f565b611899907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611f7a565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118f5611944565b8152602001611902611944565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146118a157600080fd5b60006020828403121561198b57600080fd5b61199482611962565b9392505050565b803560ff811681146118a157600080fd5b6000602082840312156119be57600080fd5b6119948261199b565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611a0057611a006119c7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a2f57611a2f6119c7565b604052919050565b60008060408385031215611a4a57600080fd5b611a5383611962565b915060208084013567ffffffffffffffff80821115611a7157600080fd5b818601915086601f830112611a8557600080fd5b813581811115611a9757611a976119c7565b611aa9601f8201601f19168501611a06565b91508082528784828501011115611abf57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611aef57600080fd5b5035919050565b815181526020808301519082015260408101610774565b60008060408385031215611b2057600080fd5b611b298361199b565b946020939093013593505050565b600080600060608486031215611b4c57600080fd5b611b558461199b565b9250602084013563ffffffff81168114611b6e57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b9657600080fd5b611b9f85611962565b9350610100601f1982011215611bb457600080fd5b602085019250604061011f1982011215611bcd57600080fd5b50610120840190509250925092565b600080600060408486031215611bf157600080fd5b833567ffffffffffffffff80821115611c0957600080fd5b818601915086601f830112611c1d57600080fd5b813581811115611c2c57600080fd5b876020828501011115611c3e57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c9257835163ffffffff1683529284019291840191600101611c70565b50909695505050505050565b600060408284031215611cb057600080fd5b611cb86119dd565b9050813581526020820135602082015292915050565b60008060608385031215611ce157600080fd5b611cea83611962565b9150611cf98460208501611c9e565b90509250929050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611db857858101830151858201608001528201611d9c565b81811115611dca576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611e0a57600080fd5b6119948383611c9e565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611e7c57634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611e9257600080fd5b6040516040810181811067ffffffffffffffff82111715611eb557611eb56119c7565b8060405250806040840185811115611ecc57600080fd5b845b81811015611ee6578035835260209283019201611ece565b509195945050505050565b600060808284031215611f0357600080fd5b611f0b6119dd565b611f158484611e81565b8152611f248460408501611e81565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611f8c57611f8c611f64565b500390565b600081611fa057611fa0611f64565b506000190190565b6000600019821415611fbc57611fbc611f64565b5060010190565b6000816000190483118215151615611fdd57611fdd611f64565b500290565b60008219821115611ff557611ff5611f64565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220914a4b62b53c4fc609131aa204369702fd7591435bfcd86371331c1fcf782a0364736f6c634300080c0033 + /// ``` + #[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!\xD28\x03\x80b\0!\xD2\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x18V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80\x80b\0\0Mb\0\0VV[PPPb\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[`\x80Qa Pb\0\x01\x82`\09`\0\x81\x81a\x03\x1A\x01R\x81\x81a\x04\xDB\x01R\x81\x81a\x064\x01R\x81\x81a\n:\x01Ra\x10\xA6\x01Ra P`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01 W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\xADW\x80c\xD5%J\x8C\x11a\0qW\x80c\xD5%J\x8C\x14a\x03\xEAW\x80c\xDE)\xFA\xC0\x14a\x04\nW\x80c\xDFM\t\xE0\x14a\x04*W\x80c\xE8\xBB\x9A\xE6\x14a\x04\x94W\x80c\xF4\xE2O\xE5\x14a\x04\xBDW`\0\x80\xFD[\x80cm\x14\xA9\x87\x14a\x03\x15W\x80cy\x16\xCE\xA6\x14a\x03W\x80c`WG\xD5\x14a\x02\x9AW\x80ch\xBC\xCA\xAC\x14a\x02\xE8W`\0\x80\xFD[\x80b\xA1\xF4\xCB\x14a\x01%W\x80c\x13T*N\x14a\x01fW\x80c&\xD9A\xF2\x14a\x01\x9DW\x80c7~\xD9\x9D\x14a\x01\xB2W[`\0\x80\xFD[a\x01La\x0136`\x04a\x19yV[`\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\x8Fa\x01t6`\x04a\x19yV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01]V[a\x01\xB0a\x01\xAB6`\x04a\x19\xACV[a\x04\xD0V[\0[a\x01\xD5a\x01\xC06`\x04a\x19\xACV[`\xFF\x16`\0\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01]V[a\x01\xB0a\x01\xF86`\x04a\x1A7V[a\x06)V[a\x02&a\x02\x0B6`\x04a\x1A\xDDV[`\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\x01]V[a\x02\x8Da\x02L6`\x04a\x19\xACV[`@\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\x01]\x91\x90a\x1A\xF6V[a\x02\xADa\x02\xA86`\x04a\x1B\rV[a\x06\xE7V[`@\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\x01]V[a\x02\xFBa\x02\xF66`\x04a\x1B7V[a\x07zV[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01]V[a\x02&\x7F\0\0\0\0\0\0\0\0\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\x03Oa\x03J6`\x04a\x1B\rV[a\t\x15V[`@\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\x01]V[a\x03\x90a\x03\x8B6`\x04a\x19yV[a\t`V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01]V[a\x01La\x03\xBE6`\x04a\x19\xACV[`\x05` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x8Fa\x03\xE56`\x04a\x1B\x7FV[a\n-V[a\x03\xFDa\x03\xF86`\x04a\x1B\xDCV[a\x0E\x81V[`@Qa\x01]\x91\x90a\x1CTV[a\x01\x8Fa\x04\x186`\x04a\x19yV[`\x01` R`\0\x90\x81R`@\x90 T\x81V[a\x01\xB0a\x0486`\x04a\x1C\xCEV[\x80Q`\0\x90\x81R` \x80\x83\x01\x80Q\x82R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x80\x85R`\x01\x80\x85R\x82\x86 \x88\x90U\x96\x85R`\x02\x84R\x81\x85 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x82\x17\x90U\x84R`\x03\x90\x92R\x91 \x91Q\x82UQ\x91\x01UV[a\x02&a\x04\xA26`\x04a\x1A\xDDV[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xB0a\x04\xCB6`\x04a\x1A7V[a\x10\x9BV[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!W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16`\0\x90\x81R`\x04` R`@\x90 T\x15a\x05\xA0W`@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\x01a\x05\x18V[`\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[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\x06qW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\x06|\x83a\t`V[P\x90Pa\x06\x89\x82\x82a\x11DV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06\xCA\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06\xDA\x93\x92\x91\x90a\x1DvV[`@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\x07$Wa\x07$a\x1D\xE2V[`\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\x07\xA1Wa\x07\xA1a\x1D\xE2V[`\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\x08hW`@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\x05\x18V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x8EWP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\t\x0CW`@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\x05\x18V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\t1W`\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\n#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\x05\x18V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\nwW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\n\xA5a\n\x8E6\x86\x90\x03\x86\x01`@\x87\x01a\x1D\xF8V[\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\x0B-W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x05\x18V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0B\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x05\x18V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C;W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x05\x18V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x94\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\x1E\x14V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0C\xB7\x91\x90a\x1E_V[\x90Pa\rQa\x0C\xF0a\x0C\xDB\x83a\x0C\xD56\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\xF8V[\x90a\x13\x8FV[a\x0C\xEA6\x89\x90\x03\x89\x01\x89a\x1D\xF8V[\x90a\x14&V[a\x0C\xF8a\x14\xBAV[a\r:a\r+\x85a\x0C\xD5`@\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\x0C\xEA6\x8A\x90\x03\x8A\x01\x8Aa\x1D\xF8V[a\rL6\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\xF1V[a\x15zV[a\r\xECW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F\xFB\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\x05\x18V[`\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\x0Ep\x91`\x80\x8A\x01\x90a\x1F0V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x9EWa\x0E\x9Ea\x19\xC7V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xC7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x92W`\0\x86\x86\x83\x81\x81\x10a\x0E\xE9Wa\x0E\xE9a\x1D\xE2V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0FLWP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0F0Wa\x0F0a\x1D\xE2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0F\xD9W`@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\x05\x18V[\x80[\x80\x15a\x10|W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x10\0`\x01\x84a\x1FzV[\x81T\x81\x10a\x10\x10Wa\x10\x10a\x1D\xE2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x10jWa\x109`\x01\x82a\x1FzV[\x85\x85\x81Q\x81\x10a\x10KWa\x10Ka\x1D\xE2V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10|V[\x80a\x10t\x81a\x1F\x91V[\x91PPa\x0F\xDBV[PPP\x80\x80a\x10\x8A\x90a\x1F\xA8V[\x91PPa\x0E\xCDV[P\x94\x93PPPPV[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\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\x10\xEE\x83a\t`V[P\x90Pa\x11\x03\x82a\x10\xFE\x83a\x17\xE7V[a\x11DV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06\xCA\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x89W`\0\x84\x82\x81Q\x81\x10a\x11xWa\x11xa\x1D\xE2V[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x12\x08W`@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\x05\x18V[`\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\x12<\x90\x86a\x14&V[`\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\x12\x85\x90\x85a\x1FzV[\x81T\x81\x10a\x12\x95Wa\x12\x95a\x1D\xE2V[`\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\xD6W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x13rV[\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\x13\x81\x90a\x1F\xA8V[\x91PPa\x11[V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xABa\x18\xA6V[\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\xDEWa\x13\xE0V[\xFE[P\x80a\x14\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x05\x18V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x14Ba\x18\xC4V[\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\xDEWP\x80a\x14\x1EW`@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\x05\x18V[a\x14\xC2a\x18\xE2V[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\x15\xA9a\x19\x07V[`\0[`\x02\x81\x10\x15a\x17nW`\0a\x15\xC2\x82`\x06a\x1F\xC3V[\x90P\x84\x82`\x02\x81\x10a\x15\xD6Wa\x15\xD6a\x1D\xE2V[` \x02\x01QQ\x83a\x15\xE8\x83`\0a\x1F\xE2V[`\x0C\x81\x10a\x15\xF8Wa\x15\xF8a\x1D\xE2V[` \x02\x01R\x84\x82`\x02\x81\x10a\x16\x0FWa\x16\x0Fa\x1D\xE2V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x16&\x91\x90a\x1F\xE2V[`\x0C\x81\x10a\x166Wa\x166a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16MWa\x16Ma\x1D\xE2V[` \x02\x01QQQ\x83a\x16`\x83`\x02a\x1F\xE2V[`\x0C\x81\x10a\x16pWa\x16pa\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x87Wa\x16\x87a\x1D\xE2V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16\xA0\x83`\x03a\x1F\xE2V[`\x0C\x81\x10a\x16\xB0Wa\x16\xB0a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xC7Wa\x16\xC7a\x1D\xE2V[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16\xE2Wa\x16\xE2a\x1D\xE2V[` \x02\x01Q\x83a\x16\xF3\x83`\x04a\x1F\xE2V[`\x0C\x81\x10a\x17\x03Wa\x17\x03a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\x1AWa\x17\x1Aa\x1D\xE2V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x175Wa\x175a\x1D\xE2V[` \x02\x01Q\x83a\x17F\x83`\x05a\x1F\xE2V[`\x0C\x81\x10a\x17VWa\x17Va\x1D\xE2V[` \x02\x01RP\x80a\x17f\x81a\x1F\xA8V[\x91PPa\x15\xACV[Pa\x17wa\x19&V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\xDEWP\x80a\x17\xD7W`@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\x05\x18V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x18\x0CWP` \x82\x01Q\x15[\x15a\x18*WPP`@\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\x18o\x91\x90a\x1E_V[a\x18\x99\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1FzV[\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\x18\xF5a\x19DV[\x81R` \x01a\x19\x02a\x19DV[\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\x18\xA1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x8BW`\0\x80\xFD[a\x19\x94\x82a\x19bV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18\xA1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\xBEW`\0\x80\xFD[a\x19\x94\x82a\x19\x9BV[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\x1A\0Wa\x1A\0a\x19\xC7V[`@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\x1A/Wa\x1A/a\x19\xC7V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x1AJW`\0\x80\xFD[a\x1AS\x83a\x19bV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1AqW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x85W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\x97Wa\x1A\x97a\x19\xC7V[a\x1A\xA9`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x1A\x06V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1A\xBFW`\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\xEFW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x07tV[`\0\x80`@\x83\x85\x03\x12\x15a\x1B W`\0\x80\xFD[a\x1B)\x83a\x19\x9BV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1BLW`\0\x80\xFD[a\x1BU\x84a\x19\x9BV[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1BnW`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B\x96W`\0\x80\xFD[a\x1B\x9F\x85a\x19bV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B\xB4W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1B\xCDW`\0\x80\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x1B\xF1W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1C\tW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1C\x1DW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1C,W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1C>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\x1C\x92W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1CpV[P\x90\x96\x95PPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x1C\xB0W`\0\x80\xFD[a\x1C\xB8a\x19\xDDV[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x80``\x83\x85\x03\x12\x15a\x1C\xE1W`\0\x80\xFD[a\x1C\xEA\x83a\x19bV[\x91Pa\x1C\xF9\x84` \x85\x01a\x1C\x9EV[\x90P\x92P\x92\x90PV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R`\0` \x84\x81\x84\x01R```@\x84\x01R\x83Q\x80``\x85\x01R`\0[\x81\x81\x10\x15a\x1D\xB8W\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1D\x9CV[\x81\x81\x11\x15a\x1D\xCAW`\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\x1E\nW`\0\x80\xFD[a\x19\x94\x83\x83a\x1C\x9EV[\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\x1E|WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x92W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1E\xB5Wa\x1E\xB5a\x19\xC7V[\x80`@RP\x80`@\x84\x01\x85\x81\x11\x15a\x1E\xCCW`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\xE6W\x805\x83R` \x92\x83\x01\x92\x01a\x1E\xCEV[P\x91\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1F\x03W`\0\x80\xFD[a\x1F\x0Ba\x19\xDDV[a\x1F\x15\x84\x84a\x1E\x81V[\x81Ra\x1F$\x84`@\x85\x01a\x1E\x81V[` \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\x1F\x8CWa\x1F\x8Ca\x1FdV[P\x03\x90V[`\0\x81a\x1F\xA0Wa\x1F\xA0a\x1FdV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1F\xBCWa\x1F\xBCa\x1FdV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\xDDWa\x1F\xDDa\x1FdV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F\xF5Wa\x1F\xF5a\x1FdV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \x91JKb\xB5W\x80c`WG\xD5\x14a\x02\x9AW\x80ch\xBC\xCA\xAC\x14a\x02\xE8W`\0\x80\xFD[\x80b\xA1\xF4\xCB\x14a\x01%W\x80c\x13T*N\x14a\x01fW\x80c&\xD9A\xF2\x14a\x01\x9DW\x80c7~\xD9\x9D\x14a\x01\xB2W[`\0\x80\xFD[a\x01La\x0136`\x04a\x19yV[`\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\x8Fa\x01t6`\x04a\x19yV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01]V[a\x01\xB0a\x01\xAB6`\x04a\x19\xACV[a\x04\xD0V[\0[a\x01\xD5a\x01\xC06`\x04a\x19\xACV[`\xFF\x16`\0\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01]V[a\x01\xB0a\x01\xF86`\x04a\x1A7V[a\x06)V[a\x02&a\x02\x0B6`\x04a\x1A\xDDV[`\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\x01]V[a\x02\x8Da\x02L6`\x04a\x19\xACV[`@\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\x01]\x91\x90a\x1A\xF6V[a\x02\xADa\x02\xA86`\x04a\x1B\rV[a\x06\xE7V[`@\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\x01]V[a\x02\xFBa\x02\xF66`\x04a\x1B7V[a\x07zV[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01]V[a\x02&\x7F\0\0\0\0\0\0\0\0\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\x03Oa\x03J6`\x04a\x1B\rV[a\t\x15V[`@\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\x01]V[a\x03\x90a\x03\x8B6`\x04a\x19yV[a\t`V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01]V[a\x01La\x03\xBE6`\x04a\x19\xACV[`\x05` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x8Fa\x03\xE56`\x04a\x1B\x7FV[a\n-V[a\x03\xFDa\x03\xF86`\x04a\x1B\xDCV[a\x0E\x81V[`@Qa\x01]\x91\x90a\x1CTV[a\x01\x8Fa\x04\x186`\x04a\x19yV[`\x01` R`\0\x90\x81R`@\x90 T\x81V[a\x01\xB0a\x0486`\x04a\x1C\xCEV[\x80Q`\0\x90\x81R` \x80\x83\x01\x80Q\x82R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x80\x85R`\x01\x80\x85R\x82\x86 \x88\x90U\x96\x85R`\x02\x84R\x81\x85 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x82\x17\x90U\x84R`\x03\x90\x92R\x91 \x91Q\x82UQ\x91\x01UV[a\x02&a\x04\xA26`\x04a\x1A\xDDV[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xB0a\x04\xCB6`\x04a\x1A7V[a\x10\x9BV[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!W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16`\0\x90\x81R`\x04` R`@\x90 T\x15a\x05\xA0W`@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\x01a\x05\x18V[`\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[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\x06qW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\x06|\x83a\t`V[P\x90Pa\x06\x89\x82\x82a\x11DV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06\xCA\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06\xDA\x93\x92\x91\x90a\x1DvV[`@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\x07$Wa\x07$a\x1D\xE2V[`\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\x07\xA1Wa\x07\xA1a\x1D\xE2V[`\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\x08hW`@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\x05\x18V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x8EWP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\t\x0CW`@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\x05\x18V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\t1W`\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\n#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\x05\x18V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\nwW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\n\xA5a\n\x8E6\x86\x90\x03\x86\x01`@\x87\x01a\x1D\xF8V[\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\x0B-W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x05\x18V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0B\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x05\x18V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C;W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x05\x18V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x94\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\x1E\x14V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0C\xB7\x91\x90a\x1E_V[\x90Pa\rQa\x0C\xF0a\x0C\xDB\x83a\x0C\xD56\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\xF8V[\x90a\x13\x8FV[a\x0C\xEA6\x89\x90\x03\x89\x01\x89a\x1D\xF8V[\x90a\x14&V[a\x0C\xF8a\x14\xBAV[a\r:a\r+\x85a\x0C\xD5`@\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\x0C\xEA6\x8A\x90\x03\x8A\x01\x8Aa\x1D\xF8V[a\rL6\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\xF1V[a\x15zV[a\r\xECW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F\xFB\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\x05\x18V[`\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\x0Ep\x91`\x80\x8A\x01\x90a\x1F0V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x9EWa\x0E\x9Ea\x19\xC7V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xC7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x92W`\0\x86\x86\x83\x81\x81\x10a\x0E\xE9Wa\x0E\xE9a\x1D\xE2V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0FLWP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0F0Wa\x0F0a\x1D\xE2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0F\xD9W`@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\x05\x18V[\x80[\x80\x15a\x10|W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x10\0`\x01\x84a\x1FzV[\x81T\x81\x10a\x10\x10Wa\x10\x10a\x1D\xE2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x10jWa\x109`\x01\x82a\x1FzV[\x85\x85\x81Q\x81\x10a\x10KWa\x10Ka\x1D\xE2V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10|V[\x80a\x10t\x81a\x1F\x91V[\x91PPa\x0F\xDBV[PPP\x80\x80a\x10\x8A\x90a\x1F\xA8V[\x91PPa\x0E\xCDV[P\x94\x93PPPPV[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\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\x10\xEE\x83a\t`V[P\x90Pa\x11\x03\x82a\x10\xFE\x83a\x17\xE7V[a\x11DV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06\xCA\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x89W`\0\x84\x82\x81Q\x81\x10a\x11xWa\x11xa\x1D\xE2V[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x12\x08W`@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\x05\x18V[`\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\x12<\x90\x86a\x14&V[`\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\x12\x85\x90\x85a\x1FzV[\x81T\x81\x10a\x12\x95Wa\x12\x95a\x1D\xE2V[`\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\xD6W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x13rV[\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\x13\x81\x90a\x1F\xA8V[\x91PPa\x11[V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xABa\x18\xA6V[\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\xDEWa\x13\xE0V[\xFE[P\x80a\x14\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x05\x18V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x14Ba\x18\xC4V[\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\xDEWP\x80a\x14\x1EW`@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\x05\x18V[a\x14\xC2a\x18\xE2V[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\x15\xA9a\x19\x07V[`\0[`\x02\x81\x10\x15a\x17nW`\0a\x15\xC2\x82`\x06a\x1F\xC3V[\x90P\x84\x82`\x02\x81\x10a\x15\xD6Wa\x15\xD6a\x1D\xE2V[` \x02\x01QQ\x83a\x15\xE8\x83`\0a\x1F\xE2V[`\x0C\x81\x10a\x15\xF8Wa\x15\xF8a\x1D\xE2V[` \x02\x01R\x84\x82`\x02\x81\x10a\x16\x0FWa\x16\x0Fa\x1D\xE2V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x16&\x91\x90a\x1F\xE2V[`\x0C\x81\x10a\x166Wa\x166a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16MWa\x16Ma\x1D\xE2V[` \x02\x01QQQ\x83a\x16`\x83`\x02a\x1F\xE2V[`\x0C\x81\x10a\x16pWa\x16pa\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x87Wa\x16\x87a\x1D\xE2V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16\xA0\x83`\x03a\x1F\xE2V[`\x0C\x81\x10a\x16\xB0Wa\x16\xB0a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xC7Wa\x16\xC7a\x1D\xE2V[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16\xE2Wa\x16\xE2a\x1D\xE2V[` \x02\x01Q\x83a\x16\xF3\x83`\x04a\x1F\xE2V[`\x0C\x81\x10a\x17\x03Wa\x17\x03a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\x1AWa\x17\x1Aa\x1D\xE2V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x175Wa\x175a\x1D\xE2V[` \x02\x01Q\x83a\x17F\x83`\x05a\x1F\xE2V[`\x0C\x81\x10a\x17VWa\x17Va\x1D\xE2V[` \x02\x01RP\x80a\x17f\x81a\x1F\xA8V[\x91PPa\x15\xACV[Pa\x17wa\x19&V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\xDEWP\x80a\x17\xD7W`@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\x05\x18V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x18\x0CWP` \x82\x01Q\x15[\x15a\x18*WPP`@\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\x18o\x91\x90a\x1E_V[a\x18\x99\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1FzV[\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\x18\xF5a\x19DV[\x81R` \x01a\x19\x02a\x19DV[\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\x18\xA1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x8BW`\0\x80\xFD[a\x19\x94\x82a\x19bV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18\xA1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\xBEW`\0\x80\xFD[a\x19\x94\x82a\x19\x9BV[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\x1A\0Wa\x1A\0a\x19\xC7V[`@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\x1A/Wa\x1A/a\x19\xC7V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x1AJW`\0\x80\xFD[a\x1AS\x83a\x19bV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1AqW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x85W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\x97Wa\x1A\x97a\x19\xC7V[a\x1A\xA9`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x1A\x06V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1A\xBFW`\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\xEFW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x07tV[`\0\x80`@\x83\x85\x03\x12\x15a\x1B W`\0\x80\xFD[a\x1B)\x83a\x19\x9BV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1BLW`\0\x80\xFD[a\x1BU\x84a\x19\x9BV[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1BnW`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B\x96W`\0\x80\xFD[a\x1B\x9F\x85a\x19bV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B\xB4W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1B\xCDW`\0\x80\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x1B\xF1W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1C\tW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1C\x1DW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1C,W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1C>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\x1C\x92W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1CpV[P\x90\x96\x95PPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x1C\xB0W`\0\x80\xFD[a\x1C\xB8a\x19\xDDV[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x80``\x83\x85\x03\x12\x15a\x1C\xE1W`\0\x80\xFD[a\x1C\xEA\x83a\x19bV[\x91Pa\x1C\xF9\x84` \x85\x01a\x1C\x9EV[\x90P\x92P\x92\x90PV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R`\0` \x84\x81\x84\x01R```@\x84\x01R\x83Q\x80``\x85\x01R`\0[\x81\x81\x10\x15a\x1D\xB8W\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1D\x9CV[\x81\x81\x11\x15a\x1D\xCAW`\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\x1E\nW`\0\x80\xFD[a\x19\x94\x83\x83a\x1C\x9EV[\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\x1E|WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x92W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1E\xB5Wa\x1E\xB5a\x19\xC7V[\x80`@RP\x80`@\x84\x01\x85\x81\x11\x15a\x1E\xCCW`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\xE6W\x805\x83R` \x92\x83\x01\x92\x01a\x1E\xCEV[P\x91\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1F\x03W`\0\x80\xFD[a\x1F\x0Ba\x19\xDDV[a\x1F\x15\x84\x84a\x1E\x81V[\x81Ra\x1F$\x84`@\x85\x01a\x1E\x81V[` \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\x1F\x8CWa\x1F\x8Ca\x1FdV[P\x03\x90V[`\0\x81a\x1F\xA0Wa\x1F\xA0a\x1FdV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1F\xBCWa\x1F\xBCa\x1FdV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\xDDWa\x1F\xDDa\x1FdV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F\xF5Wa\x1F\xF5a\x1FdV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \x91JKb\xB5 = (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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::FixedBytes<24>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkHistoryLengthReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorToPubkeyHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerBLSPublicKeyReturn { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `setBLSPublicKey(address,(uint256,uint256))` and selector `0xdf4d09e0`. + ```solidity + function setBLSPublicKey(address account, BN254.G1Point memory pk) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBLSPublicKeyCall { + pub account: alloy::sol_types::private::Address, + pub pk: ::RustType, + } + ///Container type for the return parameters of the [`setBLSPublicKey(address,(uint256,uint256))`](setBLSPublicKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBLSPublicKeyReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address, BN254::G1Point); + #[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: setBLSPublicKeyCall) -> Self { + (value.account, value.pk) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setBLSPublicKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + account: tuple.0, + pk: 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: setBLSPublicKeyReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setBLSPublicKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setBLSPublicKeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address, BN254::G1Point); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setBLSPublicKeyReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setBLSPublicKey(address,(uint256,uint256))"; + const SELECTOR: [u8; 4] = [223u8, 77u8, 9u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + ::tokenize(&self.pk), + ) + } + #[inline] + fn 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 [`BLSApkRegistryHarness`](self) function calls. + pub enum BLSApkRegistryHarnessCalls { + 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), + setBLSPublicKey(setBLSPublicKeyCall), + } + #[automatically_derived] + impl BLSApkRegistryHarnessCalls { + /// 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], + [223u8, 77u8, 9u8, 224u8], + [232u8, 187u8, 154u8, 230u8], + [244u8, 226u8, 79u8, 229u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BLSApkRegistryHarnessCalls { + const NAME: &'static str = "BLSApkRegistryHarnessCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 19usize; + #[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 + } + Self::setBLSPublicKey(_) => { + ::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(BLSApkRegistryHarnessCalls::operatorToPubkey) + } + operatorToPubkey + }, + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::getOperatorId) + } + getOperatorId + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::initializeQuorum) + } + initializeQuorum + }, + { + fn getApkHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::getApkHistoryLength) + } + getApkHistoryLength + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::registerOperator) + } + registerOperator + }, + { + fn getOperatorFromPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::getOperatorFromPubkeyHash) + } + getOperatorFromPubkeyHash + }, + { + fn getApk( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryHarnessCalls::getApk) + } + getApk + }, + { + fn getApkUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::getApkUpdateAtIndex) + } + getApkUpdateAtIndex + }, + { + fn getApkHashAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + BLSApkRegistryHarnessCalls::getApkHashAtBlockNumberAndIndex, + ) + } + getApkHashAtBlockNumberAndIndex + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn apkHistory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryHarnessCalls::apkHistory) + } + apkHistory + }, + { + fn getRegisteredPubkey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::getRegisteredPubkey) + } + getRegisteredPubkey + }, + { + fn currentApk( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryHarnessCalls::currentApk) + } + currentApk + }, + { + fn registerBLSPublicKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::registerBLSPublicKey) + } + registerBLSPublicKey + }, + { + fn getApkIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSApkRegistryHarnessCalls::getApkIndicesAtBlockNumber) + } + getApkIndicesAtBlockNumber + }, + { + fn operatorToPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::operatorToPubkeyHash) + } + operatorToPubkeyHash + }, + { + fn setBLSPublicKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::setBLSPublicKey) + } + setBLSPublicKey + }, + { + fn pubkeyHashToOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::pubkeyHashToOperator) + } + pubkeyHashToOperator + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryHarnessCalls::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, + ) + } + Self::setBLSPublicKey(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, + ) + } + Self::setBLSPublicKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`BLSApkRegistryHarness`](self) events. + pub enum BLSApkRegistryHarnessEvents { + Initialized(Initialized), + NewPubkeyRegistration(NewPubkeyRegistration), + OperatorAddedToQuorums(OperatorAddedToQuorums), + OperatorRemovedFromQuorums(OperatorRemovedFromQuorums), + } + #[automatically_derived] + impl BLSApkRegistryHarnessEvents { + /// 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 BLSApkRegistryHarnessEvents { + const NAME: &'static str = "BLSApkRegistryHarnessEvents"; + 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 BLSApkRegistryHarnessEvents { + 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 [`BLSApkRegistryHarness`](self) contract instance. + + See the [wrapper's documentation](`BLSApkRegistryHarnessInstance`) 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, + ) -> BLSApkRegistryHarnessInstance { + BLSApkRegistryHarnessInstance::::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< + Output = alloy_contract::Result>, + > { + BLSApkRegistryHarnessInstance::::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 { + BLSApkRegistryHarnessInstance::::deploy_builder(provider, _registryCoordinator) + } + /**A [`BLSApkRegistryHarness`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BLSApkRegistryHarness`](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 BLSApkRegistryHarnessInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BLSApkRegistryHarnessInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BLSApkRegistryHarnessInstance") + .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, + > BLSApkRegistryHarnessInstance + { + /**Creates a new wrapper around an on-chain [`BLSApkRegistryHarness`](self) contract instance. + + See the [wrapper's documentation](`BLSApkRegistryHarnessInstance`) 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 BLSApkRegistryHarnessInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BLSApkRegistryHarnessInstance { + BLSApkRegistryHarnessInstance { + 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, + > BLSApkRegistryHarnessInstance + { + /// 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 {}) + } + ///Creates a new call builder for the [`setBLSPublicKey`] function. + pub fn setBLSPublicKey( + &self, + account: alloy::sol_types::private::Address, + pk: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setBLSPublicKeyCall { account, pk }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSApkRegistryHarnessInstance + { + /// 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/middleware/blsapkregistrystorage.rs b/crates/utils/src/middleware/blsapkregistrystorage.rs new file mode 100644 index 00000000..8fd68061 --- /dev/null +++ b/crates/utils/src/middleware/blsapkregistrystorage.rs @@ -0,0 +1,5382 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::FixedBytes<24>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorToPubkeyHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerBLSPublicKeyReturn { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/blsmockavsdeployer.rs b/crates/utils/src/middleware/blsmockavsdeployer.rs new file mode 100644 index 00000000..594d3522 --- /dev/null +++ b/crates/utils/src/middleware/blsmockavsdeployer.rs @@ -0,0 +1,10389 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface BLSMockAVSDeployer { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function WEIGHTING_DIVISOR() external view returns (uint256); + function _setUpBLSMockAVSDeployer(uint8 numQuorumsToAdd) external; + function _setUpBLSMockAVSDeployer() external; + function avsDirectory() external view returns (address); + function avsDirectoryImplementation() external view returns (address); + function avsDirectoryMock() external view returns (address); + function blsApkRegistry() external view returns (address); + function blsApkRegistryImplementation() external view returns (address); + function delegationMock() external view returns (address); + function eigenPodManagerMock() external view returns (address); + function emptyContract() external view returns (address); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function indexRegistry() external view returns (address); + function indexRegistryImplementation() external view returns (address); + function operatorStateRetriever() external view returns (address); + function pauser() external view returns (address); + function pauserRegistry() external view returns (address); + function proxyAdmin() external view returns (address); + function proxyAdminOwner() external view returns (address); + function registryCoordinator() external view returns (address); + function registryCoordinatorImplementation() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function serviceManager() external view returns (address); + function serviceManagerImplementation() external view returns (address); + function slasher() external view returns (address); + function slasherImplementation() external view returns (address); + function stakeRegistry() external view returns (address); + function stakeRegistryImplementation() external view returns (address); + function strategyManagerMock() external view returns (address); + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function unpauser() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "WEIGHTING_DIVISOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "_setUpBLSMockAVSDeployer", + "inputs": [ + { + "name": "numQuorumsToAdd", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "_setUpBLSMockAVSDeployer", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectoryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectoryMock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectoryMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract BLSApkRegistryHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegationMock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract DelegationMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodManagerMock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract EigenPodManagerMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "emptyContract", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract EmptyContract" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "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": "operatorStateRetriever", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract OperatorStateRetriever" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauser", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract PauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxyAdmin", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ProxyAdmin" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxyAdminOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinatorHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinatorHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "serviceManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ServiceManagerMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "serviceManagerImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ServiceManagerMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "slasherImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract Slasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract StakeRegistryHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract StakeRegistryHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyManagerMock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract StrategyManagerMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpauser", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BLSMockAVSDeployer { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604081905260078054600160ff199182168117909255600b80549091169091179055601c8054737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03199182168117909255601f8054821673b3fb3cc0d24c9f3d05cd6ab406871083ef9432e117905560338054821673244c1d28b0585b6a171c0858d4e54868add703b517905560348054821673beb9864e3d6a1ba44e131a462f6328f2d1d6d54d17905560358054821673833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f1790556036805490911673bce510bdc87c434922d931652989268c253b89751790557fa3e2a0c4ce206b9c6679ac6361c034f31c8844ae3104108f47ed8c413acf333260378190556001625e79b760e01b031990925260849190915263ffa1864960a4602060405180830381865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001699190620003cf565b603880546001600160a01b03929092166001600160a01b03199283161790557f882c3c7dd8a5e5709b6d991769431084d0efbd23d1e9d649dc7fb0bbfb55f1e7603955603a8054736915a67877a178d5129a28d2af871ac1fceb3fd3908316179055603b80547373e2ce949f15be901f76b54f5a4554a6c8dcf53992169190911790556040805180820182527f285ecc55224ef409b253324696e77debac0ac31de952bd91c772f7021fd01ef18082527f0796a45b154da1243011d14b5dc7bae521e24e47d85c94cb3b6836f6fb99ae2b6020928301819052603d91909155603e558151808301909252600f8083526e036392e36392e36392e36393a34323608c1b929091019182526200028091603f9162000329565b50604080546001600160b01b03191675c000963a980000000a00000000000de0b6b3a764000017815560428054600460ff199091168117909155604355604480546001600160401b031916640a000000641790556001600160c01b03604d55516a1a195b1b1bc81ddbdc9b1960aa1b6020820152602b0160405160208183030381529060405280519060200120604e556045604f553480156200032257600080fd5b506200043e565b828054620003379062000401565b90600052602060002090601f0160209004810192826200035b5760008555620003a6565b82601f106200037657805160ff1916838001178555620003a6565b82800160010185558215620003a6579182015b82811115620003a657825182559160200191906001019062000389565b50620003b4929150620003b8565b5090565b5b80821115620003b45760008155600101620003b9565b600060208284031215620003e257600080fd5b81516001600160a01b0381168114620003fa57600080fd5b9392505050565b600181811c908216806200041657607f821691505b602082108114156200043857634e487b7160e01b600052602260045260246000fd5b50919050565b6201d682806200044f6000396000f3fe60806040523480156200001157600080fd5b5060043610620002795760003560e01c80637bef4aac1162000155578063b134427111620000c7578063e20c9f711162000086578063e20c9f711462000550578063e3a8b345146200055a578063e4b5200b146200056e578063eab66d7a1462000582578063fa7626d4146200059657600080fd5b8063b134427114620004ef578063b5508aa91462000503578063ba414fa6146200050d578063dad544e01462000528578063e18272c2146200053c57600080fd5b80639d8b9cb411620001145780639d8b9cb414620004955780639e3ba43714620004a95780639e9923c214620004bd5780639fd0506d14620004d1578063abc1997c14620004e557600080fd5b80637bef4aac146200043657806385226c81146200044a578063886f119514620004635780638b2c69eb1462000477578063916a17c6146200048b57600080fd5b80634ca22c3f11620001ef57806366d9a9a011620001ae57806366d9a9a014620003cd5780636830483514620003e6578063694ed61014620003fa5780636b3aa72e146200040e5780636d14a987146200042257600080fd5b80634ca22c3f146200035957806356f0b8a0146200036d57806358408f0c14620003815780635df45946146200039a5780635e5a677514620003ae57600080fd5b806339a5fcfa116200023c57806339a5fcfa14620003095780633e2bee3b146200031d5780633e47158c14620003315780633e5e3c2314620003455780633f7286f4146200034f57600080fd5b80630832af52146200027e5780631ed7831c14620002af578063248294ab14620002c85780632ade388014620002dc5780633998fdd314620002f5575b600080fd5b60205462000292906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620002b9620005a4565b604051620002a69190620025a9565b602f5462000292906001600160a01b031681565b620002e662000608565b604051620002a6919062002626565b602c5462000292906001600160a01b031681565b60225462000292906001600160a01b031681565b60315462000292906001600160a01b031681565b601d5462000292906001600160a01b031681565b620002b962000756565b620002b9620007b8565b60275462000292906001600160a01b031681565b60325462000292906001600160a01b031681565b6200039862000392366004620026ec565b6200081a565b005b602a5462000292906001600160a01b031681565b620003be670de0b6b3a764000081565b604051908152602001620002a6565b620003d762000832565b604051620002a6919062002711565b60295462000292906001600160a01b031681565b602e5462000292906001600160a01b031681565b60305462000292906001600160a01b031681565b60285462000292906001600160a01b031681565b60265462000292906001600160a01b031681565b620004546200091c565b604051620002a69190620027c8565b601e5462000292906001600160a01b031681565b60255462000292906001600160a01b031681565b620003d7620009f6565b60345462000292906001600160a01b031681565b60245462000292906001600160a01b031681565b602b5462000292906001600160a01b031681565b60355462000292906001600160a01b031681565b6200039862000ae0565b601f5462000292906001600160a01b031681565b6200045462000af6565b6200051762000bd0565b6040519015158152602001620002a6565b60335462000292906001600160a01b031681565b60235462000292906001600160a01b031681565b620002b962000d07565b60215462000292906001600160a01b031681565b602d5462000292906001600160a01b031681565b60365462000292906001600160a01b031681565b600754620005179060ff1681565b60606014805480602002602001604051908101604052809291908181526020018280548015620005fe57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620005df575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200074d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000735578382906000526020600020018054620006a1906200282e565b80601f0160208091040260200160405190810160405280929190818152602001828054620006cf906200282e565b8015620007205780601f10620006f45761010080835404028352916020019162000720565b820191906000526020600020905b8154815290600101906020018083116200070257829003601f168201915b5050505050815260200190600101906200067f565b5050505081525050815260200190600101906200062c565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620005fe576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620005df575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620005fe576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620005df575050505050905090565b620008258162000d69565b6200082f62002010565b50565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200074d5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200090357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620008c45790505b5050505050815250508152602001906001019062000856565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200074d57838290600052602060002001805462000962906200282e565b80601f016020809104026020016040519081016040528092919081815260200182805462000990906200282e565b8015620009e15780601f10620009b557610100808354040283529160200191620009e1565b820191906000526020600020905b815481529060010190602001808311620009c357829003601f168201915b50505050508152602001906001019062000940565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200074d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000ac757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a885790505b5050505050815250508152602001906001019062000a1a565b62000aea6200215b565b62000af462002010565b565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200074d57838290600052602060002001805462000b3c906200282e565b80601f016020809104026020016040519081016040528092919081815260200182805462000b6a906200282e565b801562000bbb5780601f1062000b8f5761010080835404028352916020019162000bbb565b820191906000526020600020905b81548152906001019060200180831162000b9d57829003601f168201915b50505050508152602001906001019062000b1a565b600754600090610100900460ff161562000bf35750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562000d025760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162000c84917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200286b565b60408051601f198184030181529082905262000ca0916200289e565b6000604051808303816000865af19150503d806000811462000cdf576040519150601f19603f3d011682016040523d82523d6000602084013e62000ce4565b606091505b509150508080602001905181019062000cfe9190620028bc565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015620005fe576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620005df575050505050905090565b60405162000d7790620023e4565b604051809103906000f08015801562000d94573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604080518082018252603d54808252603e54602092830190815260009182525190915220603c55601c546033546040516303223eab60e11b81526001600160a01b0391821660048201529116906306447d5690602401600060405180830381600087803b15801562000e2657600080fd5b505af115801562000e3b573d6000803e3d6000fd5b5050505060405162000e4d90620023f1565b604051809103906000f08015801562000e6a573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560408051600180825281830190925260009160208083019080368337505060355482519293506001600160a01b03169183915060009062000ed05762000ed0620028f6565b6001600160a01b0392831660209182029290920101526036546040518392919091169062000efe90620023ff565b62000f0b9291906200290c565b604051809103906000f08015801562000f28573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405162000f57906200240d565b604051809103906000f08015801562000f74573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b039290921691909117905560405162000fa3906200241b565b604051809103906000f08015801562000fc0573d6000803e3d6000fd5b50603280546001600160a01b0319166001600160a01b03928316179055601e5460405191169062000ff19062002429565b6001600160a01b039091168152602001604051809103906000f0801580156200101e573d6000803e3d6000fd5b50602f80546001600160a01b0319166001600160a01b03929092169190911790556040516200104d9062002437565b604051809103906000f0801580156200106a573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03928316908117909155602e54604051919216906200109f9062002445565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620010d3573d6000803e3d6000fd5b50602080546001600160a01b039283166001600160a01b031990911681178255601d54601e546040805133602482015291861660448301526000606480840191909152815180840390910181526084909201815293810180516001600160e01b03166305e52ecf60e21b17905292519193169190620011529062002453565b620011609392919062002938565b604051809103906000f0801580156200117d573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620011ac906200241b565b604051809103906000f080158015620011c9573d6000803e3d6000fd5b50603280546001600160a01b0319166001600160a01b03928316179055602e54604051911690620011fa9062002461565b6001600160a01b039091168152602001604051809103906000f08015801562001227573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03928316908117909155601d54601e54604051336024820152908416604482015260006064820152919216906305e52ecf60e21b9060840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620012b49062002453565b620012c29392919062002938565b604051809103906000f080158015620012df573d6000803e3d6000fd5b50603080546001600160a01b0319166001600160a01b03928316179055602d54602e54602f54601f54604051630d8efe5960e21b8152928516600484015290841660248301528316604482015291169063363bf96490606401600060405180830381600087803b1580156200135357600080fd5b505af115801562001368573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013bd57600080fd5b505af1158015620013d2573d6000803e3d6000fd5b5050601c546034546040516303223eab60e11b81526001600160a01b039182166004820152911692506306447d569150602401600060405180830381600087803b1580156200142057600080fd5b505af115801562001435573d6000803e3d6000fd5b5050602154601d546040516001600160a01b039283169450911691506200145c9062002453565b620014699291906200296f565b604051809103906000f08015801562001486573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602154601d54604051918316921690620014bd9062002453565b620014ca9291906200296f565b604051809103906000f080158015620014e7573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055602154601d546040519183169216906200151e9062002453565b6200152b9291906200296f565b604051809103906000f08015801562001548573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b03928316179055602154601d546040519183169216906200157f9062002453565b6200158c9291906200296f565b604051809103906000f080158015620015a9573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b03928316179055602154601d54604051918316921690620015e09062002453565b620015ed9291906200296f565b604051809103906000f0801580156200160a573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200166657600080fd5b505af11580156200167b573d6000803e3d6000fd5b5050601c546033546040516303223eab60e11b81526001600160a01b039182166004820152911692506306447d569150602401600060405180830381600087803b158015620016c957600080fd5b505af1158015620016de573d6000803e3d6000fd5b5050602854602e546040516001600160a01b0392831694509116915062001705906200246f565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001739573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316908117909155601d5460295460405163266a23b160e21b815290841660048201526024810192909252909116906399a88ec490604401600060405180830381600087803b158015620017a457600080fd5b505af1158015620017b9573d6000803e3d6000fd5b50506028546040516001600160a01b039091169250620017da91506200247d565b6001600160a01b039091168152602001604051809103906000f08015801562001807573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b039283169081178255601d54602a5460405163266a23b160e21b8152908516600482015292830191909152909116906399a88ec490604401600060405180830381600087803b1580156200187057600080fd5b505af115801562001885573d6000803e3d6000fd5b50506028546040516001600160a01b039091169250620018a691506200248b565b6001600160a01b039091168152602001604051809103906000f080158015620018d3573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155601d54602b5460405163266a23b160e21b815290841660048201526024810192909252909116906399a88ec490604401600060405180830381600087803b1580156200193e57600080fd5b505af115801562001953573d6000803e3d6000fd5b50506032546028546029546040516001600160a01b039384169550918316935090911690620019829062002499565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620019bf573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03928316908117909155601d54602c5460405163266a23b160e21b815290841660048201526024810192909252909116906399a88ec490604401600060405180830381600087803b15801562001a2a57600080fd5b505af115801562001a3f573d6000803e3d6000fd5b5050602c5460345460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b15801562001a8d57600080fd5b505af115801562001aa2573d6000803e3d6000fd5b5050602a54603b546040516306fa684f60e51b81526001600160a01b039182166004820152603d546024820152603e5460448201529116925063df4d09e09150606401600060405180830381600087803b15801562001b0057600080fd5b505af115801562001b15573d6000803e3d6000fd5b5050505060008260ff1667ffffffffffffffff81111562001b3a5762001b3a620028e0565b60405190808252806020026020018201604052801562001b64578160200160208202803683370190505b50905060005b815181101562001bc35762001b81816001620029ae565b82828151811062001b965762001b96620028f6565b6001600160601b03909216602092830291909101909101528062001bba81620029c9565b91505062001b6a565b5060008360ff1667ffffffffffffffff81111562001be55762001be5620028e0565b60405190808252806020026020018201604052801562001c1a57816020015b606081526020019060019003908162001c045790505b50905060005b815181101562001d095760408051600180825281830190925290816020015b604080518082019091526000808252602082015281526020019060019003908162001c3f5790505082828151811062001c7c5762001c7c620028f6565b60200260200101819052506040518060400160405280826001600160a01b03168152602001670de0b6b3a76400006001600160601b031681525082828151811062001ccb5762001ccb620028f6565b602002602001015160008151811062001ce85762001ce8620028f6565b6020026020010181905250808062001d0090620029c9565b91505062001c20565b50602c54602954602a54602b546040516001600160a01b039485169493841693928316929091169062001d3c90620024a7565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001d81573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905562001db060416000620024b5565b60005b8460ff1681101562001e8d5760408051606081018252815463ffffffff600160681b82048116835261ffff600160881b8304811660208501908152600160981b90930481169484019485526041805460018101825560009190915293517f7c9785e8241615bc80415d89775984a1337d15dc1bf4ce50f41988b2a2b336a7909401805493519551821666010000000000000267ffff00000000000019969092166401000000000265ffffffffffff19909416949092169390931791909117929092161790558062001e8481620029c9565b91505062001db3565b50601d54602854602254603454603854603a54601e546040516001600160a01b0397881697639623609d9781169681169563dd8283f360e01b9562001eed9591831694908316939183169216906000906041908e908e9060240162002abf565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262001f3693929160040162002938565b600060405180830381600087803b15801562001f5157600080fd5b505af115801562001f66573d6000803e3d6000fd5b5050505060405162001f7890620024d5565b604051809103906000f08015801562001f95573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b15801562001ff157600080fd5b505af115801562002006573d6000803e3d6000fd5b5050505050505050565b7f2a3b3f7ef4f62985af31809fdc531483e5f1cd67aa1bcf0f8ac0d17e158aa9676051557f0bcb2b68b6c68a5aea7fe75b5446c4ca410461fa226c2487d07eb2c504639cb56050557ec874e4fcfb88d5c98a0240bc6f7f37d45f2226ca147317b3a2b7243ddb6c1b6053557f0940e64478db51fe630cc540dbeabea34d072a54fd7c743056e18174f9a1b64e6052557f0dae15dac551f01e22364ece2cc534f95ac4959a1ac1644059e7cb94725f0fab6055557f0bcb6f00afd0afd72bfe4bc49fc96adff83f7e4b71af902a10e9141f156eac376054557f0a520f69f5ccc7c2f5474ea989d9a8187d9ccc058b387d1a47e1137533d5f3d76057557f2f6a09aca611e62f3caeb1ba02918ed1a71424b759ab7226becb1085380a6617605655604f54604e546200214d9190620021469062002173565b906200220c565b805160585560200151605955565b60405462000af490600160a81b900460ff1662000d69565b604080518082019091526000808252602082015260008080620021a66000805160206201d62d8339815191528662002b96565b90505b620021b481620022ad565b90935091506000805160206201d62d833981519152828309831415620021f0576040805180820190915290815260208101919091529392505050565b6000805160206201d62d833981519152600182089050620021a9565b60408051808201909152600080825260208201526200222a620024e3565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200225f5762002261565bfe5b5080620022a55760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b600080806000805160206201d62d83398151915260036000805160206201d62d833981519152866000805160206201d62d83398151915288890909089050600062002329827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206201d62d83398151915262002335565b91959194509092505050565b6000806200234262002501565b6200234c6200251f565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156200225f575082620023d95760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016200229c565b505195945050505050565b60948062002bba83390190565b6107188062002c4e83390190565b610778806200336683390190565b61158c8062003ade83390190565b610406806200506a83390190565b611b6e806200547083390190565b61178e8062006fde83390190565b610efe806200876c83390190565b610e81806200966a83390190565b611f78806200a4eb83390190565b613a6a806200c46383390190565b6121d2806200fecd83390190565b6113ec806201209f83390190565b6116e0806201348b83390190565b61709d8062014b6b83390190565b50805460008255906000526020600020908101906200082f91906200253d565b611a25806201bc0883390190565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b808211156200255f57805467ffffffffffffffff191681556001016200253e565b5090565b600081518084526020808501945080840160005b838110156200259e5781516001600160a01b03168752958201959082019060010162002577565b509495945050505050565b602081526000620025be602083018462002563565b9392505050565b60005b83811015620025e2578181015183820152602001620025c8565b83811115620025f2576000848401525b50505050565b6000815180845262002612816020860160208601620025c5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620026dc57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015620026c557605f19898503018352620026b2848651620025f8565b948e01949350918d019160010162002693565b505050978a0197945050918801916001016200264d565b50919a9950505050505050505050565b600060208284031215620026ff57600080fd5b813560ff81168114620025be57600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620027b957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620027a35783516001600160e01b0319168252928b019260019290920191908b019062002777565b50978a0197955050509187019160010162002739565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200282157603f198886030184526200280e858351620025f8565b94509285019290850190600101620027ef565b5092979650505050505050565b600181811c908216806200284357607f821691505b602082108114156200286557634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062002890816004850160208701620025c5565b919091016004019392505050565b60008251620028b2818460208701620025c5565b9190910192915050565b600060208284031215620028cf57600080fd5b81518015158114620025be57600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60408152600062002921604083018562002563565b905060018060a01b03831660208301529392505050565b6001600160a01b038481168252831660208201526060604082018190526000906200296690830184620025f8565b95945050505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115620029c457620029c462002998565b500190565b6000600019821415620029e057620029e062002998565b5060010190565b600081518084526020808501945080840160005b838110156200259e5781516001600160601b031687529582019590820190600101620029fb565b600081518084526020808501808196508360051b810191508286016000805b8681101562002ab1578385038a52825180518087529087019087870190845b8181101562002a9b57835180516001600160a01b031684528a01516001600160601b03168a8401529289019260409092019160010162002a60565b50509a87019a9550509185019160010162002a41565b509298975050505050505050565b600061010080830160018060a01b03808d1685526020818d16818701526040828d16818801526060838d168189015260ff8c1660808901528560a08901528495508a549350838552610120880195508a60005282600020945060005b8481101562002b5757855463ffffffff8116885261ffff81861c8116868a015260309190911c1683880152958101956001958601950162002b1b565b50505050505082810360c084015262002b718186620029e7565b905082810360e084015262002b87818562002a22565b9b9a5050505050505050505050565b60008262002bb457634e487b7160e01b600052601260045260246000fd5b50069056fe6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c0033608060405234801561001057600080fd5b5061156c806100206000396000f3fe608060405234801561001057600080fd5b50600436106102bb5760003560e01c80636d70f7ae11610182578063bb45fef2116100e9578063cbb5d4db116100a2578063dbe35bd81161007c578063dbe35bd81461069f578063eea9064b146106d9578063f16172b014610718578063f698da25146102e957600080fd5b8063cbb5d4db1461060a578063cf80873e14610643578063da8be8641461066757600080fd5b8063bb45fef2146103c4578063bc56ff6614610559578063c448feb81461056c578063c488375a14610363578063c5e480db14610574578063c94b5111146105fc57600080fd5b80639104c3191161013b5780639104c31914610528578063965682711461037757806399be81c81461052f578063a1060c8814610541578063a178848414610363578063a98fb3551461052f57600080fd5b80636d70f7ae1461049957806374d898d714610377578063778e55f3146104bc5780637f548071146104e75780638d90cd56146104f5578063900413471461050857600080fd5b806329c77d4f11610226578063597b36da116101df578063597b36da146104295780635f966f14146103d257806360d7faed14610437578063635bbd101461044c57806365da12641461045d57806367f292c71461048657600080fd5b806329c77d4f1461036357806333404396146103ac578063374823b5146103c45780633cdeb5e0146103d25780633e28391d146103fb57806343377382146102e957600080fd5b80631522bf02116102785780631522bf021461034f57806316928365146103635780631bbce091146103775780631d3696b71461038e57806320606b70146102e957806328a573ae1461034157600080fd5b80630449ca39146102c057806304a4f979146102e95780630b9f487a146102f05780630dd8dd02146103095780630f589e591461032c578063132d496714610341575b600080fd5b6102d66102ce366004610978565b600092915050565b6040519081526020015b60405180910390f35b60006102d6565b6102d66102fe3660046109de565b600095945050505050565b61031f610317366004610978565b606092915050565b6040516102e09190610a39565b61033f61033a366004610ad6565b505050565b005b61033f61033a366004610b29565b61033f61035d366004610b6a565b50505050565b6102d6610371366004610bd5565b50600090565b6102d6610385366004610b29565b60009392505050565b61039c610371366004610bd5565b60405190151581526020016102e0565b61033f6103ba366004610bf9565b5050505050505050565b61039c6102ce366004610cbc565b6103e36103e0366004610bd5565b90565b6040516001600160a01b0390911681526020016102e0565b61039c610409366004610bd5565b6001600160a01b0390811660009081526002602052604090205416151590565b6102d6610371366004610e7e565b61033f610445366004610f6c565b5050505050565b61033f61045a366004610ff7565b50565b6103e361046b366004610bd5565b6002602052600090815260409020546001600160a01b031681565b61033f610494366004611010565b610726565b61039c6104a7366004610bd5565b60006020819052908152604090205460ff1681565b6102d66104ca366004611078565b600160209081526000928352604080842090915290825290205481565b61033f610445366004611159565b61033f6105033660046111e9565b6107a0565b61051b61051636600461123a565b610806565b6040516102e091906112c4565b60006103e3565b61033f61053d3660046112d7565b5050565b6102d661054f36600461130c565b6000949350505050565b61033f610567366004611352565b6108e8565b61c4e06102d6565b6105c6610582366004610bd5565b604080516060810182526000808252602082018190529181019190915250604080516060810182526001600160a01b03909216808352602083015260009082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016102e0565b6102d661054f3660046113b6565b61033f6106183660046113ee565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b610659610651366004610bd5565b506060908190565b6040516102e0929190611423565b61031f610675366004610bd5565b6001600160a01b0316600090815260026020526040902080546001600160a01b0319169055606090565b61033f6106ad366004610b29565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b61033f6106e7366004611483565b505033600090815260026020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61033f61045a3660046114db565b60405163c608c7f360e01b81526001600160a01b038581166004830152848116602483015260448201849052828116606483015286169063c608c7f3906084015b600060405180830381600087803b15801561078157600080fd5b505af1158015610795573d6000803e3d6000fd5b505050505050505050565b604051638c80d4e560e01b81526001600160a01b038481166004830152838116602483015260448201839052851690638c80d4e590606401600060405180830381600087803b1580156107f257600080fd5b505af11580156103ba573d6000803e3d6000fd5b6060600082516001600160401b0381111561082357610823610ce8565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b50905060005b83518110156108e0576001600160a01b0385166000908152600160205260408120855190919086908490811061088a5761088a6114f7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106108c5576108c56114f7565b60209081029190910101526108d98161150d565b9050610852565b509392505050565b60405163c4623ea160e01b81526001600160a01b038581166004830152848116602483015283811660448301526064820183905286169063c4623ea190608401610767565b60008083601f84011261093f57600080fd5b5081356001600160401b0381111561095657600080fd5b6020830191508360208260051b850101111561097157600080fd5b9250929050565b6000806020838503121561098b57600080fd5b82356001600160401b038111156109a157600080fd5b6109ad8582860161092d565b90969095509350505050565b6001600160a01b038116811461045a57600080fd5b80356109d9816109b9565b919050565b600080600080600060a086880312156109f657600080fd5b8535610a01816109b9565b94506020860135610a11816109b9565b93506040860135610a21816109b9565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015610a7157835183529284019291840191600101610a55565b50909695505050505050565b600060608284031215610a8f57600080fd5b50919050565b60008083601f840112610aa757600080fd5b5081356001600160401b03811115610abe57600080fd5b60208301915083602082850101111561097157600080fd5b600080600060808486031215610aeb57600080fd5b610af58585610a7d565b925060608401356001600160401b03811115610b1057600080fd5b610b1c86828701610a95565b9497909650939450505050565b600080600060608486031215610b3e57600080fd5b8335610b49816109b9565b92506020840135610b59816109b9565b929592945050506040919091013590565b60008060008060408587031215610b8057600080fd5b84356001600160401b0380821115610b9757600080fd5b610ba38883890161092d565b90965094506020870135915080821115610bbc57600080fd5b50610bc98782880161092d565b95989497509550505050565b600060208284031215610be757600080fd5b8135610bf2816109b9565b9392505050565b6000806000806000806000806080898b031215610c1557600080fd5b88356001600160401b0380821115610c2c57600080fd5b610c388c838d0161092d565b909a50985060208b0135915080821115610c5157600080fd5b610c5d8c838d0161092d565b909850965060408b0135915080821115610c7657600080fd5b610c828c838d0161092d565b909650945060608b0135915080821115610c9b57600080fd5b50610ca88b828c0161092d565b999c989b5096995094979396929594505050565b60008060408385031215610ccf57600080fd5b8235610cda816109b9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610d2057610d20610ce8565b60405290565b604080519081016001600160401b0381118282101715610d2057610d20610ce8565b604051601f8201601f191681016001600160401b0381118282101715610d7057610d70610ce8565b604052919050565b803563ffffffff811681146109d957600080fd5b60006001600160401b03821115610da557610da5610ce8565b5060051b60200190565b600082601f830112610dc057600080fd5b81356020610dd5610dd083610d8c565b610d48565b82815260059290921b84018101918181019086841115610df457600080fd5b8286015b84811015610e18578035610e0b816109b9565b8352918301918301610df8565b509695505050505050565b600082601f830112610e3457600080fd5b81356020610e44610dd083610d8c565b82815260059290921b84018101918181019086841115610e6357600080fd5b8286015b84811015610e185780358352918301918301610e67565b600060208284031215610e9057600080fd5b81356001600160401b0380821115610ea757600080fd5b9083019060e08286031215610ebb57600080fd5b610ec3610cfe565b610ecc836109ce565b8152610eda602084016109ce565b6020820152610eeb604084016109ce565b604082015260608301356060820152610f0660808401610d78565b608082015260a083013582811115610f1d57600080fd5b610f2987828601610daf565b60a08301525060c083013582811115610f4157600080fd5b610f4d87828601610e23565b60c08301525095945050505050565b803580151581146109d957600080fd5b600080600080600060808688031215610f8457600080fd5b85356001600160401b0380821115610f9b57600080fd5b9087019060e0828a031215610faf57600080fd5b90955060208701359080821115610fc557600080fd5b50610fd28882890161092d565b90955093505060408601359150610feb60608701610f5c565b90509295509295909350565b60006020828403121561100957600080fd5b5035919050565b600080600080600060a0868803121561102857600080fd5b8535611033816109b9565b94506020860135611043816109b9565b93506040860135611053816109b9565b925060608601359150608086013561106a816109b9565b809150509295509295909350565b6000806040838503121561108b57600080fd5b8235611096816109b9565b915060208301356110a6816109b9565b809150509250929050565b6000604082840312156110c357600080fd5b6110cb610d26565b905081356001600160401b03808211156110e457600080fd5b818401915084601f8301126110f857600080fd5b813560208282111561110c5761110c610ce8565b61111e601f8301601f19168201610d48565b9250818352868183860101111561113457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561117157600080fd5b853561117c816109b9565b9450602086013561118c816109b9565b935060408601356001600160401b03808211156111a857600080fd5b6111b489838a016110b1565b945060608801359150808211156111ca57600080fd5b506111d7888289016110b1565b95989497509295608001359392505050565b600080600080608085870312156111ff57600080fd5b843561120a816109b9565b9350602085013561121a816109b9565b9250604085013561122a816109b9565b9396929550929360600135925050565b6000806040838503121561124d57600080fd5b8235611258816109b9565b915060208301356001600160401b0381111561127357600080fd5b61127f85828601610daf565b9150509250929050565b600081518084526020808501945080840160005b838110156112b95781518752958201959082019060010161129d565b509495945050505050565b602081526000610bf26020830184611289565b600080602083850312156112ea57600080fd5b82356001600160401b0381111561130057600080fd5b6109ad85828601610a95565b6000806000806080858703121561132257600080fd5b843561132d816109b9565b9350602085013561133d816109b9565b93969395505050506040820135916060013590565b600080600080600060a0868803121561136a57600080fd5b8535611375816109b9565b94506020860135611385816109b9565b93506040860135611395816109b9565b925060608601356113a5816109b9565b949793965091946080013592915050565b600080600080608085870312156113cc57600080fd5b84356113d7816109b9565b935060208501359250604085013561122a816109b9565b6000806040838503121561140157600080fd5b823561140c816109b9565b915061141a60208401610f5c565b90509250929050565b604080825283519082018190526000906020906060840190828701845b828110156114655781516001600160a01b031684529284019290840190600101611440565b505050838103828501526114798186611289565b9695505050505050565b60008060006060848603121561149857600080fd5b83356114a3816109b9565b925060208401356001600160401b038111156114be57600080fd5b6114ca868287016110b1565b925050604084013590509250925092565b6000606082840312156114ed57600080fd5b610bf28383610a7d565b634e487b7160e01b600052603260045260246000fd5b600060001982141561152f57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201dd1790fdaffc931f9a12c9c4ae69766ce1339d277ebd376b8d1969f993cf1de64736f6c634300080c0033608060405234801561001057600080fd5b506103e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a98fb3551161005b578063a98fb35514610103578063d79aceab14610111578063ec76f44214610118578063f698da251461011157600080fd5b8063374823b51461008d5780639926ee7d146100b8578063a1060c88146100cc578063a364f4da146100f2575b600080fd5b6100a361009b366004610142565b600092915050565b60405190151581526020015b60405180910390f35b6100ca6100c63660046101dc565b5050565b005b6100e46100da3660046102c1565b6000949350505050565b6040519081526020016100af565b6100ca610100366004610303565b50565b6100ca6100c6366004610325565b60006100e4565b6100ca610100366004610397565b80356001600160a01b038116811461013d57600080fd5b919050565b6000806040838503121561015557600080fd5b61015e83610126565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156101a5576101a561016c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156101d4576101d461016c565b604052919050565b600080604083850312156101ef57600080fd5b6101f883610126565b915060208084013567ffffffffffffffff8082111561021657600080fd5b908501906060828803121561022a57600080fd5b610232610182565b82358281111561024157600080fd5b8301601f8101891361025257600080fd5b8035838111156102645761026461016c565b610276601f8201601f191687016101ab565b9350808452898682840101111561028c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b600080600080608085870312156102d757600080fd5b6102e085610126565b93506102ee60208601610126565b93969395505050506040820135916060013590565b60006020828403121561031557600080fd5b61031e82610126565b9392505050565b6000806020838503121561033857600080fd5b823567ffffffffffffffff8082111561035057600080fd5b818501915085601f83011261036457600080fd5b81358181111561037357600080fd5b86602082850101111561038557600080fd5b60209290920196919550909350505050565b6000602082840312156103a957600080fd5b503591905056fea2646970667358221220b4ce23c32e90dd0ccee3681aa8c575c3396d30579f50b64aaeb230a9808a9b4264736f6c634300080c0033608060405260078054600160ff199182168117909255600b805490911690911790553480156200002e57600080fd5b5060405162001b6e38038062001b6e833981016040819052620000519162000251565b6200005e81600062000065565b5062000283565b601c546001600160a01b03161580156200008757506001600160a01b03821615155b6200010f5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4015b60405180910390fd5b601d81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2620001548262000158565b5050565b6001600160a01b038116620001e85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40162000106565b601c54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156200026457600080fd5b81516001600160a01b03811681146200027c57600080fd5b9392505050565b6118db80620002936000396000f3fe6080604052600436106102305760003560e01c806384d810621161012e578063b5508aa9116100ab578063d9910a561161006f578063d9910a56146105ef578063e20c9f711461063b578063f6848d2414610650578063fa7626d41461066b578063fabc1cbc1461068557600080fd5b8063b5508aa9146105c5578063ba414fa6146105da578063beffbb89146105ef578063bfe34a411461060e578063c2c51c40146105ef57600080fd5b80639b4e4634116100f25780639b4e46341461055d5780639ba0627514610572578063a38406a314610593578063a6a509be146105b1578063b13442711461034657600080fd5b806384d810621461034657806385226c81146104de578063886f1195146105005780639104c31914610520578063916a17c61461054857600080fd5b80633e5e3c23116101bc5780635ac86ab7116101805780635ac86ab7146104115780635c975abb1461045157806360f4062b1461046657806366d9a9a01461049c57806374cdd798146104be57600080fd5b80633e5e3c23146103915780633f7286f4146103a657806344e71c80146103bb578063463db038146103de578063595c6a67146103fc57600080fd5b8063292b7b2b11610203578063292b7b2b146102cc5780632ade388014610304578063387b13001461032657806339b70e38146103465780633a591f081461035a57600080fd5b80630e81073c1461023557806310d67a2f14610268578063136439dd1461028a5780631ed7831c146102aa575b600080fd5b34801561024157600080fd5b50610255610250366004611327565b919050565b6040519081526020015b60405180910390f35b34801561027457600080fd5b50610288610283366004611353565b6106a5565b005b34801561029657600080fd5b506102886102a5366004611370565b61075e565b3480156102b657600080fd5b506102bf61089d565b60405161025f9190611389565b3480156102d857600080fd5b50604e546102ec906001600160a01b031681565b6040516001600160a01b03909116815260200161025f565b34801561031057600080fd5b506103196108ff565b60405161025f9190611406565b34801561033257600080fd5b506102886103413660046114e1565b505050565b34801561035257600080fd5b5060006102ec565b34801561036657600080fd5b50610288610375366004611327565b6001600160a01b03909116600090815260506020526040902055565b34801561039d57600080fd5b506102bf610a41565b3480156103b257600080fd5b506102bf610aa1565b3480156103c757600080fd5b5060405167ffffffffffffffff815260200161025f565b3480156103ea57600080fd5b506102886103f9366004611522565b50565b34801561040857600080fd5b50610288610b01565b34801561041d57600080fd5b5061044161042c36600461154c565b601d54600160ff9092169190911b9081161490565b604051901515815260200161025f565b34801561045d57600080fd5b50601d54610255565b34801561047257600080fd5b50610255610481366004611353565b6001600160a01b031660009081526050602052604090205490565b3480156104a857600080fd5b506104b1610bc8565b60405161025f919061156f565b3480156104ca57600080fd5b50604f546102ec906001600160a01b031681565b3480156104ea57600080fd5b506104f3610cae565b60405161025f9190611622565b34801561050c57600080fd5b50601c546102ec906001600160a01b031681565b34801561052c57600080fd5b506102ec73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b34801561055457600080fd5b506104b1610d7e565b61028861056b3660046116d8565b5050505050565b34801561057e57600080fd5b506102ec61058d366004611353565b50600090565b34801561059f57600080fd5b506102ec6105ae366004611353565b90565b3480156105bd57600080fd5b506000610255565b3480156105d157600080fd5b506104f3610e64565b3480156105e657600080fd5b50610441610f34565b3480156105fb57600080fd5b5061028861060a366004611327565b5050565b34801561061a57600080fd5b50610255610629366004611353565b60506020526000908152604090205481565b34801561064757600080fd5b506102bf61105f565b34801561065c57600080fd5b5061044161058d366004611353565b34801561067757600080fd5b506007546104419060ff1681565b34801561069157600080fd5b506102886106a0366004611370565b6110bf565b601c60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061174c565b6001600160a01b0316336001600160a01b0316146107555760405162461bcd60e51b815260040161074c90611769565b60405180910390fd5b6103f98161121b565b601c5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca91906117b3565b6107e65760405162461bcd60e51b815260040161074c906117d5565b601d548181161461085f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161074c565b601d81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b606060148054806020026020016040519081016040528092919081815260200182805480156108f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108d7575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610a3857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610a215783829060005260206000200180546109949061181d565b80601f01602080910402602001604051908101604052809291908181526020018280546109c09061181d565b8015610a0d5780601f106109e257610100808354040283529160200191610a0d565b820191906000526020600020905b8154815290600101906020018083116109f057829003601f168201915b505050505081526020019060010190610975565b505050508152505081526020019060010190610923565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b601c5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d91906117b3565b610b895760405162461bcd60e51b815260040161074c906117d5565b600019601d81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610a385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610c9657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610c585790505b50505050508152505081526020019060010190610bec565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610a38578382906000526020600020018054610cf19061181d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1d9061181d565b8015610d6a5780601f10610d3f57610100808354040283529160200191610d6a565b820191906000526020600020905b815481529060010190602001808311610d4d57829003601f168201915b505050505081526020019060010190610cd2565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610a385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610e4c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e0e5790505b50505050508152505081526020019060010190610da2565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610a38578382906000526020600020018054610ea79061181d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed39061181d565b8015610f205780601f10610ef557610100808354040283529160200191610f20565b820191906000526020600020905b815481529060010190602001808311610f0357829003601f168201915b505050505081526020019060010190610e88565b600754600090610100900460ff1615610f565750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102505760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610fe4917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611858565b60408051601f1981840301815290829052610ffe91611889565b6000604051808303816000865af19150503d806000811461103b576040519150601f19603f3d011682016040523d82523d6000602084013e611040565b606091505b509150508080602001905181019061105891906117b3565b9392505050565b606060138054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b601c60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611112573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611136919061174c565b6001600160a01b0316336001600160a01b0316146111665760405162461bcd60e51b815260040161074c90611769565b601d54198119601d541916146111e45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161074c565b601d81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610892565b6001600160a01b0381166112a95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161074c565b601c54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146103f957600080fd5b6000806040838503121561133a57600080fd5b823561134581611312565b946020939093013593505050565b60006020828403121561136557600080fd5b813561105881611312565b60006020828403121561138257600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156113ca5783516001600160a01b0316835292840192918401916001016113a5565b50909695505050505050565b60005b838110156113f15781810151838201526020016113d9565b83811115611400576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114d457603f19888603018452815180516001600160a01b0316865286015160408787018190528151908701819052908701906060600582901b88018101919088019060005b818110156114bd57898403605f190183528451805180865261149e818e88018f85016113d6565b958c0195601f01601f1916949094018b019350918a0191600101611477565b50919750505093860193509085019060010161142d565b5092979650505050505050565b6000806000606084860312156114f657600080fd5b833561150181611312565b9250602084013561151181611312565b929592945050506040919091013590565b60006020828403121561153457600080fd5b813567ffffffffffffffff8116811461105857600080fd5b60006020828403121561155e57600080fd5b813560ff8116811461105857600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561161357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156115fe5783516001600160e01b0319168252928b019260019290920191908b01906115d4565b50978a01979550505091870191600101611597565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114d457878503603f1901845281518051808752611670818989018a85016113d6565b601f01601f191695909501860194509285019290850190600101611649565b60008083601f8401126116a157600080fd5b50813567ffffffffffffffff8111156116b957600080fd5b6020830191508360208285010111156116d157600080fd5b9250929050565b6000806000806000606086880312156116f057600080fd5b853567ffffffffffffffff8082111561170857600080fd5b61171489838a0161168f565b9097509550602088013591508082111561172d57600080fd5b5061173a8882890161168f565b96999598509660400135949350505050565b60006020828403121561175e57600080fd5b815161105881611312565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156117c557600080fd5b8151801515811461105857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600181811c9082168061183157607f821691505b6020821081141561185257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009061187b8160048501602087016113d6565b919091016004019392505050565b6000825161189b8184602087016113d6565b919091019291505056fea2646970667358221220a992952a4e42d90a82e2623c982d04b12a8ee445ad980a75ef01c7d27150f77f64736f6c634300080c0033608060405234801561001057600080fd5b5061176e806100206000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806394f649dd11610146578063c4623ea1116100c3578063e243dc3c11610087578063e243dc3c146105a9578063e2a818c5146105bc578063e7a050aa146105cf578063f2fde38b146105e6578063f698da25146105f9578063fabc1cbc1461060057600080fd5b8063c4623ea114610550578063c608c7f314610564578063c665670214610572578063df5b354714610583578063df5cf7231461059657600080fd5b80639f00fa241161010a5780639f00fa24146104ef578063a178848414610501578063a1ca780b14610521578063b13442711461052f578063b5d8b5b81461054257600080fd5b806394f649dd1461044c578063967fc0d21461046d5780639a9519e0146104805780639b4da03d146104935780639b7e2f77146104b657600080fd5b80635c975abb116101d4578063886f119511610198578063886f1195146103f95780638b8aac3c1461040c5780638c80d4e5146104215780638da5cb5b146104345780639104c3191461044557600080fd5b80635c975abb1461039d57806363fca888146103a5578063663c1de4146103b8578063715018a6146103db5780637a7e0d92146103e357600080fd5b8063363bf9641161021b578063363bf964146102d75780634665bcda146103245780634e5a42631461034f578063595c6a67146103625780635ac86ab71461036a57600080fd5b806301f820b2146102585780630d3908f41461027457806310d67a2f14610295578063136439dd146102aa57806332e89ace146102bd575b600080fd5b61026160d25481565b6040519081526020015b60405180910390f35b61028861028236600461106e565b50606090565b60405161026b91906110d6565b6102a86102a336600461106e565b610613565b005b6102a86102b83660046110e9565b6106cc565b6102616102cb366004611118565b60009695505050505050565b6102a86102e5366004611213565b60c980546001600160a01b039485166001600160a01b03199182161790915560cb80549285169282169290921790915560ca8054929093169116179055565b60ca54610337906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b6102a861035d36600461126c565b61080b565b6102a8610879565b61038d6103783660046112a5565b609854600160ff9092169190911b9081161490565b604051901515815260200161026b565b609854610261565b6102616103b33660046112c8565b610940565b61038d6103c636600461106e565b60cf6020526000908152604090205460ff1681565b6102a8610971565b6102616103f13660046112f4565b600092915050565b609754610337906001600160a01b031681565b61026161041a36600461106e565b5060d25490565b6102a861042f366004611322565b505050565b6033546001600160a01b0316610337565b6000610337565b61045f61045a36600461106e565b610985565b60405161026b929190611363565b60cc54610337906001600160a01b031681565b6102a861048e3660046110e9565b60d255565b61038d6104a136600461106e565b60d16020526000908152604090205460ff1681565b6102a86104c436600461126c565b6001600160a01b0391909116600090815260cf60205260409020805460ff1916911515919091179055565b6102a86104fd3660046112c8565b5050565b61026161050f36600461106e565b60d06020526000908152604090205481565b6102a861042f3660046113ba565b60cb54610337906001600160a01b031681565b6102a86104fd36600461143b565b6102a861055e36600461147d565b50505050565b6102a861055e3660046114ce565b6102a861058036600461106e565b50565b6102a8610591366004611521565b610a5e565b60c954610337906001600160a01b031681565b6103376105b73660046112c8565b610b4f565b6102a86105ca36600461158d565b610b87565b6102616105dd366004611322565b60009392505050565b6102a86105f436600461106e565b610c31565b6000610261565b6102a861060e3660046110e9565b610ca7565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068a9190611610565b6001600160a01b0316336001600160a01b0316146106c35760405162461bcd60e51b81526004016106ba9061162d565b60405180910390fd5b61058081610e03565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107389190611677565b6107545760405162461bcd60e51b81526004016106ba90611694565b609854818116146107cd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106ba565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e59190611677565b6109015760405162461bcd60e51b81526004016106ba90611694565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ce602052816000526040600020818154811061095c57600080fd5b90600052602060002001600091509150505481565b610979610efa565b6109836000610f54565b565b6001600160a01b038116600090815260cd6020908152604080832060ce8352928190208354825181850281018501909352808352606094859490939184918301828280156109fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109de575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191906000526020600020905b815481526020019060010190808311610a3a575b5050505050905091509150915091565b60005b83811015610b4857600160cf6000878785818110610a8157610a816116dc565b9050602002016020810190610a96919061106e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055828282818110610ad057610ad06116dc565b9050602002016020810190610ae591906116f2565b60d16000878785818110610afb57610afb6116dc565b9050602002016020810190610b10919061106e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b418161170f565b9050610a61565b5050505050565b60cd6020528160005260406000208181548110610b6b57600080fd5b6000918252602090912001546001600160a01b03169150829050565b828114610be25760405162461bcd60e51b8152602060048201526024808201527f53747261746567794d616e616765724d6f636b3a206c656e677468206d69736d6044820152630c2e8c6d60e31b60648201526084016106ba565b6001600160a01b038516600090815260cd60205260409020610c05908585610fa6565b506001600160a01b038516600090815260ce60205260409020610c29908383611009565b505050505050565b610c39610efa565b6001600160a01b038116610c9e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ba565b61058081610f54565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e9190611610565b6001600160a01b0316336001600160a01b031614610d4e5760405162461bcd60e51b81526004016106ba9061162d565b609854198119609854191614610dcc5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106ba565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610800565b6001600160a01b038116610e915760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106ba565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146109835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ba565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215610ff9579160200282015b82811115610ff95781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190610fc6565b50611005929150611044565b5090565b828054828255906000526020600020908101928215610ff9579160200282015b82811115610ff9578235825591602001919060010190611029565b5b808211156110055760008155600101611045565b6001600160a01b038116811461058057600080fd5b60006020828403121561108057600080fd5b813561108b81611059565b9392505050565b600081518084526020808501945080840160005b838110156110cb5781516001600160a01b0316875295820195908201906001016110a6565b509495945050505050565b60208152600061108b6020830184611092565b6000602082840312156110fb57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c0878903121561113157600080fd5b863561113c81611059565b9550602087013561114c81611059565b945060408701359350606087013561116381611059565b92506080870135915060a087013567ffffffffffffffff8082111561118757600080fd5b818901915089601f83011261119b57600080fd5b8135818111156111ad576111ad611102565b604051601f8201601f19908116603f011681019083821181831017156111d5576111d5611102565b816040528281528c60208487010111156111ee57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b60008060006060848603121561122857600080fd5b833561123381611059565b9250602084013561124381611059565b9150604084013561125381611059565b809150509250925092565b801515811461058057600080fd5b6000806040838503121561127f57600080fd5b823561128a81611059565b9150602083013561129a8161125e565b809150509250929050565b6000602082840312156112b757600080fd5b813560ff8116811461108b57600080fd5b600080604083850312156112db57600080fd5b82356112e681611059565b946020939093013593505050565b6000806040838503121561130757600080fd5b823561131281611059565b9150602083013561129a81611059565b60008060006060848603121561133757600080fd5b833561134281611059565b9250602084013561135281611059565b929592945050506040919091013590565b6040815260006113766040830185611092565b82810360208481019190915284518083528582019282019060005b818110156113ad57845183529383019391830191600101611391565b5090979650505050505050565b6000806000606084860312156113cf57600080fd5b83356113da81611059565b95602085013595506040909401359392505050565b60008083601f84011261140157600080fd5b50813567ffffffffffffffff81111561141957600080fd5b6020830191508360208260051b850101111561143457600080fd5b9250929050565b6000806020838503121561144e57600080fd5b823567ffffffffffffffff81111561146557600080fd5b611471858286016113ef565b90969095509350505050565b6000806000806080858703121561149357600080fd5b843561149e81611059565b935060208501356114ae81611059565b925060408501356114be81611059565b9396929550929360600135925050565b600080600080608085870312156114e457600080fd5b84356114ef81611059565b935060208501356114ff81611059565b925060408501359150606085013561151681611059565b939692955090935050565b6000806000806040858703121561153757600080fd5b843567ffffffffffffffff8082111561154f57600080fd5b61155b888389016113ef565b9096509450602087013591508082111561157457600080fd5b50611581878288016113ef565b95989497509550505050565b6000806000806000606086880312156115a557600080fd5b85356115b081611059565b9450602086013567ffffffffffffffff808211156115cd57600080fd5b6115d989838a016113ef565b909650945060408801359150808211156115f257600080fd5b506115ff888289016113ef565b969995985093965092949392505050565b60006020828403121561162257600080fd5b815161108b81611059565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561168957600080fd5b815161108b8161125e565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561170457600080fd5b813561108b8161125e565b600060001982141561173157634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220caffcc84a5697fe19faf081ea8bb2e8e3dbe9599cf8072a38bb63dc84c09327c64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360c06040523480156200001157600080fd5b5060405162003a6a38038062003a6a833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161396162000109600039600081816103b9015281816106b9015281816109f601528181610d6d01528181611198015281816117ab015281816118a8015281816119cc0152611d8e01526000818161058e01526120c901526139616000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806381c0750211610125578063c8294c56116100ad578063f2be94ae1161007c578063f2be94ae146105b0578063f509551a146105c3578063f851e198146105d6578063fa28c627146105e9578063ff694a77146105fc57600080fd5b8063c8294c561461053b578063d5eccc051461054e578063dd9846b914610561578063df5cf7231461058957600080fd5b8063b6904b78116100f4578063b6904b78146104c6578063bc9a40c3146104d9578063bd29b8cd146104ec578063c46778a5146104ff578063c601527d1461052857600080fd5b806381c07502146104335780639f3ccf6514610453578063ac6bfb0314610466578063adc804da1461048657600080fd5b80634bd26e09116101a857806366acfefe1161017757806366acfefe146103895780636d14a987146103b457806374454c6d146103f35780637c172347146104065780637f4298221461042057600080fd5b80634bd26e09146103245780635401ed27146103545780635e5a6775146103675780635f1f2d771461037657600080fd5b806320b66298116101e457806320b66298146102ad57806325504777146102c05780632cd95940146102e15780633ca5a5f51461030157600080fd5b80630390a4d5146102165780630491b41c1461022b57806308732461146102615780631f9b74e014610282575b600080fd5b610229610224366004612cce565b61060f565b005b61024e610239366004612cf8565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61027461026f366004612cce565b61061e565b604051610258929190612d13565b610295610290366004612d4d565b610667565b6040516001600160601b039091168152602001610258565b6102296102bb366004612dc8565b6106b7565b6102d36102ce366004612e89565b6109e8565b604051610258929190612f28565b6102f46102ef366004612f4d565b610cb3565b6040516102589190612f79565b61024e61030f366004612cf8565b60ff1660009081526003602052604090205490565b61024e610332366004612f4d565b600091825260026020908152604080842060ff93909316845291905290205490565b610295610362366004612f4d565b610d52565b61024e670de0b6b3a764000081565b610229610384366004613082565b610d6b565b61039c610397366004612e89565b61118b565b6040516001600160c01b039091168152602001610258565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610258565b61024e610401366004613141565b6112e5565b61040e602081565b60405160ff9091168152602001610258565b61029561042e36600461317d565b6112fc565b6104466104413660046131ad565b611308565b60405161025891906131ff565b6103db610461366004612cce565b6115d0565b61047961047436600461323d565b611608565b6040516102589190613270565b610499610494366004612cce565b6116a0565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610258565b6104796104d4366004612cce565b61171a565b6102296104e73660046132a5565b6117a9565b6102296104fa3660046132cf565b61189d565b61029561050d366004612cf8565b6000602081905290815260409020546001600160601b031681565b61022961053636600461339b565b6119ca565b6102956105493660046133e8565b611abe565b61029561055c366004612cf8565b611b3c565b61057461056f366004613424565b611b8f565b60405163ffffffff9091168152602001610258565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6102956105be366004613457565b611b9c565b61024e6105d1366004613499565b611c31565b6104796105e4366004612f4d565b611c3d565b6102956105f7366004613424565b611d22565b61022961060a3660046134b5565b611d83565b6106198282611eee565b505050565b6003602052816000526040600020818154811061063a57600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff821660009081526001602052604081205483906106a15760405162461bcd60e51b815260040161069890613512565b60405180910390fd5b60006106ad8585612068565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190613563565b6001600160a01b0316336001600160a01b0316146107695760405162461bcd60e51b815260040161069890613580565b846107858160ff16600090815260016020526040902054151590565b6107a15760405162461bcd60e51b815260040161069890613512565b8380610817576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610698565b82811461088c5760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610698565b60ff87166000908152600360205260408120905b828110156109dd578585828181106108ba576108ba6135fc565b90506020020160208101906108cf9190613612565b828989848181106108e2576108e26135fc565b90506020020135815481106108f9576108f96135fc565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a85818110610962576109626135fc565b9050602002013581548110610979576109796135fc565b6000918252602090912001546001600160a01b03168888858181106109a0576109a06135fc565b90506020020160208101906109b59190613612565b6040516109c3929190612d13565b60405180910390a2806109d581613643565b9150506108a0565b505050505050505050565b606080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a335760405162461bcd60e51b81526004016106989061365e565b6000836001600160401b03811115610a4d57610a4d612ff1565b604051908082528060200260200182016040528015610a76578160200160208202803683370190505b5090506000846001600160401b03811115610a9357610a93612ff1565b604051908082528060200260200182016040528015610abc578160200160208202803683370190505b50905060005b85811015610ca5576000878783818110610ade57610ade6135fc565b919091013560f81c60008181526001602052604090205490925015159050610b665760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610698565b600080610b73838d612068565b9150915080610c105760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610698565b6000610c1d8c8585612266565b905082878681518110610c3257610c326135fc565b60200260200101906001600160601b031690816001600160601b031681525050610c5c8482611eee565b868681518110610c6e57610c6e6135fc565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c9d90613643565b915050610ac2565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d45576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610cec565b5050505090505b92915050565b600080610d5f8484611c3d565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ded9190613563565b6001600160a01b0316336001600160a01b031614610e1d5760405162461bcd60e51b815260040161069890613580565b81610e398160ff16600090815260016020526040902054151590565b610e555760405162461bcd60e51b815260040161069890613512565b815180610eca5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610698565b60ff841660009081526003602090815260408083206004909252822090915b83811015611182578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610f2957610f296135fc565b602002602001015181548110610f4157610f416135fc565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f9f57610f9f6135fc565b602002602001015181548110610fb757610fb76135fc565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ff7906001906136d0565b81548110611007576110076135fc565b9060005260206000200183878381518110611024576110246135fc565b60200260200101518154811061103c5761103c6135fc565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b918290041602179055825483908061108f5761108f6136e7565b600082815260208120820160001990810191909155019055815482906110b7906001906136d0565b815481106110c7576110c76135fc565b9060005260206000200160009054906101000a90046001600160a01b0316828783815181106110f8576110f86135fc565b602002602001015181548110611110576111106135fc565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061114e5761114e6136e7565b600082815260209020810160001990810180546001600160a01b03191690550190558061117a81613643565b915050610ee9565b50505050505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d55760405162461bcd60e51b81526004016106989061365e565b6000805b838110156106ad5760008585838181106111f5576111f56135fc565b919091013560f81c600081815260016020526040902054909250151590506112855760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610698565b600080611292838b612068565b91509150806112b45760009150600160ff84161b6001600160c01b0386161794505b60006112c18a8585612266565b90506112cd8482611eee565b505050505080806112dd90613643565b9150506111d9565b60006112f2848484612266565b90505b9392505050565b60006112f583836124e6565b60606000826001600160401b0381111561132457611324612ff1565b60405190808252806020026020018201604052801561134d578160200160208202803683370190505b50905060005b838110156115c757600085858381811061136f5761136f6135fc565b919091013560f81c6000818152600160205260409020549092501515905061140e5760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610698565b60ff81166000908152600160205260408120805463ffffffff8a169290611437576114376135fc565b60009182526020909120015463ffffffff1611156114e35760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610698565b60ff8116600090815260016020526040812054905b818110156115b15760ff8316600090815260016020819052604090912063ffffffff8b169161152784866136d0565b61153191906136d0565b81548110611541576115416135fc565b60009182526020909120015463ffffffff161161159f57600161156482846136d0565b61156e91906136d0565b858581518110611580576115806135fc565b602002602001019063ffffffff16908163ffffffff16815250506115b1565b806115a981613643565b9150506114f8565b50505080806115bf90613643565b915050611353565b50949350505050565b600460205281600052604060002081815481106115ec57600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff8816835290529190912080548390811061164d5761164d6135fc565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106116d8576116d86135fc565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff861682526001905291909120805483908110611757576117576135fc565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182b9190613563565b6001600160a01b0316336001600160a01b03161461185b5760405162461bcd60e51b815260040161069890613580565b816118778160ff16600090815260016020526040902054151590565b6118935760405162461bcd60e51b815260040161069890613512565b6106198383612514565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118e55760405162461bcd60e51b81526004016106989061365e565b60005b818110156119c4576000838383818110611904576119046135fc565b919091013560f81c600081815260016020526040902054909250151590506119945760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610698565b60006119a286836000612266565b90506119ae8282611eee565b50505080806119bc90613643565b9150506118e8565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613563565b6001600160a01b0316336001600160a01b031614611a7c5760405162461bcd60e51b815260040161069890613580565b81611a988160ff16600090815260016020526040902054151590565b611ab45760405162461bcd60e51b815260040161069890613512565b610619838361257d565b60ff83166000908152600160205260408120805482919084908110611ae557611ae56135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610d5f81856129c0565b60ff81166000908152600160208190526040822080549091611b5d916136d0565b81548110611b6d57611b6d6135fc565b600091825260209091200154600160401b90046001600160601b031692915050565b60006112f2848484612b3a565b600082815260026020908152604080832060ff881684529091528120805482919084908110611bcd57611bcd6135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611c2481866129c0565b6040015195945050505050565b60006112f58383612ca0565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611c96579150610d4c9050565b600085815260026020908152604080832060ff881684529091529020611cbd6001846136d0565b81548110611ccd57611ccd6135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610d4c915050565b600083815260026020908152604080832060ff861684529091528120611d49858585612b3a565b63ffffffff1681548110611d5f57611d5f6135fc565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dcb5760405162461bcd60e51b81526004016106989061365e565b60ff831660009081526001602052604090205415611e495760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610698565b611e53838261257d565b611e5d8383612514565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff821660009081526001602081905260408220805491839190611f1290846136d0565b81548110611f2257611f226135fc565b9060005260206000200190508360001415611f515754600160401b90046001600160601b03169150610d4c9050565b8054600090611f7090600160401b90046001600160601b0316866124e6565b82549091504363ffffffff90811691161415611fad578154600160401b600160a01b031916600160401b6001600160601b0383160217825561205f565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6000806000806120878660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926120fc928c92016136fd565b600060405180830381865afa158015612119573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612141919081019061375c565b905060005b838110156122325760ff89166000908152600360205260409020805482908110612172576121726135fc565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b03169082015283519094508390839081106121c0576121c06135fc565b6020026020010151111561222057670de0b6b3a764000083602001516001600160601b03168383815181106121f7576121f76135fc565b602002602001015161220991906137ec565b612213919061380b565b61221d908661382d565b94505b8061222a81613643565b915050612146565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061232a57600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561248c565b600086815260026020908152604080832060ff8916845290915281206123516001846136d0565b81548110612361576123616135fc565b600091825260209091200180546001600160601b03600160401b90910481169450909150851683141561239a57600093505050506112f5565b80544363ffffffff908116911614156123d4578054600160401b600160a01b031916600160401b6001600160601b0387160217815561248a565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26124dc8285612ca0565b9695505050505050565b60008082121561250a576124f982613858565b6125039084613875565b9050610d4c565b612503828461382d565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116125e25760405162461bcd60e51b8152602060048201526038602482015260008051602061390c83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610698565b805160ff831660009081526003602090815260409091205490612605838361389d565b11156126755760405162461bcd60e51b8152602060048201526045602482015260008051602061390c83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610698565b60005b828110156129b95760005b61268d828461389d565b81101561276e578482815181106126a6576126a66135fc565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106126e5576126e56135fc565b6000918252602090912001546001600160a01b0316141561275c5760405162461bcd60e51b815260206004820152603d602482015260008051602061390c83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610698565b8061276681613643565b915050612683565b506000848281518110612783576127836135fc565b6020026020010151602001516001600160601b0316116128085760405162461bcd60e51b8152602060048201526046602482015260008051602061390c83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610698565b60ff85166000908152600360205260409020845185908390811061282e5761282e6135fc565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff8716825260049052604090208451859083908110612893576128936135fc565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061290a5761290a6135fc565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612967576129676135fc565b602002602001015160000151868481518110612985576129856135fc565b60200260200101516020015160405161299f929190612d13565b60405180910390a2806129b181613643565b915050612678565b5050505050565b816000015163ffffffff168163ffffffff161015612a655760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610698565b602082015163ffffffff161580612a8b5750816020015163ffffffff168163ffffffff16105b612b365760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610698565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612bdb57600086815260026020908152604080832060ff89168452909152902063ffffffff851690612b8e6001846136d0565b81548110612b9e57612b9e6135fc565b60009182526020909120015463ffffffff1611612bc957612bc06001826136d0565b925050506112f5565b80612bd3816138b5565b915050612b59565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610698565b60006112f56001600160601b038085169084166138cc565b803560ff81168114612cc957600080fd5b919050565b60008060408385031215612ce157600080fd5b612cea83612cb8565b946020939093013593505050565b600060208284031215612d0a57600080fd5b6112f582612cb8565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612d4a57600080fd5b50565b60008060408385031215612d6057600080fd5b612d6983612cb8565b91506020830135612d7981612d35565b809150509250929050565b60008083601f840112612d9657600080fd5b5081356001600160401b03811115612dad57600080fd5b6020830191508360208260051b850101111561225f57600080fd5b600080600080600060608688031215612de057600080fd5b612de986612cb8565b945060208601356001600160401b0380821115612e0557600080fd5b612e1189838a01612d84565b90965094506040880135915080821115612e2a57600080fd5b50612e3788828901612d84565b969995985093965092949392505050565b60008083601f840112612e5a57600080fd5b5081356001600160401b03811115612e7157600080fd5b60208301915083602082850101111561225f57600080fd5b60008060008060608587031215612e9f57600080fd5b8435612eaa81612d35565b93506020850135925060408501356001600160401b03811115612ecc57600080fd5b612ed887828801612e48565b95989497509550505050565b600081518084526020808501945080840160005b83811015612f1d5781516001600160601b031687529582019590820190600101612ef8565b509495945050505050565b604081526000612f3b6040830185612ee4565b828103602084015261205f8185612ee4565b60008060408385031215612f6057600080fd5b82359150612f7060208401612cb8565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612fe557612fd283855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612f95565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561302957613029612ff1565b60405290565b604051601f8201601f191681016001600160401b038111828210171561305757613057612ff1565b604052919050565b60006001600160401b0382111561307857613078612ff1565b5060051b60200190565b6000806040838503121561309557600080fd5b61309e83612cb8565b91506020808401356001600160401b038111156130ba57600080fd5b8401601f810186136130cb57600080fd5b80356130de6130d98261305f565b61302f565b81815260059190911b820183019083810190888311156130fd57600080fd5b928401925b8284101561311b57833582529284019290840190613102565b80955050505050509250929050565b80356001600160601b0381168114612cc957600080fd5b60008060006060848603121561315657600080fd5b8335925061316660208501612cb8565b91506131746040850161312a565b90509250925092565b6000806040838503121561319057600080fd5b612cea8361312a565b803563ffffffff81168114612cc957600080fd5b6000806000604084860312156131c257600080fd5b6131cb84613199565b925060208401356001600160401b038111156131e657600080fd5b6131f286828701612e48565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612fe557835163ffffffff168352928401929184019160010161321b565b60008060006060848603121561325257600080fd5b61325b84612cb8565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610d4c565b600080604083850312156132b857600080fd5b6132c183612cb8565b9150612f706020840161312a565b6000806000604084860312156132e457600080fd5b8335925060208401356001600160401b038111156131e657600080fd5b600082601f83011261331257600080fd5b813560206133226130d98361305f565b82815260069290921b8401810191818101908684111561334157600080fd5b8286015b84811015613390576040818903121561335e5760008081fd5b613366613007565b813561337181612d35565b815261337e82860161312a565b81860152835291830191604001613345565b509695505050505050565b600080604083850312156133ae57600080fd5b6133b783612cb8565b915060208301356001600160401b038111156133d257600080fd5b6133de85828601613301565b9150509250929050565b6000806000606084860312156133fd57600080fd5b61340684612cb8565b925061341460208501613199565b9150604084013590509250925092565b60008060006060848603121561343957600080fd5b8335925061344960208501612cb8565b915061317460408501613199565b6000806000806080858703121561346d57600080fd5b61347685612cb8565b935061348460208601613199565b93969395505050506040820135916060013590565b600080604083850312156134ac57600080fd5b6132c18361312a565b6000806000606084860312156134ca57600080fd5b6134d384612cb8565b92506134e16020850161312a565b915060408401356001600160401b038111156134fc57600080fd5b61350886828701613301565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561357557600080fd5b81516112f581612d35565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561362457600080fd5b6112f58261312a565b634e487b7160e01b600052601160045260246000fd5b60006000198214156136575761365761362d565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156136e2576136e261362d565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561374e578554851683526001958601959284019201613730565b509098975050505050505050565b6000602080838503121561376f57600080fd5b82516001600160401b0381111561378557600080fd5b8301601f8101851361379657600080fd5b80516137a46130d98261305f565b81815260059190911b820183019083810190878311156137c357600080fd5b928401925b828410156137e1578351825292840192908401906137c8565b979650505050505050565b60008160001904831182151516156138065761380661362d565b500290565b60008261382857634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561384f5761384f61362d565b01949350505050565b6000600160ff1b82141561386e5761386e61362d565b5060000390565b60006001600160601b03838116908316818110156138955761389561362d565b039392505050565b600082198211156138b0576138b061362d565b500190565b6000816138c4576138c461362d565b506000190190565b60008083128015600160ff1b8501841216156138ea576138ea61362d565b6001600160ff1b03840183138116156139055761390561362d565b5050039056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220d1c160b66d71a1a431473146b286303b69b5167369c9475b6da7380e18c6b56f64736f6c634300080c003360a06040523480156200001157600080fd5b50604051620021d2380380620021d2833981016040819052620000349162000118565b6001600160a01b03811660805280806200004d62000056565b5050506200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b608051612050620001826000396000818161031a015281816104db0152818161063401528181610a3a01526110a601526120506000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c80636d14a987116100ad578063d5254a8c11610071578063d5254a8c146103ea578063de29fac01461040a578063df4d09e01461042a578063e8bb9ae614610494578063f4e24fe5146104bd57600080fd5b80636d14a987146103155780637916cea61461033c5780637ff81a871461037d578063a3db80e2146103b0578063bf79ce58146103d757600080fd5b80633fb27952116100f45780633fb27952146101ea57806347b314e8146101fd5780635f61a8841461023e578063605747d51461029a57806368bccaac146102e857600080fd5b8062a1f4cb1461012557806313542a4e1461016657806326d941f21461019d578063377ed99d146101b2575b600080fd5b61014c610133366004611979565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61018f610174366004611979565b6001600160a01b031660009081526001602052604090205490565b60405190815260200161015d565b6101b06101ab3660046119ac565b6104d0565b005b6101d56101c03660046119ac565b60ff1660009081526004602052604090205490565b60405163ffffffff909116815260200161015d565b6101b06101f8366004611a37565b610629565b61022661020b366004611add565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161015d565b61028d61024c3660046119ac565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b60405161015d9190611af6565b6102ad6102a8366004611b0d565b6106e7565b60408051825167ffffffffffffffff1916815260208084015163ffffffff90811691830191909152928201519092169082015260600161015d565b6102fb6102f6366004611b37565b61077a565b60405167ffffffffffffffff19909116815260200161015d565b6102267f000000000000000000000000000000000000000000000000000000000000000081565b61034f61034a366004611b0d565b610915565b6040805167ffffffffffffffff19909416845263ffffffff928316602085015291169082015260600161015d565b61039061038b366004611979565b610960565b60408051835181526020938401519381019390935282015260600161015d565b61014c6103be3660046119ac565b6005602052600090815260409020805460019091015482565b61018f6103e5366004611b7f565b610a2d565b6103fd6103f8366004611bdc565b610e81565b60405161015d9190611c54565b61018f610418366004611979565b60016020526000908152604090205481565b6101b0610438366004611cce565b8051600090815260208083018051825260408084206001600160a01b039690961680855260018085528286208890559685526002845281852080546001600160a01b031916821790558452600390925291209151825551910155565b6102266104a2366004611add565b6002602052600090815260409020546001600160a01b031681565b6101b06104cb366004611a37565b61109b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105215760405162461bcd60e51b815260040161051890611d02565b60405180910390fd5b60ff8116600090815260046020526040902054156105a05760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608401610518565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106715760405162461bcd60e51b815260040161051890611d02565b600061067c83610960565b5090506106898282611144565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836106ca856001600160a01b031660009081526001602052604090205490565b846040516106da93929190611d76565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061072457610724611de2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106107a1576107a1611de2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156108685760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608401610518565b604081015163ffffffff16158061088e5750806040015163ffffffff168463ffffffff16105b61090c5760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a401610518565b51949350505050565b6004602052816000526040600020818154811061093157600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b038216600081815260036020908152604080832081518083018352815481526001918201548185015294845290915281205490919080610a235760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608401610518565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a775760405162461bcd60e51b815260040161051890611d02565b6000610aa5610a8e36869003860160408701611df8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610b2d576040805162461bcd60e51b8152602060048201526024810191909152600080516020611ffb83398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152608401610518565b6001600160a01b03851660009081526001602052604090205415610bb75760405162461bcd60e51b81526020600482015260476024820152600080516020611ffb83398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a401610518565b6000818152600260205260409020546001600160a01b031615610c3b5760405162461bcd60e51b81526020600482015260426024820152600080516020611ffb83398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a401610518565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c94918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611e14565b6040516020818303038152906040528051906020012060001c610cb79190611e5f565b9050610d51610cf0610cdb83610cd5368a90038a0160408b01611df8565b9061138f565b610cea36899003890189611df8565b90611426565b610cf86114ba565b610d3a610d2b85610cd5604080518082018252600080825260209182015281518083019092526001825260029082015290565b610cea368a90038a018a611df8565b610d4c368a90038a0160808b01611ef1565b61157a565b610dec5760405162461bcd60e51b815260206004820152606c6024820152600080516020611ffb83398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c401610518565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610e709160808a0190611f30565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e9e57610e9e6119c7565b604051908082528060200260200182016040528015610ec7578160200160208202803683370190505b50905060005b84811015611092576000868683818110610ee957610ee9611de2565b919091013560f81c6000818152600460205260409020549092509050801580610f4c575060ff821660009081526004602052604081208054909190610f3057610f30611de2565b600091825260209091200154600160c01b900463ffffffff1686105b15610fd95760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a401610518565b805b801561107c5760ff831660009081526004602052604090208790611000600184611f7a565b8154811061101057611010611de2565b600091825260209091200154600160c01b900463ffffffff161161106a57611039600182611f7a565b85858151811061104b5761104b611de2565b602002602001019063ffffffff16908163ffffffff168152505061107c565b8061107481611f91565b915050610fdb565b505050808061108a90611fa8565b915050610ecd565b50949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110e35760405162461bcd60e51b815260040161051890611d02565b60006110ee83610960565b509050611103826110fe836117e7565b611144565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836106ca856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561138957600084828151811061117857611178611de2565b0160209081015160f81c60008181526004909252604090912054909150806112085760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608401610518565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261123c9086611426565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112859085611f7a565b8154811061129557611295611de2565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112d65780546001600160c01b031916604083901c178155611372565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061138190611fa8565b91505061115b565b50505050565b60408051808201909152600080825260208201526113ab6118a6565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113de576113e0565bfe5b508061141e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610518565b505092915050565b60408051808201909152600080825260208201526114426118c4565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113de57508061141e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610518565b6114c26118e2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916115a9611907565b60005b600281101561176e5760006115c2826006611fc3565b90508482600281106115d6576115d6611de2565b602002015151836115e8836000611fe2565b600c81106115f8576115f8611de2565b602002015284826002811061160f5761160f611de2565b602002015160200151838260016116269190611fe2565b600c811061163657611636611de2565b602002015283826002811061164d5761164d611de2565b6020020151515183611660836002611fe2565b600c811061167057611670611de2565b602002015283826002811061168757611687611de2565b60200201515160016020020151836116a0836003611fe2565b600c81106116b0576116b0611de2565b60200201528382600281106116c7576116c7611de2565b6020020151602001516000600281106116e2576116e2611de2565b6020020151836116f3836004611fe2565b600c811061170357611703611de2565b602002015283826002811061171a5761171a611de2565b60200201516020015160016002811061173557611735611de2565b602002015183611746836005611fe2565b600c811061175657611756611de2565b6020020152508061176681611fa8565b9150506115ac565b50611777611926565b60006020826101808560086107d05a03fa90508080156113de5750806117d75760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606401610518565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561180c57506020820151155b1561182a575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161186f9190611e5f565b611899907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611f7a565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118f5611944565b8152602001611902611944565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146118a157600080fd5b60006020828403121561198b57600080fd5b61199482611962565b9392505050565b803560ff811681146118a157600080fd5b6000602082840312156119be57600080fd5b6119948261199b565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611a0057611a006119c7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a2f57611a2f6119c7565b604052919050565b60008060408385031215611a4a57600080fd5b611a5383611962565b915060208084013567ffffffffffffffff80821115611a7157600080fd5b818601915086601f830112611a8557600080fd5b813581811115611a9757611a976119c7565b611aa9601f8201601f19168501611a06565b91508082528784828501011115611abf57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611aef57600080fd5b5035919050565b815181526020808301519082015260408101610774565b60008060408385031215611b2057600080fd5b611b298361199b565b946020939093013593505050565b600080600060608486031215611b4c57600080fd5b611b558461199b565b9250602084013563ffffffff81168114611b6e57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b9657600080fd5b611b9f85611962565b9350610100601f1982011215611bb457600080fd5b602085019250604061011f1982011215611bcd57600080fd5b50610120840190509250925092565b600080600060408486031215611bf157600080fd5b833567ffffffffffffffff80821115611c0957600080fd5b818601915086601f830112611c1d57600080fd5b813581811115611c2c57600080fd5b876020828501011115611c3e57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c9257835163ffffffff1683529284019291840191600101611c70565b50909695505050505050565b600060408284031215611cb057600080fd5b611cb86119dd565b9050813581526020820135602082015292915050565b60008060608385031215611ce157600080fd5b611cea83611962565b9150611cf98460208501611c9e565b90509250929050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611db857858101830151858201608001528201611d9c565b81811115611dca576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611e0a57600080fd5b6119948383611c9e565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611e7c57634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611e9257600080fd5b6040516040810181811067ffffffffffffffff82111715611eb557611eb56119c7565b8060405250806040840185811115611ecc57600080fd5b845b81811015611ee6578035835260209283019201611ece565b509195945050505050565b600060808284031215611f0357600080fd5b611f0b6119dd565b611f158484611e81565b8152611f248460408501611e81565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611f8c57611f8c611f64565b500390565b600081611fa057611fa0611f64565b506000190190565b6000600019821415611fbc57611fbc611f64565b5060010190565b6000816000190483118215151615611fdd57611fdd611f64565b500290565b60008219821115611ff557611ff5611f64565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220914a4b62b53c4fc609131aa204369702fd7591435bfcd86371331c1fcf782a0364736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c060405260cf8054600160ff19918216811790925560d3805490911690911790553480156200002f57600080fd5b506040516200709d3803806200709d8339810160408190526200005291620002c0565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f7200000000000000000000602080830191825283518085018552600681526576302e302e3160d01b908201529151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c09384019096528051940193909320909252919052610120526001600160a01b0380851661014052808416610180528083166101605281166101a052838383836200017462000193565b5050505062000189336200025560201b60201c565b5050505062000328565b600054610100900460ff1615620002005760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000253576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381168114620002bd57600080fd5b50565b60008060008060808587031215620002d757600080fd5b8451620002e481620002a7565b6020860151909450620002f781620002a7565b60408601519093506200030a81620002a7565b60608601519092506200031d81620002a7565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051616c6d620004306000396000818161083701528181611645015281816129e1015281816134b701528181613e50015261471e01526000818161074c0152818161296c01528181612e7a0152818161340e01528181613dd0015281816142f3015261469d0152600081816106fd015281816111de015281816129aa0152818161338e01528181613d5201528181613f3801528181613fae015261479a015260008181610631015281816132d60152613ca80152600061499d015260006149ec015260006149c7015260006149200152600061494a015260006149740152616c6d6000f3fe608060405234801561001057600080fd5b50600436106103cf5760003560e01c806366d9a9a0116101ff578063b5508aa91161011a578063d92cbb84116100ad578063f2fde38b1161007c578063f2fde38b14610a24578063fa7626d414610a37578063fabc1cbc14610a44578063fd39105a14610a5757600080fd5b8063d92cbb841461093c578063dd8283f314610966578063e20c9f7114610979578063e65797ad1461098157600080fd5b8063ca0de882116100e9578063ca0de882146108e7578063ca4f2d971461090e578063d72d8dd614610921578063d75b4c881461092957600080fd5b8063b5508aa914610893578063ba414fa61461089b578063c391425e146108a3578063c4097d5e146108c357600080fd5b8063886f1195116101925780639b5d177b116101615780639b5d177b1461081f5780639e9923c2146108325780639feab85914610859578063a50857bf1461088057600080fd5b8063886f1195146107d75780638da5cb5b146107f0578063916a17c6146107f85780639aa1653d1461080057600080fd5b80638310fef6116101ce5780638310fef61461078957806384ca52131461079c57806385226c81146107af578063871ef049146107c457600080fd5b806366d9a9a01461073257806368304835146107475780636e3b17db1461076e578063715018a61461078157600080fd5b8063296bb064116102ef5780635140a548116102825780635b0b829f116102515780635b0b829f146106dd5780635c975abb146106f05780635df45946146106f85780636347c9001461071f57600080fd5b80635140a548146106835780635865c60c14610696578063595c6a67146106b65780635ac86ab7146106be57600080fd5b80633998fdd3116102be5780633998fdd31461062c5780633c2a7f4c146106535780633e5e3c23146106735780633f7286f41461067b57600080fd5b8063296bb064146105de57806329d1e0c3146105f15780632ade3880146106045780632cdd1e861461061957600080fd5b80631478851f11610367578063249a0c4211610336578063249a0c421461058557806327e79288146105a557806328f61b31146105b85780632953547c146105cb57600080fd5b80631478851f146104d45780631ab2574f146105075780631eb812da146105275780631ed7831c1461057057600080fd5b80630cf4b767116103a35780630cf4b7671461047257806310d67a2f1461048557806313542a4e14610498578063136439dd146104c157600080fd5b8062cf2ab5146103d457806303fd3492146103e957806304ec63511461041c578063054310e614610447575b600080fd5b6103e76103e23660046152dd565b610a93565b005b6104096103f736600461531e565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b61042f61042a366004615349565b610ba9565b6040516001600160c01b039091168152602001610413565b609d5461045a906001600160a01b031681565b6040516001600160a01b039091168152602001610413565b6103e7610480366004615480565b610d9f565b6103e76104933660046154dc565b610e87565b6104096104a63660046154dc565b6001600160a01b031660009081526099602052604090205490565b6103e76104cf36600461531e565b610f3a565b6104f76104e236600461531e565b609a6020526000908152604090205460ff1681565b6040519015158152602001610413565b61051a610515366004615595565b611077565b6040516104139190615681565b61053a610535366004615709565b6110b4565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610413565b610578611145565b604051610413919061572b565b610409610593366004615789565b609b6020526000908152604090205481565b6103e76105b33660046157b9565b6111a7565b609e5461045a906001600160a01b031681565b6103e76105d93660046157e9565b6111b5565b61045a6105ec36600461531e565b6111c5565b6103e76105ff3660046154dc565b611251565b61060c611262565b6040516104139190615923565b6103e76106273660046154dc565b6113a4565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6106666106613660046154dc565b6113b5565b60405161041391906159a0565b610578611434565b610578611494565b6103e76106913660046159b7565b6114f4565b6106a96106a43660046154dc565b611a05565b6040516104139190615a5a565b6103e7611a79565b6104f76106cc366004615789565b6001805460ff9092161b9081161490565b6103e76106eb366004615adf565b611b45565b600154610409565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b61045a61072d36600461531e565b611bd7565b61073a611c01565b6040516104139190615b13565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6103e761077c366004615bc6565b611ce7565b6103e7611da7565b6103e7610797366004615bc6565b611d67565b6104096107aa366004615c7d565b611dbb565b6107b7611e05565b6040516104139190615d4a565b61042f6107d236600461531e565b611ed5565b60005461045a906201000090046001600160a01b031681565b61045a611ee0565b61073a611ef9565b60965461080d9060ff1681565b60405160ff9091168152602001610413565b6103e761082d366004615db4565b611fdf565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6104097f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6103e761088e366004615ead565b612317565b6107b761249b565b6104f761256b565b6108b66108b1366004615f3b565b612698565b6040516104139190615fe0565b6103e76108d1366004615789565b6096805460ff191660ff92909216919091179055565b6104097f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6103e761091c36600461601e565b612751565b609c54610409565b6103e7610937366004616104565b6127b8565b6103e761094a36600461615a565b6001600160a01b03909116600090815260996020526040902055565b6103e76109743660046162d9565b6127cb565b610578612acf565b6109f061098f366004615789565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610413565b6103e7610a323660046154dc565b612b2f565b60cf546104f79060ff1681565b6103e7610a5236600461531e565b612ba5565b610a86610a653660046154dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b60405161041391906163ad565b60015460029060049081161415610ac55760405162461bcd60e51b8152600401610abc906163bb565b60405180910390fd5b60005b82811015610ba3576000848483818110610ae457610ae46163f2565b9050602002016020810190610af991906154dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610b4457610b44615a22565b6002811115610b5557610b55615a22565b90525080519091506000610b6882612d01565b90506000610b7e826001600160c01b0316612d70565b9050610b8b858583612e3c565b50505050508080610b9b9061641e565b915050610ac8565b50505050565b6000838152609860205260408120805482919084908110610bcc57610bcc6163f2565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610cc65760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610abc565b602081015163ffffffff161580610cec5750806020015163ffffffff168463ffffffff16105b610d935760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610abc565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610dc857610dc8615a22565b14610e3b5760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610abc565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610e7c908490616439565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efe919061644c565b6001600160a01b0316336001600160a01b031614610f2e5760405162461bcd60e51b8152600401610abc90616469565b610f3781612f29565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906164b3565b610fc75760405162461bcd60e51b8152600401610abc906164d5565b600154818116146110405760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610e7c565b61109b60405180606001604052806060815260200160608152602001606081525090565b6110a987878787878761302e565b979650505050505050565b604080516060810182526000808252602082018190529181019190915260008381526098602052604090208054839081106110f1576110f16163f2565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b606060dc80548060200260200160405190810160405280929190818152602001828054801561119d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161117f575b5050505050905090565b6111b18282613545565b5050565b6111c0838383612e3c565b505050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f919061644c565b611259613705565b610f3781613764565b606060e3805480602002602001604051908101604052809291908181526020016000905b8282101561139b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156113845783829060005260206000200180546112f79061651d565b80601f01602080910402602001604051908101604052809291908181526020018280546113239061651d565b80156113705780601f1061134557610100808354040283529160200191611370565b820191906000526020600020905b81548152906001019060200180831161135357829003601f168201915b5050505050815260200190600101906112d8565b505050508152505081526020019060010190611286565b50505050905090565b6113ac613705565b610f37816137cd565b604080518082019091526000808252602082015261113f61142f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016114149291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120613836565b613884565b606060de80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b606060dd80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b6001546002906004908116141561151d5760405162461bcd60e51b8152600401610abc906163bb565b600061156584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506139149050565b90508483146115d65760405162461bcd60e51b81526020600482015260436024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610abc565b60005b838110156119fc5760008585838181106115f5576115f56163f2565b919091013560f81c91503690506000898985818110611616576116166163f2565b90506020028101906116289190616552565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b8919061659b565b63ffffffff1681146117545760405162461bcd60e51b81526020600482015260656024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610abc565b6000805b8281101561199b576000848483818110611774576117746163f2565b905060200201602081019061178991906154dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156117d4576117d4615a22565b60028111156117e5576117e5615a22565b905250805190915060006117f882612d01565b905060016001600160c01b03821660ff8b161c81161461187c5760405162461bcd60e51b815260206004820152604460248201819052600080516020616bd8833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610abc565b856001600160a01b0316846001600160a01b0316116119275760405162461bcd60e51b81526020600482015260676024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610abc565b5061198583838f8f8d908e600161193e91906165b8565b9261194b939291906165d0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e3c92505050565b5090925061199490508161641e565b9050611758565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806119f59061641e565b90506115d9565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff166002811115611a5f57611a5f615a22565b6002811115611a7057611a70615a22565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea91906164b3565b611b065760405162461bcd60e51b8152600401610abc906164d5565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611b4d613705565b609654829060ff90811690821610611bcd5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610abc565b6111c083836139a5565b609c8181548110611be757600080fd5b6000918252602090912001546001600160a01b0316905081565b606060e1805480602002602001604051908101604052809291908181526020016000905b8282101561139b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ccf57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611c915790505b50505050508152505081526020019060010190611c25565b609e546001600160a01b03163314611d675760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610abc565b6111c08383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b611daf613705565b611db96000613ec4565b565b6000611dfb7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001611414969594939291906165fa565b9695505050505050565b606060e0805480602002602001604051908101604052809291908181526020016000905b8282101561139b578382906000526020600020018054611e489061651d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e749061651d565b8015611ec15780601f10611e9657610100808354040283529160200191611ec1565b820191906000526020600020905b815481529060010190602001808311611ea457829003601f168201915b505050505081526020019060010190611e29565b600061113f82612d01565b6000611ef46064546001600160a01b031690565b905090565b606060e2805480602002602001604051908101604052809291908181526020016000905b8282101561139b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fc757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611f895790505b50505050508152505081526020019060010190611f1d565b6001805460009190811614156120075760405162461bcd60e51b8152600401610abc906163bb565b83891461208a5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610abc565b60006120963388613f16565b90506120f633828888808060200260200160405190810160405280939291908181526020016000905b828210156120eb576120dc6040830286013681900381019061667f565b815260200190600101906120bf565b505050505087614047565b600061213d33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061302e915050565b905060005b8b811015612308576000609760008f8f85818110612162576121626163f2565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b909104909316918101919091528451805191935090849081106121cf576121cf6163f2565b602002602001015163ffffffff1611156122f5576122708e8e848181106121f8576121f86163f2565b9050013560f81c60f81b60f81c8460400151848151811061221b5761221b6163f2565b6020026020010151338660200151868151811061223a5761223a6163f2565b60200260200101518d8d88818110612254576122546163f2565b90506040020180360381019061226a919061667f565b866141d4565b6122f5898984818110612285576122856163f2565b905060400201602001602081019061229d91906154dc565b8f8f85908660016122ae91906165b8565b926122bb939291906165d0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b50806123008161641e565b915050612142565b50505050505050505050505050565b60018054600091908116141561233f5760405162461bcd60e51b8152600401610abc906163bb565b600061234b3385613f16565b9050600061239433838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061302e915050565b51905060005b8881101561248f5760008a8a838181106123b6576123b66163f2565b919091013560f81c600081815260976020526040902054855191935063ffffffff1691508490849081106123ec576123ec6163f2565b602002602001015163ffffffff16111561247c5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610abc565b50806124878161641e565b91505061239a565b50505050505050505050565b606060df805480602002602001604051908101604052809291908181526020016000905b8282101561139b5783829060005260206000200180546124de9061651d565b80601f016020809104026020016040519081016040528092919081815260200182805461250a9061651d565b80156125575780601f1061252c57610100808354040283529160200191612557565b820191906000526020600020905b81548152906001019060200180831161253a57829003601f168201915b5050505050815260200190600101906124bf565b60cf54600090610100900460ff161561258d575060cf54610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126935760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161261b917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161669b565b60408051601f1981840301815290829052612635916166cc565b6000604051808303816000865af19150503d8060008114612672576040519150601f19603f3d011682016040523d82523d6000602084013e612677565b606091505b509150508080602001905181019061268f91906164b3565b9150505b919050565b6060600082516001600160401b038111156126b5576126b5615381565b6040519080825280602002602001820160405280156126de578160200160208202803683370190505b50905060005b83518110156127495761271085858381518110612703576127036163f2565b60200260200101516144a9565b828281518110612722576127226163f2565b63ffffffff90921660209283029190910190910152806127418161641e565b9150506126e4565b509392505050565b60018054600290811614156127785760405162461bcd60e51b8152600401610abc906163bb565b6111c03384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b6127c0613705565b6111c08383836145e5565b600054610100900460ff16158080156127eb5750600054600160ff909116105b806128055750303b158015612805575060005460ff166001145b6128685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff19166001179055801561288b576000805461ff0019166101001790555b8251845114801561289d575081518351145b6129075760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610abc565b61291089613ec4565b61291a86866147fc565b61292388613764565b61292c876137cd565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b8451811015612a7d57612a6b858281518110612a2a57612a2a6163f2565b6020026020010151858381518110612a4457612a446163f2565b6020026020010151858481518110612a5e57612a5e6163f2565b60200260200101516145e5565b80612a758161641e565b915050612a0c565b508015612ac4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b606060db80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b612b37613705565b6001600160a01b038116612b9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610f3781613ec4565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1c919061644c565b6001600160a01b0316336001600160a01b031614612c4c5760405162461bcd60e51b8152600401610abc90616469565b600154198119600154191614612cca5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610e7c565b60008181526098602052604081205480612d1e5750600092915050565b6000838152609860205260409020612d376001836166e8565b81548110612d4757612d476163f2565b600091825260209091200154600160401b90046001600160c01b03169392505050565b50919050565b6060600080612d7e846148e8565b61ffff166001600160401b03811115612d9957612d99615381565b6040519080825280601f01601f191660200182016040528015612dc3576020820181803683370190505b5090506000805b825182108015612ddb575061010081105b15612e32576001811b935085841615612e22578060f81b838381518110612e0457612e046163f2565b60200101906001600160f81b031916908160001a9053508160010191505b612e2b8161641e565b9050612dca565b5090949350505050565b600182602001516002811115612e5457612e54615a22565b14612e5e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe90612eb3908890869088906004016166ff565b6020604051808303816000875af1158015612ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef6919061672f565b90506001600160c01b03811615612f2257612f2285612f1d836001600160c01b0316612d70565b613a52565b5050505050565b6001600160a01b038116612fb75760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61305260405180606001604052806060815260200160608152602001606081525090565b600061309a86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506139149050565b905060006130a788612d01565b90506001600160c01b0382166131255760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610abc565b8082166001600160c01b0316156131db5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610abc565b6001600160c01b03818116908316176131f48982613545565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132249190616439565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561325e5761325e615a22565b14613377576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff1916908360028111156132b9576132b9615a22565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d9061330e908d90899060040161674c565b600060405180830381600087803b15801561332857600080fd5b505af115801561333c573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb27952906133c7908d908c908c906004016167c0565b600060405180830381600087803b1580156133e157600080fd5b505af11580156133f5573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506325504777915061344b908d908d908d908d906004016167e5565b6000604051808303816000875af115801561346a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134929190810190616871565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906134ef908c908c908c906004016168d4565b6000604051808303816000875af115801561350e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261353691908101906168ee565b84525050509695505050505050565b600082815260986020526040902054806135ea576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206136036001846166e8565b81548110613613576136136163f2565b600091825260209091200180549091504363ffffffff908116911614156136575780546001600160401b0316600160401b6001600160c01b03851602178155610ba3565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b3361370e611ee0565b6001600160a01b031614611db95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b600061113f613843614913565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806138b4600080516020616c1883398151915286616992565b90505b6138c081614a3a565b9093509150600080516020616c188339815191528283098314156138fa576040805180820190915290815260208101919091529392505050565b600080516020616c188339815191526001820890506138b7565b60008061392084614abc565b9050808360ff166001901b1161399e5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610abc565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115613a8657613a86615a22565b14613b055760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610abc565b609654600090613b1990859060ff16613914565b90506000613b2683612d01565b90506001600160c01b038216613ba45760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610abc565b613bbb6001600160c01b0383811690831681161490565b613c535760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610abc565b6001600160c01b0382811619821616613c6c8482613545565b6001600160c01b038116613d3b5760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015613cec57600080fd5b505af1158015613d00573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590613d89908a908a906004016169a6565b600060405180830381600087803b158015613da357600080fd5b505af1158015613db7573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150613e099087908a906004016169ca565b600060405180830381600087803b158015613e2357600080fd5b505af1158015613e37573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150613e899087908a906004016169ca565b600060405180830381600087803b158015613ea357600080fd5b505af1158015613eb7573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015613f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fa591906169e3565b90508061113f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484613fe6876113b5565b6040518463ffffffff1660e01b8152600401614004939291906169fc565b6020604051808303816000875af1158015614023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399e91906169e3565b6020808201516000908152609a909152604090205460ff16156140ed5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610abc565b42816040015110156141825760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610abc565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610ba3926001600160a01b03909216916141cd9188918891889190611dbb565b8351614c49565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156142545760405162461bcd60e51b81526020600482015260356024820152600080516020616bf883398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610abc565b8760ff16846000015160ff16146142d15760405162461bcd60e51b81526020600482015260476024820152600080516020616bf883398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610abc565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015614342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143669190616a7b565b90506143728185614e03565b6001600160601b0316866001600160601b0316116144055760405162461bcd60e51b81526020600482015260566024820152600080516020616bf883398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610abc565b61440f8885614e27565b6001600160601b0316816001600160601b031610612ac45760405162461bcd60e51b815260206004820152605c6024820152600080516020616bf883398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610abc565b600081815260986020526040812054815b8181101561453b5760016144ce82846166e8565b6144d891906166e8565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061450b5761450b6163f2565b60009182526020909120015463ffffffff161161452957505061113f565b806145338161641e565b9150506144ba565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610abc565b60965460ff1660c081106146595760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610abc565b614664816001616a98565b6096805460ff191660ff929092169190911790558061468381866139a5565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a77906146d690849088908890600401616abd565b600060405180830381600087803b1580156146f057600080fd5b505af1158015614704573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561476c57600080fd5b505af1158015614780573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156147e857600080fd5b505af1158015612ac4573d6000803e3d6000fd5b6000546201000090046001600160a01b031615801561482357506001600160a01b03821615155b6148a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26111b182612f29565b6000805b821561113f576148fd6001846166e8565b909216918061490b81616b36565b9150506148ec565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561496c57507f000000000000000000000000000000000000000000000000000000000000000046145b1561499657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020616c188339815191526003600080516020616c1883398151915286600080516020616c18833981519152888909090890506000614ab0827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020616c18833981519152614e41565b91959194509092505050565b600061010082511115614b455760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610abc565b8151614b5357506000919050565b60008083600081518110614b6957614b696163f2565b0160200151600160f89190911c81901b92505b8451811015614c4057848181518110614b9757614b976163f2565b0160200151600160f89190911c1b9150828211614c2c5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610abc565b91811791614c398161641e565b9050614b7c565b50909392505050565b6001600160a01b0383163b15614d6357604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90614c8990869086906004016169ca565b602060405180830381865afa158015614ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cca9190616b58565b6001600160e01b031916146111c05760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b0316614d778383614ef0565b6001600160a01b0316146111c05760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b602081015160009061271090614e1d9061ffff1685616b82565b61399e9190616bb1565b604081015160009061271090614e1d9061ffff1685616b82565b600080614e4c61525d565b614e5461527b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015614e9557614e97565bfe5b5082614ee55760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610abc565b505195945050505050565b6000806000614eff8585614f0c565b9150915061274981614f7c565b600080825160411415614f435760208301516040840151606085015160001a614f3787828585615137565b94509450505050614f75565b825160401415614f6d5760208301516040840151614f62868383615224565b935093505050614f75565b506000905060025b9250929050565b6000816004811115614f9057614f90615a22565b1415614f995750565b6001816004811115614fad57614fad615a22565b1415614ffb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b600281600481111561500f5761500f615a22565b141561505d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561507157615071615a22565b14156150ca5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b60048160048111156150de576150de615a22565b1415610f375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561516e575060009050600361521b565b8460ff16601b1415801561518657508460ff16601c14155b15615197575060009050600461521b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156151eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166152145760006001925092505061521b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161524160ff86901c601b6165b8565b905061524f87828885615137565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126152ab57600080fd5b5081356001600160401b038111156152c257600080fd5b6020830191508360208260051b8501011115614f7557600080fd5b600080602083850312156152f057600080fd5b82356001600160401b0381111561530657600080fd5b61531285828601615299565b90969095509350505050565b60006020828403121561533057600080fd5b5035919050565b63ffffffff81168114610f3757600080fd5b60008060006060848603121561535e57600080fd5b83359250602084013561537081615337565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156153b9576153b9615381565b60405290565b604080519081016001600160401b03811182821017156153b9576153b9615381565b604051601f8201601f191681016001600160401b038111828210171561540957615409615381565b604052919050565b600082601f83011261542257600080fd5b81356001600160401b0381111561543b5761543b615381565b61544e601f8201601f19166020016153e1565b81815284602083860101111561546357600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561549257600080fd5b81356001600160401b038111156154a857600080fd5b6154b484828501615411565b949350505050565b6001600160a01b0381168114610f3757600080fd5b8035612693816154bc565b6000602082840312156154ee57600080fd5b813561399e816154bc565b60008083601f84011261550b57600080fd5b5081356001600160401b0381111561552257600080fd5b602083019150836020828501011115614f7557600080fd5b60006060828403121561554c57600080fd5b615554615397565b905081356001600160401b0381111561556c57600080fd5b61557884828501615411565b825250602082013560208201526040820135604082015292915050565b60008060008060008060a087890312156155ae57600080fd5b86356155b9816154bc565b95506020870135945060408701356001600160401b03808211156155dc57600080fd5b6155e88a838b016154f9565b9096509450606089013591508082111561560157600080fd5b61560d8a838b01615411565b9350608089013591508082111561562357600080fd5b5061563089828a0161553a565b9150509295509295509295565b600081518084526020808501945080840160005b838110156156765781516001600160601b031687529582019590820190600101615651565b509495945050505050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b808310156156cc57835163ffffffff1682529284019260019290920191908401906156a6565b50838701519350601f199250828682030160408701526156ec818561563d565b93505050604085015181858403016060860152611dfb838261563d565b6000806040838503121561571c57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561576c5783516001600160a01b031683529284019291840191600101615747565b50909695505050505050565b803560ff8116811461269357600080fd5b60006020828403121561579b57600080fd5b61399e82615778565b6001600160c01b0381168114610f3757600080fd5b600080604083850312156157cc57600080fd5b8235915060208301356157de816157a4565b809150509250929050565b600080600083850360808112156157ff57600080fd5b843561580a816154bc565b93506040601f198201121561581e57600080fd5b506158276153bf565b6020850135815260408501356003811061584057600080fd5b6020820152915060608401356001600160401b0381111561586057600080fd5b61586c86828701615411565b9150509250925092565b60005b83811015615891578181015183820152602001615879565b83811115610ba35750506000910152565b600081518084526158ba816020860160208601615876565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156159165782840389526159048483516158a2565b988501989350908401906001016158ec565b5091979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561599257888303603f19018552815180516001600160a01b0316845287015187840187905261597f878501826158ce565b958801959350509086019060010161594a565b509098975050505050505050565b81518152602080830151908201526040810161113f565b600080600080604085870312156159cd57600080fd5b84356001600160401b03808211156159e457600080fd5b6159f088838901615299565b90965094506020870135915080821115615a0957600080fd5b50615a16878288016154f9565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110615a5657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191615a7590840182615a38565b5092915050565b803561ffff8116811461269357600080fd5b600060608284031215615aa057600080fd5b615aa8615397565b90508135615ab581615337565b8152615ac360208301615a7c565b6020820152615ad460408301615a7c565b604082015292915050565b60008060808385031215615af257600080fd5b615afb83615778565b9150615b0a8460208501615a8e565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015615bb757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015615ba25783516001600160e01b0319168252928b019260019290920191908b0190615b78565b50978a01979550505091870191600101615b3b565b50919998505050505050505050565b600080600060408486031215615bdb57600080fd5b8335615be6816154bc565b925060208401356001600160401b03811115615c0157600080fd5b615c0d868287016154f9565b9497909650939450505050565b60006001600160401b03821115615c3357615c33615381565b5060051b60200190565b600060408284031215615c4f57600080fd5b615c576153bf565b9050615c6282615778565b81526020820135615c72816154bc565b602082015292915050565b600080600080600060a08688031215615c9557600080fd5b8535615ca0816154bc565b945060208681013594506040808801356001600160401b03811115615cc457600080fd5b8801601f81018a13615cd557600080fd5b8035615ce8615ce382615c1a565b6153e1565b81815260069190911b8201840190848101908c831115615d0757600080fd5b928501925b82841015615d2d57615d1e8d85615c3d565b82529284019290850190615d0c565b999c989b5098996060810135995060800135979650505050505050565b60208152600061399e60208301846158ce565b60006101008284031215612d6a57600080fd5b60008083601f840112615d8257600080fd5b5081356001600160401b03811115615d9957600080fd5b6020830191508360208260061b8501011115614f7557600080fd5b60008060008060008060008060006101a08a8c031215615dd357600080fd5b89356001600160401b0380821115615dea57600080fd5b615df68d838e016154f9565b909b50995060208c0135915080821115615e0f57600080fd5b615e1b8d838e016154f9565b9099509750879150615e308d60408e01615d5d565b96506101408c0135915080821115615e4757600080fd5b615e538d838e01615d70565b90965094506101608c0135915080821115615e6d57600080fd5b615e798d838e0161553a565b93506101808c0135915080821115615e9057600080fd5b50615e9d8c828d0161553a565b9150509295985092959850929598565b6000806000806000806101608789031215615ec757600080fd5b86356001600160401b0380821115615ede57600080fd5b615eea8a838b016154f9565b90985096506020890135915080821115615f0357600080fd5b615f0f8a838b016154f9565b9096509450849150615f248a60408b01615d5d565b935061014089013591508082111561562357600080fd5b60008060408385031215615f4e57600080fd5b8235615f5981615337565b91506020838101356001600160401b03811115615f7557600080fd5b8401601f81018613615f8657600080fd5b8035615f94615ce382615c1a565b81815260059190911b82018301908381019088831115615fb357600080fd5b928401925b82841015615fd157833582529284019290840190615fb8565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561576c57835163ffffffff1683529284019291840191600101615ffc565b6000806020838503121561603157600080fd5b82356001600160401b0381111561604757600080fd5b615312858286016154f9565b6001600160601b0381168114610f3757600080fd5b600082601f83011261607957600080fd5b81356020616089615ce383615c1a565b82815260069290921b840181019181810190868411156160a857600080fd5b8286015b848110156160f957604081890312156160c55760008081fd5b6160cd6153bf565b81356160d8816154bc565b8152818501356160e781616053565b818601528352918301916040016160ac565b509695505050505050565b600080600060a0848603121561611957600080fd5b6161238585615a8e565b9250606084013561613381616053565b915060808401356001600160401b0381111561614e57600080fd5b61586c86828701616068565b6000806040838503121561616d57600080fd5b8235616178816154bc565b946020939093013593505050565b600082601f83011261619757600080fd5b813560206161a7615ce383615c1a565b828152606092830285018201928282019190878511156161c657600080fd5b8387015b858110156161e9576161dc8982615a8e565b84529284019281016161ca565b5090979650505050505050565b600082601f83011261620757600080fd5b81356020616217615ce383615c1a565b82815260059290921b8401810191818101908684111561623657600080fd5b8286015b848110156160f957803561624d81616053565b835291830191830161623a565b600082601f83011261626b57600080fd5b8135602061627b615ce383615c1a565b82815260059290921b8401810191818101908684111561629a57600080fd5b8286015b848110156160f95780356001600160401b038111156162bd5760008081fd5b6162cb8986838b0101616068565b84525091830191830161629e565b600080600080600080600080610100898b0312156162f657600080fd5b6162ff896154d1565b975061630d60208a016154d1565b965061631b60408a016154d1565b955061632960608a016154d1565b94506080890135935060a08901356001600160401b038082111561634c57600080fd5b6163588c838d01616186565b945060c08b013591508082111561636e57600080fd5b61637a8c838d016161f6565b935060e08b013591508082111561639057600080fd5b5061639d8b828c0161625a565b9150509295985092959890939650565b6020810161113f8284615a38565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561643257616432616408565b5060010190565b60208152600061399e60208301846158a2565b60006020828403121561645e57600080fd5b815161399e816154bc565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156164c557600080fd5b8151801515811461399e57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600181811c9082168061653157607f821691505b60208210811415612d6a57634e487b7160e01b600052602260045260246000fd5b6000808335601e1984360301811261656957600080fd5b8301803591506001600160401b0382111561658357600080fd5b6020019150600581901b3603821315614f7557600080fd5b6000602082840312156165ad57600080fd5b815161399e81615337565b600082198211156165cb576165cb616408565b500190565b600080858511156165e057600080fd5b838611156165ed57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b8181101561665f578651805160ff1684528601518516868401529585019591830191600101616635565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561669157600080fd5b61399e8383615c3d565b6001600160e01b03198316815281516000906166be816004850160208701615876565b919091016004019392505050565b600082516166de818460208701615876565b9190910192915050565b6000828210156166fa576166fa616408565b500390565b60018060a01b038416815282602082015260606040820152600061672660608301846158a2565b95945050505050565b60006020828403121561674157600080fd5b815161399e816157a4565b60018060a01b038316815260406020820152600082516060604084015261677660a08401826158a2565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906167269083018486616797565b60018060a01b0385168152836020820152606060408201526000611dfb606083018486616797565b600082601f83011261681e57600080fd5b8151602061682e615ce383615c1a565b82815260059290921b8401810191818101908684111561684d57600080fd5b8286015b848110156160f957805161686481616053565b8352918301918301616851565b6000806040838503121561688457600080fd5b82516001600160401b038082111561689b57600080fd5b6168a78683870161680d565b935060208501519150808211156168bd57600080fd5b506168ca8582860161680d565b9150509250929050565b838152604060208201526000616726604083018486616797565b6000602080838503121561690157600080fd5b82516001600160401b0381111561691757600080fd5b8301601f8101851361692857600080fd5b8051616936615ce382615c1a565b81815260059190911b8201830190838101908783111561695557600080fd5b928401925b828410156110a957835161696d81615337565b8252928401929084019061695a565b634e487b7160e01b600052601260045260246000fd5b6000826169a1576169a161697c565b500690565b6001600160a01b03831681526040602082018190526000906154b4908301846158a2565b8281526040602082015260006154b460408301846158a2565b6000602082840312156169f557600080fd5b5051919050565b6001600160a01b03841681526101608101616a24602083018580358252602090810135910152565b616a3e606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b600060208284031215616a8d57600080fd5b815161399e81616053565b600060ff821660ff84168060ff03821115616ab557616ab5616408565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015616b2657865180516001600160a01b031684528601518516868401529585019591830191600101616af6565b50909a9950505050505050505050565b600061ffff80831681811415616b4e57616b4e616408565b6001019392505050565b600060208284031215616b6a57600080fd5b81516001600160e01b03198116811461399e57600080fd5b60006001600160601b0380831681851681830481118215151615616ba857616ba8616408565b02949350505050565b60006001600160601b0380841680616bcb57616bcb61697c565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220b3f6e57104aa407254db800eff5e936266a970205ddb8160136d9868881f0f7164736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003330644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212201a140537fb31eecdc5656ce33237794da95d0695d236333d1f7c8b66ff2c15e464736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@\x81\x90R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80Tsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x81\x17\x90\x92U`\x1F\x80T\x82\x16s\xB3\xFB<\xC0\xD2L\x9F=\x05\xCDj\xB4\x06\x87\x10\x83\xEF\x942\xE1\x17\x90U`3\x80T\x82\x16s$L\x1D(\xB0X[j\x17\x1C\x08X\xD4\xE5Hh\xAD\xD7\x03\xB5\x17\x90U`4\x80T\x82\x16s\xBE\xB9\x86N=j\x1B\xA4N\x13\x1AF/c(\xF2\xD1\xD6\xD5M\x17\x90U`5\x80T\x82\x16s\x83=?M\x9D&\xF3\xAE}^\xF2\x96_\x81\xFET\x95\x04\x9AO\x17\x90U`6\x80T\x90\x91\x16s\xBC\xE5\x10\xBD\xC8|CI\"\xD91e)\x89&\x8C%;\x89u\x17\x90U\x7F\xA3\xE2\xA0\xC4\xCE k\x9Cfy\xACca\xC04\xF3\x1C\x88D\xAE1\x04\x10\x8FG\xED\x8CA:\xCF32`7\x81\x90U`\x01b^y\xB7`\xE0\x1B\x03\x19\x90\x92R`\x84\x91\x90\x91Rc\xFF\xA1\x86I`\xA4` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x03\xCFV[`8\x80T`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90U\x7F\x88,<}\xD8\xA5\xE5p\x9Bm\x99\x17iC\x10\x84\xD0\xEF\xBD#\xD1\xE9\xD6I\xDC\x7F\xB0\xBB\xFBU\xF1\xE7`9U`:\x80Tsi\x15\xA6xw\xA1x\xD5\x12\x9A(\xD2\xAF\x87\x1A\xC1\xFC\xEB?\xD3\x90\x83\x16\x17\x90U`;\x80Tss\xE2\xCE\x94\x9F\x15\xBE\x90\x1Fv\xB5OZET\xA6\xC8\xDC\xF59\x92\x16\x91\x90\x91\x17\x90U`@\x80Q\x80\x82\x01\x82R\x7F(^\xCCU\"N\xF4\t\xB2S2F\x96\xE7}\xEB\xAC\n\xC3\x1D\xE9R\xBD\x91\xC7r\xF7\x02\x1F\xD0\x1E\xF1\x80\x82R\x7F\x07\x96\xA4[\x15M\xA1$0\x11\xD1K]\xC7\xBA\xE5!\xE2NG\xD8\\\x94\xCB;h6\xF6\xFB\x99\xAE+` \x92\x83\x01\x81\x90R`=\x91\x90\x91U`>U\x81Q\x80\x83\x01\x90\x92R`\x0F\x80\x83Rn\x03c\x92\xE3c\x92\xE3c\x92\xE3c\x93\xA3C#`\x8C\x1B\x92\x90\x91\x01\x91\x82Rb\0\x02\x80\x91`?\x91b\0\x03)V[P`@\x80T`\x01`\x01`\xB0\x1B\x03\x19\x16u\xC0\0\x96:\x98\0\0\0\n\0\0\0\0\0\r\xE0\xB6\xB3\xA7d\0\0\x17\x81U`B\x80T`\x04`\xFF\x19\x90\x91\x16\x81\x17\x90\x91U`CU`D\x80T`\x01`\x01`@\x1B\x03\x19\x16d\n\0\0\0d\x17\x90U`\x01`\x01`\xC0\x1B\x03`MUQj\x1A\x19[\x1B\x1B\xC8\x1D\xDB\xDC\x9B\x19`\xAA\x1B` \x82\x01R`+\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `NU`E`OU4\x80\x15b\0\x03\"W`\0\x80\xFD[Pb\0\x04>V[\x82\x80Tb\0\x037\x90b\0\x04\x01V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x03[W`\0\x85Ub\0\x03\xA6V[\x82`\x1F\x10b\0\x03vW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x03\xA6V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x03\xA6W\x91\x82\x01[\x82\x81\x11\x15b\0\x03\xA6W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x03\x89V[Pb\0\x03\xB4\x92\x91Pb\0\x03\xB8V[P\x90V[[\x80\x82\x11\x15b\0\x03\xB4W`\0\x81U`\x01\x01b\0\x03\xB9V[`\0` \x82\x84\x03\x12\x15b\0\x03\xE2W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03\xFAW`\0\x80\xFD[\x93\x92PPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x04\x16W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x048WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[b\x01\xD6\x82\x80b\0\x04O`\09`\0\xF3\xFE`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\x02yW`\x005`\xE0\x1C\x80c{\xEFJ\xAC\x11b\0\x01UW\x80c\xB14Bq\x11b\0\0\xC7W\x80c\xE2\x0C\x9Fq\x11b\0\0\x86W\x80c\xE2\x0C\x9Fq\x14b\0\x05PW\x80c\xE3\xA8\xB3E\x14b\0\x05ZW\x80c\xE4\xB5 \x0B\x14b\0\x05nW\x80c\xEA\xB6mz\x14b\0\x05\x82W\x80c\xFAv&\xD4\x14b\0\x05\x96W`\0\x80\xFD[\x80c\xB14Bq\x14b\0\x04\xEFW\x80c\xB5P\x8A\xA9\x14b\0\x05\x03W\x80c\xBAAO\xA6\x14b\0\x05\rW\x80c\xDA\xD5D\xE0\x14b\0\x05(W\x80c\xE1\x82r\xC2\x14b\0\x05+\xEE;\x14b\0\x03\x1DW\x80c>G\x15\x8C\x14b\0\x031W\x80c>^<#\x14b\0\x03EW\x80c?r\x86\xF4\x14b\0\x03OW`\0\x80\xFD[\x80c\x082\xAFR\x14b\0\x02~W\x80c\x1E\xD7\x83\x1C\x14b\0\x02\xAFW\x80c$\x82\x94\xAB\x14b\0\x02\xC8W\x80c*\xDE8\x80\x14b\0\x02\xDCW\x80c9\x98\xFD\xD3\x14b\0\x02\xF5W[`\0\x80\xFD[` Tb\0\x02\x92\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[b\0\x02\xB9b\0\x05\xA4V[`@Qb\0\x02\xA6\x91\x90b\0%\xA9V[`/Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\xE6b\0\x06\x08V[`@Qb\0\x02\xA6\x91\x90b\0&&V[`,Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\"Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`1Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x1DTb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\xB9b\0\x07VV[b\0\x02\xB9b\0\x07\xB8V[`'Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`2Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x03\x98b\0\x03\x926`\x04b\0&\xECV[b\0\x08\x1AV[\0[`*Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x03\xBEg\r\xE0\xB6\xB3\xA7d\0\0\x81V[`@Q\x90\x81R` \x01b\0\x02\xA6V[b\0\x03\xD7b\0\x082V[`@Qb\0\x02\xA6\x91\x90b\0'\x11V[`)Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`.Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`0Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`&Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x04Tb\0\t\x1CV[`@Qb\0\x02\xA6\x91\x90b\0'\xC8V[`\x1ETb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`%Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x03\xD7b\0\t\xF6V[`4Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`$Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`+Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`5Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x03\x98b\0\n\xE0V[`\x1FTb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x04Tb\0\n\xF6V[b\0\x05\x17b\0\x0B\xD0V[`@Q\x90\x15\x15\x81R` \x01b\0\x02\xA6V[`3Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`#Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\xB9b\0\r\x07V[`!Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`-Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`6Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x07Tb\0\x05\x17\x90`\xFF\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x05\xFEW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x05\xDFW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x075W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x06\xA1\x90b\0(.V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x06\xCF\x90b\0(.V[\x80\x15b\0\x07 W\x80`\x1F\x10b\0\x06\xF4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x07 V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x07\x02W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x06\x7FV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x06,V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x05\xFEW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x05\xDFWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x05\xFEW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x05\xDFWPPPPP\x90P\x90V[b\0\x08%\x81b\0\riV[b\0\x08/b\0 \x10V[PV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\t\x03W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\x08\xC4W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x08VV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\tb\x90b\0(.V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\t\x90\x90b\0(.V[\x80\x15b\0\t\xE1W\x80`\x1F\x10b\0\t\xB5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\t\xE1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\t\xC3W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\t@V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\n\xC7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\n\x88W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\n\x1AV[b\0\n\xEAb\0![V[b\0\n\xF4b\0 \x10V[V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x0B<\x90b\0(.V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x0Bj\x90b\0(.V[\x80\x15b\0\x0B\xBBW\x80`\x1F\x10b\0\x0B\x8FWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x0B\xBBV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x0B\x9DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x0B\x1AV[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0\x0B\xF3WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\r\x02W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0\x0C\x84\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0(kV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x0C\xA0\x91b\0(\x9EV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\x0C\xDFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x0C\xE4V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0\x0C\xFE\x91\x90b\0(\xBCV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x05\xFEW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x05\xDFWPPPPP\x90P\x90V[`@Qb\0\rw\x90b\0#\xE4V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\x94W=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q\x80\x82\x01\x82R`=T\x80\x82R`>T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R `\xAB`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E&W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E;W=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x0EM\x90b\0#\xF1V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0EjW=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837PP`5T\x82Q\x92\x93P`\x01`\x01`\xA0\x1B\x03\x16\x91\x83\x91P`\0\x90b\0\x0E\xD0Wb\0\x0E\xD0b\0(\xF6V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`6T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x0E\xFE\x90b\0#\xFFV[b\0\x0F\x0B\x92\x91\x90b\0)\x0CV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F(W=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x0FW\x90b\0$\rV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0FtW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x0F\xA3\x90b\0$\x1BV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\xC0W=`\0\x80>=`\0\xFD[P`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1ET`@Q\x91\x16\x90b\0\x0F\xF1\x90b\0$)V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\x1EW=`\0\x80>=`\0\xFD[P`/\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x10M\x90b\0$7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10jW=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`.T`@Q\x91\x92\x16\x90b\0\x10\x9F\x90b\0$EV[`\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\x10\xD3W=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x90\x91\x16\x81\x17\x82U`\x1DT`\x1ET`@\x80Q3`$\x82\x01R\x91\x86\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Q\x91\x93\x16\x91\x90b\0\x11R\x90b\0$SV[b\0\x11`\x93\x92\x91\x90b\0)8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11}W=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x11\xAC\x90b\0$\x1BV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xC9W=`\0\x80>=`\0\xFD[P`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`.T`@Q\x91\x16\x90b\0\x11\xFA\x90b\0$aV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12'W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x1DT`\x1ET`@Q3`$\x82\x01R\x90\x84\x16`D\x82\x01R`\0`d\x82\x01R\x91\x92\x16\x90c\x05\xE5.\xCF`\xE2\x1B\x90`\x84\x01`@\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\x90Qb\0\x12\xB4\x90b\0$SV[b\0\x12\xC2\x93\x92\x91\x90b\0)8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12\xDFW=`\0\x80>=`\0\xFD[P`0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`-T`.T`/T`\x1FT`@Qc\r\x8E\xFEY`\xE2\x1B\x81R\x92\x85\x16`\x04\x84\x01R\x90\x84\x16`$\x83\x01R\x83\x16`D\x82\x01R\x91\x16\x90c6;\xF9d\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13SW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13hW=`\0\x80>=`\0\xFD[PPPP`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x90\xC5\x01;`@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\x13\xBDW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xD2W=`\0\x80>=`\0\xFD[PP`\x1CT`4T`@Qc\x03\">\xAB`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\x06D}V\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14 W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x145W=`\0\x80>=`\0\xFD[PP`!T`\x1DT`@Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94P\x91\x16\x91Pb\0\x14\\\x90b\0$SV[b\0\x14i\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x14\x86W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`\x1DT`@Q\x91\x83\x16\x92\x16\x90b\0\x14\xBD\x90b\0$SV[b\0\x14\xCA\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x14\xE7W=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`\x1DT`@Q\x91\x83\x16\x92\x16\x90b\0\x15\x1E\x90b\0$SV[b\0\x15+\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x15HW=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`\x1DT`@Q\x91\x83\x16\x92\x16\x90b\0\x15\x7F\x90b\0$SV[b\0\x15\x8C\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x15\xA9W=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`\x1DT`@Q\x91\x83\x16\x92\x16\x90b\0\x15\xE0\x90b\0$SV[b\0\x15\xED\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x16\nW=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x16fW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16{W=`\0\x80>=`\0\xFD[PP`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\x06D}V\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16\xC9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16\xDEW=`\0\x80>=`\0\xFD[PP`(T`.T`@Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94P\x91\x16\x91Pb\0\x17\x05\x90b\0$oV[`\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\x179W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x1DT`)T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x17\xA4W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x17\xB9W=`\0\x80>=`\0\xFD[PP`(T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x17\xDA\x91Pb\0$}V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x18\x07W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x82U`\x1DT`*T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x85\x16`\x04\x82\x01R\x92\x83\x01\x91\x90\x91R\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x18pW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x18\x85W=`\0\x80>=`\0\xFD[PP`(T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x18\xA6\x91Pb\0$\x8BV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x18\xD3W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x1DT`+T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x19>W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x19SW=`\0\x80>=`\0\xFD[PP`2T`(T`)T`@Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x95P\x91\x83\x16\x93P\x90\x91\x16\x90b\0\x19\x82\x90b\0$\x99V[`\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\x19\xBFW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x1DT`,T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1A*W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1A?W=`\0\x80>=`\0\xFD[PP`,T`4T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1A\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1A\xA2W=`\0\x80>=`\0\xFD[PP`*T`;T`@Qc\x06\xFAhO`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`=T`$\x82\x01R`>T`D\x82\x01R\x91\x16\x92Pc\xDFM\t\xE0\x91P`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1B\0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1B\x15W=`\0\x80>=`\0\xFD[PPPP`\0\x82`\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0\x1B:Wb\0\x1B:b\0(\xE0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x1BdW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0\x1B\xC3Wb\0\x1B\x81\x81`\x01b\0)\xAEV[\x82\x82\x81Q\x81\x10b\0\x1B\x96Wb\0\x1B\x96b\0(\xF6V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x1B\xBA\x81b\0)\xC9V[\x91PPb\0\x1BjV[P`\0\x83`\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0\x1B\xE5Wb\0\x1B\xE5b\0(\xE0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x1C\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x1C\x04W\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0\x1D\tW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x90\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x1C?W\x90PP\x82\x82\x81Q\x81\x10b\0\x1C|Wb\0\x1C|b\0(\xF6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80\x82`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01g\r\xE0\xB6\xB3\xA7d\0\0`\x01`\x01``\x1B\x03\x16\x81RP\x82\x82\x81Q\x81\x10b\0\x1C\xCBWb\0\x1C\xCBb\0(\xF6V[` \x02` \x01\x01Q`\0\x81Q\x81\x10b\0\x1C\xE8Wb\0\x1C\xE8b\0(\xF6V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x1D\0\x90b\0)\xC9V[\x91PPb\0\x1C V[P`,T`)T`*T`+T`@Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x1D<\x90b\0$\xA7V[`\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\x1D\x81W=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ub\0\x1D\xB0`A`\0b\0$\xB5V[`\0[\x84`\xFF\x16\x81\x10\x15b\0\x1E\x8DW`@\x80Q``\x81\x01\x82R\x81Tc\xFF\xFF\xFF\xFF`\x01`h\x1B\x82\x04\x81\x16\x83Ra\xFF\xFF`\x01`\x88\x1B\x83\x04\x81\x16` \x85\x01\x90\x81R`\x01`\x98\x1B\x90\x93\x04\x81\x16\x94\x84\x01\x94\x85R`A\x80T`\x01\x81\x01\x82U`\0\x91\x90\x91R\x93Q\x7F|\x97\x85\xE8$\x16\x15\xBC\x80A]\x89wY\x84\xA13}\x15\xDC\x1B\xF4\xCEP\xF4\x19\x88\xB2\xA2\xB36\xA7\x90\x94\x01\x80T\x93Q\x95Q\x82\x16f\x01\0\0\0\0\0\0\x02g\xFF\xFF\0\0\0\0\0\0\x19\x96\x90\x92\x16d\x01\0\0\0\0\x02e\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x94\x90\x92\x16\x93\x90\x93\x17\x91\x90\x91\x17\x92\x90\x92\x16\x17\x90U\x80b\0\x1E\x84\x81b\0)\xC9V[\x91PPb\0\x1D\xB3V[P`\x1DT`(T`\"T`4T`8T`:T`\x1ET`@Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x97c\x96#`\x9D\x97\x81\x16\x96\x81\x16\x95c\xDD\x82\x83\xF3`\xE0\x1B\x95b\0\x1E\xED\x95\x91\x83\x16\x94\x90\x83\x16\x93\x91\x83\x16\x92\x16\x90`\0\x90`A\x90\x8E\x90\x8E\x90`$\x01b\0*\xBFV[`@\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\x1F6\x93\x92\x91`\x04\x01b\0)8V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1FQW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1FfW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x1Fx\x90b\0$\xD5V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x1F\x95W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x1F\xF1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0 \x06W=`\0\x80>=`\0\xFD[PPPPPPPPV[\x7F*;?~\xF4\xF6)\x85\xAF1\x80\x9F\xDCS\x14\x83\xE5\xF1\xCDg\xAA\x1B\xCF\x0F\x8A\xC0\xD1~\x15\x8A\xA9g`QU\x7F\x0B\xCB+h\xB6\xC6\x8AZ\xEA\x7F\xE7[TF\xC4\xCAA\x04a\xFA\"l$\x87\xD0~\xB2\xC5\x04c\x9C\xB5`PU~\xC8t\xE4\xFC\xFB\x88\xD5\xC9\x8A\x02@\xBCo\x7F7\xD4_\"&\xCA\x14s\x17\xB3\xA2\xB7$=\xDBl\x1B`SU\x7F\t@\xE6Dx\xDBQ\xFEc\x0C\xC5@\xDB\xEA\xBE\xA3M\x07*T\xFD|t0V\xE1\x81t\xF9\xA1\xB6N`RU\x7F\r\xAE\x15\xDA\xC5Q\xF0\x1E\"6N\xCE,\xC54\xF9Z\xC4\x95\x9A\x1A\xC1d@Y\xE7\xCB\x94r_\x0F\xAB`UU\x7F\x0B\xCBo\0\xAF\xD0\xAF\xD7+\xFEK\xC4\x9F\xC9j\xDF\xF8?~Kq\xAF\x90*\x10\xE9\x14\x1F\x15n\xAC7`TU\x7F\nR\x0Fi\xF5\xCC\xC7\xC2\xF5GN\xA9\x89\xD9\xA8\x18}\x9C\xCC\x05\x8B8}\x1AG\xE1\x13u3\xD5\xF3\xD7`WU\x7F/j\t\xAC\xA6\x11\xE6/<\xAE\xB1\xBA\x02\x91\x8E\xD1\xA7\x14$\xB7Y\xABr&\xBE\xCB\x10\x858\nf\x17`VU`OT`NTb\0!M\x91\x90b\0!F\x90b\0!sV[\x90b\0\"\x0CV[\x80Q`XU` \x01Q`YUV[`@Tb\0\n\xF4\x90`\x01`\xA8\x1B\x90\x04`\xFF\x16b\0\riV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80b\0!\xA6`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R\x86b\0+\x96V[\x90P[b\0!\xB4\x81b\0\"\xADV[\x90\x93P\x91P`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R\x82\x83\t\x83\x14\x15b\0!\xF0W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R`\x01\x82\x08\x90Pb\0!\xA9V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\"*b\0$\xE3V[\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\x15b\0\"_Wb\0\"aV[\xFE[P\x80b\0\"\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`\0\x80\x80`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R`\x03`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R\x86`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0b\0#)\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` b\x01\xD6-\x839\x81Q\x91Rb\0#5V[\x91\x95\x91\x94P\x90\x92PPPV[`\0\x80b\0#Bb\0%\x01V[b\0#Lb\0%\x1FV[` \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\x15b\0\"_WP\x82b\0#\xD9W`@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\x01b\0\"\x9CV[PQ\x95\x94PPPPPV[`\x94\x80b\0+\xBA\x839\x01\x90V[a\x07\x18\x80b\0,N\x839\x01\x90V[a\x07x\x80b\x003f\x839\x01\x90V[a\x15\x8C\x80b\0:\xDE\x839\x01\x90V[a\x04\x06\x80b\0Pj\x839\x01\x90V[a\x1Bn\x80b\0Tp\x839\x01\x90V[a\x17\x8E\x80b\0o\xDE\x839\x01\x90V[a\x0E\xFE\x80b\0\x87l\x839\x01\x90V[a\x0E\x81\x80b\0\x96j\x839\x01\x90V[a\x1Fx\x80b\0\xA4\xEB\x839\x01\x90V[a:j\x80b\0\xC4c\x839\x01\x90V[a!\xD2\x80b\0\xFE\xCD\x839\x01\x90V[a\x13\xEC\x80b\x01 \x9F\x839\x01\x90V[a\x16\xE0\x80b\x014\x8B\x839\x01\x90V[ap\x9D\x80b\x01Kk\x839\x01\x90V[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90b\0\x08/\x91\x90b\0%=V[a\x1A%\x80b\x01\xBC\x08\x839\x01\x90V[`@Q\x80``\x01`@R\x80`\x03\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[[\x80\x82\x11\x15b\0%_W\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81U`\x01\x01b\0%>V[P\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0%\x9EW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0%wV[P\x94\x95\x94PPPPPV[` \x81R`\0b\0%\xBE` \x83\x01\x84b\0%cV[\x93\x92PPPV[`\0[\x83\x81\x10\x15b\0%\xE2W\x81\x81\x01Q\x83\x82\x01R` \x01b\0%\xC8V[\x83\x81\x11\x15b\0%\xF2W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Rb\0&\x12\x81` \x86\x01` \x86\x01b\0%\xC5V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0&\xDCW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0&\xC5W`_\x19\x89\x85\x03\x01\x83Rb\0&\xB2\x84\x86Qb\0%\xF8V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0&\x93V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0&MV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x82\x84\x03\x12\x15b\0&\xFFW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14b\0%\xBEW`\0\x80\xFD[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0'\xB9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0'\xA3W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0'wV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0'9V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0(!W`?\x19\x88\x86\x03\x01\x84Rb\0(\x0E\x85\x83Qb\0%\xF8V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0'\xEFV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0(CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0(eWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90b\0(\x90\x81`\x04\x85\x01` \x87\x01b\0%\xC5V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qb\0(\xB2\x81\x84` \x87\x01b\0%\xC5V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0(\xCFW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14b\0%\xBEW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0)!`@\x83\x01\x85b\0%cV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0)f\x90\x83\x01\x84b\0%\xF8V[\x95\x94PPPPPV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15b\0)\xC4Wb\0)\xC4b\0)\x98V[P\x01\x90V[`\0`\0\x19\x82\x14\x15b\0)\xE0Wb\0)\xE0b\0)\x98V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0%\x9EW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0)\xFBV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0\x80[\x86\x81\x10\x15b\0*\xB1W\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15b\0*\x9BW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x8A\x01Q`\x01`\x01``\x1B\x03\x16\x8A\x84\x01R\x92\x89\x01\x92`@\x90\x92\x01\x91`\x01\x01b\0*`V[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01b\0*AV[P\x92\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\x8AT\x93P\x83\x85Ra\x01 \x88\x01\x95P\x8A`\0R\x82`\0 \x94P`\0[\x84\x81\x10\x15b\0+WW\x85Tc\xFF\xFF\xFF\xFF\x81\x16\x88Ra\xFF\xFF\x81\x86\x1C\x81\x16\x86\x8A\x01R`0\x91\x90\x91\x1C\x16\x83\x88\x01R\x95\x81\x01\x95`\x01\x95\x86\x01\x95\x01b\0+\x1BV[PPPPPP\x82\x81\x03`\xC0\x84\x01Rb\0+q\x81\x86b\0)\xE7V[\x90P\x82\x81\x03`\xE0\x84\x01Rb\0+\x87\x81\x85b\0*\"V[\x9B\x9APPPPPPPPPPPV[`\0\x82b\0+\xB4WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x15l\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\xBBW`\x005`\xE0\x1C\x80cmp\xF7\xAE\x11a\x01\x82W\x80c\xBBE\xFE\xF2\x11a\0\xE9W\x80c\xCB\xB5\xD4\xDB\x11a\0\xA2W\x80c\xDB\xE3[\xD8\x11a\0|W\x80c\xDB\xE3[\xD8\x14a\x06\x9FW\x80c\xEE\xA9\x06K\x14a\x06\xD9W\x80c\xF1ar\xB0\x14a\x07\x18W\x80c\xF6\x98\xDA%\x14a\x02\xE9W`\0\x80\xFD[\x80c\xCB\xB5\xD4\xDB\x14a\x06\nW\x80c\xCF\x80\x87>\x14a\x06CW\x80c\xDA\x8B\xE8d\x14a\x06gW`\0\x80\xFD[\x80c\xBBE\xFE\xF2\x14a\x03\xC4W\x80c\xBCV\xFFf\x14a\x05YW\x80c\xC4H\xFE\xB8\x14a\x05lW\x80c\xC4\x887Z\x14a\x03cW\x80c\xC5\xE4\x80\xDB\x14a\x05tW\x80c\xC9KQ\x11\x14a\x05\xFCW`\0\x80\xFD[\x80c\x91\x04\xC3\x19\x11a\x01;W\x80c\x91\x04\xC3\x19\x14a\x05(W\x80c\x96V\x82q\x14a\x03wW\x80c\x99\xBE\x81\xC8\x14a\x05/W\x80c\xA1\x06\x0C\x88\x14a\x05AW\x80c\xA1x\x84\x84\x14a\x03cW\x80c\xA9\x8F\xB3U\x14a\x05/W`\0\x80\xFD[\x80cmp\xF7\xAE\x14a\x04\x99W\x80ct\xD8\x98\xD7\x14a\x03wW\x80cw\x8EU\xF3\x14a\x04\xBCW\x80c\x7FT\x80q\x14a\x04\xE7W\x80c\x8D\x90\xCDV\x14a\x04\xF5W\x80c\x90\x04\x13G\x14a\x05\x08W`\0\x80\xFD[\x80c)\xC7}O\x11a\x02&W\x80cY{6\xDA\x11a\x01\xDFW\x80cY{6\xDA\x14a\x04)W\x80c_\x96o\x14\x14a\x03\xD2W\x80c`\xD7\xFA\xED\x14a\x047W\x80cc[\xBD\x10\x14a\x04LW\x80ce\xDA\x12d\x14a\x04]W\x80cg\xF2\x92\xC7\x14a\x04\x86W`\0\x80\xFD[\x80c)\xC7}O\x14a\x03cW\x80c3@C\x96\x14a\x03\xACW\x80c7H#\xB5\x14a\x03\xC4W\x80c<\xDE\xB5\xE0\x14a\x03\xD2W\x80c>(9\x1D\x14a\x03\xFBW\x80cC7s\x82\x14a\x02\xE9W`\0\x80\xFD[\x80c\x15\"\xBF\x02\x11a\x02xW\x80c\x15\"\xBF\x02\x14a\x03OW\x80c\x16\x92\x83e\x14a\x03cW\x80c\x1B\xBC\xE0\x91\x14a\x03wW\x80c\x1D6\x96\xB7\x14a\x03\x8EW\x80c `kp\x14a\x02\xE9W\x80c(\xA5s\xAE\x14a\x03AW`\0\x80\xFD[\x80c\x04I\xCA9\x14a\x02\xC0W\x80c\x04\xA4\xF9y\x14a\x02\xE9W\x80c\x0B\x9FHz\x14a\x02\xF0W\x80c\r\xD8\xDD\x02\x14a\x03\tW\x80c\x0FX\x9EY\x14a\x03,W\x80c\x13-Ig\x14a\x03AW[`\0\x80\xFD[a\x02\xD6a\x02\xCE6`\x04a\txV[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0a\x02\xD6V[a\x02\xD6a\x02\xFE6`\x04a\t\xDEV[`\0\x95\x94PPPPPV[a\x03\x1Fa\x03\x176`\x04a\txV[``\x92\x91PPV[`@Qa\x02\xE0\x91\x90a\n9V[a\x03?a\x03:6`\x04a\n\xD6V[PPPV[\0[a\x03?a\x03:6`\x04a\x0B)V[a\x03?a\x03]6`\x04a\x0BjV[PPPPV[a\x02\xD6a\x03q6`\x04a\x0B\xD5V[P`\0\x90V[a\x02\xD6a\x03\x856`\x04a\x0B)V[`\0\x93\x92PPPV[a\x03\x9Ca\x03q6`\x04a\x0B\xD5V[`@Q\x90\x15\x15\x81R` \x01a\x02\xE0V[a\x03?a\x03\xBA6`\x04a\x0B\xF9V[PPPPPPPPV[a\x03\x9Ca\x02\xCE6`\x04a\x0C\xBCV[a\x03\xE3a\x03\xE06`\x04a\x0B\xD5V[\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xE0V[a\x03\x9Ca\x04\t6`\x04a\x0B\xD5V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x02` R`@\x90 T\x16\x15\x15\x90V[a\x02\xD6a\x03q6`\x04a\x0E~V[a\x03?a\x04E6`\x04a\x0FlV[PPPPPV[a\x03?a\x04Z6`\x04a\x0F\xF7V[PV[a\x03\xE3a\x04k6`\x04a\x0B\xD5V[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03?a\x04\x946`\x04a\x10\x10V[a\x07&V[a\x03\x9Ca\x04\xA76`\x04a\x0B\xD5V[`\0` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xD6a\x04\xCA6`\x04a\x10xV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03?a\x04E6`\x04a\x11YV[a\x03?a\x05\x036`\x04a\x11\xE9V[a\x07\xA0V[a\x05\x1Ba\x05\x166`\x04a\x12:V[a\x08\x06V[`@Qa\x02\xE0\x91\x90a\x12\xC4V[`\0a\x03\xE3V[a\x03?a\x05=6`\x04a\x12\xD7V[PPV[a\x02\xD6a\x05O6`\x04a\x13\x0CV[`\0\x94\x93PPPPV[a\x03?a\x05g6`\x04a\x13RV[a\x08\xE8V[a\xC4\xE0a\x02\xD6V[a\x05\xC6a\x05\x826`\x04a\x0B\xD5V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x80\x83R` \x83\x01R`\0\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\x02\xE0V[a\x02\xD6a\x05O6`\x04a\x13\xB6V[a\x03?a\x06\x186`\x04a\x13\xEEV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[a\x06Ya\x06Q6`\x04a\x0B\xD5V[P``\x90\x81\x90V[`@Qa\x02\xE0\x92\x91\x90a\x14#V[a\x03\x1Fa\x06u6`\x04a\x0B\xD5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U``\x90V[a\x03?a\x06\xAD6`\x04a\x0B)V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[a\x03?a\x06\xE76`\x04a\x14\x83V[PP3`\0\x90\x81R`\x02` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x03?a\x04Z6`\x04a\x14\xDBV[`@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\x86\x16\x90c\xC6\x08\xC7\xF3\x90`\x84\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x81W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x95W=`\0\x80>=`\0\xFD[PPPPPPPPPV[`@Qc\x8C\x80\xD4\xE5`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x83\x90R\x85\x16\x90c\x8C\x80\xD4\xE5\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xBAW=`\0\x80>=`\0\xFD[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08#Wa\x08#a\x0C\xE8V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08LW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x08\xE0W`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x08\x8AWa\x08\x8Aa\x14\xF7V[` \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\x08\xC5Wa\x08\xC5a\x14\xF7V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x08\xD9\x81a\x15\rV[\x90Pa\x08RV[P\x93\x92PPPV[`@Qc\xC4b>\xA1`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x84\x81\x16`$\x83\x01R\x83\x81\x16`D\x83\x01R`d\x82\x01\x83\x90R\x86\x16\x90c\xC4b>\xA1\x90`\x84\x01a\x07gV[`\0\x80\x83`\x1F\x84\x01\x12a\t?W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\tVW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\tqW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\t\x8BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA1W`\0\x80\xFD[a\t\xAD\x85\x82\x86\x01a\t-V[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04ZW`\0\x80\xFD[\x805a\t\xD9\x81a\t\xB9V[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\t\xF6W`\0\x80\xFD[\x855a\n\x01\x81a\t\xB9V[\x94P` \x86\x015a\n\x11\x81a\t\xB9V[\x93P`@\x86\x015a\n!\x81a\t\xB9V[\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\x15a\nqW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nUV[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15a\n\x8FW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\n\xA7W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xBEW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\tqW`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15a\n\xEBW`\0\x80\xFD[a\n\xF5\x85\x85a\n}V[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0B\x10W`\0\x80\xFD[a\x0B\x1C\x86\x82\x87\x01a\n\x95V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B>W`\0\x80\xFD[\x835a\x0BI\x81a\t\xB9V[\x92P` \x84\x015a\x0BY\x81a\t\xB9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0B\x80W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0B\x97W`\0\x80\xFD[a\x0B\xA3\x88\x83\x89\x01a\t-V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0B\xBCW`\0\x80\xFD[Pa\x0B\xC9\x87\x82\x88\x01a\t-V[\x95\x98\x94\x97P\x95PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\xE7W`\0\x80\xFD[\x815a\x0B\xF2\x81a\t\xB9V[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\x80\x89\x8B\x03\x12\x15a\x0C\x15W`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0C,W`\0\x80\xFD[a\x0C8\x8C\x83\x8D\x01a\t-V[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15a\x0CQW`\0\x80\xFD[a\x0C]\x8C\x83\x8D\x01a\t-V[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15a\x0CvW`\0\x80\xFD[a\x0C\x82\x8C\x83\x8D\x01a\t-V[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15a\x0C\x9BW`\0\x80\xFD[Pa\x0C\xA8\x8B\x82\x8C\x01a\t-V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xCFW`\0\x80\xFD[\x825a\x0C\xDA\x81a\t\xB9V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\r Wa\r a\x0C\xE8V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\r Wa\r a\x0C\xE8V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\rpWa\rpa\x0C\xE8V[`@R\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xD9W`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\r\xA5Wa\r\xA5a\x0C\xE8V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\xC0W`\0\x80\xFD[\x815` a\r\xD5a\r\xD0\x83a\r\x8CV[a\rHV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\r\xF4W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0E\x18W\x805a\x0E\x0B\x81a\t\xB9V[\x83R\x91\x83\x01\x91\x83\x01a\r\xF8V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a\x0E4W`\0\x80\xFD[\x815` a\x0EDa\r\xD0\x83a\r\x8CV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x0EcW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0E\x18W\x805\x83R\x91\x83\x01\x91\x83\x01a\x0EgV[`\0` \x82\x84\x03\x12\x15a\x0E\x90W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0E\xA7W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0E\xBBW`\0\x80\xFD[a\x0E\xC3a\x0C\xFEV[a\x0E\xCC\x83a\t\xCEV[\x81Ra\x0E\xDA` \x84\x01a\t\xCEV[` \x82\x01Ra\x0E\xEB`@\x84\x01a\t\xCEV[`@\x82\x01R``\x83\x015``\x82\x01Ra\x0F\x06`\x80\x84\x01a\rxV[`\x80\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a\x0F\x1DW`\0\x80\xFD[a\x0F)\x87\x82\x86\x01a\r\xAFV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\x0FAW`\0\x80\xFD[a\x0FM\x87\x82\x86\x01a\x0E#V[`\xC0\x83\x01RP\x95\x94PPPPPV[\x805\x80\x15\x15\x81\x14a\t\xD9W`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a\x0F\x84W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\x9BW`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15a\x0F\xAFW`\0\x80\xFD[\x90\x95P` \x87\x015\x90\x80\x82\x11\x15a\x0F\xC5W`\0\x80\xFD[Pa\x0F\xD2\x88\x82\x89\x01a\t-V[\x90\x95P\x93PP`@\x86\x015\x91Pa\x0F\xEB``\x87\x01a\x0F\\V[\x90P\x92\x95P\x92\x95\x90\x93PV[`\0` \x82\x84\x03\x12\x15a\x10\tW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\x10(W`\0\x80\xFD[\x855a\x103\x81a\t\xB9V[\x94P` \x86\x015a\x10C\x81a\t\xB9V[\x93P`@\x86\x015a\x10S\x81a\t\xB9V[\x92P``\x86\x015\x91P`\x80\x86\x015a\x10j\x81a\t\xB9V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x80`@\x83\x85\x03\x12\x15a\x10\x8BW`\0\x80\xFD[\x825a\x10\x96\x81a\t\xB9V[\x91P` \x83\x015a\x10\xA6\x81a\t\xB9V[\x80\x91PP\x92P\x92\x90PV[`\0`@\x82\x84\x03\x12\x15a\x10\xC3W`\0\x80\xFD[a\x10\xCBa\r&V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10\xE4W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x10\xF8W`\0\x80\xFD[\x815` \x82\x82\x11\x15a\x11\x0CWa\x11\x0Ca\x0C\xE8V[a\x11\x1E`\x1F\x83\x01`\x1F\x19\x16\x82\x01a\rHV[\x92P\x81\x83R\x86\x81\x83\x86\x01\x01\x11\x15a\x114W`\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\x15a\x11qW`\0\x80\xFD[\x855a\x11|\x81a\t\xB9V[\x94P` \x86\x015a\x11\x8C\x81a\t\xB9V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xA8W`\0\x80\xFD[a\x11\xB4\x89\x83\x8A\x01a\x10\xB1V[\x94P``\x88\x015\x91P\x80\x82\x11\x15a\x11\xCAW`\0\x80\xFD[Pa\x11\xD7\x88\x82\x89\x01a\x10\xB1V[\x95\x98\x94\x97P\x92\x95`\x80\x015\x93\x92PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x11\xFFW`\0\x80\xFD[\x845a\x12\n\x81a\t\xB9V[\x93P` \x85\x015a\x12\x1A\x81a\t\xB9V[\x92P`@\x85\x015a\x12*\x81a\t\xB9V[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x12MW`\0\x80\xFD[\x825a\x12X\x81a\t\xB9V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12sW`\0\x80\xFD[a\x12\x7F\x85\x82\x86\x01a\r\xAFV[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x12\xB9W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x12\x9DV[P\x94\x95\x94PPPPPV[` \x81R`\0a\x0B\xF2` \x83\x01\x84a\x12\x89V[`\0\x80` \x83\x85\x03\x12\x15a\x12\xEAW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\0W`\0\x80\xFD[a\t\xAD\x85\x82\x86\x01a\n\x95V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\"W`\0\x80\xFD[\x845a\x13-\x81a\t\xB9V[\x93P` \x85\x015a\x13=\x81a\t\xB9V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\x13jW`\0\x80\xFD[\x855a\x13u\x81a\t\xB9V[\x94P` \x86\x015a\x13\x85\x81a\t\xB9V[\x93P`@\x86\x015a\x13\x95\x81a\t\xB9V[\x92P``\x86\x015a\x13\xA5\x81a\t\xB9V[\x94\x97\x93\x96P\x91\x94`\x80\x015\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\xCCW`\0\x80\xFD[\x845a\x13\xD7\x81a\t\xB9V[\x93P` \x85\x015\x92P`@\x85\x015a\x12*\x81a\t\xB9V[`\0\x80`@\x83\x85\x03\x12\x15a\x14\x01W`\0\x80\xFD[\x825a\x14\x0C\x81a\t\xB9V[\x91Pa\x14\x1A` \x84\x01a\x0F\\V[\x90P\x92P\x92\x90PV[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15a\x14eW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x14@V[PPP\x83\x81\x03\x82\x85\x01Ra\x14y\x81\x86a\x12\x89V[\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14\x98W`\0\x80\xFD[\x835a\x14\xA3\x81a\t\xB9V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBEW`\0\x80\xFD[a\x14\xCA\x86\x82\x87\x01a\x10\xB1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15a\x14\xEDW`\0\x80\xFD[a\x0B\xF2\x83\x83a\n}V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x15/WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x1D\xD1y\x0F\xDA\xFF\xC91\xF9\xA1,\x9CJ\xE6\x97f\xCE\x139\xD2w\xEB\xD3v\xB8\xD1\x96\x9F\x99<\xF1\xDEdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xE6\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xA9\x8F\xB3U\x11a\0[W\x80c\xA9\x8F\xB3U\x14a\x01\x03W\x80c\xD7\x9A\xCE\xAB\x14a\x01\x11W\x80c\xECv\xF4B\x14a\x01\x18W\x80c\xF6\x98\xDA%\x14a\x01\x11W`\0\x80\xFD[\x80c7H#\xB5\x14a\0\x8DW\x80c\x99&\xEE}\x14a\0\xB8W\x80c\xA1\x06\x0C\x88\x14a\0\xCCW\x80c\xA3d\xF4\xDA\x14a\0\xF2W[`\0\x80\xFD[a\0\xA3a\0\x9B6`\x04a\x01BV[`\0\x92\x91PPV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCAa\0\xC66`\x04a\x01\xDCV[PPV[\0[a\0\xE4a\0\xDA6`\x04a\x02\xC1V[`\0\x94\x93PPPPV[`@Q\x90\x81R` \x01a\0\xAFV[a\0\xCAa\x01\x006`\x04a\x03\x03V[PV[a\0\xCAa\0\xC66`\x04a\x03%V[`\0a\0\xE4V[a\0\xCAa\x01\x006`\x04a\x03\x97V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01=W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01UW`\0\x80\xFD[a\x01^\x83a\x01&V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA5Wa\x01\xA5a\x01lV[`@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\x01\xD4Wa\x01\xD4a\x01lV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xEFW`\0\x80\xFD[a\x01\xF8\x83a\x01&V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x16W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x02*W`\0\x80\xFD[a\x022a\x01\x82V[\x825\x82\x81\x11\x15a\x02AW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x02RW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x02dWa\x02da\x01lV[a\x02v`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\x01\xABV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x02\x8CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x02\xD7W`\0\x80\xFD[a\x02\xE0\x85a\x01&V[\x93Pa\x02\xEE` \x86\x01a\x01&V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x03\x15W`\0\x80\xFD[a\x03\x1E\x82a\x01&V[\x93\x92PPPV[`\0\x80` \x83\x85\x03\x12\x15a\x038W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03PW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x03dW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x03sW`\0\x80\xFD[\x86` \x82\x85\x01\x01\x11\x15a\x03\x85W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x03\xA9W`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB4\xCE#\xC3.\x90\xDD\x0C\xCE\xE3h\x1A\xA8\xC5u\xC39m0W\x9FP\xB6J\xAE\xB20\xA9\x80\x8A\x9BBdsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15b\0\0.W`\0\x80\xFD[P`@Qb\0\x1Bn8\x03\x80b\0\x1Bn\x839\x81\x01`@\x81\x90Rb\0\0Q\x91b\0\x02QV[b\0\0^\x81`\0b\0\0eV[Pb\0\x02\x83V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15b\0\0\x87WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[b\0\x01\x0FW`@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\x01[`@Q\x80\x91\x03\x90\xFD[`\x1D\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\xA2b\0\x01T\x82b\0\x01XV[PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x01\xE8W`@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\x01b\0\x01\x06V[`\x1CT`@\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`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0` \x82\x84\x03\x12\x15b\0\x02dW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02|W`\0\x80\xFD[\x93\x92PPPV[a\x18\xDB\x80b\0\x02\x93`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x020W`\x005`\xE0\x1C\x80c\x84\xD8\x10b\x11a\x01.W\x80c\xB5P\x8A\xA9\x11a\0\xABW\x80c\xD9\x91\nV\x11a\0oW\x80c\xD9\x91\nV\x14a\x05\xEFW\x80c\xE2\x0C\x9Fq\x14a\x06;W\x80c\xF6\x84\x8D$\x14a\x06PW\x80c\xFAv&\xD4\x14a\x06kW\x80c\xFA\xBC\x1C\xBC\x14a\x06\x85W`\0\x80\xFD[\x80c\xB5P\x8A\xA9\x14a\x05\xC5W\x80c\xBAAO\xA6\x14a\x05\xDAW\x80c\xBE\xFF\xBB\x89\x14a\x05\xEFW\x80c\xBF\xE3JA\x14a\x06\x0EW\x80c\xC2\xC5\x1C@\x14a\x05\xEFW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xF2W\x80c\x9BNF4\x14a\x05]W\x80c\x9B\xA0bu\x14a\x05rW\x80c\xA3\x84\x06\xA3\x14a\x05\x93W\x80c\xA6\xA5\t\xBE\x14a\x05\xB1W\x80c\xB14Bq\x14a\x03FW`\0\x80\xFD[\x80c\x84\xD8\x10b\x14a\x03FW\x80c\x85\"l\x81\x14a\x04\xDEW\x80c\x88o\x11\x95\x14a\x05\0W\x80c\x91\x04\xC3\x19\x14a\x05 W\x80c\x91j\x17\xC6\x14a\x05HW`\0\x80\xFD[\x80c>^<#\x11a\x01\xBCW\x80cZ\xC8j\xB7\x11a\x01\x80W\x80cZ\xC8j\xB7\x14a\x04\x11W\x80c\\\x97Z\xBB\x14a\x04QW\x80c`\xF4\x06+\x14a\x04fW\x80cf\xD9\xA9\xA0\x14a\x04\x9CW\x80ct\xCD\xD7\x98\x14a\x04\xBEW`\0\x80\xFD[\x80c>^<#\x14a\x03\x91W\x80c?r\x86\xF4\x14a\x03\xA6W\x80cD\xE7\x1C\x80\x14a\x03\xBBW\x80cF=\xB08\x14a\x03\xDEW\x80cY\\jg\x14a\x03\xFCW`\0\x80\xFD[\x80c)+{+\x11a\x02\x03W\x80c)+{+\x14a\x02\xCCW\x80c*\xDE8\x80\x14a\x03\x04W\x80c8{\x13\0\x14a\x03&W\x80c9\xB7\x0E8\x14a\x03FW\x80c:Y\x1F\x08\x14a\x03ZW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x025W\x80c\x10\xD6z/\x14a\x02hW\x80c\x13d9\xDD\x14a\x02\x8AW\x80c\x1E\xD7\x83\x1C\x14a\x02\xAAW[`\0\x80\xFD[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a\x13'V[\x91\x90PV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02tW`\0\x80\xFD[Pa\x02\x88a\x02\x836`\x04a\x13SV[a\x06\xA5V[\0[4\x80\x15a\x02\x96W`\0\x80\xFD[Pa\x02\x88a\x02\xA56`\x04a\x13pV[a\x07^V[4\x80\x15a\x02\xB6W`\0\x80\xFD[Pa\x02\xBFa\x08\x9DV[`@Qa\x02_\x91\x90a\x13\x89V[4\x80\x15a\x02\xD8W`\0\x80\xFD[P`NTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02_V[4\x80\x15a\x03\x10W`\0\x80\xFD[Pa\x03\x19a\x08\xFFV[`@Qa\x02_\x91\x90a\x14\x06V[4\x80\x15a\x032W`\0\x80\xFD[Pa\x02\x88a\x03A6`\x04a\x14\xE1V[PPPV[4\x80\x15a\x03RW`\0\x80\xFD[P`\0a\x02\xECV[4\x80\x15a\x03fW`\0\x80\xFD[Pa\x02\x88a\x03u6`\x04a\x13'V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`P` R`@\x90 UV[4\x80\x15a\x03\x9DW`\0\x80\xFD[Pa\x02\xBFa\nAV[4\x80\x15a\x03\xB2W`\0\x80\xFD[Pa\x02\xBFa\n\xA1V[4\x80\x15a\x03\xC7W`\0\x80\xFD[P`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a\x02_V[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02\x88a\x03\xF96`\x04a\x15\"V[PV[4\x80\x15a\x04\x08W`\0\x80\xFD[Pa\x02\x88a\x0B\x01V[4\x80\x15a\x04\x1DW`\0\x80\xFD[Pa\x04Aa\x04,6`\x04a\x15LV[`\x1DT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02_V[4\x80\x15a\x04]W`\0\x80\xFD[P`\x1DTa\x02UV[4\x80\x15a\x04rW`\0\x80\xFD[Pa\x02Ua\x04\x816`\x04a\x13SV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`P` R`@\x90 T\x90V[4\x80\x15a\x04\xA8W`\0\x80\xFD[Pa\x04\xB1a\x0B\xC8V[`@Qa\x02_\x91\x90a\x15oV[4\x80\x15a\x04\xCAW`\0\x80\xFD[P`OTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xEAW`\0\x80\xFD[Pa\x04\xF3a\x0C\xAEV[`@Qa\x02_\x91\x90a\x16\"V[4\x80\x15a\x05\x0CW`\0\x80\xFD[P`\x1CTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x05,W`\0\x80\xFD[Pa\x02\xECs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[4\x80\x15a\x05TW`\0\x80\xFD[Pa\x04\xB1a\r~V[a\x02\x88a\x05k6`\x04a\x16\xD8V[PPPPPV[4\x80\x15a\x05~W`\0\x80\xFD[Pa\x02\xECa\x05\x8D6`\x04a\x13SV[P`\0\x90V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x02\xECa\x05\xAE6`\x04a\x13SV[\x90V[4\x80\x15a\x05\xBDW`\0\x80\xFD[P`\0a\x02UV[4\x80\x15a\x05\xD1W`\0\x80\xFD[Pa\x04\xF3a\x0EdV[4\x80\x15a\x05\xE6W`\0\x80\xFD[Pa\x04Aa\x0F4V[4\x80\x15a\x05\xFBW`\0\x80\xFD[Pa\x02\x88a\x06\n6`\x04a\x13'V[PPV[4\x80\x15a\x06\x1AW`\0\x80\xFD[Pa\x02Ua\x06)6`\x04a\x13SV[`P` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x06GW`\0\x80\xFD[Pa\x02\xBFa\x10_V[4\x80\x15a\x06\\W`\0\x80\xFD[Pa\x04Aa\x05\x8D6`\x04a\x13SV[4\x80\x15a\x06wW`\0\x80\xFD[P`\x07Ta\x04A\x90`\xFF\x16\x81V[4\x80\x15a\x06\x91W`\0\x80\xFD[Pa\x02\x88a\x06\xA06`\x04a\x13pV[a\x10\xBFV[`\x1C`\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\x06\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x1C\x91\x90a\x17LV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07UW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17iV[`@Q\x80\x91\x03\x90\xFD[a\x03\xF9\x81a\x12\x1BV[`\x1CT`@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\x07\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xCA\x91\x90a\x17\xB3V[a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17\xD5V[`\x1DT\x81\x81\x16\x14a\x08_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\x07LV[`\x1D\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[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\n!W\x83\x82\x90`\0R` `\0 \x01\x80Ta\t\x94\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xC0\x90a\x18\x1DV[\x80\x15a\n\rW\x80`\x1F\x10a\t\xE2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\rV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\xF0W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\tuV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\t#V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[`\x1CT`@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\x0BIW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Bm\x91\x90a\x17\xB3V[a\x0B\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17\xD5V[`\0\x19`\x1D\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[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0C\x96W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0CXW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0B\xECV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0C\xF1\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\r\x1D\x90a\x18\x1DV[\x80\x15a\rjW\x80`\x1F\x10a\r?Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\rjV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\rMW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0C\xD2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0ELW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\x0EW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r\xA2V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0E\xA7\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0E\xD3\x90a\x18\x1DV[\x80\x15a\x0F W\x80`\x1F\x10a\x0E\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0F\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x88V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x0FVWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x02PW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x0F\xE4\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x18XV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xFE\x91a\x18\x89V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x10;W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10@V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x10X\x91\x90a\x17\xB3V[\x93\x92PPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[`\x1C`\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\x11\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x116\x91\x90a\x17LV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11fW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17iV[`\x1DT\x19\x81\x19`\x1DT\x19\x16\x14a\x11\xE4W`@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\x07LV[`\x1D\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\x08\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xA9W`@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\x07LV[`\x1CT`@\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`\x1C\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\x03\xF9W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x13:W`\0\x80\xFD[\x825a\x13E\x81a\x13\x12V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x13eW`\0\x80\xFD[\x815a\x10X\x81a\x13\x12V[`\0` \x82\x84\x03\x12\x15a\x13\x82W`\0\x80\xFD[P5\x91\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x13\xCAW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x13\xA5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x13\xF1W\x81\x81\x01Q\x83\x82\x01R` \x01a\x13\xD9V[\x83\x81\x11\x15a\x14\0W`\0\x84\x84\x01R[PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x14\xD4W`?\x19\x88\x86\x03\x01\x84R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x86R\x86\x01Q`@\x87\x87\x01\x81\x90R\x81Q\x90\x87\x01\x81\x90R\x90\x87\x01\x90```\x05\x82\x90\x1B\x88\x01\x81\x01\x91\x90\x88\x01\x90`\0[\x81\x81\x10\x15a\x14\xBDW\x89\x84\x03`_\x19\x01\x83R\x84Q\x80Q\x80\x86Ra\x14\x9E\x81\x8E\x88\x01\x8F\x85\x01a\x13\xD6V[\x95\x8C\x01\x95`\x1F\x01`\x1F\x19\x16\x94\x90\x94\x01\x8B\x01\x93P\x91\x8A\x01\x91`\x01\x01a\x14wV[P\x91\x97PPP\x93\x86\x01\x93P\x90\x85\x01\x90`\x01\x01a\x14-V[P\x92\x97\x96PPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14\xF6W`\0\x80\xFD[\x835a\x15\x01\x81a\x13\x12V[\x92P` \x84\x015a\x15\x11\x81a\x13\x12V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x154W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x10XW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15^W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x10XW`\0\x80\xFD[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x16\x13W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x15\xFEW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x15\xD4V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x15\x97V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x14\xD4W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x16p\x81\x89\x89\x01\x8A\x85\x01a\x13\xD6V[`\x1F\x01`\x1F\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x16IV[`\0\x80\x83`\x1F\x84\x01\x12a\x16\xA1W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xB9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x16\xD1W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x16\xF0W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17\x08W`\0\x80\xFD[a\x17\x14\x89\x83\x8A\x01a\x16\x8FV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\x17-W`\0\x80\xFD[Pa\x17:\x88\x82\x89\x01a\x16\x8FV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x17^W`\0\x80\xFD[\x81Qa\x10X\x81a\x13\x12V[` \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\x17\xC5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10XW`\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[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x181W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x18RWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x18{\x81`\x04\x85\x01` \x87\x01a\x13\xD6V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x18\x9B\x81\x84` \x87\x01a\x13\xD6V[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xA9\x92\x95*NB\xD9\n\x82\xE2b<\x98-\x04\xB1*\x8E\xE4E\xAD\x98\nu\xEF\x01\xC7\xD2qP\xF7\x7FdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x17n\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02SW`\x005`\xE0\x1C\x80c\x94\xF6I\xDD\x11a\x01FW\x80c\xC4b>\xA1\x11a\0\xC3W\x80c\xE2C\xDC<\x11a\0\x87W\x80c\xE2C\xDC<\x14a\x05\xA9W\x80c\xE2\xA8\x18\xC5\x14a\x05\xBCW\x80c\xE7\xA0P\xAA\x14a\x05\xCFW\x80c\xF2\xFD\xE3\x8B\x14a\x05\xE6W\x80c\xF6\x98\xDA%\x14a\x05\xF9W\x80c\xFA\xBC\x1C\xBC\x14a\x06\0W`\0\x80\xFD[\x80c\xC4b>\xA1\x14a\x05PW\x80c\xC6\x08\xC7\xF3\x14a\x05dW\x80c\xC6eg\x02\x14a\x05rW\x80c\xDF[5G\x14a\x05\x83W\x80c\xDF\\\xF7#\x14a\x05\x96W`\0\x80\xFD[\x80c\x9F\0\xFA$\x11a\x01\nW\x80c\x9F\0\xFA$\x14a\x04\xEFW\x80c\xA1x\x84\x84\x14a\x05\x01W\x80c\xA1\xCAx\x0B\x14a\x05!W\x80c\xB14Bq\x14a\x05/W\x80c\xB5\xD8\xB5\xB8\x14a\x05BW`\0\x80\xFD[\x80c\x94\xF6I\xDD\x14a\x04LW\x80c\x96\x7F\xC0\xD2\x14a\x04mW\x80c\x9A\x95\x19\xE0\x14a\x04\x80W\x80c\x9BM\xA0=\x14a\x04\x93W\x80c\x9B~/w\x14a\x04\xB6W`\0\x80\xFD[\x80c\\\x97Z\xBB\x11a\x01\xD4W\x80c\x88o\x11\x95\x11a\x01\x98W\x80c\x88o\x11\x95\x14a\x03\xF9W\x80c\x8B\x8A\xAC<\x14a\x04\x0CW\x80c\x8C\x80\xD4\xE5\x14a\x04!W\x80c\x8D\xA5\xCB[\x14a\x044W\x80c\x91\x04\xC3\x19\x14a\x04EW`\0\x80\xFD[\x80c\\\x97Z\xBB\x14a\x03\x9DW\x80cc\xFC\xA8\x88\x14a\x03\xA5W\x80cf<\x1D\xE4\x14a\x03\xB8W\x80cqP\x18\xA6\x14a\x03\xDBW\x80cz~\r\x92\x14a\x03\xE3W`\0\x80\xFD[\x80c6;\xF9d\x11a\x02\x1BW\x80c6;\xF9d\x14a\x02\xD7W\x80cFe\xBC\xDA\x14a\x03$W\x80cNZBc\x14a\x03OW\x80cY\\jg\x14a\x03bW\x80cZ\xC8j\xB7\x14a\x03jW`\0\x80\xFD[\x80c\x01\xF8 \xB2\x14a\x02XW\x80c\r9\x08\xF4\x14a\x02tW\x80c\x10\xD6z/\x14a\x02\x95W\x80c\x13d9\xDD\x14a\x02\xAAW\x80c2\xE8\x9A\xCE\x14a\x02\xBDW[`\0\x80\xFD[a\x02a`\xD2T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x88a\x02\x826`\x04a\x10nV[P``\x90V[`@Qa\x02k\x91\x90a\x10\xD6V[a\x02\xA8a\x02\xA36`\x04a\x10nV[a\x06\x13V[\0[a\x02\xA8a\x02\xB86`\x04a\x10\xE9V[a\x06\xCCV[a\x02aa\x02\xCB6`\x04a\x11\x18V[`\0\x96\x95PPPPPPV[a\x02\xA8a\x02\xE56`\x04a\x12\x13V[`\xC9\x80T`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\xCB\x80T\x92\x85\x16\x92\x82\x16\x92\x90\x92\x17\x90\x91U`\xCA\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`\xCATa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02kV[a\x02\xA8a\x03]6`\x04a\x12lV[a\x08\x0BV[a\x02\xA8a\x08yV[a\x03\x8Da\x03x6`\x04a\x12\xA5V[`\x98T`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02kV[`\x98Ta\x02aV[a\x02aa\x03\xB36`\x04a\x12\xC8V[a\t@V[a\x03\x8Da\x03\xC66`\x04a\x10nV[`\xCF` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xA8a\tqV[a\x02aa\x03\xF16`\x04a\x12\xF4V[`\0\x92\x91PPV[`\x97Ta\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02aa\x04\x1A6`\x04a\x10nV[P`\xD2T\x90V[a\x02\xA8a\x04/6`\x04a\x13\"V[PPPV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x037V[`\0a\x037V[a\x04_a\x04Z6`\x04a\x10nV[a\t\x85V[`@Qa\x02k\x92\x91\x90a\x13cV[`\xCCTa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\xA8a\x04\x8E6`\x04a\x10\xE9V[`\xD2UV[a\x03\x8Da\x04\xA16`\x04a\x10nV[`\xD1` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xA8a\x04\xC46`\x04a\x12lV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R`\xCF` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[a\x02\xA8a\x04\xFD6`\x04a\x12\xC8V[PPV[a\x02aa\x05\x0F6`\x04a\x10nV[`\xD0` R`\0\x90\x81R`@\x90 T\x81V[a\x02\xA8a\x04/6`\x04a\x13\xBAV[`\xCBTa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\xA8a\x04\xFD6`\x04a\x14;V[a\x02\xA8a\x05^6`\x04a\x14}V[PPPPV[a\x02\xA8a\x05^6`\x04a\x14\xCEV[a\x02\xA8a\x05\x806`\x04a\x10nV[PV[a\x02\xA8a\x05\x916`\x04a\x15!V[a\n^V[`\xC9Ta\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x037a\x05\xB76`\x04a\x12\xC8V[a\x0BOV[a\x02\xA8a\x05\xCA6`\x04a\x15\x8DV[a\x0B\x87V[a\x02aa\x05\xDD6`\x04a\x13\"V[`\0\x93\x92PPPV[a\x02\xA8a\x05\xF46`\x04a\x10nV[a\x0C1V[`\0a\x02aV[a\x02\xA8a\x06\x0E6`\x04a\x10\xE9V[a\x0C\xA7V[`\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\x06fW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x8A\x91\x90a\x16\x10V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16-V[`@Q\x80\x91\x03\x90\xFD[a\x05\x80\x81a\x0E\x03V[`\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\x07\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x078\x91\x90a\x16wV[a\x07TW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16\x94V[`\x98T\x81\x81\x16\x14a\x07\xCDW`@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\xBAV[`\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[`@\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`\xD1` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[`\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\x08\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xE5\x91\x90a\x16wV[a\t\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16\x94V[`\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[`\xCE` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\t\\W`\0\x80\xFD[\x90`\0R` `\0 \x01`\0\x91P\x91PPT\x81V[a\tya\x0E\xFAV[a\t\x83`\0a\x0FTV[V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x83R\x92\x81\x90 \x83T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x85\x94\x90\x93\x91\x84\x91\x83\x01\x82\x82\x80\x15a\t\xFCW` \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\t\xDEW[PPPPP\x91P\x80\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\nNW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\n:W[PPPPP\x90P\x91P\x91P\x91P\x91V[`\0[\x83\x81\x10\x15a\x0BHW`\x01`\xCF`\0\x87\x87\x85\x81\x81\x10a\n\x81Wa\n\x81a\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\n\x96\x91\x90a\x10nV[`\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\x82\x82\x82\x81\x81\x10a\n\xD0Wa\n\xD0a\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\n\xE5\x91\x90a\x16\xF2V[`\xD1`\0\x87\x87\x85\x81\x81\x10a\n\xFBWa\n\xFBa\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\x0B\x10\x91\x90a\x10nV[`\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\x90Ua\x0BA\x81a\x17\x0FV[\x90Pa\naV[PPPPPV[`\xCD` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x0BkW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[\x82\x81\x14a\x0B\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FStrategyManagerMock: length mism`D\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\xCD` R`@\x90 a\x0C\x05\x90\x85\x85a\x0F\xA6V[P`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\xCE` R`@\x90 a\x0C)\x90\x83\x83a\x10\tV[PPPPPPV[a\x0C9a\x0E\xFAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0C\x9EW`@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\xBAV[a\x05\x80\x81a\x0FTV[`\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\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\x16\x10V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16-V[`\x98T\x19\x81\x19`\x98T\x19\x16\x14a\r\xCCW`@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\xBAV[`\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\x08\0V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0E\x91W`@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\xBAV[`\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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x83W`@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\xBAV[`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[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15a\x0F\xF9W\x91` \x02\x82\x01[\x82\x81\x11\x15a\x0F\xF9W\x81T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x845\x16\x17\x82U` \x90\x92\x01\x91`\x01\x90\x91\x01\x90a\x0F\xC6V[Pa\x10\x05\x92\x91Pa\x10DV[P\x90V[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15a\x0F\xF9W\x91` \x02\x82\x01[\x82\x81\x11\x15a\x0F\xF9W\x825\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x10)V[[\x80\x82\x11\x15a\x10\x05W`\0\x81U`\x01\x01a\x10EV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05\x80W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x10\x80W`\0\x80\xFD[\x815a\x10\x8B\x81a\x10YV[\x93\x92PPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x10\xCBW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x10\xA6V[P\x94\x95\x94PPPPPV[` \x81R`\0a\x10\x8B` \x83\x01\x84a\x10\x92V[`\0` \x82\x84\x03\x12\x15a\x10\xFBW`\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\x111W`\0\x80\xFD[\x865a\x11<\x81a\x10YV[\x95P` \x87\x015a\x11L\x81a\x10YV[\x94P`@\x87\x015\x93P``\x87\x015a\x11c\x81a\x10YV[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\x87W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x11\x9BW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xADWa\x11\xADa\x11\x02V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x11\xD5Wa\x11\xD5a\x11\x02V[\x81`@R\x82\x81R\x8C` \x84\x87\x01\x01\x11\x15a\x11\xEEW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x12(W`\0\x80\xFD[\x835a\x123\x81a\x10YV[\x92P` \x84\x015a\x12C\x81a\x10YV[\x91P`@\x84\x015a\x12S\x81a\x10YV[\x80\x91PP\x92P\x92P\x92V[\x80\x15\x15\x81\x14a\x05\x80W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x12\x7FW`\0\x80\xFD[\x825a\x12\x8A\x81a\x10YV[\x91P` \x83\x015a\x12\x9A\x81a\x12^V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\xB7W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x10\x8BW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xDBW`\0\x80\xFD[\x825a\x12\xE6\x81a\x10YV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x13\x07W`\0\x80\xFD[\x825a\x13\x12\x81a\x10YV[\x91P` \x83\x015a\x12\x9A\x81a\x10YV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x137W`\0\x80\xFD[\x835a\x13B\x81a\x10YV[\x92P` \x84\x015a\x13R\x81a\x10YV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`@\x81R`\0a\x13v`@\x83\x01\x85a\x10\x92V[\x82\x81\x03` \x84\x81\x01\x91\x90\x91R\x84Q\x80\x83R\x85\x82\x01\x92\x82\x01\x90`\0[\x81\x81\x10\x15a\x13\xADW\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x13\x91V[P\x90\x97\x96PPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x13\xCFW`\0\x80\xFD[\x835a\x13\xDA\x81a\x10YV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x14\x01W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\x19W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x144W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x14NW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14eW`\0\x80\xFD[a\x14q\x85\x82\x86\x01a\x13\xEFV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\x93W`\0\x80\xFD[\x845a\x14\x9E\x81a\x10YV[\x93P` \x85\x015a\x14\xAE\x81a\x10YV[\x92P`@\x85\x015a\x14\xBE\x81a\x10YV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\xE4W`\0\x80\xFD[\x845a\x14\xEF\x81a\x10YV[\x93P` \x85\x015a\x14\xFF\x81a\x10YV[\x92P`@\x85\x015\x91P``\x85\x015a\x15\x16\x81a\x10YV[\x93\x96\x92\x95P\x90\x93PPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x157W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15OW`\0\x80\xFD[a\x15[\x88\x83\x89\x01a\x13\xEFV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x15tW`\0\x80\xFD[Pa\x15\x81\x87\x82\x88\x01a\x13\xEFV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x15\xA5W`\0\x80\xFD[\x855a\x15\xB0\x81a\x10YV[\x94P` \x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\xCDW`\0\x80\xFD[a\x15\xD9\x89\x83\x8A\x01a\x13\xEFV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\x15\xF2W`\0\x80\xFD[Pa\x15\xFF\x88\x82\x89\x01a\x13\xEFV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x16\"W`\0\x80\xFD[\x81Qa\x10\x8B\x81a\x10YV[` \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\x16\x89W`\0\x80\xFD[\x81Qa\x10\x8B\x81a\x12^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[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x17\x04W`\0\x80\xFD[\x815a\x10\x8B\x81a\x12^V[`\0`\0\x19\x82\x14\x15a\x171WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xCA\xFF\xCC\x84\xA5i\x7F\xE1\x9F\xAF\x08\x1E\xA8\xBB.\x8E=\xBE\x95\x99\xCF\x80r\xA3\x8B\xB6=\xC8L\t2|dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\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\x079\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07iW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x84a\x07\x85\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[\x83\x80a\x08\x17W`@\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\x01a\x06\x98V[\x82\x81\x14a\x08\x8CW`@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\x98V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\t\xDDW\x85\x85\x82\x81\x81\x10a\x08\xBAWa\x08\xBAa5\xFCV[\x90P` \x02\x01` \x81\x01\x90a\x08\xCF\x91\x90a6\x12V[\x82\x89\x89\x84\x81\x81\x10a\x08\xE2Wa\x08\xE2a5\xFCV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF9Wa\x08\xF9a5\xFCV[\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\tbWa\tba5\xFCV[\x90P` \x02\x015\x81T\x81\x10a\tyWa\tya5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\xA0Wa\t\xA0a5\xFCV[\x90P` \x02\x01` \x81\x01\x90a\t\xB5\x91\x90a6\x12V[`@Qa\t\xC3\x92\x91\x90a-\x13V[`@Q\x80\x91\x03\x90\xA2\x80a\t\xD5\x81a6CV[\x91PPa\x08\xA0V[PPPPPPPPPV[``\x803`\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\n3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\nMWa\nMa/\xF1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\nvW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x93Wa\n\x93a/\xF1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xBCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\xA5W`\0\x87\x87\x83\x81\x81\x10a\n\xDEWa\n\xDEa5\xFCV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x0BfW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x98V[`\0\x80a\x0Bs\x83\x8Da hV[\x91P\x91P\x80a\x0C\x10W`@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\x98V[`\0a\x0C\x1D\x8C\x85\x85a\"fV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0C2Wa\x0C2a5\xFCV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0C\\\x84\x82a\x1E\xEEV[\x86\x86\x81Q\x81\x10a\x0CnWa\x0Cna5\xFCV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x9D\x90a6CV[\x91PPa\n\xC2V[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\rEW`\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\x0C\xECV[PPPP\x90P[\x92\x91PPV[`\0\x80a\r_\x84\x84a\x1C=V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\r\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xED\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0E\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x0E9\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x0EUW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[\x81Q\x80a\x0E\xCAW`@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\x98V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x11\x82W\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\x0F)Wa\x0F)a5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x0FAWa\x0FAa5\xFCV[`\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\x0F\x9FWa\x0F\x9Fa5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB7Wa\x0F\xB7a5\xFCV[`\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\x0F\xF7\x90`\x01\x90a6\xD0V[\x81T\x81\x10a\x10\x07Wa\x10\x07a5\xFCV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x10$Wa\x10$a5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x10=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18+\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18[W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x18w\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x18\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[a\x06\x19\x83\x83a%\x14V[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\x18\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\0[\x81\x81\x10\x15a\x19\xC4W`\0\x83\x83\x83\x81\x81\x10a\x19\x04Wa\x19\x04a5\xFCV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x19\x94W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[`\0a\x19\xA2\x86\x83`\0a\"fV[\x90Pa\x19\xAE\x82\x82a\x1E\xEEV[PPP\x80\x80a\x19\xBC\x90a6CV[\x91PPa\x18\xE8V[PPPPV[\x7F\0\0\0\0\0\0\0\0\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(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AL\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x1A\x98\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[a\x06\x19\x83\x83a%}V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\xE5Wa\x1A\xE5a5\xFCV[`\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\r_\x81\x85a)\xC0V[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1B]\x91a6\xD0V[\x81T\x81\x10a\x1BmWa\x1Bma5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x12\xF2\x84\x84\x84a+:V[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1B\xCDWa\x1B\xCDa5\xFCV[`\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\x1C$\x81\x86a)\xC0V[`@\x01Q\x95\x94PPPPPV[`\0a\x12\xF5\x83\x83a,\xA0V[`@\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\x1C\x96W\x91Pa\rL\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\xBD`\x01\x84a6\xD0V[\x81T\x81\x10a\x1C\xCDWa\x1C\xCDa5\xFCV[`\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\rL\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1DI\x85\x85\x85a+:V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1D_Wa\x1D_a5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1EIW`@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\x98V[a\x1ES\x83\x82a%}V[a\x1E]\x83\x83a%\x14V[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\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\x1F\x12\x90\x84a6\xD0V[\x81T\x81\x10a\x1F\"Wa\x1F\"a5\xFCV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a\x1FQWT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\rL\x90PV[\x80T`\0\x90a\x1Fp\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a$\xE6V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1F\xADW\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua _V[\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[`\0\x80`\0\x80a \x87\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 \xFC\x92\x8C\x92\x01a6\xFDV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a!\x19W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra!A\x91\x90\x81\x01\x90a7\\V[\x90P`\0[\x83\x81\x10\x15a\"2W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a!rWa!ra5\xFCV[`\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!\xC0Wa!\xC0a5\xFCV[` \x02` \x01\x01Q\x11\x15a\" Wg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a!\xF7Wa!\xF7a5\xFCV[` \x02` \x01\x01Qa\"\t\x91\x90a7\xECV[a\"\x13\x91\x90a8\x0BV[a\"\x1D\x90\x86a8-V[\x94P[\x80a\"*\x81a6CV[\x91PPa!FV[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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a#*W`\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$\x8CV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a#Q`\x01\x84a6\xD0V[\x81T\x81\x10a#aWa#aa5\xFCV[`\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#\x9AW`\0\x93PPPPa\x12\xF5V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\xD4W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua$\x8AV[\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$\xDC\x82\x85a,\xA0V[\x96\x95PPPPPPV[`\0\x80\x82\x12\x15a%\nWa$\xF9\x82a8XV[a%\x03\x90\x84a8uV[\x90Pa\rLV[a%\x03\x82\x84a8-V[`\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%\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a9\x0C\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a&\x05\x83\x83a8\x9DV[\x11\x15a&uW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a9\x0C\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\x98V[`\0[\x82\x81\x10\x15a)\xB9W`\0[a&\x8D\x82\x84a8\x9DV[\x81\x10\x15a'nW\x84\x82\x81Q\x81\x10a&\xA6Wa&\xA6a5\xFCV[` \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&\xE5Wa&\xE5a5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a'\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a9\x0C\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[\x80a'f\x81a6CV[\x91PPa&\x83V[P`\0\x84\x82\x81Q\x81\x10a'\x83Wa'\x83a5\xFCV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a(\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a9\x0C\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\x98V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a(.Wa(.a5\xFCV[` \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(\x93Wa(\x93a5\xFCV[` \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)\nWa)\na5\xFCV[` \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)gWa)ga5\xFCV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a)\x85Wa)\x85a5\xFCV[` \x02` \x01\x01Q` \x01Q`@Qa)\x9F\x92\x91\x90a-\x13V[`@Q\x80\x91\x03\x90\xA2\x80a)\xB1\x81a6CV[\x91PPa&xV[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a*eW`@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\x98V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a*\x8BWP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a+6W`@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\x98V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\xDBW`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a+\x8E`\x01\x84a6\xD0V[\x81T\x81\x10a+\x9EWa+\x9Ea5\xFCV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a+\xC9Wa+\xC0`\x01\x82a6\xD0V[\x92PPPa\x12\xF5V[\x80a+\xD3\x81a8\xB5V[\x91PPa+YV[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\x98V[`\0a\x12\xF5`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a8\xCCV[\x805`\xFF\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xE1W`\0\x80\xFD[a,\xEA\x83a,\xB8V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a-\nW`\0\x80\xFD[a\x12\xF5\x82a,\xB8V[`\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-JW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a-`W`\0\x80\xFD[a-i\x83a,\xB8V[\x91P` \x83\x015a-y\x81a-5V[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a-\x96W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xADW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"_W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-\xE0W`\0\x80\xFD[a-\xE9\x86a,\xB8V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\x05W`\0\x80\xFD[a.\x11\x89\x83\x8A\x01a-\x84V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a.*W`\0\x80\xFD[Pa.7\x88\x82\x89\x01a-\x84V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a.ZW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"_W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a.\x9FW`\0\x80\xFD[\x845a.\xAA\x81a-5V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xCCW`\0\x80\xFD[a.\xD8\x87\x82\x88\x01a.HV[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a/\x1DW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.\xF8V[P\x94\x95\x94PPPPPV[`@\x81R`\0a/;`@\x83\x01\x85a.\xE4V[\x82\x81\x03` \x84\x01Ra _\x81\x85a.\xE4V[`\0\x80`@\x83\x85\x03\x12\x15a/`W`\0\x80\xFD[\x825\x91Pa/p` \x84\x01a,\xB8V[\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/\xE5Wa/\xD2\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/\x95V[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\x15a0)Wa0)a/\xF1V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a0WWa0Wa/\xF1V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0xWa0xa/\xF1V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\x95W`\0\x80\xFD[a0\x9E\x83a,\xB8V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xBAW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0\xCBW`\0\x80\xFD[\x805a0\xDEa0\xD9\x82a0_V[a0/V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0\xFDW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a1\x1BW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a1\x02V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a1VW`\0\x80\xFD[\x835\x92Pa1f` \x85\x01a,\xB8V[\x91Pa1t`@\x85\x01a1*V[\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a1\x90W`\0\x80\xFD[a,\xEA\x83a1*V[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a1\xC2W`\0\x80\xFD[a1\xCB\x84a1\x99V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE6W`\0\x80\xFD[a1\xF2\x86\x82\x87\x01a.HV[\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/\xE5W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a2\x1BV[`\0\x80`\0``\x84\x86\x03\x12\x15a2RW`\0\x80\xFD[a2[\x84a,\xB8V[\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\rLV[`\0\x80`@\x83\x85\x03\x12\x15a2\xB8W`\0\x80\xFD[a2\xC1\x83a,\xB8V[\x91Pa/p` \x84\x01a1*V[`\0\x80`\0`@\x84\x86\x03\x12\x15a2\xE4W`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a3\x12W`\0\x80\xFD[\x815` a3\"a0\xD9\x83a0_V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a3AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a3\x90W`@\x81\x89\x03\x12\x15a3^W`\0\x80\x81\xFD[a3fa0\x07V[\x815a3q\x81a-5V[\x81Ra3~\x82\x86\x01a1*V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a3EV[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a3\xAEW`\0\x80\xFD[a3\xB7\x83a,\xB8V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xD2W`\0\x80\xFD[a3\xDE\x85\x82\x86\x01a3\x01V[\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a3\xFDW`\0\x80\xFD[a4\x06\x84a,\xB8V[\x92Pa4\x14` \x85\x01a1\x99V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a49W`\0\x80\xFD[\x835\x92Pa4I` \x85\x01a,\xB8V[\x91Pa1t`@\x85\x01a1\x99V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a4mW`\0\x80\xFD[a4v\x85a,\xB8V[\x93Pa4\x84` \x86\x01a1\x99V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a4\xACW`\0\x80\xFD[a2\xC1\x83a1*V[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xCAW`\0\x80\xFD[a4\xD3\x84a,\xB8V[\x92Pa4\xE1` \x85\x01a1*V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xFCW`\0\x80\xFD[a5\x08\x86\x82\x87\x01a3\x01V[\x91PP\x92P\x92P\x92V[` \x80\x82R`1\x90\x82\x01R\x7FStakeRegistry.quorumExists: quor`@\x82\x01Rp\x1D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`z\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a5uW`\0\x80\xFD[\x81Qa\x12\xF5\x81a-5V[` \x80\x82R`V\x90\x82\x01R\x7FStakeRegistry.onlyCoordinatorOwn`@\x82\x01R\x7Fer: caller is not the owner of t``\x82\x01Ru42\x9092\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`Q\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a6$W`\0\x80\xFD[a\x12\xF5\x82a1*V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a6WWa6Wa6-V[P`\x01\x01\x90V[` \x80\x82R`L\x90\x82\x01R\x7FStakeRegistry.onlyRegistryCoordi`@\x82\x01R\x7Fnator: caller is not the Registr``\x82\x01Rk<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`\xA1\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x82\x10\x15a6\xE2Wa6\xE2a6-V[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\x15a7NW\x85T\x85\x16\x83R`\x01\x95\x86\x01\x95\x92\x84\x01\x92\x01a70V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a7oW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7\x85W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a7\x96W`\0\x80\xFD[\x80Qa7\xA4a0\xD9\x82a0_V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a7\xC3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a7\xE1W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a7\xC8V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a8\x06Wa8\x06a6-V[P\x02\x90V[`\0\x82a8(WcNH{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\x15a8OWa8Oa6-V[\x01\x94\x93PPPPV[`\0`\x01`\xFF\x1B\x82\x14\x15a8nWa8na6-V[P`\0\x03\x90V[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a8\x95Wa8\x95a6-V[\x03\x93\x92PPPV[`\0\x82\x19\x82\x11\x15a8\xB0Wa8\xB0a6-V[P\x01\x90V[`\0\x81a8\xC4Wa8\xC4a6-V[P`\0\x19\x01\x90V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a8\xEAWa8\xEAa6-V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a9\x05Wa9\x05a6-V[PP\x03\x90V\xFEStakeRegistry._addStrategyParams\xA2dipfsX\"\x12 \xD1\xC1`\xB6mq\xA1\xA41G1F\xB2\x860;i\xB5\x16si\xC9G[m\xA78\x0E\x18\xC6\xB5odsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0!\xD28\x03\x80b\0!\xD2\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x18V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80\x80b\0\0Mb\0\0VV[PPPb\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[`\x80Qa Pb\0\x01\x82`\09`\0\x81\x81a\x03\x1A\x01R\x81\x81a\x04\xDB\x01R\x81\x81a\x064\x01R\x81\x81a\n:\x01Ra\x10\xA6\x01Ra P`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01 W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\xADW\x80c\xD5%J\x8C\x11a\0qW\x80c\xD5%J\x8C\x14a\x03\xEAW\x80c\xDE)\xFA\xC0\x14a\x04\nW\x80c\xDFM\t\xE0\x14a\x04*W\x80c\xE8\xBB\x9A\xE6\x14a\x04\x94W\x80c\xF4\xE2O\xE5\x14a\x04\xBDW`\0\x80\xFD[\x80cm\x14\xA9\x87\x14a\x03\x15W\x80cy\x16\xCE\xA6\x14a\x03W\x80c`WG\xD5\x14a\x02\x9AW\x80ch\xBC\xCA\xAC\x14a\x02\xE8W`\0\x80\xFD[\x80b\xA1\xF4\xCB\x14a\x01%W\x80c\x13T*N\x14a\x01fW\x80c&\xD9A\xF2\x14a\x01\x9DW\x80c7~\xD9\x9D\x14a\x01\xB2W[`\0\x80\xFD[a\x01La\x0136`\x04a\x19yV[`\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\x8Fa\x01t6`\x04a\x19yV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01]V[a\x01\xB0a\x01\xAB6`\x04a\x19\xACV[a\x04\xD0V[\0[a\x01\xD5a\x01\xC06`\x04a\x19\xACV[`\xFF\x16`\0\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01]V[a\x01\xB0a\x01\xF86`\x04a\x1A7V[a\x06)V[a\x02&a\x02\x0B6`\x04a\x1A\xDDV[`\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\x01]V[a\x02\x8Da\x02L6`\x04a\x19\xACV[`@\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\x01]\x91\x90a\x1A\xF6V[a\x02\xADa\x02\xA86`\x04a\x1B\rV[a\x06\xE7V[`@\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\x01]V[a\x02\xFBa\x02\xF66`\x04a\x1B7V[a\x07zV[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01]V[a\x02&\x7F\0\0\0\0\0\0\0\0\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\x03Oa\x03J6`\x04a\x1B\rV[a\t\x15V[`@\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\x01]V[a\x03\x90a\x03\x8B6`\x04a\x19yV[a\t`V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01]V[a\x01La\x03\xBE6`\x04a\x19\xACV[`\x05` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x8Fa\x03\xE56`\x04a\x1B\x7FV[a\n-V[a\x03\xFDa\x03\xF86`\x04a\x1B\xDCV[a\x0E\x81V[`@Qa\x01]\x91\x90a\x1CTV[a\x01\x8Fa\x04\x186`\x04a\x19yV[`\x01` R`\0\x90\x81R`@\x90 T\x81V[a\x01\xB0a\x0486`\x04a\x1C\xCEV[\x80Q`\0\x90\x81R` \x80\x83\x01\x80Q\x82R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x80\x85R`\x01\x80\x85R\x82\x86 \x88\x90U\x96\x85R`\x02\x84R\x81\x85 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x82\x17\x90U\x84R`\x03\x90\x92R\x91 \x91Q\x82UQ\x91\x01UV[a\x02&a\x04\xA26`\x04a\x1A\xDDV[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xB0a\x04\xCB6`\x04a\x1A7V[a\x10\x9BV[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!W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16`\0\x90\x81R`\x04` R`@\x90 T\x15a\x05\xA0W`@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\x01a\x05\x18V[`\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[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\x06qW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\x06|\x83a\t`V[P\x90Pa\x06\x89\x82\x82a\x11DV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06\xCA\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06\xDA\x93\x92\x91\x90a\x1DvV[`@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\x07$Wa\x07$a\x1D\xE2V[`\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\x07\xA1Wa\x07\xA1a\x1D\xE2V[`\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\x08hW`@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\x05\x18V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x8EWP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\t\x0CW`@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\x05\x18V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\t1W`\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\n#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\x05\x18V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\nwW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\n\xA5a\n\x8E6\x86\x90\x03\x86\x01`@\x87\x01a\x1D\xF8V[\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\x0B-W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x05\x18V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0B\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x05\x18V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C;W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x05\x18V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x94\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\x1E\x14V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0C\xB7\x91\x90a\x1E_V[\x90Pa\rQa\x0C\xF0a\x0C\xDB\x83a\x0C\xD56\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\xF8V[\x90a\x13\x8FV[a\x0C\xEA6\x89\x90\x03\x89\x01\x89a\x1D\xF8V[\x90a\x14&V[a\x0C\xF8a\x14\xBAV[a\r:a\r+\x85a\x0C\xD5`@\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\x0C\xEA6\x8A\x90\x03\x8A\x01\x8Aa\x1D\xF8V[a\rL6\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\xF1V[a\x15zV[a\r\xECW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F\xFB\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\x05\x18V[`\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\x0Ep\x91`\x80\x8A\x01\x90a\x1F0V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x9EWa\x0E\x9Ea\x19\xC7V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xC7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x92W`\0\x86\x86\x83\x81\x81\x10a\x0E\xE9Wa\x0E\xE9a\x1D\xE2V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0FLWP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0F0Wa\x0F0a\x1D\xE2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0F\xD9W`@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\x05\x18V[\x80[\x80\x15a\x10|W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x10\0`\x01\x84a\x1FzV[\x81T\x81\x10a\x10\x10Wa\x10\x10a\x1D\xE2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x10jWa\x109`\x01\x82a\x1FzV[\x85\x85\x81Q\x81\x10a\x10KWa\x10Ka\x1D\xE2V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10|V[\x80a\x10t\x81a\x1F\x91V[\x91PPa\x0F\xDBV[PPP\x80\x80a\x10\x8A\x90a\x1F\xA8V[\x91PPa\x0E\xCDV[P\x94\x93PPPPV[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\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\x10\xEE\x83a\t`V[P\x90Pa\x11\x03\x82a\x10\xFE\x83a\x17\xE7V[a\x11DV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06\xCA\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x89W`\0\x84\x82\x81Q\x81\x10a\x11xWa\x11xa\x1D\xE2V[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x12\x08W`@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\x05\x18V[`\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\x12<\x90\x86a\x14&V[`\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\x12\x85\x90\x85a\x1FzV[\x81T\x81\x10a\x12\x95Wa\x12\x95a\x1D\xE2V[`\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\xD6W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x13rV[\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\x13\x81\x90a\x1F\xA8V[\x91PPa\x11[V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xABa\x18\xA6V[\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\xDEWa\x13\xE0V[\xFE[P\x80a\x14\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x05\x18V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x14Ba\x18\xC4V[\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\xDEWP\x80a\x14\x1EW`@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\x05\x18V[a\x14\xC2a\x18\xE2V[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\x15\xA9a\x19\x07V[`\0[`\x02\x81\x10\x15a\x17nW`\0a\x15\xC2\x82`\x06a\x1F\xC3V[\x90P\x84\x82`\x02\x81\x10a\x15\xD6Wa\x15\xD6a\x1D\xE2V[` \x02\x01QQ\x83a\x15\xE8\x83`\0a\x1F\xE2V[`\x0C\x81\x10a\x15\xF8Wa\x15\xF8a\x1D\xE2V[` \x02\x01R\x84\x82`\x02\x81\x10a\x16\x0FWa\x16\x0Fa\x1D\xE2V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x16&\x91\x90a\x1F\xE2V[`\x0C\x81\x10a\x166Wa\x166a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16MWa\x16Ma\x1D\xE2V[` \x02\x01QQQ\x83a\x16`\x83`\x02a\x1F\xE2V[`\x0C\x81\x10a\x16pWa\x16pa\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x87Wa\x16\x87a\x1D\xE2V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16\xA0\x83`\x03a\x1F\xE2V[`\x0C\x81\x10a\x16\xB0Wa\x16\xB0a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xC7Wa\x16\xC7a\x1D\xE2V[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16\xE2Wa\x16\xE2a\x1D\xE2V[` \x02\x01Q\x83a\x16\xF3\x83`\x04a\x1F\xE2V[`\x0C\x81\x10a\x17\x03Wa\x17\x03a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\x1AWa\x17\x1Aa\x1D\xE2V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x175Wa\x175a\x1D\xE2V[` \x02\x01Q\x83a\x17F\x83`\x05a\x1F\xE2V[`\x0C\x81\x10a\x17VWa\x17Va\x1D\xE2V[` \x02\x01RP\x80a\x17f\x81a\x1F\xA8V[\x91PPa\x15\xACV[Pa\x17wa\x19&V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\xDEWP\x80a\x17\xD7W`@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\x05\x18V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x18\x0CWP` \x82\x01Q\x15[\x15a\x18*WPP`@\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\x18o\x91\x90a\x1E_V[a\x18\x99\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1FzV[\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\x18\xF5a\x19DV[\x81R` \x01a\x19\x02a\x19DV[\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\x18\xA1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x8BW`\0\x80\xFD[a\x19\x94\x82a\x19bV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18\xA1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\xBEW`\0\x80\xFD[a\x19\x94\x82a\x19\x9BV[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\x1A\0Wa\x1A\0a\x19\xC7V[`@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\x1A/Wa\x1A/a\x19\xC7V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x1AJW`\0\x80\xFD[a\x1AS\x83a\x19bV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1AqW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x85W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\x97Wa\x1A\x97a\x19\xC7V[a\x1A\xA9`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x1A\x06V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1A\xBFW`\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\xEFW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x07tV[`\0\x80`@\x83\x85\x03\x12\x15a\x1B W`\0\x80\xFD[a\x1B)\x83a\x19\x9BV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1BLW`\0\x80\xFD[a\x1BU\x84a\x19\x9BV[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1BnW`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B\x96W`\0\x80\xFD[a\x1B\x9F\x85a\x19bV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B\xB4W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1B\xCDW`\0\x80\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x1B\xF1W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1C\tW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1C\x1DW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1C,W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1C>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\x1C\x92W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1CpV[P\x90\x96\x95PPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x1C\xB0W`\0\x80\xFD[a\x1C\xB8a\x19\xDDV[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x80``\x83\x85\x03\x12\x15a\x1C\xE1W`\0\x80\xFD[a\x1C\xEA\x83a\x19bV[\x91Pa\x1C\xF9\x84` \x85\x01a\x1C\x9EV[\x90P\x92P\x92\x90PV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R`\0` \x84\x81\x84\x01R```@\x84\x01R\x83Q\x80``\x85\x01R`\0[\x81\x81\x10\x15a\x1D\xB8W\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1D\x9CV[\x81\x81\x11\x15a\x1D\xCAW`\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\x1E\nW`\0\x80\xFD[a\x19\x94\x83\x83a\x1C\x9EV[\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\x1E|WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x92W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1E\xB5Wa\x1E\xB5a\x19\xC7V[\x80`@RP\x80`@\x84\x01\x85\x81\x11\x15a\x1E\xCCW`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\xE6W\x805\x83R` \x92\x83\x01\x92\x01a\x1E\xCEV[P\x91\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1F\x03W`\0\x80\xFD[a\x1F\x0Ba\x19\xDDV[a\x1F\x15\x84\x84a\x1E\x81V[\x81Ra\x1F$\x84`@\x85\x01a\x1E\x81V[` \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\x1F\x8CWa\x1F\x8Ca\x1FdV[P\x03\x90V[`\0\x81a\x1F\xA0Wa\x1F\xA0a\x1FdV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1F\xBCWa\x1F\xBCa\x1FdV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\xDDWa\x1F\xDDa\x1FdV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F\xF5Wa\x1F\xF5a\x1FdV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \x91JKb\xB5W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R`\xCF\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\xD3\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15b\0\0/W`\0\x80\xFD[P`@Qb\0p\x9D8\x03\x80b\0p\x9D\x839\x81\x01`@\x81\x90Rb\0\0R\x91b\0\x02\xC0V[`@\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\x85R`\x06\x81Rev0.0.1`\xD0\x1B\x90\x82\x01R\x91Q\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`\xA0\x81\x81R\x85Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x81\x87\x01\x81\x90R\x81\x88\x01\x95\x90\x95R``\x81\x01\x93\x90\x93R`\x80\x80\x84\x01\x92\x90\x92R0\x83\x82\x01\x81\x90R\x86Q\x80\x85\x03\x90\x92\x01\x82R`\xC0\x93\x84\x01\x90\x96R\x80Q\x94\x01\x93\x90\x93 \x90\x92R\x91\x90Ra\x01 R`\x01`\x01`\xA0\x1B\x03\x80\x85\x16a\x01@R\x80\x84\x16a\x01\x80R\x80\x83\x16a\x01`R\x81\x16a\x01\xA0R\x83\x83\x83\x83b\0\x01tb\0\x01\x93V[PPPPb\0\x01\x893b\0\x02U` \x1B` \x1CV[PPPPb\0\x03(V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x02\0W`@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\x02SW`\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[`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[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02\xBDW`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xD7W`\0\x80\xFD[\x84Qb\0\x02\xE4\x81b\0\x02\xA7V[` \x86\x01Q\x90\x94Pb\0\x02\xF7\x81b\0\x02\xA7V[`@\x86\x01Q\x90\x93Pb\0\x03\n\x81b\0\x02\xA7V[``\x86\x01Q\x90\x92Pb\0\x03\x1D\x81b\0\x02\xA7V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qalmb\0\x040`\09`\0\x81\x81a\x087\x01R\x81\x81a\x16E\x01R\x81\x81a)\xE1\x01R\x81\x81a4\xB7\x01R\x81\x81a>P\x01RaG\x1E\x01R`\0\x81\x81a\x07L\x01R\x81\x81a)l\x01R\x81\x81a.z\x01R\x81\x81a4\x0E\x01R\x81\x81a=\xD0\x01R\x81\x81aB\xF3\x01RaF\x9D\x01R`\0\x81\x81a\x06\xFD\x01R\x81\x81a\x11\xDE\x01R\x81\x81a)\xAA\x01R\x81\x81a3\x8E\x01R\x81\x81a=R\x01R\x81\x81a?8\x01R\x81\x81a?\xAE\x01RaG\x9A\x01R`\0\x81\x81a\x061\x01R\x81\x81a2\xD6\x01Ra<\xA8\x01R`\0aI\x9D\x01R`\0aI\xEC\x01R`\0aI\xC7\x01R`\0aI \x01R`\0aIJ\x01R`\0aIt\x01Ralm`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x03\xCFW`\x005`\xE0\x1C\x80cf\xD9\xA9\xA0\x11a\x01\xFFW\x80c\xB5P\x8A\xA9\x11a\x01\x1AW\x80c\xD9,\xBB\x84\x11a\0\xADW\x80c\xF2\xFD\xE3\x8B\x11a\0|W\x80c\xF2\xFD\xE3\x8B\x14a\n$W\x80c\xFAv&\xD4\x14a\n7W\x80c\xFA\xBC\x1C\xBC\x14a\nDW\x80c\xFD9\x10Z\x14a\nWW`\0\x80\xFD[\x80c\xD9,\xBB\x84\x14a\t^<#\x14a\x06sW\x80c?r\x86\xF4\x14a\x06{W`\0\x80\xFD[\x80c)k\xB0d\x14a\x05\xDEW\x80c)\xD1\xE0\xC3\x14a\x05\xF1W\x80c*\xDE8\x80\x14a\x06\x04W\x80c,\xDD\x1E\x86\x14a\x06\x19W`\0\x80\xFD[\x80c\x14x\x85\x1F\x11a\x03gW\x80c$\x9A\x0CB\x11a\x036W\x80c$\x9A\x0CB\x14a\x05\x85W\x80c'\xE7\x92\x88\x14a\x05\xA5W\x80c(\xF6\x1B1\x14a\x05\xB8W\x80c)ST|\x14a\x05\xCBW`\0\x80\xFD[\x80c\x14x\x85\x1F\x14a\x04\xD4W\x80c\x1A\xB2WO\x14a\x05\x07W\x80c\x1E\xB8\x12\xDA\x14a\x05'W\x80c\x1E\xD7\x83\x1C\x14a\x05pW`\0\x80\xFD[\x80c\x0C\xF4\xB7g\x11a\x03\xA3W\x80c\x0C\xF4\xB7g\x14a\x04rW\x80c\x10\xD6z/\x14a\x04\x85W\x80c\x13T*N\x14a\x04\x98W\x80c\x13d9\xDD\x14a\x04\xC1W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x03\xD4W\x80c\x03\xFD4\x92\x14a\x03\xE9W\x80c\x04\xECcQ\x14a\x04\x1CW\x80c\x05C\x10\xE6\x14a\x04GW[`\0\x80\xFD[a\x03\xE7a\x03\xE26`\x04aR\xDDV[a\n\x93V[\0[a\x04\ta\x03\xF76`\x04aS\x1EV[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x04/a\x04*6`\x04aSIV[a\x0B\xA9V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x04\x13V[`\x9DTa\x04Z\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x04\x13V[a\x03\xE7a\x04\x806`\x04aT\x80V[a\r\x9FV[a\x03\xE7a\x04\x936`\x04aT\xDCV[a\x0E\x87V[a\x04\ta\x04\xA66`\x04aT\xDCV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x03\xE7a\x04\xCF6`\x04aS\x1EV[a\x0F:V[a\x04\xF7a\x04\xE26`\x04aS\x1EV[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x04\x13V[a\x05\x1Aa\x05\x156`\x04aU\x95V[a\x10wV[`@Qa\x04\x13\x91\x90aV\x81V[a\x05:a\x0556`\x04aW\tV[a\x10\xB4V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x04\x13V[a\x05xa\x11EV[`@Qa\x04\x13\x91\x90aW+V[a\x04\ta\x05\x936`\x04aW\x89V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xE7a\x05\xB36`\x04aW\xB9V[a\x11\xA7V[`\x9ETa\x04Z\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\xE7a\x05\xD96`\x04aW\xE9V[a\x11\xB5V[a\x04Za\x05\xEC6`\x04aS\x1EV[a\x11\xC5V[a\x03\xE7a\x05\xFF6`\x04aT\xDCV[a\x12QV[a\x06\x0Ca\x12bV[`@Qa\x04\x13\x91\x90aY#V[a\x03\xE7a\x06'6`\x04aT\xDCV[a\x13\xA4V[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x06fa\x06a6`\x04aT\xDCV[a\x13\xB5V[`@Qa\x04\x13\x91\x90aY\xA0V[a\x05xa\x144V[a\x05xa\x14\x94V[a\x03\xE7a\x06\x916`\x04aY\xB7V[a\x14\xF4V[a\x06\xA9a\x06\xA46`\x04aT\xDCV[a\x1A\x05V[`@Qa\x04\x13\x91\x90aZZV[a\x03\xE7a\x1AyV[a\x04\xF7a\x06\xCC6`\x04aW\x89V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x03\xE7a\x06\xEB6`\x04aZ\xDFV[a\x1BEV[`\x01Ta\x04\tV[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x04Za\x07-6`\x04aS\x1EV[a\x1B\xD7V[a\x07:a\x1C\x01V[`@Qa\x04\x13\x91\x90a[\x13V[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x03\xE7a\x07|6`\x04a[\xC6V[a\x1C\xE7V[a\x03\xE7a\x1D\xA7V[a\x03\xE7a\x07\x976`\x04a[\xC6V[a\x1DgV[a\x04\ta\x07\xAA6`\x04a\\}V[a\x1D\xBBV[a\x07\xB7a\x1E\x05V[`@Qa\x04\x13\x91\x90a]JV[a\x04/a\x07\xD26`\x04aS\x1EV[a\x1E\xD5V[`\0Ta\x04Z\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x04Za\x1E\xE0V[a\x07:a\x1E\xF9V[`\x96Ta\x08\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x04\x13V[a\x03\xE7a\x08-6`\x04a]\xB4V[a\x1F\xDFV[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x04\t\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x03\xE7a\x08\x8E6`\x04a^\xADV[a#\x17V[a\x07\xB7a$\x9BV[a\x04\xF7a%kV[a\x08\xB6a\x08\xB16`\x04a_;V[a&\x98V[`@Qa\x04\x13\x91\x90a_\xE0V[a\x03\xE7a\x08\xD16`\x04aW\x89V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x04\t\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x03\xE7a\t\x1C6`\x04a`\x1EV[a'QV[`\x9CTa\x04\tV[a\x03\xE7a\t76`\x04aa\x04V[a'\xB8V[a\x03\xE7a\tJ6`\x04aaZV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`\x99` R`@\x90 UV[a\x03\xE7a\tt6`\x04ab\xD9V[a'\xCBV[a\x05xa*\xCFV[a\t\xF0a\t\x8F6`\x04aW\x89V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x04\x13V[a\x03\xE7a\n26`\x04aT\xDCV[a+/V[`\xCFTa\x04\xF7\x90`\xFF\x16\x81V[a\x03\xE7a\nR6`\x04aS\x1EV[a+\xA5V[a\n\x86a\ne6`\x04aT\xDCV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x04\x13\x91\x90ac\xADV[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\n\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\x0B\xA3W`\0\x84\x84\x83\x81\x81\x10a\n\xE4Wa\n\xE4ac\xF2V[\x90P` \x02\x01` \x81\x01\x90a\n\xF9\x91\x90aT\xDCV[`\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\x0BDWa\x0BDaZ\"V[`\x02\x81\x11\x15a\x0BUWa\x0BUaZ\"V[\x90RP\x80Q\x90\x91P`\0a\x0Bh\x82a-\x01V[\x90P`\0a\x0B~\x82`\x01`\x01`\xC0\x1B\x03\x16a-pV[\x90Pa\x0B\x8B\x85\x85\x83a.=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xFE\x91\x90adLV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F.W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90adiV[a\x0F7\x81a/)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\x0F\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xAB\x91\x90ad\xB3V[a\x0F\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ad\xD5V[`\x01T\x81\x81\x16\x14a\x10@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\n\xBCV[`\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\x0E|V[a\x10\x9B`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[a\x10\xA9\x87\x87\x87\x87\x87\x87a0.V[\x97\x96PPPPPPPV[`@\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\x10\xF1Wa\x10\xF1ac\xF2V[`\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[```\xDC\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FW[PPPPP\x90P\x90V[a\x11\xB1\x82\x82a5EV[PPV[a\x11\xC0\x83\x83\x83a.=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11?\x91\x90adLV[a\x12Ya7\x05V[a\x0F7\x81a7dV[```\xE3\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x13\x84W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x12\xF7\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x13#\x90ae\x1DV[\x80\x15a\x13pW\x80`\x1F\x10a\x13EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x13pV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x13SW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x12\xD8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x12\x86V[PPPP\x90P\x90V[a\x13\xACa7\x05V[a\x0F7\x81a7\xCDV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x11?a\x14/\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\x14\x14\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 a86V[a8\x84V[```\xDE\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[```\xDD\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x15\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`\0a\x15e\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\x91Pa9\x14\x90PV[\x90P\x84\x83\x14a\x15\xD6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` ak\xD8\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0[\x83\x81\x10\x15a\x19\xFCW`\0\x85\x85\x83\x81\x81\x10a\x15\xF5Wa\x15\xF5ac\xF2V[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x16\x16Wa\x16\x16ac\xF2V[\x90P` \x02\x81\x01\x90a\x16(\x91\x90aeRV[`@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\x16\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xB8\x91\x90ae\x9BV[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x17TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R`\0\x80Q` ak\xD8\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\n\xBCV[`\0\x80[\x82\x81\x10\x15a\x19\x9BW`\0\x84\x84\x83\x81\x81\x10a\x17tWa\x17tac\xF2V[\x90P` \x02\x01` \x81\x01\x90a\x17\x89\x91\x90aT\xDCV[`\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\x17\xD4Wa\x17\xD4aZ\"V[`\x02\x81\x11\x15a\x17\xE5Wa\x17\xE5aZ\"V[\x90RP\x80Q\x90\x91P`\0a\x17\xF8\x82a-\x01V[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x18|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` ak\xD8\x839\x81Q\x91R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x19'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R`\0\x80Q` ak\xD8\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\n\xBCV[Pa\x19\x85\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x19>\x91\x90ae\xB8V[\x92a\x19K\x93\x92\x91\x90ae\xD0V[\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.<\x92PPPV[P\x90\x92Pa\x19\x94\x90P\x81ad\x1EV[\x90Pa\x17XV[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\x19\xF5\x90ad\x1EV[\x90Pa\x15\xD9V[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\x1A_Wa\x1A_aZ\"V[`\x02\x81\x11\x15a\x1ApWa\x1ApaZ\"V[\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\x1A\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xEA\x91\x90ad\xB3V[a\x1B\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ad\xD5V[`\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\x1BMa7\x05V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x1B\xCDW`@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\n\xBCV[a\x11\xC0\x83\x83a9\xA5V[`\x9C\x81\x81T\x81\x10a\x1B\xE7W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[```\xE1\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x1C\xCFW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x1C\x91W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x1C%V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1DgW`@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\n\xBCV[a\x11\xC0\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\x91RPa:R\x92PPPV[a\x1D\xAFa7\x05V[a\x1D\xB9`\0a>\xC4V[V[`\0a\x1D\xFB\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\x14\x14\x96\x95\x94\x93\x92\x91\x90ae\xFAV[\x96\x95PPPPPPV[```\xE0\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1EH\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1Et\x90ae\x1DV[\x80\x15a\x1E\xC1W\x80`\x1F\x10a\x1E\x96Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xC1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\xA4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E)V[`\0a\x11?\x82a-\x01V[`\0a\x1E\xF4`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[```\xE2\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x1F\xC7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x1F\x89W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x1F\x1DV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a \x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[\x83\x89\x14a \x8AW`@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\n\xBCV[`\0a \x963\x88a?\x16V[\x90Pa \xF63\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 \xEBWa \xDC`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90af\x7FV[\x81R` \x01\x90`\x01\x01\x90a \xBFV[PPPPP\x87a@GV[`\0a!=3\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\x92Pa0.\x91PPV[\x90P`\0[\x8B\x81\x10\x15a#\x08W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a!bWa!bac\xF2V[\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!\xCFWa!\xCFac\xF2V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\"\xF5Wa\"p\x8E\x8E\x84\x81\x81\x10a!\xF8Wa!\xF8ac\xF2V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\"\x1BWa\"\x1Bac\xF2V[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\":Wa\":ac\xF2V[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\"TWa\"Tac\xF2V[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\"j\x91\x90af\x7FV[\x86aA\xD4V[a\"\xF5\x89\x89\x84\x81\x81\x10a\"\x85Wa\"\x85ac\xF2V[\x90P`@\x02\x01` \x01` \x81\x01\x90a\"\x9D\x91\x90aT\xDCV[\x8F\x8F\x85\x90\x86`\x01a\"\xAE\x91\x90ae\xB8V[\x92a\"\xBB\x93\x92\x91\x90ae\xD0V[\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:R\x92PPPV[P\x80a#\0\x81ad\x1EV[\x91PPa!BV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a#?W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`\0a#K3\x85a?\x16V[\x90P`\0a#\x943\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\x92Pa0.\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a$\x8FW`\0\x8A\x8A\x83\x81\x81\x10a#\xB6Wa#\xB6ac\xF2V[\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#\xECWa#\xECac\xF2V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a$|W`@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\n\xBCV[P\x80a$\x87\x81ad\x1EV[\x91PPa#\x9AV[PPPPPPPPPPV[```\xDF\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta$\xDE\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta%\n\x90ae\x1DV[\x80\x15a%WW\x80`\x1F\x10a%,Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a%WV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a%:W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a$\xBFV[`\xCFT`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a%\x8DWP`\xCFTa\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a&\x93W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a&\x1B\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01af\x9BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra&5\x91af\xCCV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a&rW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a&wV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a&\x8F\x91\x90ad\xB3V[\x91PP[\x91\x90PV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xB5Wa&\xB5aS\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a&\xDEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a'IWa'\x10\x85\x85\x83\x81Q\x81\x10a'\x03Wa'\x03ac\xF2V[` \x02` \x01\x01QaD\xA9V[\x82\x82\x81Q\x81\x10a'\"Wa'\"ac\xF2V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a'A\x81ad\x1EV[\x91PPa&\xE4V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a'xW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[a\x11\xC03\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:R\x92PPPV[a'\xC0a7\x05V[a\x11\xC0\x83\x83\x83aE\xE5V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a'\xEBWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a(\x05WP0;\x15\x80\x15a(\x05WP`\0T`\xFF\x16`\x01\x14[a(hW`@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(\x8BW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a(\x9DWP\x81Q\x83Q\x14[a)\x07W`@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\n\xBCV[a)\x10\x89a>\xC4V[a)\x1A\x86\x86aG\xFCV[a)#\x88a7dV[a),\x87a7\xCDV[`\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*k\x85\x82\x81Q\x81\x10a**Wa**ac\xF2V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a*DWa*Dac\xF2V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a*^Wa*^ac\xF2V[` \x02` \x01\x01QaE\xE5V[\x80a*u\x81ad\x1EV[\x91PPa*\x0CV[P\x80\x15a*\xC4W`\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[```\xDB\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[a+7a7\x05V[`\x01`\x01`\xA0\x1B\x03\x81\x16a+\x9CW`@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\x0F7\x81a>\xC4V[`\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+\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a,\x1C\x91\x90adLV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a,LW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90adiV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a,\xCAW`@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[`\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\x0E|V[`\0\x81\x81R`\x98` R`@\x81 T\x80a-\x1EWP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a-7`\x01\x83af\xE8V[\x81T\x81\x10a-GWa-Gac\xF2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[P\x91\x90PV[```\0\x80a-~\x84aH\xE8V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x99Wa-\x99aS\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a-\xC3W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a-\xDBWPa\x01\0\x81\x10[\x15a.2W`\x01\x81\x1B\x93P\x85\x84\x16\x15a.\"W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a.\x04Wa.\x04ac\xF2V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a.+\x81ad\x1EV[\x90Pa-\xCAV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a.TWa.TaZ\"V[\x14a.^WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a.\xB3\x90\x88\x90\x86\x90\x88\x90`\x04\x01af\xFFV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a.\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xF6\x91\x90ag/V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a/\"Wa/\"\x85a/\x1D\x83`\x01`\x01`\xC0\x1B\x03\x16a-pV[a:RV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a/\xB7W`@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[`\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[a0R`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a0\x9A\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\x91Pa9\x14\x90PV[\x90P`\0a0\xA7\x88a-\x01V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1%W`@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\n\xBCV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a1\xDBW`@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\n\xBCV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a1\xF4\x89\x82a5EV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2$\x91\x90ad9V[`@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\x15a2^Wa2^aZ\"V[\x14a3wW`@\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\x15a2\xB9Wa2\xB9aZ\"V[\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}\x90a3\x0E\x90\x8D\x90\x89\x90`\x04\x01agLV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3(W`\0\x80\xFD[PZ\xF1\x15\x80\x15a3=`\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\x90a3\xC7\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01ag\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xE1W`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xF5W=`\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\x91Pa4K\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01ag\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a4jW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4\x92\x91\x90\x81\x01\x90ahqV[`@\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\x90a4\xEF\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01ah\xD4V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra56\x91\x90\x81\x01\x90ah\xEEV[\x84RPPP\x96\x95PPPPPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80a5\xEAW`\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 a6\x03`\x01\x84af\xE8V[\x81T\x81\x10a6\x13Wa6\x13ac\xF2V[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a6WW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\x0B\xA3V[\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[3a7\x0Ea\x1E\xE0V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1D\xB9W`@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[`\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\x11?a8CaI\x13V[\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\x80a8\xB4`\0\x80Q` al\x18\x839\x81Q\x91R\x86ai\x92V[\x90P[a8\xC0\x81aJ:V[\x90\x93P\x91P`\0\x80Q` al\x18\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a8\xFAW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` al\x18\x839\x81Q\x91R`\x01\x82\x08\x90Pa8\xB7V[`\0\x80a9 \x84aJ\xBCV[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a9\x9EW`@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\n\xBCV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a:\x86Wa:\x86aZ\"V[\x14a;\x05W`@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\n\xBCV[`\x96T`\0\x90a;\x19\x90\x85\x90`\xFF\x16a9\x14V[\x90P`\0a;&\x83a-\x01V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a;\xA4W`@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\n\xBCV[a;\xBB`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a=`\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=\x89\x90\x8A\x90\x8A\x90`\x04\x01ai\xA6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=\xB7W=`\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>\t\x90\x87\x90\x8A\x90`\x04\x01ai\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>#W`\0\x80\xFD[PZ\xF1\x15\x80\x15a>7W=`\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>\x89\x90\x87\x90\x8A\x90`\x04\x01ai\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a>\xB7W=`\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?\x81W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?\xA5\x91\x90ai\xE3V[\x90P\x80a\x11?W\x7F\0\0\0\0\0\0\0\0\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\x84a?\xE6\x87a\x13\xB5V[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a@\x04\x93\x92\x91\x90ai\xFCV[` `@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\x90a9\x9E\x91\x90ai\xE3V[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a@\xEDW`@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\n\xBCV[B\x81`@\x01Q\x10\x15aA\x82W`@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\n\xBCV[` \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\x0B\xA3\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91aA\xCD\x91\x88\x91\x88\x91\x88\x91\x90a\x1D\xBBV[\x83QaLIV[` \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\x15aBTW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` ak\xF8\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\n\xBCV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14aB\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[`@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\x15aCBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aCf\x91\x90aj{V[\x90PaCr\x81\x85aN\x03V[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11aD\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[aD\x0F\x88\x85aN'V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a*\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15aE;W`\x01aD\xCE\x82\x84af\xE8V[aD\xD8\x91\x90af\xE8V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10aE\x0BWaE\x0Bac\xF2V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11aE)WPPa\x11?V[\x80aE3\x81ad\x1EV[\x91PPaD\xBAV[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\n\xBCV[`\x96T`\xFF\x16`\xC0\x81\x10aFYW`@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\n\xBCV[aFd\x81`\x01aj\x98V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80aF\x83\x81\x86a9\xA5V[`@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\x90aF\xD6\x90\x84\x90\x88\x90\x88\x90`\x04\x01aj\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aF\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15aG\x04W=`\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\x15aGlW`\0\x80\xFD[PZ\xF1\x15\x80\x15aG\x80W=`\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\x15aG\xE8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xC4W=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15aH#WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[aH\xA5W`@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[`\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\x11\xB1\x82a/)V[`\0\x80[\x82\x15a\x11?WaH\xFD`\x01\x84af\xE8V[\x90\x92\x16\x91\x80aI\x0B\x81ak6V[\x91PPaH\xECV[`\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\x15aIlWP\x7F\0\0\0\0\0\0\0\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[\x15aI\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\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` al\x18\x839\x81Q\x91R`\x03`\0\x80Q` al\x18\x839\x81Q\x91R\x86`\0\x80Q` al\x18\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0aJ\xB0\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` al\x18\x839\x81Q\x91RaNAV[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15aKEW`@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\n\xBCV[\x81QaKSWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10aKiWaKiac\xF2V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15aL@W\x84\x81\x81Q\x81\x10aK\x97WaK\x97ac\xF2V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11aL,W`@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\n\xBCV[\x91\x81\x17\x91aL9\x81ad\x1EV[\x90PaK|V[P\x90\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aMcW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aL\x89\x90\x86\x90\x86\x90`\x04\x01ai\xCAV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aL\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aL\xCA\x91\x90akXV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x11\xC0W`@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\x16aMw\x83\x83aN\xF0V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11\xC0W`@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[` \x81\x01Q`\0\x90a'\x10\x90aN\x1D\x90a\xFF\xFF\x16\x85ak\x82V[a9\x9E\x91\x90ak\xB1V[`@\x81\x01Q`\0\x90a'\x10\x90aN\x1D\x90a\xFF\xFF\x16\x85ak\x82V[`\0\x80aNLaR]V[aNTaR{V[` \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\x15aN\x95WaN\x97V[\xFE[P\x82aN\xE5W`@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\n\xBCV[PQ\x95\x94PPPPPV[`\0\x80`\0aN\xFF\x85\x85aO\x0CV[\x91P\x91Pa'I\x81aO|V[`\0\x80\x82Q`A\x14\x15aOCW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaO7\x87\x82\x85\x85aQ7V[\x94P\x94PPPPaOuV[\x82Q`@\x14\x15aOmW` \x83\x01Q`@\x84\x01QaOb\x86\x83\x83aR$V[\x93P\x93PPPaOuV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aO\x90WaO\x90aZ\"V[\x14\x15aO\x99WPV[`\x01\x81`\x04\x81\x11\x15aO\xADWaO\xADaZ\"V[\x14\x15aO\xFBW`@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\x15aP\x0FWaP\x0FaZ\"V[\x14\x15aP]W`@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\x15aPqWaPqaZ\"V[\x14\x15aP\xCAW`@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\x15aP\xDEWaP\xDEaZ\"V[\x14\x15a\x0F7W`@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\x15aQnWP`\0\x90P`\x03aR\x1BV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aQ\x86WP\x84`\xFF\x16`\x1C\x14\x15[\x15aQ\x97WP`\0\x90P`\x04aR\x1BV[`@\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\x15aQ\xEBW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aR\x14W`\0`\x01\x92P\x92PPaR\x1BV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aRA`\xFF\x86\x90\x1C`\x1Bae\xB8V[\x90PaRO\x87\x82\x88\x85aQ7V[\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\x12aR\xABW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xC2W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aR\xF0W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aS\x06W`\0\x80\xFD[aS\x12\x85\x82\x86\x01aR\x99V[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aS0W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aS^W`\0\x80\xFD[\x835\x92P` \x84\x015aSp\x81aS7V[\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\x15aS\xB9WaS\xB9aS\x81V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aS\xB9WaS\xB9aS\x81V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aT\tWaT\taS\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aT\"W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aT;WaT;aS\x81V[aTN`\x1F\x82\x01`\x1F\x19\x16` \x01aS\xE1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15aTcW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aT\x92W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aT\xA8W`\0\x80\xFD[aT\xB4\x84\x82\x85\x01aT\x11V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[\x805a&\x93\x81aT\xBCV[`\0` \x82\x84\x03\x12\x15aT\xEEW`\0\x80\xFD[\x815a9\x9E\x81aT\xBCV[`\0\x80\x83`\x1F\x84\x01\x12aU\x0BW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aU\"W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aULW`\0\x80\xFD[aUTaS\x97V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aUlW`\0\x80\xFD[aUx\x84\x82\x85\x01aT\x11V[\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0\x80`\xA0\x87\x89\x03\x12\x15aU\xAEW`\0\x80\xFD[\x865aU\xB9\x81aT\xBCV[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aU\xDCW`\0\x80\xFD[aU\xE8\x8A\x83\x8B\x01aT\xF9V[\x90\x96P\x94P``\x89\x015\x91P\x80\x82\x11\x15aV\x01W`\0\x80\xFD[aV\r\x8A\x83\x8B\x01aT\x11V[\x93P`\x80\x89\x015\x91P\x80\x82\x11\x15aV#W`\0\x80\xFD[PaV0\x89\x82\x8A\x01aU:V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aVvW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aVQV[P\x94\x95\x94PPPPPV[` \x80\x82R\x82Q``\x83\x83\x01R\x80Q`\x80\x84\x01\x81\x90R`\0\x92\x91\x82\x01\x90\x83\x90`\xA0\x86\x01\x90[\x80\x83\x10\x15aV\xCCW\x83Qc\xFF\xFF\xFF\xFF\x16\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aV\xA6V[P\x83\x87\x01Q\x93P`\x1F\x19\x92P\x82\x86\x82\x03\x01`@\x87\x01RaV\xEC\x81\x85aV=V[\x93PPP`@\x85\x01Q\x81\x85\x84\x03\x01``\x86\x01Ra\x1D\xFB\x83\x82aV=V[`\0\x80`@\x83\x85\x03\x12\x15aW\x1CW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aWlW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aWGV[P\x90\x96\x95PPPPPPV[\x805`\xFF\x81\x16\x81\x14a&\x93W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW\x9BW`\0\x80\xFD[a9\x9E\x82aWxV[`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15aW\xCCW`\0\x80\xFD[\x825\x91P` \x83\x015aW\xDE\x81aW\xA4V[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x83\x85\x03`\x80\x81\x12\x15aW\xFFW`\0\x80\xFD[\x845aX\n\x81aT\xBCV[\x93P`@`\x1F\x19\x82\x01\x12\x15aX\x1EW`\0\x80\xFD[PaX'aS\xBFV[` \x85\x015\x81R`@\x85\x015`\x03\x81\x10aX@W`\0\x80\xFD[` \x82\x01R\x91P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aX`W`\0\x80\xFD[aXl\x86\x82\x87\x01aT\x11V[\x91PP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15aX\x91W\x81\x81\x01Q\x83\x82\x01R` \x01aXyV[\x83\x81\x11\x15a\x0B\xA3WPP`\0\x91\x01RV[`\0\x81Q\x80\x84RaX\xBA\x81` \x86\x01` \x86\x01aXvV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15aY\x16W\x82\x84\x03\x89RaY\x04\x84\x83QaX\xA2V[\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01aX\xECV[P\x91\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15aY\x92W\x88\x83\x03`?\x19\x01\x85R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90RaY\x7F\x87\x85\x01\x82aX\xCEV[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01aYJV[P\x90\x98\x97PPPPPPPPV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x11?V[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aY\xCDW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aY\xE4W`\0\x80\xFD[aY\xF0\x88\x83\x89\x01aR\x99V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aZ\tW`\0\x80\xFD[PaZ\x16\x87\x82\x88\x01aT\xF9V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aZVWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aZu\x90\x84\x01\x82aZ8V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14a&\x93W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aZ\xA0W`\0\x80\xFD[aZ\xA8aS\x97V[\x90P\x815aZ\xB5\x81aS7V[\x81RaZ\xC3` \x83\x01aZ|V[` \x82\x01RaZ\xD4`@\x83\x01aZ|V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aZ\xF2W`\0\x80\xFD[aZ\xFB\x83aWxV[\x91Pa[\n\x84` \x85\x01aZ\x8EV[\x90P\x92P\x92\x90PV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a[\xB7W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a[\xA2W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a[xV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a[;V[P\x91\x99\x98PPPPPPPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a[\xDBW`\0\x80\xFD[\x835a[\xE6\x81aT\xBCV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\x01W`\0\x80\xFD[a\\\r\x86\x82\x87\x01aT\xF9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\\3Wa\\3aS\x81V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a\\OW`\0\x80\xFD[a\\WaS\xBFV[\x90Pa\\b\x82aWxV[\x81R` \x82\x015a\\r\x81aT\xBCV[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\\\x95W`\0\x80\xFD[\x855a\\\xA0\x81aT\xBCV[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\xC4W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13a\\\xD5W`\0\x80\xFD[\x805a\\\xE8a\\\xE3\x82a\\\x1AV[aS\xE1V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15a]\x07W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15a]-Wa]\x1E\x8D\x85a\\=V[\x82R\x92\x84\x01\x92\x90\x85\x01\x90a]\x0CV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[` \x81R`\0a9\x9E` \x83\x01\x84aX\xCEV[`\0a\x01\0\x82\x84\x03\x12\x15a-jW`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a]\x82W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a]\x99W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01\xA0\x8A\x8C\x03\x12\x15a]\xD3W`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a]\xEAW`\0\x80\xFD[a]\xF6\x8D\x83\x8E\x01aT\xF9V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15a^\x0FW`\0\x80\xFD[a^\x1B\x8D\x83\x8E\x01aT\xF9V[\x90\x99P\x97P\x87\x91Pa^0\x8D`@\x8E\x01a]]V[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15a^GW`\0\x80\xFD[a^S\x8D\x83\x8E\x01a]pV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15a^mW`\0\x80\xFD[a^y\x8D\x83\x8E\x01aU:V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15a^\x90W`\0\x80\xFD[Pa^\x9D\x8C\x82\x8D\x01aU:V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15a^\xC7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a^\xDEW`\0\x80\xFD[a^\xEA\x8A\x83\x8B\x01aT\xF9V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a_\x03W`\0\x80\xFD[a_\x0F\x8A\x83\x8B\x01aT\xF9V[\x90\x96P\x94P\x84\x91Pa_$\x8A`@\x8B\x01a]]V[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aV#W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a_NW`\0\x80\xFD[\x825a_Y\x81aS7V[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a_uW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a_\x86W`\0\x80\xFD[\x805a_\x94a\\\xE3\x82a\\\x1AV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a_\xB3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a_\xD1W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a_\xB8V[\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\x15aWlW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a_\xFCV[`\0\x80` \x83\x85\x03\x12\x15a`1W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a`GW`\0\x80\xFD[aS\x12\x85\x82\x86\x01aT\xF9V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a`yW`\0\x80\xFD[\x815` a`\x89a\\\xE3\x83a\\\x1AV[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a`\xA8W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W`@\x81\x89\x03\x12\x15a`\xC5W`\0\x80\x81\xFD[a`\xCDaS\xBFV[\x815a`\xD8\x81aT\xBCV[\x81R\x81\x85\x015a`\xE7\x81a`SV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a`\xACV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aa\x19W`\0\x80\xFD[aa#\x85\x85aZ\x8EV[\x92P``\x84\x015aa3\x81a`SV[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aaNW`\0\x80\xFD[aXl\x86\x82\x87\x01a`hV[`\0\x80`@\x83\x85\x03\x12\x15aamW`\0\x80\xFD[\x825aax\x81aT\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x82`\x1F\x83\x01\x12aa\x97W`\0\x80\xFD[\x815` aa\xA7a\\\xE3\x83a\\\x1AV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aa\xC6W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aa\xE9Waa\xDC\x89\x82aZ\x8EV[\x84R\x92\x84\x01\x92\x81\x01aa\xCAV[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12ab\x07W`\0\x80\xFD[\x815` ab\x17a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ab6W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x805abM\x81a`SV[\x83R\x91\x83\x01\x91\x83\x01ab:V[`\0\x82`\x1F\x83\x01\x12abkW`\0\x80\xFD[\x815` ab{a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ab\x9AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15ab\xBDW`\0\x80\x81\xFD[ab\xCB\x89\x86\x83\x8B\x01\x01a`hV[\x84RP\x91\x83\x01\x91\x83\x01ab\x9EV[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15ab\xF6W`\0\x80\xFD[ab\xFF\x89aT\xD1V[\x97Pac\r` \x8A\x01aT\xD1V[\x96Pac\x1B`@\x8A\x01aT\xD1V[\x95Pac)``\x8A\x01aT\xD1V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15acLW`\0\x80\xFD[acX\x8C\x83\x8D\x01aa\x86V[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15acnW`\0\x80\xFD[acz\x8C\x83\x8D\x01aa\xF6V[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15ac\x90W`\0\x80\xFD[Pac\x9D\x8B\x82\x8C\x01abZV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x11?\x82\x84aZ8V[` \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\x15ad2Wad2ad\x08V[P`\x01\x01\x90V[` \x81R`\0a9\x9E` \x83\x01\x84aX\xA2V[`\0` \x82\x84\x03\x12\x15ad^W`\0\x80\xFD[\x81Qa9\x9E\x81aT\xBCV[` \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\x15ad\xC5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a9\x9EW`\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[`\x01\x81\x81\x1C\x90\x82\x16\x80ae1W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a-jWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aeiW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15ae\x83W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aOuW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15ae\xADW`\0\x80\xFD[\x81Qa9\x9E\x81aS7V[`\0\x82\x19\x82\x11\x15ae\xCBWae\xCBad\x08V[P\x01\x90V[`\0\x80\x85\x85\x11\x15ae\xE0W`\0\x80\xFD[\x83\x86\x11\x15ae\xEDW`\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\x15af_W\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01af5V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15af\x91W`\0\x80\xFD[a9\x9E\x83\x83a\\=V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90af\xBE\x81`\x04\x85\x01` \x87\x01aXvV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qaf\xDE\x81\x84` \x87\x01aXvV[\x91\x90\x91\x01\x92\x91PPV[`\0\x82\x82\x10\x15af\xFAWaf\xFAad\x08V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0ag&``\x83\x01\x84aX\xA2V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15agAW`\0\x80\xFD[\x81Qa9\x9E\x81aW\xA4V[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ragv`\xA0\x84\x01\x82aX\xA2V[\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\x90ag&\x90\x83\x01\x84\x86ag\x97V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x1D\xFB``\x83\x01\x84\x86ag\x97V[`\0\x82`\x1F\x83\x01\x12ah\x1EW`\0\x80\xFD[\x81Q` ah.a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ahMW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x80Qahd\x81a`SV[\x83R\x91\x83\x01\x91\x83\x01ahQV[`\0\x80`@\x83\x85\x03\x12\x15ah\x84W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15ah\x9BW`\0\x80\xFD[ah\xA7\x86\x83\x87\x01ah\rV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15ah\xBDW`\0\x80\xFD[Pah\xCA\x85\x82\x86\x01ah\rV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0ag&`@\x83\x01\x84\x86ag\x97V[`\0` \x80\x83\x85\x03\x12\x15ai\x01W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15ai\x17W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13ai(W`\0\x80\xFD[\x80Qai6a\\\xE3\x82a\\\x1AV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15aiUW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x10\xA9W\x83Qaim\x81aS7V[\x82R\x92\x84\x01\x92\x90\x84\x01\x90aiZV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82ai\xA1Wai\xA1ai|V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aT\xB4\x90\x83\x01\x84aX\xA2V[\x82\x81R`@` \x82\x01R`\0aT\xB4`@\x83\x01\x84aX\xA2V[`\0` \x82\x84\x03\x12\x15ai\xF5W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aj$` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aj>``\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[`\0` \x82\x84\x03\x12\x15aj\x8DW`\0\x80\xFD[\x81Qa9\x9E\x81a`SV[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15aj\xB5Waj\xB5ad\x08V[\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\x15ak&W\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\x01aj\xF6V[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15akNWakNad\x08V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15akjW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a9\x9EW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15ak\xA8Wak\xA8ad\x08V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80ak\xCBWak\xCBai|V[\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 \xB3\xF6\xE5q\x04\xAA@rT\xDB\x80\x0E\xFF^\x93bf\xA9p ]\xDB\x81`\x13m\x98h\x88\x1F\x0FqdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x0030dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \x1A\x14\x057\xFB1\xEE\xCD\xC5el\xE327yM\xA9]\x06\x95\xD263=\x1F|\x8Bf\xFF,\x15\xE4dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060043610620002795760003560e01c80637bef4aac1162000155578063b134427111620000c7578063e20c9f711162000086578063e20c9f711462000550578063e3a8b345146200055a578063e4b5200b146200056e578063eab66d7a1462000582578063fa7626d4146200059657600080fd5b8063b134427114620004ef578063b5508aa91462000503578063ba414fa6146200050d578063dad544e01462000528578063e18272c2146200053c57600080fd5b80639d8b9cb411620001145780639d8b9cb414620004955780639e3ba43714620004a95780639e9923c214620004bd5780639fd0506d14620004d1578063abc1997c14620004e557600080fd5b80637bef4aac146200043657806385226c81146200044a578063886f119514620004635780638b2c69eb1462000477578063916a17c6146200048b57600080fd5b80634ca22c3f11620001ef57806366d9a9a011620001ae57806366d9a9a014620003cd5780636830483514620003e6578063694ed61014620003fa5780636b3aa72e146200040e5780636d14a987146200042257600080fd5b80634ca22c3f146200035957806356f0b8a0146200036d57806358408f0c14620003815780635df45946146200039a5780635e5a677514620003ae57600080fd5b806339a5fcfa116200023c57806339a5fcfa14620003095780633e2bee3b146200031d5780633e47158c14620003315780633e5e3c2314620003455780633f7286f4146200034f57600080fd5b80630832af52146200027e5780631ed7831c14620002af578063248294ab14620002c85780632ade388014620002dc5780633998fdd314620002f5575b600080fd5b60205462000292906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620002b9620005a4565b604051620002a69190620025a9565b602f5462000292906001600160a01b031681565b620002e662000608565b604051620002a6919062002626565b602c5462000292906001600160a01b031681565b60225462000292906001600160a01b031681565b60315462000292906001600160a01b031681565b601d5462000292906001600160a01b031681565b620002b962000756565b620002b9620007b8565b60275462000292906001600160a01b031681565b60325462000292906001600160a01b031681565b6200039862000392366004620026ec565b6200081a565b005b602a5462000292906001600160a01b031681565b620003be670de0b6b3a764000081565b604051908152602001620002a6565b620003d762000832565b604051620002a6919062002711565b60295462000292906001600160a01b031681565b602e5462000292906001600160a01b031681565b60305462000292906001600160a01b031681565b60285462000292906001600160a01b031681565b60265462000292906001600160a01b031681565b620004546200091c565b604051620002a69190620027c8565b601e5462000292906001600160a01b031681565b60255462000292906001600160a01b031681565b620003d7620009f6565b60345462000292906001600160a01b031681565b60245462000292906001600160a01b031681565b602b5462000292906001600160a01b031681565b60355462000292906001600160a01b031681565b6200039862000ae0565b601f5462000292906001600160a01b031681565b6200045462000af6565b6200051762000bd0565b6040519015158152602001620002a6565b60335462000292906001600160a01b031681565b60235462000292906001600160a01b031681565b620002b962000d07565b60215462000292906001600160a01b031681565b602d5462000292906001600160a01b031681565b60365462000292906001600160a01b031681565b600754620005179060ff1681565b60606014805480602002602001604051908101604052809291908181526020018280548015620005fe57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620005df575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200074d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000735578382906000526020600020018054620006a1906200282e565b80601f0160208091040260200160405190810160405280929190818152602001828054620006cf906200282e565b8015620007205780601f10620006f45761010080835404028352916020019162000720565b820191906000526020600020905b8154815290600101906020018083116200070257829003601f168201915b5050505050815260200190600101906200067f565b5050505081525050815260200190600101906200062c565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620005fe576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620005df575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620005fe576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620005df575050505050905090565b620008258162000d69565b6200082f62002010565b50565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200074d5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200090357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620008c45790505b5050505050815250508152602001906001019062000856565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200074d57838290600052602060002001805462000962906200282e565b80601f016020809104026020016040519081016040528092919081815260200182805462000990906200282e565b8015620009e15780601f10620009b557610100808354040283529160200191620009e1565b820191906000526020600020905b815481529060010190602001808311620009c357829003601f168201915b50505050508152602001906001019062000940565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200074d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000ac757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a885790505b5050505050815250508152602001906001019062000a1a565b62000aea6200215b565b62000af462002010565b565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200074d57838290600052602060002001805462000b3c906200282e565b80601f016020809104026020016040519081016040528092919081815260200182805462000b6a906200282e565b801562000bbb5780601f1062000b8f5761010080835404028352916020019162000bbb565b820191906000526020600020905b81548152906001019060200180831162000b9d57829003601f168201915b50505050508152602001906001019062000b1a565b600754600090610100900460ff161562000bf35750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562000d025760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162000c84917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200286b565b60408051601f198184030181529082905262000ca0916200289e565b6000604051808303816000865af19150503d806000811462000cdf576040519150601f19603f3d011682016040523d82523d6000602084013e62000ce4565b606091505b509150508080602001905181019062000cfe9190620028bc565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015620005fe576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620005df575050505050905090565b60405162000d7790620023e4565b604051809103906000f08015801562000d94573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604080518082018252603d54808252603e54602092830190815260009182525190915220603c55601c546033546040516303223eab60e11b81526001600160a01b0391821660048201529116906306447d5690602401600060405180830381600087803b15801562000e2657600080fd5b505af115801562000e3b573d6000803e3d6000fd5b5050505060405162000e4d90620023f1565b604051809103906000f08015801562000e6a573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560408051600180825281830190925260009160208083019080368337505060355482519293506001600160a01b03169183915060009062000ed05762000ed0620028f6565b6001600160a01b0392831660209182029290920101526036546040518392919091169062000efe90620023ff565b62000f0b9291906200290c565b604051809103906000f08015801562000f28573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405162000f57906200240d565b604051809103906000f08015801562000f74573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b039290921691909117905560405162000fa3906200241b565b604051809103906000f08015801562000fc0573d6000803e3d6000fd5b50603280546001600160a01b0319166001600160a01b03928316179055601e5460405191169062000ff19062002429565b6001600160a01b039091168152602001604051809103906000f0801580156200101e573d6000803e3d6000fd5b50602f80546001600160a01b0319166001600160a01b03929092169190911790556040516200104d9062002437565b604051809103906000f0801580156200106a573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03928316908117909155602e54604051919216906200109f9062002445565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620010d3573d6000803e3d6000fd5b50602080546001600160a01b039283166001600160a01b031990911681178255601d54601e546040805133602482015291861660448301526000606480840191909152815180840390910181526084909201815293810180516001600160e01b03166305e52ecf60e21b17905292519193169190620011529062002453565b620011609392919062002938565b604051809103906000f0801580156200117d573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620011ac906200241b565b604051809103906000f080158015620011c9573d6000803e3d6000fd5b50603280546001600160a01b0319166001600160a01b03928316179055602e54604051911690620011fa9062002461565b6001600160a01b039091168152602001604051809103906000f08015801562001227573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03928316908117909155601d54601e54604051336024820152908416604482015260006064820152919216906305e52ecf60e21b9060840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620012b49062002453565b620012c29392919062002938565b604051809103906000f080158015620012df573d6000803e3d6000fd5b50603080546001600160a01b0319166001600160a01b03928316179055602d54602e54602f54601f54604051630d8efe5960e21b8152928516600484015290841660248301528316604482015291169063363bf96490606401600060405180830381600087803b1580156200135357600080fd5b505af115801562001368573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013bd57600080fd5b505af1158015620013d2573d6000803e3d6000fd5b5050601c546034546040516303223eab60e11b81526001600160a01b039182166004820152911692506306447d569150602401600060405180830381600087803b1580156200142057600080fd5b505af115801562001435573d6000803e3d6000fd5b5050602154601d546040516001600160a01b039283169450911691506200145c9062002453565b620014699291906200296f565b604051809103906000f08015801562001486573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602154601d54604051918316921690620014bd9062002453565b620014ca9291906200296f565b604051809103906000f080158015620014e7573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055602154601d546040519183169216906200151e9062002453565b6200152b9291906200296f565b604051809103906000f08015801562001548573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b03928316179055602154601d546040519183169216906200157f9062002453565b6200158c9291906200296f565b604051809103906000f080158015620015a9573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b03928316179055602154601d54604051918316921690620015e09062002453565b620015ed9291906200296f565b604051809103906000f0801580156200160a573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200166657600080fd5b505af11580156200167b573d6000803e3d6000fd5b5050601c546033546040516303223eab60e11b81526001600160a01b039182166004820152911692506306447d569150602401600060405180830381600087803b158015620016c957600080fd5b505af1158015620016de573d6000803e3d6000fd5b5050602854602e546040516001600160a01b0392831694509116915062001705906200246f565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001739573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316908117909155601d5460295460405163266a23b160e21b815290841660048201526024810192909252909116906399a88ec490604401600060405180830381600087803b158015620017a457600080fd5b505af1158015620017b9573d6000803e3d6000fd5b50506028546040516001600160a01b039091169250620017da91506200247d565b6001600160a01b039091168152602001604051809103906000f08015801562001807573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b039283169081178255601d54602a5460405163266a23b160e21b8152908516600482015292830191909152909116906399a88ec490604401600060405180830381600087803b1580156200187057600080fd5b505af115801562001885573d6000803e3d6000fd5b50506028546040516001600160a01b039091169250620018a691506200248b565b6001600160a01b039091168152602001604051809103906000f080158015620018d3573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155601d54602b5460405163266a23b160e21b815290841660048201526024810192909252909116906399a88ec490604401600060405180830381600087803b1580156200193e57600080fd5b505af115801562001953573d6000803e3d6000fd5b50506032546028546029546040516001600160a01b039384169550918316935090911690620019829062002499565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620019bf573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03928316908117909155601d54602c5460405163266a23b160e21b815290841660048201526024810192909252909116906399a88ec490604401600060405180830381600087803b15801562001a2a57600080fd5b505af115801562001a3f573d6000803e3d6000fd5b5050602c5460345460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b15801562001a8d57600080fd5b505af115801562001aa2573d6000803e3d6000fd5b5050602a54603b546040516306fa684f60e51b81526001600160a01b039182166004820152603d546024820152603e5460448201529116925063df4d09e09150606401600060405180830381600087803b15801562001b0057600080fd5b505af115801562001b15573d6000803e3d6000fd5b5050505060008260ff1667ffffffffffffffff81111562001b3a5762001b3a620028e0565b60405190808252806020026020018201604052801562001b64578160200160208202803683370190505b50905060005b815181101562001bc35762001b81816001620029ae565b82828151811062001b965762001b96620028f6565b6001600160601b03909216602092830291909101909101528062001bba81620029c9565b91505062001b6a565b5060008360ff1667ffffffffffffffff81111562001be55762001be5620028e0565b60405190808252806020026020018201604052801562001c1a57816020015b606081526020019060019003908162001c045790505b50905060005b815181101562001d095760408051600180825281830190925290816020015b604080518082019091526000808252602082015281526020019060019003908162001c3f5790505082828151811062001c7c5762001c7c620028f6565b60200260200101819052506040518060400160405280826001600160a01b03168152602001670de0b6b3a76400006001600160601b031681525082828151811062001ccb5762001ccb620028f6565b602002602001015160008151811062001ce85762001ce8620028f6565b6020026020010181905250808062001d0090620029c9565b91505062001c20565b50602c54602954602a54602b546040516001600160a01b039485169493841693928316929091169062001d3c90620024a7565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001d81573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905562001db060416000620024b5565b60005b8460ff1681101562001e8d5760408051606081018252815463ffffffff600160681b82048116835261ffff600160881b8304811660208501908152600160981b90930481169484019485526041805460018101825560009190915293517f7c9785e8241615bc80415d89775984a1337d15dc1bf4ce50f41988b2a2b336a7909401805493519551821666010000000000000267ffff00000000000019969092166401000000000265ffffffffffff19909416949092169390931791909117929092161790558062001e8481620029c9565b91505062001db3565b50601d54602854602254603454603854603a54601e546040516001600160a01b0397881697639623609d9781169681169563dd8283f360e01b9562001eed9591831694908316939183169216906000906041908e908e9060240162002abf565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262001f3693929160040162002938565b600060405180830381600087803b15801562001f5157600080fd5b505af115801562001f66573d6000803e3d6000fd5b5050505060405162001f7890620024d5565b604051809103906000f08015801562001f95573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b15801562001ff157600080fd5b505af115801562002006573d6000803e3d6000fd5b5050505050505050565b7f2a3b3f7ef4f62985af31809fdc531483e5f1cd67aa1bcf0f8ac0d17e158aa9676051557f0bcb2b68b6c68a5aea7fe75b5446c4ca410461fa226c2487d07eb2c504639cb56050557ec874e4fcfb88d5c98a0240bc6f7f37d45f2226ca147317b3a2b7243ddb6c1b6053557f0940e64478db51fe630cc540dbeabea34d072a54fd7c743056e18174f9a1b64e6052557f0dae15dac551f01e22364ece2cc534f95ac4959a1ac1644059e7cb94725f0fab6055557f0bcb6f00afd0afd72bfe4bc49fc96adff83f7e4b71af902a10e9141f156eac376054557f0a520f69f5ccc7c2f5474ea989d9a8187d9ccc058b387d1a47e1137533d5f3d76057557f2f6a09aca611e62f3caeb1ba02918ed1a71424b759ab7226becb1085380a6617605655604f54604e546200214d9190620021469062002173565b906200220c565b805160585560200151605955565b60405462000af490600160a81b900460ff1662000d69565b604080518082019091526000808252602082015260008080620021a66000805160206201d62d8339815191528662002b96565b90505b620021b481620022ad565b90935091506000805160206201d62d833981519152828309831415620021f0576040805180820190915290815260208101919091529392505050565b6000805160206201d62d833981519152600182089050620021a9565b60408051808201909152600080825260208201526200222a620024e3565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200225f5762002261565bfe5b5080620022a55760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b600080806000805160206201d62d83398151915260036000805160206201d62d833981519152866000805160206201d62d83398151915288890909089050600062002329827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206201d62d83398151915262002335565b91959194509092505050565b6000806200234262002501565b6200234c6200251f565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156200225f575082620023d95760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016200229c565b505195945050505050565b60948062002bba83390190565b6107188062002c4e83390190565b610778806200336683390190565b61158c8062003ade83390190565b610406806200506a83390190565b611b6e806200547083390190565b61178e8062006fde83390190565b610efe806200876c83390190565b610e81806200966a83390190565b611f78806200a4eb83390190565b613a6a806200c46383390190565b6121d2806200fecd83390190565b6113ec806201209f83390190565b6116e0806201348b83390190565b61709d8062014b6b83390190565b50805460008255906000526020600020908101906200082f91906200253d565b611a25806201bc0883390190565b60405180606001604052806003906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b808211156200255f57805467ffffffffffffffff191681556001016200253e565b5090565b600081518084526020808501945080840160005b838110156200259e5781516001600160a01b03168752958201959082019060010162002577565b509495945050505050565b602081526000620025be602083018462002563565b9392505050565b60005b83811015620025e2578181015183820152602001620025c8565b83811115620025f2576000848401525b50505050565b6000815180845262002612816020860160208601620025c5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620026dc57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015620026c557605f19898503018352620026b2848651620025f8565b948e01949350918d019160010162002693565b505050978a0197945050918801916001016200264d565b50919a9950505050505050505050565b600060208284031215620026ff57600080fd5b813560ff81168114620025be57600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620027b957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620027a35783516001600160e01b0319168252928b019260019290920191908b019062002777565b50978a0197955050509187019160010162002739565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200282157603f198886030184526200280e858351620025f8565b94509285019290850190600101620027ef565b5092979650505050505050565b600181811c908216806200284357607f821691505b602082108114156200286557634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062002890816004850160208701620025c5565b919091016004019392505050565b60008251620028b2818460208701620025c5565b9190910192915050565b600060208284031215620028cf57600080fd5b81518015158114620025be57600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60408152600062002921604083018562002563565b905060018060a01b03831660208301529392505050565b6001600160a01b038481168252831660208201526060604082018190526000906200296690830184620025f8565b95945050505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115620029c457620029c462002998565b500190565b6000600019821415620029e057620029e062002998565b5060010190565b600081518084526020808501945080840160005b838110156200259e5781516001600160601b031687529582019590820190600101620029fb565b600081518084526020808501808196508360051b810191508286016000805b8681101562002ab1578385038a52825180518087529087019087870190845b8181101562002a9b57835180516001600160a01b031684528a01516001600160601b03168a8401529289019260409092019160010162002a60565b50509a87019a9550509185019160010162002a41565b509298975050505050505050565b600061010080830160018060a01b03808d1685526020818d16818701526040828d16818801526060838d168189015260ff8c1660808901528560a08901528495508a549350838552610120880195508a60005282600020945060005b8481101562002b5757855463ffffffff8116885261ffff81861c8116868a015260309190911c1683880152958101956001958601950162002b1b565b50505050505082810360c084015262002b718186620029e7565b905082810360e084015262002b87818562002a22565b9b9a5050505050505050505050565b60008262002bb457634e487b7160e01b600052601260045260246000fd5b50069056fe6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c0033608060405234801561001057600080fd5b5061156c806100206000396000f3fe608060405234801561001057600080fd5b50600436106102bb5760003560e01c80636d70f7ae11610182578063bb45fef2116100e9578063cbb5d4db116100a2578063dbe35bd81161007c578063dbe35bd81461069f578063eea9064b146106d9578063f16172b014610718578063f698da25146102e957600080fd5b8063cbb5d4db1461060a578063cf80873e14610643578063da8be8641461066757600080fd5b8063bb45fef2146103c4578063bc56ff6614610559578063c448feb81461056c578063c488375a14610363578063c5e480db14610574578063c94b5111146105fc57600080fd5b80639104c3191161013b5780639104c31914610528578063965682711461037757806399be81c81461052f578063a1060c8814610541578063a178848414610363578063a98fb3551461052f57600080fd5b80636d70f7ae1461049957806374d898d714610377578063778e55f3146104bc5780637f548071146104e75780638d90cd56146104f5578063900413471461050857600080fd5b806329c77d4f11610226578063597b36da116101df578063597b36da146104295780635f966f14146103d257806360d7faed14610437578063635bbd101461044c57806365da12641461045d57806367f292c71461048657600080fd5b806329c77d4f1461036357806333404396146103ac578063374823b5146103c45780633cdeb5e0146103d25780633e28391d146103fb57806343377382146102e957600080fd5b80631522bf02116102785780631522bf021461034f57806316928365146103635780631bbce091146103775780631d3696b71461038e57806320606b70146102e957806328a573ae1461034157600080fd5b80630449ca39146102c057806304a4f979146102e95780630b9f487a146102f05780630dd8dd02146103095780630f589e591461032c578063132d496714610341575b600080fd5b6102d66102ce366004610978565b600092915050565b6040519081526020015b60405180910390f35b60006102d6565b6102d66102fe3660046109de565b600095945050505050565b61031f610317366004610978565b606092915050565b6040516102e09190610a39565b61033f61033a366004610ad6565b505050565b005b61033f61033a366004610b29565b61033f61035d366004610b6a565b50505050565b6102d6610371366004610bd5565b50600090565b6102d6610385366004610b29565b60009392505050565b61039c610371366004610bd5565b60405190151581526020016102e0565b61033f6103ba366004610bf9565b5050505050505050565b61039c6102ce366004610cbc565b6103e36103e0366004610bd5565b90565b6040516001600160a01b0390911681526020016102e0565b61039c610409366004610bd5565b6001600160a01b0390811660009081526002602052604090205416151590565b6102d6610371366004610e7e565b61033f610445366004610f6c565b5050505050565b61033f61045a366004610ff7565b50565b6103e361046b366004610bd5565b6002602052600090815260409020546001600160a01b031681565b61033f610494366004611010565b610726565b61039c6104a7366004610bd5565b60006020819052908152604090205460ff1681565b6102d66104ca366004611078565b600160209081526000928352604080842090915290825290205481565b61033f610445366004611159565b61033f6105033660046111e9565b6107a0565b61051b61051636600461123a565b610806565b6040516102e091906112c4565b60006103e3565b61033f61053d3660046112d7565b5050565b6102d661054f36600461130c565b6000949350505050565b61033f610567366004611352565b6108e8565b61c4e06102d6565b6105c6610582366004610bd5565b604080516060810182526000808252602082018190529181019190915250604080516060810182526001600160a01b03909216808352602083015260009082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016102e0565b6102d661054f3660046113b6565b61033f6106183660046113ee565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b610659610651366004610bd5565b506060908190565b6040516102e0929190611423565b61031f610675366004610bd5565b6001600160a01b0316600090815260026020526040902080546001600160a01b0319169055606090565b61033f6106ad366004610b29565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b61033f6106e7366004611483565b505033600090815260026020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61033f61045a3660046114db565b60405163c608c7f360e01b81526001600160a01b038581166004830152848116602483015260448201849052828116606483015286169063c608c7f3906084015b600060405180830381600087803b15801561078157600080fd5b505af1158015610795573d6000803e3d6000fd5b505050505050505050565b604051638c80d4e560e01b81526001600160a01b038481166004830152838116602483015260448201839052851690638c80d4e590606401600060405180830381600087803b1580156107f257600080fd5b505af11580156103ba573d6000803e3d6000fd5b6060600082516001600160401b0381111561082357610823610ce8565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b50905060005b83518110156108e0576001600160a01b0385166000908152600160205260408120855190919086908490811061088a5761088a6114f7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106108c5576108c56114f7565b60209081029190910101526108d98161150d565b9050610852565b509392505050565b60405163c4623ea160e01b81526001600160a01b038581166004830152848116602483015283811660448301526064820183905286169063c4623ea190608401610767565b60008083601f84011261093f57600080fd5b5081356001600160401b0381111561095657600080fd5b6020830191508360208260051b850101111561097157600080fd5b9250929050565b6000806020838503121561098b57600080fd5b82356001600160401b038111156109a157600080fd5b6109ad8582860161092d565b90969095509350505050565b6001600160a01b038116811461045a57600080fd5b80356109d9816109b9565b919050565b600080600080600060a086880312156109f657600080fd5b8535610a01816109b9565b94506020860135610a11816109b9565b93506040860135610a21816109b9565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015610a7157835183529284019291840191600101610a55565b50909695505050505050565b600060608284031215610a8f57600080fd5b50919050565b60008083601f840112610aa757600080fd5b5081356001600160401b03811115610abe57600080fd5b60208301915083602082850101111561097157600080fd5b600080600060808486031215610aeb57600080fd5b610af58585610a7d565b925060608401356001600160401b03811115610b1057600080fd5b610b1c86828701610a95565b9497909650939450505050565b600080600060608486031215610b3e57600080fd5b8335610b49816109b9565b92506020840135610b59816109b9565b929592945050506040919091013590565b60008060008060408587031215610b8057600080fd5b84356001600160401b0380821115610b9757600080fd5b610ba38883890161092d565b90965094506020870135915080821115610bbc57600080fd5b50610bc98782880161092d565b95989497509550505050565b600060208284031215610be757600080fd5b8135610bf2816109b9565b9392505050565b6000806000806000806000806080898b031215610c1557600080fd5b88356001600160401b0380821115610c2c57600080fd5b610c388c838d0161092d565b909a50985060208b0135915080821115610c5157600080fd5b610c5d8c838d0161092d565b909850965060408b0135915080821115610c7657600080fd5b610c828c838d0161092d565b909650945060608b0135915080821115610c9b57600080fd5b50610ca88b828c0161092d565b999c989b5096995094979396929594505050565b60008060408385031215610ccf57600080fd5b8235610cda816109b9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610d2057610d20610ce8565b60405290565b604080519081016001600160401b0381118282101715610d2057610d20610ce8565b604051601f8201601f191681016001600160401b0381118282101715610d7057610d70610ce8565b604052919050565b803563ffffffff811681146109d957600080fd5b60006001600160401b03821115610da557610da5610ce8565b5060051b60200190565b600082601f830112610dc057600080fd5b81356020610dd5610dd083610d8c565b610d48565b82815260059290921b84018101918181019086841115610df457600080fd5b8286015b84811015610e18578035610e0b816109b9565b8352918301918301610df8565b509695505050505050565b600082601f830112610e3457600080fd5b81356020610e44610dd083610d8c565b82815260059290921b84018101918181019086841115610e6357600080fd5b8286015b84811015610e185780358352918301918301610e67565b600060208284031215610e9057600080fd5b81356001600160401b0380821115610ea757600080fd5b9083019060e08286031215610ebb57600080fd5b610ec3610cfe565b610ecc836109ce565b8152610eda602084016109ce565b6020820152610eeb604084016109ce565b604082015260608301356060820152610f0660808401610d78565b608082015260a083013582811115610f1d57600080fd5b610f2987828601610daf565b60a08301525060c083013582811115610f4157600080fd5b610f4d87828601610e23565b60c08301525095945050505050565b803580151581146109d957600080fd5b600080600080600060808688031215610f8457600080fd5b85356001600160401b0380821115610f9b57600080fd5b9087019060e0828a031215610faf57600080fd5b90955060208701359080821115610fc557600080fd5b50610fd28882890161092d565b90955093505060408601359150610feb60608701610f5c565b90509295509295909350565b60006020828403121561100957600080fd5b5035919050565b600080600080600060a0868803121561102857600080fd5b8535611033816109b9565b94506020860135611043816109b9565b93506040860135611053816109b9565b925060608601359150608086013561106a816109b9565b809150509295509295909350565b6000806040838503121561108b57600080fd5b8235611096816109b9565b915060208301356110a6816109b9565b809150509250929050565b6000604082840312156110c357600080fd5b6110cb610d26565b905081356001600160401b03808211156110e457600080fd5b818401915084601f8301126110f857600080fd5b813560208282111561110c5761110c610ce8565b61111e601f8301601f19168201610d48565b9250818352868183860101111561113457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561117157600080fd5b853561117c816109b9565b9450602086013561118c816109b9565b935060408601356001600160401b03808211156111a857600080fd5b6111b489838a016110b1565b945060608801359150808211156111ca57600080fd5b506111d7888289016110b1565b95989497509295608001359392505050565b600080600080608085870312156111ff57600080fd5b843561120a816109b9565b9350602085013561121a816109b9565b9250604085013561122a816109b9565b9396929550929360600135925050565b6000806040838503121561124d57600080fd5b8235611258816109b9565b915060208301356001600160401b0381111561127357600080fd5b61127f85828601610daf565b9150509250929050565b600081518084526020808501945080840160005b838110156112b95781518752958201959082019060010161129d565b509495945050505050565b602081526000610bf26020830184611289565b600080602083850312156112ea57600080fd5b82356001600160401b0381111561130057600080fd5b6109ad85828601610a95565b6000806000806080858703121561132257600080fd5b843561132d816109b9565b9350602085013561133d816109b9565b93969395505050506040820135916060013590565b600080600080600060a0868803121561136a57600080fd5b8535611375816109b9565b94506020860135611385816109b9565b93506040860135611395816109b9565b925060608601356113a5816109b9565b949793965091946080013592915050565b600080600080608085870312156113cc57600080fd5b84356113d7816109b9565b935060208501359250604085013561122a816109b9565b6000806040838503121561140157600080fd5b823561140c816109b9565b915061141a60208401610f5c565b90509250929050565b604080825283519082018190526000906020906060840190828701845b828110156114655781516001600160a01b031684529284019290840190600101611440565b505050838103828501526114798186611289565b9695505050505050565b60008060006060848603121561149857600080fd5b83356114a3816109b9565b925060208401356001600160401b038111156114be57600080fd5b6114ca868287016110b1565b925050604084013590509250925092565b6000606082840312156114ed57600080fd5b610bf28383610a7d565b634e487b7160e01b600052603260045260246000fd5b600060001982141561152f57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201dd1790fdaffc931f9a12c9c4ae69766ce1339d277ebd376b8d1969f993cf1de64736f6c634300080c0033608060405234801561001057600080fd5b506103e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a98fb3551161005b578063a98fb35514610103578063d79aceab14610111578063ec76f44214610118578063f698da251461011157600080fd5b8063374823b51461008d5780639926ee7d146100b8578063a1060c88146100cc578063a364f4da146100f2575b600080fd5b6100a361009b366004610142565b600092915050565b60405190151581526020015b60405180910390f35b6100ca6100c63660046101dc565b5050565b005b6100e46100da3660046102c1565b6000949350505050565b6040519081526020016100af565b6100ca610100366004610303565b50565b6100ca6100c6366004610325565b60006100e4565b6100ca610100366004610397565b80356001600160a01b038116811461013d57600080fd5b919050565b6000806040838503121561015557600080fd5b61015e83610126565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156101a5576101a561016c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156101d4576101d461016c565b604052919050565b600080604083850312156101ef57600080fd5b6101f883610126565b915060208084013567ffffffffffffffff8082111561021657600080fd5b908501906060828803121561022a57600080fd5b610232610182565b82358281111561024157600080fd5b8301601f8101891361025257600080fd5b8035838111156102645761026461016c565b610276601f8201601f191687016101ab565b9350808452898682840101111561028c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b600080600080608085870312156102d757600080fd5b6102e085610126565b93506102ee60208601610126565b93969395505050506040820135916060013590565b60006020828403121561031557600080fd5b61031e82610126565b9392505050565b6000806020838503121561033857600080fd5b823567ffffffffffffffff8082111561035057600080fd5b818501915085601f83011261036457600080fd5b81358181111561037357600080fd5b86602082850101111561038557600080fd5b60209290920196919550909350505050565b6000602082840312156103a957600080fd5b503591905056fea2646970667358221220b4ce23c32e90dd0ccee3681aa8c575c3396d30579f50b64aaeb230a9808a9b4264736f6c634300080c0033608060405260078054600160ff199182168117909255600b805490911690911790553480156200002e57600080fd5b5060405162001b6e38038062001b6e833981016040819052620000519162000251565b6200005e81600062000065565b5062000283565b601c546001600160a01b03161580156200008757506001600160a01b03821615155b6200010f5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4015b60405180910390fd5b601d81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2620001548262000158565b5050565b6001600160a01b038116620001e85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40162000106565b601c54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156200026457600080fd5b81516001600160a01b03811681146200027c57600080fd5b9392505050565b6118db80620002936000396000f3fe6080604052600436106102305760003560e01c806384d810621161012e578063b5508aa9116100ab578063d9910a561161006f578063d9910a56146105ef578063e20c9f711461063b578063f6848d2414610650578063fa7626d41461066b578063fabc1cbc1461068557600080fd5b8063b5508aa9146105c5578063ba414fa6146105da578063beffbb89146105ef578063bfe34a411461060e578063c2c51c40146105ef57600080fd5b80639b4e4634116100f25780639b4e46341461055d5780639ba0627514610572578063a38406a314610593578063a6a509be146105b1578063b13442711461034657600080fd5b806384d810621461034657806385226c81146104de578063886f1195146105005780639104c31914610520578063916a17c61461054857600080fd5b80633e5e3c23116101bc5780635ac86ab7116101805780635ac86ab7146104115780635c975abb1461045157806360f4062b1461046657806366d9a9a01461049c57806374cdd798146104be57600080fd5b80633e5e3c23146103915780633f7286f4146103a657806344e71c80146103bb578063463db038146103de578063595c6a67146103fc57600080fd5b8063292b7b2b11610203578063292b7b2b146102cc5780632ade388014610304578063387b13001461032657806339b70e38146103465780633a591f081461035a57600080fd5b80630e81073c1461023557806310d67a2f14610268578063136439dd1461028a5780631ed7831c146102aa575b600080fd5b34801561024157600080fd5b50610255610250366004611327565b919050565b6040519081526020015b60405180910390f35b34801561027457600080fd5b50610288610283366004611353565b6106a5565b005b34801561029657600080fd5b506102886102a5366004611370565b61075e565b3480156102b657600080fd5b506102bf61089d565b60405161025f9190611389565b3480156102d857600080fd5b50604e546102ec906001600160a01b031681565b6040516001600160a01b03909116815260200161025f565b34801561031057600080fd5b506103196108ff565b60405161025f9190611406565b34801561033257600080fd5b506102886103413660046114e1565b505050565b34801561035257600080fd5b5060006102ec565b34801561036657600080fd5b50610288610375366004611327565b6001600160a01b03909116600090815260506020526040902055565b34801561039d57600080fd5b506102bf610a41565b3480156103b257600080fd5b506102bf610aa1565b3480156103c757600080fd5b5060405167ffffffffffffffff815260200161025f565b3480156103ea57600080fd5b506102886103f9366004611522565b50565b34801561040857600080fd5b50610288610b01565b34801561041d57600080fd5b5061044161042c36600461154c565b601d54600160ff9092169190911b9081161490565b604051901515815260200161025f565b34801561045d57600080fd5b50601d54610255565b34801561047257600080fd5b50610255610481366004611353565b6001600160a01b031660009081526050602052604090205490565b3480156104a857600080fd5b506104b1610bc8565b60405161025f919061156f565b3480156104ca57600080fd5b50604f546102ec906001600160a01b031681565b3480156104ea57600080fd5b506104f3610cae565b60405161025f9190611622565b34801561050c57600080fd5b50601c546102ec906001600160a01b031681565b34801561052c57600080fd5b506102ec73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b34801561055457600080fd5b506104b1610d7e565b61028861056b3660046116d8565b5050505050565b34801561057e57600080fd5b506102ec61058d366004611353565b50600090565b34801561059f57600080fd5b506102ec6105ae366004611353565b90565b3480156105bd57600080fd5b506000610255565b3480156105d157600080fd5b506104f3610e64565b3480156105e657600080fd5b50610441610f34565b3480156105fb57600080fd5b5061028861060a366004611327565b5050565b34801561061a57600080fd5b50610255610629366004611353565b60506020526000908152604090205481565b34801561064757600080fd5b506102bf61105f565b34801561065c57600080fd5b5061044161058d366004611353565b34801561067757600080fd5b506007546104419060ff1681565b34801561069157600080fd5b506102886106a0366004611370565b6110bf565b601c60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061174c565b6001600160a01b0316336001600160a01b0316146107555760405162461bcd60e51b815260040161074c90611769565b60405180910390fd5b6103f98161121b565b601c5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca91906117b3565b6107e65760405162461bcd60e51b815260040161074c906117d5565b601d548181161461085f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161074c565b601d81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b606060148054806020026020016040519081016040528092919081815260200182805480156108f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108d7575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610a3857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610a215783829060005260206000200180546109949061181d565b80601f01602080910402602001604051908101604052809291908181526020018280546109c09061181d565b8015610a0d5780601f106109e257610100808354040283529160200191610a0d565b820191906000526020600020905b8154815290600101906020018083116109f057829003601f168201915b505050505081526020019060010190610975565b505050508152505081526020019060010190610923565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b601c5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d91906117b3565b610b895760405162461bcd60e51b815260040161074c906117d5565b600019601d81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610a385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610c9657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610c585790505b50505050508152505081526020019060010190610bec565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610a38578382906000526020600020018054610cf19061181d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1d9061181d565b8015610d6a5780601f10610d3f57610100808354040283529160200191610d6a565b820191906000526020600020905b815481529060010190602001808311610d4d57829003601f168201915b505050505081526020019060010190610cd2565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610a385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610e4c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e0e5790505b50505050508152505081526020019060010190610da2565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610a38578382906000526020600020018054610ea79061181d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed39061181d565b8015610f205780601f10610ef557610100808354040283529160200191610f20565b820191906000526020600020905b815481529060010190602001808311610f0357829003601f168201915b505050505081526020019060010190610e88565b600754600090610100900460ff1615610f565750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102505760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610fe4917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611858565b60408051601f1981840301815290829052610ffe91611889565b6000604051808303816000865af19150503d806000811461103b576040519150601f19603f3d011682016040523d82523d6000602084013e611040565b606091505b509150508080602001905181019061105891906117b3565b9392505050565b606060138054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b601c60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611112573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611136919061174c565b6001600160a01b0316336001600160a01b0316146111665760405162461bcd60e51b815260040161074c90611769565b601d54198119601d541916146111e45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161074c565b601d81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610892565b6001600160a01b0381166112a95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161074c565b601c54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146103f957600080fd5b6000806040838503121561133a57600080fd5b823561134581611312565b946020939093013593505050565b60006020828403121561136557600080fd5b813561105881611312565b60006020828403121561138257600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156113ca5783516001600160a01b0316835292840192918401916001016113a5565b50909695505050505050565b60005b838110156113f15781810151838201526020016113d9565b83811115611400576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114d457603f19888603018452815180516001600160a01b0316865286015160408787018190528151908701819052908701906060600582901b88018101919088019060005b818110156114bd57898403605f190183528451805180865261149e818e88018f85016113d6565b958c0195601f01601f1916949094018b019350918a0191600101611477565b50919750505093860193509085019060010161142d565b5092979650505050505050565b6000806000606084860312156114f657600080fd5b833561150181611312565b9250602084013561151181611312565b929592945050506040919091013590565b60006020828403121561153457600080fd5b813567ffffffffffffffff8116811461105857600080fd5b60006020828403121561155e57600080fd5b813560ff8116811461105857600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561161357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156115fe5783516001600160e01b0319168252928b019260019290920191908b01906115d4565b50978a01979550505091870191600101611597565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114d457878503603f1901845281518051808752611670818989018a85016113d6565b601f01601f191695909501860194509285019290850190600101611649565b60008083601f8401126116a157600080fd5b50813567ffffffffffffffff8111156116b957600080fd5b6020830191508360208285010111156116d157600080fd5b9250929050565b6000806000806000606086880312156116f057600080fd5b853567ffffffffffffffff8082111561170857600080fd5b61171489838a0161168f565b9097509550602088013591508082111561172d57600080fd5b5061173a8882890161168f565b96999598509660400135949350505050565b60006020828403121561175e57600080fd5b815161105881611312565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156117c557600080fd5b8151801515811461105857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600181811c9082168061183157607f821691505b6020821081141561185257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009061187b8160048501602087016113d6565b919091016004019392505050565b6000825161189b8184602087016113d6565b919091019291505056fea2646970667358221220a992952a4e42d90a82e2623c982d04b12a8ee445ad980a75ef01c7d27150f77f64736f6c634300080c0033608060405234801561001057600080fd5b5061176e806100206000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806394f649dd11610146578063c4623ea1116100c3578063e243dc3c11610087578063e243dc3c146105a9578063e2a818c5146105bc578063e7a050aa146105cf578063f2fde38b146105e6578063f698da25146105f9578063fabc1cbc1461060057600080fd5b8063c4623ea114610550578063c608c7f314610564578063c665670214610572578063df5b354714610583578063df5cf7231461059657600080fd5b80639f00fa241161010a5780639f00fa24146104ef578063a178848414610501578063a1ca780b14610521578063b13442711461052f578063b5d8b5b81461054257600080fd5b806394f649dd1461044c578063967fc0d21461046d5780639a9519e0146104805780639b4da03d146104935780639b7e2f77146104b657600080fd5b80635c975abb116101d4578063886f119511610198578063886f1195146103f95780638b8aac3c1461040c5780638c80d4e5146104215780638da5cb5b146104345780639104c3191461044557600080fd5b80635c975abb1461039d57806363fca888146103a5578063663c1de4146103b8578063715018a6146103db5780637a7e0d92146103e357600080fd5b8063363bf9641161021b578063363bf964146102d75780634665bcda146103245780634e5a42631461034f578063595c6a67146103625780635ac86ab71461036a57600080fd5b806301f820b2146102585780630d3908f41461027457806310d67a2f14610295578063136439dd146102aa57806332e89ace146102bd575b600080fd5b61026160d25481565b6040519081526020015b60405180910390f35b61028861028236600461106e565b50606090565b60405161026b91906110d6565b6102a86102a336600461106e565b610613565b005b6102a86102b83660046110e9565b6106cc565b6102616102cb366004611118565b60009695505050505050565b6102a86102e5366004611213565b60c980546001600160a01b039485166001600160a01b03199182161790915560cb80549285169282169290921790915560ca8054929093169116179055565b60ca54610337906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b6102a861035d36600461126c565b61080b565b6102a8610879565b61038d6103783660046112a5565b609854600160ff9092169190911b9081161490565b604051901515815260200161026b565b609854610261565b6102616103b33660046112c8565b610940565b61038d6103c636600461106e565b60cf6020526000908152604090205460ff1681565b6102a8610971565b6102616103f13660046112f4565b600092915050565b609754610337906001600160a01b031681565b61026161041a36600461106e565b5060d25490565b6102a861042f366004611322565b505050565b6033546001600160a01b0316610337565b6000610337565b61045f61045a36600461106e565b610985565b60405161026b929190611363565b60cc54610337906001600160a01b031681565b6102a861048e3660046110e9565b60d255565b61038d6104a136600461106e565b60d16020526000908152604090205460ff1681565b6102a86104c436600461126c565b6001600160a01b0391909116600090815260cf60205260409020805460ff1916911515919091179055565b6102a86104fd3660046112c8565b5050565b61026161050f36600461106e565b60d06020526000908152604090205481565b6102a861042f3660046113ba565b60cb54610337906001600160a01b031681565b6102a86104fd36600461143b565b6102a861055e36600461147d565b50505050565b6102a861055e3660046114ce565b6102a861058036600461106e565b50565b6102a8610591366004611521565b610a5e565b60c954610337906001600160a01b031681565b6103376105b73660046112c8565b610b4f565b6102a86105ca36600461158d565b610b87565b6102616105dd366004611322565b60009392505050565b6102a86105f436600461106e565b610c31565b6000610261565b6102a861060e3660046110e9565b610ca7565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068a9190611610565b6001600160a01b0316336001600160a01b0316146106c35760405162461bcd60e51b81526004016106ba9061162d565b60405180910390fd5b61058081610e03565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107389190611677565b6107545760405162461bcd60e51b81526004016106ba90611694565b609854818116146107cd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106ba565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e59190611677565b6109015760405162461bcd60e51b81526004016106ba90611694565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ce602052816000526040600020818154811061095c57600080fd5b90600052602060002001600091509150505481565b610979610efa565b6109836000610f54565b565b6001600160a01b038116600090815260cd6020908152604080832060ce8352928190208354825181850281018501909352808352606094859490939184918301828280156109fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109de575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191906000526020600020905b815481526020019060010190808311610a3a575b5050505050905091509150915091565b60005b83811015610b4857600160cf6000878785818110610a8157610a816116dc565b9050602002016020810190610a96919061106e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055828282818110610ad057610ad06116dc565b9050602002016020810190610ae591906116f2565b60d16000878785818110610afb57610afb6116dc565b9050602002016020810190610b10919061106e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b418161170f565b9050610a61565b5050505050565b60cd6020528160005260406000208181548110610b6b57600080fd5b6000918252602090912001546001600160a01b03169150829050565b828114610be25760405162461bcd60e51b8152602060048201526024808201527f53747261746567794d616e616765724d6f636b3a206c656e677468206d69736d6044820152630c2e8c6d60e31b60648201526084016106ba565b6001600160a01b038516600090815260cd60205260409020610c05908585610fa6565b506001600160a01b038516600090815260ce60205260409020610c29908383611009565b505050505050565b610c39610efa565b6001600160a01b038116610c9e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ba565b61058081610f54565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e9190611610565b6001600160a01b0316336001600160a01b031614610d4e5760405162461bcd60e51b81526004016106ba9061162d565b609854198119609854191614610dcc5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106ba565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610800565b6001600160a01b038116610e915760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106ba565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146109835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ba565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215610ff9579160200282015b82811115610ff95781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190610fc6565b50611005929150611044565b5090565b828054828255906000526020600020908101928215610ff9579160200282015b82811115610ff9578235825591602001919060010190611029565b5b808211156110055760008155600101611045565b6001600160a01b038116811461058057600080fd5b60006020828403121561108057600080fd5b813561108b81611059565b9392505050565b600081518084526020808501945080840160005b838110156110cb5781516001600160a01b0316875295820195908201906001016110a6565b509495945050505050565b60208152600061108b6020830184611092565b6000602082840312156110fb57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c0878903121561113157600080fd5b863561113c81611059565b9550602087013561114c81611059565b945060408701359350606087013561116381611059565b92506080870135915060a087013567ffffffffffffffff8082111561118757600080fd5b818901915089601f83011261119b57600080fd5b8135818111156111ad576111ad611102565b604051601f8201601f19908116603f011681019083821181831017156111d5576111d5611102565b816040528281528c60208487010111156111ee57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b60008060006060848603121561122857600080fd5b833561123381611059565b9250602084013561124381611059565b9150604084013561125381611059565b809150509250925092565b801515811461058057600080fd5b6000806040838503121561127f57600080fd5b823561128a81611059565b9150602083013561129a8161125e565b809150509250929050565b6000602082840312156112b757600080fd5b813560ff8116811461108b57600080fd5b600080604083850312156112db57600080fd5b82356112e681611059565b946020939093013593505050565b6000806040838503121561130757600080fd5b823561131281611059565b9150602083013561129a81611059565b60008060006060848603121561133757600080fd5b833561134281611059565b9250602084013561135281611059565b929592945050506040919091013590565b6040815260006113766040830185611092565b82810360208481019190915284518083528582019282019060005b818110156113ad57845183529383019391830191600101611391565b5090979650505050505050565b6000806000606084860312156113cf57600080fd5b83356113da81611059565b95602085013595506040909401359392505050565b60008083601f84011261140157600080fd5b50813567ffffffffffffffff81111561141957600080fd5b6020830191508360208260051b850101111561143457600080fd5b9250929050565b6000806020838503121561144e57600080fd5b823567ffffffffffffffff81111561146557600080fd5b611471858286016113ef565b90969095509350505050565b6000806000806080858703121561149357600080fd5b843561149e81611059565b935060208501356114ae81611059565b925060408501356114be81611059565b9396929550929360600135925050565b600080600080608085870312156114e457600080fd5b84356114ef81611059565b935060208501356114ff81611059565b925060408501359150606085013561151681611059565b939692955090935050565b6000806000806040858703121561153757600080fd5b843567ffffffffffffffff8082111561154f57600080fd5b61155b888389016113ef565b9096509450602087013591508082111561157457600080fd5b50611581878288016113ef565b95989497509550505050565b6000806000806000606086880312156115a557600080fd5b85356115b081611059565b9450602086013567ffffffffffffffff808211156115cd57600080fd5b6115d989838a016113ef565b909650945060408801359150808211156115f257600080fd5b506115ff888289016113ef565b969995985093965092949392505050565b60006020828403121561162257600080fd5b815161108b81611059565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561168957600080fd5b815161108b8161125e565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561170457600080fd5b813561108b8161125e565b600060001982141561173157634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220caffcc84a5697fe19faf081ea8bb2e8e3dbe9599cf8072a38bb63dc84c09327c64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360c06040523480156200001157600080fd5b5060405162003a6a38038062003a6a833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161396162000109600039600081816103b9015281816106b9015281816109f601528181610d6d01528181611198015281816117ab015281816118a8015281816119cc0152611d8e01526000818161058e01526120c901526139616000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806381c0750211610125578063c8294c56116100ad578063f2be94ae1161007c578063f2be94ae146105b0578063f509551a146105c3578063f851e198146105d6578063fa28c627146105e9578063ff694a77146105fc57600080fd5b8063c8294c561461053b578063d5eccc051461054e578063dd9846b914610561578063df5cf7231461058957600080fd5b8063b6904b78116100f4578063b6904b78146104c6578063bc9a40c3146104d9578063bd29b8cd146104ec578063c46778a5146104ff578063c601527d1461052857600080fd5b806381c07502146104335780639f3ccf6514610453578063ac6bfb0314610466578063adc804da1461048657600080fd5b80634bd26e09116101a857806366acfefe1161017757806366acfefe146103895780636d14a987146103b457806374454c6d146103f35780637c172347146104065780637f4298221461042057600080fd5b80634bd26e09146103245780635401ed27146103545780635e5a6775146103675780635f1f2d771461037657600080fd5b806320b66298116101e457806320b66298146102ad57806325504777146102c05780632cd95940146102e15780633ca5a5f51461030157600080fd5b80630390a4d5146102165780630491b41c1461022b57806308732461146102615780631f9b74e014610282575b600080fd5b610229610224366004612cce565b61060f565b005b61024e610239366004612cf8565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61027461026f366004612cce565b61061e565b604051610258929190612d13565b610295610290366004612d4d565b610667565b6040516001600160601b039091168152602001610258565b6102296102bb366004612dc8565b6106b7565b6102d36102ce366004612e89565b6109e8565b604051610258929190612f28565b6102f46102ef366004612f4d565b610cb3565b6040516102589190612f79565b61024e61030f366004612cf8565b60ff1660009081526003602052604090205490565b61024e610332366004612f4d565b600091825260026020908152604080842060ff93909316845291905290205490565b610295610362366004612f4d565b610d52565b61024e670de0b6b3a764000081565b610229610384366004613082565b610d6b565b61039c610397366004612e89565b61118b565b6040516001600160c01b039091168152602001610258565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610258565b61024e610401366004613141565b6112e5565b61040e602081565b60405160ff9091168152602001610258565b61029561042e36600461317d565b6112fc565b6104466104413660046131ad565b611308565b60405161025891906131ff565b6103db610461366004612cce565b6115d0565b61047961047436600461323d565b611608565b6040516102589190613270565b610499610494366004612cce565b6116a0565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610258565b6104796104d4366004612cce565b61171a565b6102296104e73660046132a5565b6117a9565b6102296104fa3660046132cf565b61189d565b61029561050d366004612cf8565b6000602081905290815260409020546001600160601b031681565b61022961053636600461339b565b6119ca565b6102956105493660046133e8565b611abe565b61029561055c366004612cf8565b611b3c565b61057461056f366004613424565b611b8f565b60405163ffffffff9091168152602001610258565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6102956105be366004613457565b611b9c565b61024e6105d1366004613499565b611c31565b6104796105e4366004612f4d565b611c3d565b6102956105f7366004613424565b611d22565b61022961060a3660046134b5565b611d83565b6106198282611eee565b505050565b6003602052816000526040600020818154811061063a57600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff821660009081526001602052604081205483906106a15760405162461bcd60e51b815260040161069890613512565b60405180910390fd5b60006106ad8585612068565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190613563565b6001600160a01b0316336001600160a01b0316146107695760405162461bcd60e51b815260040161069890613580565b846107858160ff16600090815260016020526040902054151590565b6107a15760405162461bcd60e51b815260040161069890613512565b8380610817576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610698565b82811461088c5760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610698565b60ff87166000908152600360205260408120905b828110156109dd578585828181106108ba576108ba6135fc565b90506020020160208101906108cf9190613612565b828989848181106108e2576108e26135fc565b90506020020135815481106108f9576108f96135fc565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a85818110610962576109626135fc565b9050602002013581548110610979576109796135fc565b6000918252602090912001546001600160a01b03168888858181106109a0576109a06135fc565b90506020020160208101906109b59190613612565b6040516109c3929190612d13565b60405180910390a2806109d581613643565b9150506108a0565b505050505050505050565b606080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a335760405162461bcd60e51b81526004016106989061365e565b6000836001600160401b03811115610a4d57610a4d612ff1565b604051908082528060200260200182016040528015610a76578160200160208202803683370190505b5090506000846001600160401b03811115610a9357610a93612ff1565b604051908082528060200260200182016040528015610abc578160200160208202803683370190505b50905060005b85811015610ca5576000878783818110610ade57610ade6135fc565b919091013560f81c60008181526001602052604090205490925015159050610b665760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610698565b600080610b73838d612068565b9150915080610c105760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610698565b6000610c1d8c8585612266565b905082878681518110610c3257610c326135fc565b60200260200101906001600160601b031690816001600160601b031681525050610c5c8482611eee565b868681518110610c6e57610c6e6135fc565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c9d90613643565b915050610ac2565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d45576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610cec565b5050505090505b92915050565b600080610d5f8484611c3d565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ded9190613563565b6001600160a01b0316336001600160a01b031614610e1d5760405162461bcd60e51b815260040161069890613580565b81610e398160ff16600090815260016020526040902054151590565b610e555760405162461bcd60e51b815260040161069890613512565b815180610eca5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610698565b60ff841660009081526003602090815260408083206004909252822090915b83811015611182578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610f2957610f296135fc565b602002602001015181548110610f4157610f416135fc565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f9f57610f9f6135fc565b602002602001015181548110610fb757610fb76135fc565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ff7906001906136d0565b81548110611007576110076135fc565b9060005260206000200183878381518110611024576110246135fc565b60200260200101518154811061103c5761103c6135fc565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b918290041602179055825483908061108f5761108f6136e7565b600082815260208120820160001990810191909155019055815482906110b7906001906136d0565b815481106110c7576110c76135fc565b9060005260206000200160009054906101000a90046001600160a01b0316828783815181106110f8576110f86135fc565b602002602001015181548110611110576111106135fc565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061114e5761114e6136e7565b600082815260209020810160001990810180546001600160a01b03191690550190558061117a81613643565b915050610ee9565b50505050505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d55760405162461bcd60e51b81526004016106989061365e565b6000805b838110156106ad5760008585838181106111f5576111f56135fc565b919091013560f81c600081815260016020526040902054909250151590506112855760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610698565b600080611292838b612068565b91509150806112b45760009150600160ff84161b6001600160c01b0386161794505b60006112c18a8585612266565b90506112cd8482611eee565b505050505080806112dd90613643565b9150506111d9565b60006112f2848484612266565b90505b9392505050565b60006112f583836124e6565b60606000826001600160401b0381111561132457611324612ff1565b60405190808252806020026020018201604052801561134d578160200160208202803683370190505b50905060005b838110156115c757600085858381811061136f5761136f6135fc565b919091013560f81c6000818152600160205260409020549092501515905061140e5760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610698565b60ff81166000908152600160205260408120805463ffffffff8a169290611437576114376135fc565b60009182526020909120015463ffffffff1611156114e35760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610698565b60ff8116600090815260016020526040812054905b818110156115b15760ff8316600090815260016020819052604090912063ffffffff8b169161152784866136d0565b61153191906136d0565b81548110611541576115416135fc565b60009182526020909120015463ffffffff161161159f57600161156482846136d0565b61156e91906136d0565b858581518110611580576115806135fc565b602002602001019063ffffffff16908163ffffffff16815250506115b1565b806115a981613643565b9150506114f8565b50505080806115bf90613643565b915050611353565b50949350505050565b600460205281600052604060002081815481106115ec57600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff8816835290529190912080548390811061164d5761164d6135fc565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106116d8576116d86135fc565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff861682526001905291909120805483908110611757576117576135fc565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182b9190613563565b6001600160a01b0316336001600160a01b03161461185b5760405162461bcd60e51b815260040161069890613580565b816118778160ff16600090815260016020526040902054151590565b6118935760405162461bcd60e51b815260040161069890613512565b6106198383612514565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118e55760405162461bcd60e51b81526004016106989061365e565b60005b818110156119c4576000838383818110611904576119046135fc565b919091013560f81c600081815260016020526040902054909250151590506119945760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610698565b60006119a286836000612266565b90506119ae8282611eee565b50505080806119bc90613643565b9150506118e8565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613563565b6001600160a01b0316336001600160a01b031614611a7c5760405162461bcd60e51b815260040161069890613580565b81611a988160ff16600090815260016020526040902054151590565b611ab45760405162461bcd60e51b815260040161069890613512565b610619838361257d565b60ff83166000908152600160205260408120805482919084908110611ae557611ae56135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610d5f81856129c0565b60ff81166000908152600160208190526040822080549091611b5d916136d0565b81548110611b6d57611b6d6135fc565b600091825260209091200154600160401b90046001600160601b031692915050565b60006112f2848484612b3a565b600082815260026020908152604080832060ff881684529091528120805482919084908110611bcd57611bcd6135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611c2481866129c0565b6040015195945050505050565b60006112f58383612ca0565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611c96579150610d4c9050565b600085815260026020908152604080832060ff881684529091529020611cbd6001846136d0565b81548110611ccd57611ccd6135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610d4c915050565b600083815260026020908152604080832060ff861684529091528120611d49858585612b3a565b63ffffffff1681548110611d5f57611d5f6135fc565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dcb5760405162461bcd60e51b81526004016106989061365e565b60ff831660009081526001602052604090205415611e495760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610698565b611e53838261257d565b611e5d8383612514565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff821660009081526001602081905260408220805491839190611f1290846136d0565b81548110611f2257611f226135fc565b9060005260206000200190508360001415611f515754600160401b90046001600160601b03169150610d4c9050565b8054600090611f7090600160401b90046001600160601b0316866124e6565b82549091504363ffffffff90811691161415611fad578154600160401b600160a01b031916600160401b6001600160601b0383160217825561205f565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6000806000806120878660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926120fc928c92016136fd565b600060405180830381865afa158015612119573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612141919081019061375c565b905060005b838110156122325760ff89166000908152600360205260409020805482908110612172576121726135fc565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b03169082015283519094508390839081106121c0576121c06135fc565b6020026020010151111561222057670de0b6b3a764000083602001516001600160601b03168383815181106121f7576121f76135fc565b602002602001015161220991906137ec565b612213919061380b565b61221d908661382d565b94505b8061222a81613643565b915050612146565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061232a57600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561248c565b600086815260026020908152604080832060ff8916845290915281206123516001846136d0565b81548110612361576123616135fc565b600091825260209091200180546001600160601b03600160401b90910481169450909150851683141561239a57600093505050506112f5565b80544363ffffffff908116911614156123d4578054600160401b600160a01b031916600160401b6001600160601b0387160217815561248a565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26124dc8285612ca0565b9695505050505050565b60008082121561250a576124f982613858565b6125039084613875565b9050610d4c565b612503828461382d565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116125e25760405162461bcd60e51b8152602060048201526038602482015260008051602061390c83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610698565b805160ff831660009081526003602090815260409091205490612605838361389d565b11156126755760405162461bcd60e51b8152602060048201526045602482015260008051602061390c83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610698565b60005b828110156129b95760005b61268d828461389d565b81101561276e578482815181106126a6576126a66135fc565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106126e5576126e56135fc565b6000918252602090912001546001600160a01b0316141561275c5760405162461bcd60e51b815260206004820152603d602482015260008051602061390c83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610698565b8061276681613643565b915050612683565b506000848281518110612783576127836135fc565b6020026020010151602001516001600160601b0316116128085760405162461bcd60e51b8152602060048201526046602482015260008051602061390c83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610698565b60ff85166000908152600360205260409020845185908390811061282e5761282e6135fc565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff8716825260049052604090208451859083908110612893576128936135fc565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061290a5761290a6135fc565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612967576129676135fc565b602002602001015160000151868481518110612985576129856135fc565b60200260200101516020015160405161299f929190612d13565b60405180910390a2806129b181613643565b915050612678565b5050505050565b816000015163ffffffff168163ffffffff161015612a655760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610698565b602082015163ffffffff161580612a8b5750816020015163ffffffff168163ffffffff16105b612b365760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610698565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612bdb57600086815260026020908152604080832060ff89168452909152902063ffffffff851690612b8e6001846136d0565b81548110612b9e57612b9e6135fc565b60009182526020909120015463ffffffff1611612bc957612bc06001826136d0565b925050506112f5565b80612bd3816138b5565b915050612b59565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610698565b60006112f56001600160601b038085169084166138cc565b803560ff81168114612cc957600080fd5b919050565b60008060408385031215612ce157600080fd5b612cea83612cb8565b946020939093013593505050565b600060208284031215612d0a57600080fd5b6112f582612cb8565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612d4a57600080fd5b50565b60008060408385031215612d6057600080fd5b612d6983612cb8565b91506020830135612d7981612d35565b809150509250929050565b60008083601f840112612d9657600080fd5b5081356001600160401b03811115612dad57600080fd5b6020830191508360208260051b850101111561225f57600080fd5b600080600080600060608688031215612de057600080fd5b612de986612cb8565b945060208601356001600160401b0380821115612e0557600080fd5b612e1189838a01612d84565b90965094506040880135915080821115612e2a57600080fd5b50612e3788828901612d84565b969995985093965092949392505050565b60008083601f840112612e5a57600080fd5b5081356001600160401b03811115612e7157600080fd5b60208301915083602082850101111561225f57600080fd5b60008060008060608587031215612e9f57600080fd5b8435612eaa81612d35565b93506020850135925060408501356001600160401b03811115612ecc57600080fd5b612ed887828801612e48565b95989497509550505050565b600081518084526020808501945080840160005b83811015612f1d5781516001600160601b031687529582019590820190600101612ef8565b509495945050505050565b604081526000612f3b6040830185612ee4565b828103602084015261205f8185612ee4565b60008060408385031215612f6057600080fd5b82359150612f7060208401612cb8565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612fe557612fd283855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612f95565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561302957613029612ff1565b60405290565b604051601f8201601f191681016001600160401b038111828210171561305757613057612ff1565b604052919050565b60006001600160401b0382111561307857613078612ff1565b5060051b60200190565b6000806040838503121561309557600080fd5b61309e83612cb8565b91506020808401356001600160401b038111156130ba57600080fd5b8401601f810186136130cb57600080fd5b80356130de6130d98261305f565b61302f565b81815260059190911b820183019083810190888311156130fd57600080fd5b928401925b8284101561311b57833582529284019290840190613102565b80955050505050509250929050565b80356001600160601b0381168114612cc957600080fd5b60008060006060848603121561315657600080fd5b8335925061316660208501612cb8565b91506131746040850161312a565b90509250925092565b6000806040838503121561319057600080fd5b612cea8361312a565b803563ffffffff81168114612cc957600080fd5b6000806000604084860312156131c257600080fd5b6131cb84613199565b925060208401356001600160401b038111156131e657600080fd5b6131f286828701612e48565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612fe557835163ffffffff168352928401929184019160010161321b565b60008060006060848603121561325257600080fd5b61325b84612cb8565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610d4c565b600080604083850312156132b857600080fd5b6132c183612cb8565b9150612f706020840161312a565b6000806000604084860312156132e457600080fd5b8335925060208401356001600160401b038111156131e657600080fd5b600082601f83011261331257600080fd5b813560206133226130d98361305f565b82815260069290921b8401810191818101908684111561334157600080fd5b8286015b84811015613390576040818903121561335e5760008081fd5b613366613007565b813561337181612d35565b815261337e82860161312a565b81860152835291830191604001613345565b509695505050505050565b600080604083850312156133ae57600080fd5b6133b783612cb8565b915060208301356001600160401b038111156133d257600080fd5b6133de85828601613301565b9150509250929050565b6000806000606084860312156133fd57600080fd5b61340684612cb8565b925061341460208501613199565b9150604084013590509250925092565b60008060006060848603121561343957600080fd5b8335925061344960208501612cb8565b915061317460408501613199565b6000806000806080858703121561346d57600080fd5b61347685612cb8565b935061348460208601613199565b93969395505050506040820135916060013590565b600080604083850312156134ac57600080fd5b6132c18361312a565b6000806000606084860312156134ca57600080fd5b6134d384612cb8565b92506134e16020850161312a565b915060408401356001600160401b038111156134fc57600080fd5b61350886828701613301565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561357557600080fd5b81516112f581612d35565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561362457600080fd5b6112f58261312a565b634e487b7160e01b600052601160045260246000fd5b60006000198214156136575761365761362d565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156136e2576136e261362d565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561374e578554851683526001958601959284019201613730565b509098975050505050505050565b6000602080838503121561376f57600080fd5b82516001600160401b0381111561378557600080fd5b8301601f8101851361379657600080fd5b80516137a46130d98261305f565b81815260059190911b820183019083810190878311156137c357600080fd5b928401925b828410156137e1578351825292840192908401906137c8565b979650505050505050565b60008160001904831182151516156138065761380661362d565b500290565b60008261382857634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561384f5761384f61362d565b01949350505050565b6000600160ff1b82141561386e5761386e61362d565b5060000390565b60006001600160601b03838116908316818110156138955761389561362d565b039392505050565b600082198211156138b0576138b061362d565b500190565b6000816138c4576138c461362d565b506000190190565b60008083128015600160ff1b8501841216156138ea576138ea61362d565b6001600160ff1b03840183138116156139055761390561362d565b5050039056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220d1c160b66d71a1a431473146b286303b69b5167369c9475b6da7380e18c6b56f64736f6c634300080c003360a06040523480156200001157600080fd5b50604051620021d2380380620021d2833981016040819052620000349162000118565b6001600160a01b03811660805280806200004d62000056565b5050506200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b608051612050620001826000396000818161031a015281816104db0152818161063401528181610a3a01526110a601526120506000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c80636d14a987116100ad578063d5254a8c11610071578063d5254a8c146103ea578063de29fac01461040a578063df4d09e01461042a578063e8bb9ae614610494578063f4e24fe5146104bd57600080fd5b80636d14a987146103155780637916cea61461033c5780637ff81a871461037d578063a3db80e2146103b0578063bf79ce58146103d757600080fd5b80633fb27952116100f45780633fb27952146101ea57806347b314e8146101fd5780635f61a8841461023e578063605747d51461029a57806368bccaac146102e857600080fd5b8062a1f4cb1461012557806313542a4e1461016657806326d941f21461019d578063377ed99d146101b2575b600080fd5b61014c610133366004611979565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61018f610174366004611979565b6001600160a01b031660009081526001602052604090205490565b60405190815260200161015d565b6101b06101ab3660046119ac565b6104d0565b005b6101d56101c03660046119ac565b60ff1660009081526004602052604090205490565b60405163ffffffff909116815260200161015d565b6101b06101f8366004611a37565b610629565b61022661020b366004611add565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161015d565b61028d61024c3660046119ac565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b60405161015d9190611af6565b6102ad6102a8366004611b0d565b6106e7565b60408051825167ffffffffffffffff1916815260208084015163ffffffff90811691830191909152928201519092169082015260600161015d565b6102fb6102f6366004611b37565b61077a565b60405167ffffffffffffffff19909116815260200161015d565b6102267f000000000000000000000000000000000000000000000000000000000000000081565b61034f61034a366004611b0d565b610915565b6040805167ffffffffffffffff19909416845263ffffffff928316602085015291169082015260600161015d565b61039061038b366004611979565b610960565b60408051835181526020938401519381019390935282015260600161015d565b61014c6103be3660046119ac565b6005602052600090815260409020805460019091015482565b61018f6103e5366004611b7f565b610a2d565b6103fd6103f8366004611bdc565b610e81565b60405161015d9190611c54565b61018f610418366004611979565b60016020526000908152604090205481565b6101b0610438366004611cce565b8051600090815260208083018051825260408084206001600160a01b039690961680855260018085528286208890559685526002845281852080546001600160a01b031916821790558452600390925291209151825551910155565b6102266104a2366004611add565b6002602052600090815260409020546001600160a01b031681565b6101b06104cb366004611a37565b61109b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105215760405162461bcd60e51b815260040161051890611d02565b60405180910390fd5b60ff8116600090815260046020526040902054156105a05760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608401610518565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106715760405162461bcd60e51b815260040161051890611d02565b600061067c83610960565b5090506106898282611144565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836106ca856001600160a01b031660009081526001602052604090205490565b846040516106da93929190611d76565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061072457610724611de2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106107a1576107a1611de2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156108685760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608401610518565b604081015163ffffffff16158061088e5750806040015163ffffffff168463ffffffff16105b61090c5760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a401610518565b51949350505050565b6004602052816000526040600020818154811061093157600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b038216600081815260036020908152604080832081518083018352815481526001918201548185015294845290915281205490919080610a235760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608401610518565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a775760405162461bcd60e51b815260040161051890611d02565b6000610aa5610a8e36869003860160408701611df8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610b2d576040805162461bcd60e51b8152602060048201526024810191909152600080516020611ffb83398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152608401610518565b6001600160a01b03851660009081526001602052604090205415610bb75760405162461bcd60e51b81526020600482015260476024820152600080516020611ffb83398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a401610518565b6000818152600260205260409020546001600160a01b031615610c3b5760405162461bcd60e51b81526020600482015260426024820152600080516020611ffb83398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a401610518565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c94918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611e14565b6040516020818303038152906040528051906020012060001c610cb79190611e5f565b9050610d51610cf0610cdb83610cd5368a90038a0160408b01611df8565b9061138f565b610cea36899003890189611df8565b90611426565b610cf86114ba565b610d3a610d2b85610cd5604080518082018252600080825260209182015281518083019092526001825260029082015290565b610cea368a90038a018a611df8565b610d4c368a90038a0160808b01611ef1565b61157a565b610dec5760405162461bcd60e51b815260206004820152606c6024820152600080516020611ffb83398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c401610518565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610e709160808a0190611f30565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e9e57610e9e6119c7565b604051908082528060200260200182016040528015610ec7578160200160208202803683370190505b50905060005b84811015611092576000868683818110610ee957610ee9611de2565b919091013560f81c6000818152600460205260409020549092509050801580610f4c575060ff821660009081526004602052604081208054909190610f3057610f30611de2565b600091825260209091200154600160c01b900463ffffffff1686105b15610fd95760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a401610518565b805b801561107c5760ff831660009081526004602052604090208790611000600184611f7a565b8154811061101057611010611de2565b600091825260209091200154600160c01b900463ffffffff161161106a57611039600182611f7a565b85858151811061104b5761104b611de2565b602002602001019063ffffffff16908163ffffffff168152505061107c565b8061107481611f91565b915050610fdb565b505050808061108a90611fa8565b915050610ecd565b50949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110e35760405162461bcd60e51b815260040161051890611d02565b60006110ee83610960565b509050611103826110fe836117e7565b611144565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836106ca856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561138957600084828151811061117857611178611de2565b0160209081015160f81c60008181526004909252604090912054909150806112085760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608401610518565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261123c9086611426565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112859085611f7a565b8154811061129557611295611de2565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112d65780546001600160c01b031916604083901c178155611372565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061138190611fa8565b91505061115b565b50505050565b60408051808201909152600080825260208201526113ab6118a6565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113de576113e0565bfe5b508061141e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610518565b505092915050565b60408051808201909152600080825260208201526114426118c4565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113de57508061141e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610518565b6114c26118e2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916115a9611907565b60005b600281101561176e5760006115c2826006611fc3565b90508482600281106115d6576115d6611de2565b602002015151836115e8836000611fe2565b600c81106115f8576115f8611de2565b602002015284826002811061160f5761160f611de2565b602002015160200151838260016116269190611fe2565b600c811061163657611636611de2565b602002015283826002811061164d5761164d611de2565b6020020151515183611660836002611fe2565b600c811061167057611670611de2565b602002015283826002811061168757611687611de2565b60200201515160016020020151836116a0836003611fe2565b600c81106116b0576116b0611de2565b60200201528382600281106116c7576116c7611de2565b6020020151602001516000600281106116e2576116e2611de2565b6020020151836116f3836004611fe2565b600c811061170357611703611de2565b602002015283826002811061171a5761171a611de2565b60200201516020015160016002811061173557611735611de2565b602002015183611746836005611fe2565b600c811061175657611756611de2565b6020020152508061176681611fa8565b9150506115ac565b50611777611926565b60006020826101808560086107d05a03fa90508080156113de5750806117d75760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606401610518565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561180c57506020820151155b1561182a575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161186f9190611e5f565b611899907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611f7a565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118f5611944565b8152602001611902611944565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146118a157600080fd5b60006020828403121561198b57600080fd5b61199482611962565b9392505050565b803560ff811681146118a157600080fd5b6000602082840312156119be57600080fd5b6119948261199b565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611a0057611a006119c7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a2f57611a2f6119c7565b604052919050565b60008060408385031215611a4a57600080fd5b611a5383611962565b915060208084013567ffffffffffffffff80821115611a7157600080fd5b818601915086601f830112611a8557600080fd5b813581811115611a9757611a976119c7565b611aa9601f8201601f19168501611a06565b91508082528784828501011115611abf57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611aef57600080fd5b5035919050565b815181526020808301519082015260408101610774565b60008060408385031215611b2057600080fd5b611b298361199b565b946020939093013593505050565b600080600060608486031215611b4c57600080fd5b611b558461199b565b9250602084013563ffffffff81168114611b6e57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b9657600080fd5b611b9f85611962565b9350610100601f1982011215611bb457600080fd5b602085019250604061011f1982011215611bcd57600080fd5b50610120840190509250925092565b600080600060408486031215611bf157600080fd5b833567ffffffffffffffff80821115611c0957600080fd5b818601915086601f830112611c1d57600080fd5b813581811115611c2c57600080fd5b876020828501011115611c3e57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c9257835163ffffffff1683529284019291840191600101611c70565b50909695505050505050565b600060408284031215611cb057600080fd5b611cb86119dd565b9050813581526020820135602082015292915050565b60008060608385031215611ce157600080fd5b611cea83611962565b9150611cf98460208501611c9e565b90509250929050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611db857858101830151858201608001528201611d9c565b81811115611dca576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611e0a57600080fd5b6119948383611c9e565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611e7c57634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611e9257600080fd5b6040516040810181811067ffffffffffffffff82111715611eb557611eb56119c7565b8060405250806040840185811115611ecc57600080fd5b845b81811015611ee6578035835260209283019201611ece565b509195945050505050565b600060808284031215611f0357600080fd5b611f0b6119dd565b611f158484611e81565b8152611f248460408501611e81565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611f8c57611f8c611f64565b500390565b600081611fa057611fa0611f64565b506000190190565b6000600019821415611fbc57611fbc611f64565b5060010190565b6000816000190483118215151615611fdd57611fdd611f64565b500290565b60008219821115611ff557611ff5611f64565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220914a4b62b53c4fc609131aa204369702fd7591435bfcd86371331c1fcf782a0364736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c060405260cf8054600160ff19918216811790925560d3805490911690911790553480156200002f57600080fd5b506040516200709d3803806200709d8339810160408190526200005291620002c0565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f7200000000000000000000602080830191825283518085018552600681526576302e302e3160d01b908201529151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c09384019096528051940193909320909252919052610120526001600160a01b0380851661014052808416610180528083166101605281166101a052838383836200017462000193565b5050505062000189336200025560201b60201c565b5050505062000328565b600054610100900460ff1615620002005760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000253576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381168114620002bd57600080fd5b50565b60008060008060808587031215620002d757600080fd5b8451620002e481620002a7565b6020860151909450620002f781620002a7565b60408601519093506200030a81620002a7565b60608601519092506200031d81620002a7565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051616c6d620004306000396000818161083701528181611645015281816129e1015281816134b701528181613e50015261471e01526000818161074c0152818161296c01528181612e7a0152818161340e01528181613dd0015281816142f3015261469d0152600081816106fd015281816111de015281816129aa0152818161338e01528181613d5201528181613f3801528181613fae015261479a015260008181610631015281816132d60152613ca80152600061499d015260006149ec015260006149c7015260006149200152600061494a015260006149740152616c6d6000f3fe608060405234801561001057600080fd5b50600436106103cf5760003560e01c806366d9a9a0116101ff578063b5508aa91161011a578063d92cbb84116100ad578063f2fde38b1161007c578063f2fde38b14610a24578063fa7626d414610a37578063fabc1cbc14610a44578063fd39105a14610a5757600080fd5b8063d92cbb841461093c578063dd8283f314610966578063e20c9f7114610979578063e65797ad1461098157600080fd5b8063ca0de882116100e9578063ca0de882146108e7578063ca4f2d971461090e578063d72d8dd614610921578063d75b4c881461092957600080fd5b8063b5508aa914610893578063ba414fa61461089b578063c391425e146108a3578063c4097d5e146108c357600080fd5b8063886f1195116101925780639b5d177b116101615780639b5d177b1461081f5780639e9923c2146108325780639feab85914610859578063a50857bf1461088057600080fd5b8063886f1195146107d75780638da5cb5b146107f0578063916a17c6146107f85780639aa1653d1461080057600080fd5b80638310fef6116101ce5780638310fef61461078957806384ca52131461079c57806385226c81146107af578063871ef049146107c457600080fd5b806366d9a9a01461073257806368304835146107475780636e3b17db1461076e578063715018a61461078157600080fd5b8063296bb064116102ef5780635140a548116102825780635b0b829f116102515780635b0b829f146106dd5780635c975abb146106f05780635df45946146106f85780636347c9001461071f57600080fd5b80635140a548146106835780635865c60c14610696578063595c6a67146106b65780635ac86ab7146106be57600080fd5b80633998fdd3116102be5780633998fdd31461062c5780633c2a7f4c146106535780633e5e3c23146106735780633f7286f41461067b57600080fd5b8063296bb064146105de57806329d1e0c3146105f15780632ade3880146106045780632cdd1e861461061957600080fd5b80631478851f11610367578063249a0c4211610336578063249a0c421461058557806327e79288146105a557806328f61b31146105b85780632953547c146105cb57600080fd5b80631478851f146104d45780631ab2574f146105075780631eb812da146105275780631ed7831c1461057057600080fd5b80630cf4b767116103a35780630cf4b7671461047257806310d67a2f1461048557806313542a4e14610498578063136439dd146104c157600080fd5b8062cf2ab5146103d457806303fd3492146103e957806304ec63511461041c578063054310e614610447575b600080fd5b6103e76103e23660046152dd565b610a93565b005b6104096103f736600461531e565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b61042f61042a366004615349565b610ba9565b6040516001600160c01b039091168152602001610413565b609d5461045a906001600160a01b031681565b6040516001600160a01b039091168152602001610413565b6103e7610480366004615480565b610d9f565b6103e76104933660046154dc565b610e87565b6104096104a63660046154dc565b6001600160a01b031660009081526099602052604090205490565b6103e76104cf36600461531e565b610f3a565b6104f76104e236600461531e565b609a6020526000908152604090205460ff1681565b6040519015158152602001610413565b61051a610515366004615595565b611077565b6040516104139190615681565b61053a610535366004615709565b6110b4565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610413565b610578611145565b604051610413919061572b565b610409610593366004615789565b609b6020526000908152604090205481565b6103e76105b33660046157b9565b6111a7565b609e5461045a906001600160a01b031681565b6103e76105d93660046157e9565b6111b5565b61045a6105ec36600461531e565b6111c5565b6103e76105ff3660046154dc565b611251565b61060c611262565b6040516104139190615923565b6103e76106273660046154dc565b6113a4565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6106666106613660046154dc565b6113b5565b60405161041391906159a0565b610578611434565b610578611494565b6103e76106913660046159b7565b6114f4565b6106a96106a43660046154dc565b611a05565b6040516104139190615a5a565b6103e7611a79565b6104f76106cc366004615789565b6001805460ff9092161b9081161490565b6103e76106eb366004615adf565b611b45565b600154610409565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b61045a61072d36600461531e565b611bd7565b61073a611c01565b6040516104139190615b13565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6103e761077c366004615bc6565b611ce7565b6103e7611da7565b6103e7610797366004615bc6565b611d67565b6104096107aa366004615c7d565b611dbb565b6107b7611e05565b6040516104139190615d4a565b61042f6107d236600461531e565b611ed5565b60005461045a906201000090046001600160a01b031681565b61045a611ee0565b61073a611ef9565b60965461080d9060ff1681565b60405160ff9091168152602001610413565b6103e761082d366004615db4565b611fdf565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6104097f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6103e761088e366004615ead565b612317565b6107b761249b565b6104f761256b565b6108b66108b1366004615f3b565b612698565b6040516104139190615fe0565b6103e76108d1366004615789565b6096805460ff191660ff92909216919091179055565b6104097f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6103e761091c36600461601e565b612751565b609c54610409565b6103e7610937366004616104565b6127b8565b6103e761094a36600461615a565b6001600160a01b03909116600090815260996020526040902055565b6103e76109743660046162d9565b6127cb565b610578612acf565b6109f061098f366004615789565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610413565b6103e7610a323660046154dc565b612b2f565b60cf546104f79060ff1681565b6103e7610a5236600461531e565b612ba5565b610a86610a653660046154dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b60405161041391906163ad565b60015460029060049081161415610ac55760405162461bcd60e51b8152600401610abc906163bb565b60405180910390fd5b60005b82811015610ba3576000848483818110610ae457610ae46163f2565b9050602002016020810190610af991906154dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610b4457610b44615a22565b6002811115610b5557610b55615a22565b90525080519091506000610b6882612d01565b90506000610b7e826001600160c01b0316612d70565b9050610b8b858583612e3c565b50505050508080610b9b9061641e565b915050610ac8565b50505050565b6000838152609860205260408120805482919084908110610bcc57610bcc6163f2565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610cc65760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610abc565b602081015163ffffffff161580610cec5750806020015163ffffffff168463ffffffff16105b610d935760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610abc565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610dc857610dc8615a22565b14610e3b5760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610abc565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610e7c908490616439565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efe919061644c565b6001600160a01b0316336001600160a01b031614610f2e5760405162461bcd60e51b8152600401610abc90616469565b610f3781612f29565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906164b3565b610fc75760405162461bcd60e51b8152600401610abc906164d5565b600154818116146110405760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610e7c565b61109b60405180606001604052806060815260200160608152602001606081525090565b6110a987878787878761302e565b979650505050505050565b604080516060810182526000808252602082018190529181019190915260008381526098602052604090208054839081106110f1576110f16163f2565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b606060dc80548060200260200160405190810160405280929190818152602001828054801561119d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161117f575b5050505050905090565b6111b18282613545565b5050565b6111c0838383612e3c565b505050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f919061644c565b611259613705565b610f3781613764565b606060e3805480602002602001604051908101604052809291908181526020016000905b8282101561139b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156113845783829060005260206000200180546112f79061651d565b80601f01602080910402602001604051908101604052809291908181526020018280546113239061651d565b80156113705780601f1061134557610100808354040283529160200191611370565b820191906000526020600020905b81548152906001019060200180831161135357829003601f168201915b5050505050815260200190600101906112d8565b505050508152505081526020019060010190611286565b50505050905090565b6113ac613705565b610f37816137cd565b604080518082019091526000808252602082015261113f61142f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016114149291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120613836565b613884565b606060de80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b606060dd80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b6001546002906004908116141561151d5760405162461bcd60e51b8152600401610abc906163bb565b600061156584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506139149050565b90508483146115d65760405162461bcd60e51b81526020600482015260436024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610abc565b60005b838110156119fc5760008585838181106115f5576115f56163f2565b919091013560f81c91503690506000898985818110611616576116166163f2565b90506020028101906116289190616552565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b8919061659b565b63ffffffff1681146117545760405162461bcd60e51b81526020600482015260656024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610abc565b6000805b8281101561199b576000848483818110611774576117746163f2565b905060200201602081019061178991906154dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156117d4576117d4615a22565b60028111156117e5576117e5615a22565b905250805190915060006117f882612d01565b905060016001600160c01b03821660ff8b161c81161461187c5760405162461bcd60e51b815260206004820152604460248201819052600080516020616bd8833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610abc565b856001600160a01b0316846001600160a01b0316116119275760405162461bcd60e51b81526020600482015260676024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610abc565b5061198583838f8f8d908e600161193e91906165b8565b9261194b939291906165d0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e3c92505050565b5090925061199490508161641e565b9050611758565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806119f59061641e565b90506115d9565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff166002811115611a5f57611a5f615a22565b6002811115611a7057611a70615a22565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea91906164b3565b611b065760405162461bcd60e51b8152600401610abc906164d5565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611b4d613705565b609654829060ff90811690821610611bcd5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610abc565b6111c083836139a5565b609c8181548110611be757600080fd5b6000918252602090912001546001600160a01b0316905081565b606060e1805480602002602001604051908101604052809291908181526020016000905b8282101561139b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ccf57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611c915790505b50505050508152505081526020019060010190611c25565b609e546001600160a01b03163314611d675760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610abc565b6111c08383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b611daf613705565b611db96000613ec4565b565b6000611dfb7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001611414969594939291906165fa565b9695505050505050565b606060e0805480602002602001604051908101604052809291908181526020016000905b8282101561139b578382906000526020600020018054611e489061651d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e749061651d565b8015611ec15780601f10611e9657610100808354040283529160200191611ec1565b820191906000526020600020905b815481529060010190602001808311611ea457829003601f168201915b505050505081526020019060010190611e29565b600061113f82612d01565b6000611ef46064546001600160a01b031690565b905090565b606060e2805480602002602001604051908101604052809291908181526020016000905b8282101561139b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fc757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611f895790505b50505050508152505081526020019060010190611f1d565b6001805460009190811614156120075760405162461bcd60e51b8152600401610abc906163bb565b83891461208a5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610abc565b60006120963388613f16565b90506120f633828888808060200260200160405190810160405280939291908181526020016000905b828210156120eb576120dc6040830286013681900381019061667f565b815260200190600101906120bf565b505050505087614047565b600061213d33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061302e915050565b905060005b8b811015612308576000609760008f8f85818110612162576121626163f2565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b909104909316918101919091528451805191935090849081106121cf576121cf6163f2565b602002602001015163ffffffff1611156122f5576122708e8e848181106121f8576121f86163f2565b9050013560f81c60f81b60f81c8460400151848151811061221b5761221b6163f2565b6020026020010151338660200151868151811061223a5761223a6163f2565b60200260200101518d8d88818110612254576122546163f2565b90506040020180360381019061226a919061667f565b866141d4565b6122f5898984818110612285576122856163f2565b905060400201602001602081019061229d91906154dc565b8f8f85908660016122ae91906165b8565b926122bb939291906165d0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b50806123008161641e565b915050612142565b50505050505050505050505050565b60018054600091908116141561233f5760405162461bcd60e51b8152600401610abc906163bb565b600061234b3385613f16565b9050600061239433838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061302e915050565b51905060005b8881101561248f5760008a8a838181106123b6576123b66163f2565b919091013560f81c600081815260976020526040902054855191935063ffffffff1691508490849081106123ec576123ec6163f2565b602002602001015163ffffffff16111561247c5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610abc565b50806124878161641e565b91505061239a565b50505050505050505050565b606060df805480602002602001604051908101604052809291908181526020016000905b8282101561139b5783829060005260206000200180546124de9061651d565b80601f016020809104026020016040519081016040528092919081815260200182805461250a9061651d565b80156125575780601f1061252c57610100808354040283529160200191612557565b820191906000526020600020905b81548152906001019060200180831161253a57829003601f168201915b5050505050815260200190600101906124bf565b60cf54600090610100900460ff161561258d575060cf54610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126935760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161261b917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161669b565b60408051601f1981840301815290829052612635916166cc565b6000604051808303816000865af19150503d8060008114612672576040519150601f19603f3d011682016040523d82523d6000602084013e612677565b606091505b509150508080602001905181019061268f91906164b3565b9150505b919050565b6060600082516001600160401b038111156126b5576126b5615381565b6040519080825280602002602001820160405280156126de578160200160208202803683370190505b50905060005b83518110156127495761271085858381518110612703576127036163f2565b60200260200101516144a9565b828281518110612722576127226163f2565b63ffffffff90921660209283029190910190910152806127418161641e565b9150506126e4565b509392505050565b60018054600290811614156127785760405162461bcd60e51b8152600401610abc906163bb565b6111c03384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b6127c0613705565b6111c08383836145e5565b600054610100900460ff16158080156127eb5750600054600160ff909116105b806128055750303b158015612805575060005460ff166001145b6128685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff19166001179055801561288b576000805461ff0019166101001790555b8251845114801561289d575081518351145b6129075760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610abc565b61291089613ec4565b61291a86866147fc565b61292388613764565b61292c876137cd565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b8451811015612a7d57612a6b858281518110612a2a57612a2a6163f2565b6020026020010151858381518110612a4457612a446163f2565b6020026020010151858481518110612a5e57612a5e6163f2565b60200260200101516145e5565b80612a758161641e565b915050612a0c565b508015612ac4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b606060db80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b612b37613705565b6001600160a01b038116612b9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610f3781613ec4565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1c919061644c565b6001600160a01b0316336001600160a01b031614612c4c5760405162461bcd60e51b8152600401610abc90616469565b600154198119600154191614612cca5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610e7c565b60008181526098602052604081205480612d1e5750600092915050565b6000838152609860205260409020612d376001836166e8565b81548110612d4757612d476163f2565b600091825260209091200154600160401b90046001600160c01b03169392505050565b50919050565b6060600080612d7e846148e8565b61ffff166001600160401b03811115612d9957612d99615381565b6040519080825280601f01601f191660200182016040528015612dc3576020820181803683370190505b5090506000805b825182108015612ddb575061010081105b15612e32576001811b935085841615612e22578060f81b838381518110612e0457612e046163f2565b60200101906001600160f81b031916908160001a9053508160010191505b612e2b8161641e565b9050612dca565b5090949350505050565b600182602001516002811115612e5457612e54615a22565b14612e5e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe90612eb3908890869088906004016166ff565b6020604051808303816000875af1158015612ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef6919061672f565b90506001600160c01b03811615612f2257612f2285612f1d836001600160c01b0316612d70565b613a52565b5050505050565b6001600160a01b038116612fb75760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61305260405180606001604052806060815260200160608152602001606081525090565b600061309a86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506139149050565b905060006130a788612d01565b90506001600160c01b0382166131255760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610abc565b8082166001600160c01b0316156131db5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610abc565b6001600160c01b03818116908316176131f48982613545565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132249190616439565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561325e5761325e615a22565b14613377576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff1916908360028111156132b9576132b9615a22565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d9061330e908d90899060040161674c565b600060405180830381600087803b15801561332857600080fd5b505af115801561333c573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb27952906133c7908d908c908c906004016167c0565b600060405180830381600087803b1580156133e157600080fd5b505af11580156133f5573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506325504777915061344b908d908d908d908d906004016167e5565b6000604051808303816000875af115801561346a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134929190810190616871565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906134ef908c908c908c906004016168d4565b6000604051808303816000875af115801561350e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261353691908101906168ee565b84525050509695505050505050565b600082815260986020526040902054806135ea576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206136036001846166e8565b81548110613613576136136163f2565b600091825260209091200180549091504363ffffffff908116911614156136575780546001600160401b0316600160401b6001600160c01b03851602178155610ba3565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b3361370e611ee0565b6001600160a01b031614611db95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b600061113f613843614913565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806138b4600080516020616c1883398151915286616992565b90505b6138c081614a3a565b9093509150600080516020616c188339815191528283098314156138fa576040805180820190915290815260208101919091529392505050565b600080516020616c188339815191526001820890506138b7565b60008061392084614abc565b9050808360ff166001901b1161399e5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610abc565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115613a8657613a86615a22565b14613b055760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610abc565b609654600090613b1990859060ff16613914565b90506000613b2683612d01565b90506001600160c01b038216613ba45760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610abc565b613bbb6001600160c01b0383811690831681161490565b613c535760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610abc565b6001600160c01b0382811619821616613c6c8482613545565b6001600160c01b038116613d3b5760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015613cec57600080fd5b505af1158015613d00573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590613d89908a908a906004016169a6565b600060405180830381600087803b158015613da357600080fd5b505af1158015613db7573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150613e099087908a906004016169ca565b600060405180830381600087803b158015613e2357600080fd5b505af1158015613e37573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150613e899087908a906004016169ca565b600060405180830381600087803b158015613ea357600080fd5b505af1158015613eb7573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015613f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fa591906169e3565b90508061113f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484613fe6876113b5565b6040518463ffffffff1660e01b8152600401614004939291906169fc565b6020604051808303816000875af1158015614023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399e91906169e3565b6020808201516000908152609a909152604090205460ff16156140ed5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610abc565b42816040015110156141825760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610abc565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610ba3926001600160a01b03909216916141cd9188918891889190611dbb565b8351614c49565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156142545760405162461bcd60e51b81526020600482015260356024820152600080516020616bf883398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610abc565b8760ff16846000015160ff16146142d15760405162461bcd60e51b81526020600482015260476024820152600080516020616bf883398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610abc565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015614342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143669190616a7b565b90506143728185614e03565b6001600160601b0316866001600160601b0316116144055760405162461bcd60e51b81526020600482015260566024820152600080516020616bf883398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610abc565b61440f8885614e27565b6001600160601b0316816001600160601b031610612ac45760405162461bcd60e51b815260206004820152605c6024820152600080516020616bf883398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610abc565b600081815260986020526040812054815b8181101561453b5760016144ce82846166e8565b6144d891906166e8565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061450b5761450b6163f2565b60009182526020909120015463ffffffff161161452957505061113f565b806145338161641e565b9150506144ba565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610abc565b60965460ff1660c081106146595760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610abc565b614664816001616a98565b6096805460ff191660ff929092169190911790558061468381866139a5565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a77906146d690849088908890600401616abd565b600060405180830381600087803b1580156146f057600080fd5b505af1158015614704573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561476c57600080fd5b505af1158015614780573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156147e857600080fd5b505af1158015612ac4573d6000803e3d6000fd5b6000546201000090046001600160a01b031615801561482357506001600160a01b03821615155b6148a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26111b182612f29565b6000805b821561113f576148fd6001846166e8565b909216918061490b81616b36565b9150506148ec565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561496c57507f000000000000000000000000000000000000000000000000000000000000000046145b1561499657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020616c188339815191526003600080516020616c1883398151915286600080516020616c18833981519152888909090890506000614ab0827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020616c18833981519152614e41565b91959194509092505050565b600061010082511115614b455760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610abc565b8151614b5357506000919050565b60008083600081518110614b6957614b696163f2565b0160200151600160f89190911c81901b92505b8451811015614c4057848181518110614b9757614b976163f2565b0160200151600160f89190911c1b9150828211614c2c5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610abc565b91811791614c398161641e565b9050614b7c565b50909392505050565b6001600160a01b0383163b15614d6357604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90614c8990869086906004016169ca565b602060405180830381865afa158015614ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cca9190616b58565b6001600160e01b031916146111c05760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b0316614d778383614ef0565b6001600160a01b0316146111c05760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b602081015160009061271090614e1d9061ffff1685616b82565b61399e9190616bb1565b604081015160009061271090614e1d9061ffff1685616b82565b600080614e4c61525d565b614e5461527b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015614e9557614e97565bfe5b5082614ee55760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610abc565b505195945050505050565b6000806000614eff8585614f0c565b9150915061274981614f7c565b600080825160411415614f435760208301516040840151606085015160001a614f3787828585615137565b94509450505050614f75565b825160401415614f6d5760208301516040840151614f62868383615224565b935093505050614f75565b506000905060025b9250929050565b6000816004811115614f9057614f90615a22565b1415614f995750565b6001816004811115614fad57614fad615a22565b1415614ffb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b600281600481111561500f5761500f615a22565b141561505d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561507157615071615a22565b14156150ca5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b60048160048111156150de576150de615a22565b1415610f375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561516e575060009050600361521b565b8460ff16601b1415801561518657508460ff16601c14155b15615197575060009050600461521b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156151eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166152145760006001925092505061521b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161524160ff86901c601b6165b8565b905061524f87828885615137565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126152ab57600080fd5b5081356001600160401b038111156152c257600080fd5b6020830191508360208260051b8501011115614f7557600080fd5b600080602083850312156152f057600080fd5b82356001600160401b0381111561530657600080fd5b61531285828601615299565b90969095509350505050565b60006020828403121561533057600080fd5b5035919050565b63ffffffff81168114610f3757600080fd5b60008060006060848603121561535e57600080fd5b83359250602084013561537081615337565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156153b9576153b9615381565b60405290565b604080519081016001600160401b03811182821017156153b9576153b9615381565b604051601f8201601f191681016001600160401b038111828210171561540957615409615381565b604052919050565b600082601f83011261542257600080fd5b81356001600160401b0381111561543b5761543b615381565b61544e601f8201601f19166020016153e1565b81815284602083860101111561546357600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561549257600080fd5b81356001600160401b038111156154a857600080fd5b6154b484828501615411565b949350505050565b6001600160a01b0381168114610f3757600080fd5b8035612693816154bc565b6000602082840312156154ee57600080fd5b813561399e816154bc565b60008083601f84011261550b57600080fd5b5081356001600160401b0381111561552257600080fd5b602083019150836020828501011115614f7557600080fd5b60006060828403121561554c57600080fd5b615554615397565b905081356001600160401b0381111561556c57600080fd5b61557884828501615411565b825250602082013560208201526040820135604082015292915050565b60008060008060008060a087890312156155ae57600080fd5b86356155b9816154bc565b95506020870135945060408701356001600160401b03808211156155dc57600080fd5b6155e88a838b016154f9565b9096509450606089013591508082111561560157600080fd5b61560d8a838b01615411565b9350608089013591508082111561562357600080fd5b5061563089828a0161553a565b9150509295509295509295565b600081518084526020808501945080840160005b838110156156765781516001600160601b031687529582019590820190600101615651565b509495945050505050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b808310156156cc57835163ffffffff1682529284019260019290920191908401906156a6565b50838701519350601f199250828682030160408701526156ec818561563d565b93505050604085015181858403016060860152611dfb838261563d565b6000806040838503121561571c57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561576c5783516001600160a01b031683529284019291840191600101615747565b50909695505050505050565b803560ff8116811461269357600080fd5b60006020828403121561579b57600080fd5b61399e82615778565b6001600160c01b0381168114610f3757600080fd5b600080604083850312156157cc57600080fd5b8235915060208301356157de816157a4565b809150509250929050565b600080600083850360808112156157ff57600080fd5b843561580a816154bc565b93506040601f198201121561581e57600080fd5b506158276153bf565b6020850135815260408501356003811061584057600080fd5b6020820152915060608401356001600160401b0381111561586057600080fd5b61586c86828701615411565b9150509250925092565b60005b83811015615891578181015183820152602001615879565b83811115610ba35750506000910152565b600081518084526158ba816020860160208601615876565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156159165782840389526159048483516158a2565b988501989350908401906001016158ec565b5091979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561599257888303603f19018552815180516001600160a01b0316845287015187840187905261597f878501826158ce565b958801959350509086019060010161594a565b509098975050505050505050565b81518152602080830151908201526040810161113f565b600080600080604085870312156159cd57600080fd5b84356001600160401b03808211156159e457600080fd5b6159f088838901615299565b90965094506020870135915080821115615a0957600080fd5b50615a16878288016154f9565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110615a5657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191615a7590840182615a38565b5092915050565b803561ffff8116811461269357600080fd5b600060608284031215615aa057600080fd5b615aa8615397565b90508135615ab581615337565b8152615ac360208301615a7c565b6020820152615ad460408301615a7c565b604082015292915050565b60008060808385031215615af257600080fd5b615afb83615778565b9150615b0a8460208501615a8e565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015615bb757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015615ba25783516001600160e01b0319168252928b019260019290920191908b0190615b78565b50978a01979550505091870191600101615b3b565b50919998505050505050505050565b600080600060408486031215615bdb57600080fd5b8335615be6816154bc565b925060208401356001600160401b03811115615c0157600080fd5b615c0d868287016154f9565b9497909650939450505050565b60006001600160401b03821115615c3357615c33615381565b5060051b60200190565b600060408284031215615c4f57600080fd5b615c576153bf565b9050615c6282615778565b81526020820135615c72816154bc565b602082015292915050565b600080600080600060a08688031215615c9557600080fd5b8535615ca0816154bc565b945060208681013594506040808801356001600160401b03811115615cc457600080fd5b8801601f81018a13615cd557600080fd5b8035615ce8615ce382615c1a565b6153e1565b81815260069190911b8201840190848101908c831115615d0757600080fd5b928501925b82841015615d2d57615d1e8d85615c3d565b82529284019290850190615d0c565b999c989b5098996060810135995060800135979650505050505050565b60208152600061399e60208301846158ce565b60006101008284031215612d6a57600080fd5b60008083601f840112615d8257600080fd5b5081356001600160401b03811115615d9957600080fd5b6020830191508360208260061b8501011115614f7557600080fd5b60008060008060008060008060006101a08a8c031215615dd357600080fd5b89356001600160401b0380821115615dea57600080fd5b615df68d838e016154f9565b909b50995060208c0135915080821115615e0f57600080fd5b615e1b8d838e016154f9565b9099509750879150615e308d60408e01615d5d565b96506101408c0135915080821115615e4757600080fd5b615e538d838e01615d70565b90965094506101608c0135915080821115615e6d57600080fd5b615e798d838e0161553a565b93506101808c0135915080821115615e9057600080fd5b50615e9d8c828d0161553a565b9150509295985092959850929598565b6000806000806000806101608789031215615ec757600080fd5b86356001600160401b0380821115615ede57600080fd5b615eea8a838b016154f9565b90985096506020890135915080821115615f0357600080fd5b615f0f8a838b016154f9565b9096509450849150615f248a60408b01615d5d565b935061014089013591508082111561562357600080fd5b60008060408385031215615f4e57600080fd5b8235615f5981615337565b91506020838101356001600160401b03811115615f7557600080fd5b8401601f81018613615f8657600080fd5b8035615f94615ce382615c1a565b81815260059190911b82018301908381019088831115615fb357600080fd5b928401925b82841015615fd157833582529284019290840190615fb8565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561576c57835163ffffffff1683529284019291840191600101615ffc565b6000806020838503121561603157600080fd5b82356001600160401b0381111561604757600080fd5b615312858286016154f9565b6001600160601b0381168114610f3757600080fd5b600082601f83011261607957600080fd5b81356020616089615ce383615c1a565b82815260069290921b840181019181810190868411156160a857600080fd5b8286015b848110156160f957604081890312156160c55760008081fd5b6160cd6153bf565b81356160d8816154bc565b8152818501356160e781616053565b818601528352918301916040016160ac565b509695505050505050565b600080600060a0848603121561611957600080fd5b6161238585615a8e565b9250606084013561613381616053565b915060808401356001600160401b0381111561614e57600080fd5b61586c86828701616068565b6000806040838503121561616d57600080fd5b8235616178816154bc565b946020939093013593505050565b600082601f83011261619757600080fd5b813560206161a7615ce383615c1a565b828152606092830285018201928282019190878511156161c657600080fd5b8387015b858110156161e9576161dc8982615a8e565b84529284019281016161ca565b5090979650505050505050565b600082601f83011261620757600080fd5b81356020616217615ce383615c1a565b82815260059290921b8401810191818101908684111561623657600080fd5b8286015b848110156160f957803561624d81616053565b835291830191830161623a565b600082601f83011261626b57600080fd5b8135602061627b615ce383615c1a565b82815260059290921b8401810191818101908684111561629a57600080fd5b8286015b848110156160f95780356001600160401b038111156162bd5760008081fd5b6162cb8986838b0101616068565b84525091830191830161629e565b600080600080600080600080610100898b0312156162f657600080fd5b6162ff896154d1565b975061630d60208a016154d1565b965061631b60408a016154d1565b955061632960608a016154d1565b94506080890135935060a08901356001600160401b038082111561634c57600080fd5b6163588c838d01616186565b945060c08b013591508082111561636e57600080fd5b61637a8c838d016161f6565b935060e08b013591508082111561639057600080fd5b5061639d8b828c0161625a565b9150509295985092959890939650565b6020810161113f8284615a38565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561643257616432616408565b5060010190565b60208152600061399e60208301846158a2565b60006020828403121561645e57600080fd5b815161399e816154bc565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156164c557600080fd5b8151801515811461399e57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600181811c9082168061653157607f821691505b60208210811415612d6a57634e487b7160e01b600052602260045260246000fd5b6000808335601e1984360301811261656957600080fd5b8301803591506001600160401b0382111561658357600080fd5b6020019150600581901b3603821315614f7557600080fd5b6000602082840312156165ad57600080fd5b815161399e81615337565b600082198211156165cb576165cb616408565b500190565b600080858511156165e057600080fd5b838611156165ed57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b8181101561665f578651805160ff1684528601518516868401529585019591830191600101616635565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561669157600080fd5b61399e8383615c3d565b6001600160e01b03198316815281516000906166be816004850160208701615876565b919091016004019392505050565b600082516166de818460208701615876565b9190910192915050565b6000828210156166fa576166fa616408565b500390565b60018060a01b038416815282602082015260606040820152600061672660608301846158a2565b95945050505050565b60006020828403121561674157600080fd5b815161399e816157a4565b60018060a01b038316815260406020820152600082516060604084015261677660a08401826158a2565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906167269083018486616797565b60018060a01b0385168152836020820152606060408201526000611dfb606083018486616797565b600082601f83011261681e57600080fd5b8151602061682e615ce383615c1a565b82815260059290921b8401810191818101908684111561684d57600080fd5b8286015b848110156160f957805161686481616053565b8352918301918301616851565b6000806040838503121561688457600080fd5b82516001600160401b038082111561689b57600080fd5b6168a78683870161680d565b935060208501519150808211156168bd57600080fd5b506168ca8582860161680d565b9150509250929050565b838152604060208201526000616726604083018486616797565b6000602080838503121561690157600080fd5b82516001600160401b0381111561691757600080fd5b8301601f8101851361692857600080fd5b8051616936615ce382615c1a565b81815260059190911b8201830190838101908783111561695557600080fd5b928401925b828410156110a957835161696d81615337565b8252928401929084019061695a565b634e487b7160e01b600052601260045260246000fd5b6000826169a1576169a161697c565b500690565b6001600160a01b03831681526040602082018190526000906154b4908301846158a2565b8281526040602082015260006154b460408301846158a2565b6000602082840312156169f557600080fd5b5051919050565b6001600160a01b03841681526101608101616a24602083018580358252602090810135910152565b616a3e606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b600060208284031215616a8d57600080fd5b815161399e81616053565b600060ff821660ff84168060ff03821115616ab557616ab5616408565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015616b2657865180516001600160a01b031684528601518516868401529585019591830191600101616af6565b50909a9950505050505050505050565b600061ffff80831681811415616b4e57616b4e616408565b6001019392505050565b600060208284031215616b6a57600080fd5b81516001600160e01b03198116811461399e57600080fd5b60006001600160601b0380831681851681830481118215151615616ba857616ba8616408565b02949350505050565b60006001600160601b0380841680616bcb57616bcb61697c565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220b3f6e57104aa407254db800eff5e936266a970205ddb8160136d9868881f0f7164736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003330644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212201a140537fb31eecdc5656ce33237794da95d0695d236333d1f7c8b66ff2c15e464736f6c634300080c0033 + /// ``` + #[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\x02yW`\x005`\xE0\x1C\x80c{\xEFJ\xAC\x11b\0\x01UW\x80c\xB14Bq\x11b\0\0\xC7W\x80c\xE2\x0C\x9Fq\x11b\0\0\x86W\x80c\xE2\x0C\x9Fq\x14b\0\x05PW\x80c\xE3\xA8\xB3E\x14b\0\x05ZW\x80c\xE4\xB5 \x0B\x14b\0\x05nW\x80c\xEA\xB6mz\x14b\0\x05\x82W\x80c\xFAv&\xD4\x14b\0\x05\x96W`\0\x80\xFD[\x80c\xB14Bq\x14b\0\x04\xEFW\x80c\xB5P\x8A\xA9\x14b\0\x05\x03W\x80c\xBAAO\xA6\x14b\0\x05\rW\x80c\xDA\xD5D\xE0\x14b\0\x05(W\x80c\xE1\x82r\xC2\x14b\0\x05+\xEE;\x14b\0\x03\x1DW\x80c>G\x15\x8C\x14b\0\x031W\x80c>^<#\x14b\0\x03EW\x80c?r\x86\xF4\x14b\0\x03OW`\0\x80\xFD[\x80c\x082\xAFR\x14b\0\x02~W\x80c\x1E\xD7\x83\x1C\x14b\0\x02\xAFW\x80c$\x82\x94\xAB\x14b\0\x02\xC8W\x80c*\xDE8\x80\x14b\0\x02\xDCW\x80c9\x98\xFD\xD3\x14b\0\x02\xF5W[`\0\x80\xFD[` Tb\0\x02\x92\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[b\0\x02\xB9b\0\x05\xA4V[`@Qb\0\x02\xA6\x91\x90b\0%\xA9V[`/Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\xE6b\0\x06\x08V[`@Qb\0\x02\xA6\x91\x90b\0&&V[`,Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\"Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`1Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x1DTb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\xB9b\0\x07VV[b\0\x02\xB9b\0\x07\xB8V[`'Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`2Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x03\x98b\0\x03\x926`\x04b\0&\xECV[b\0\x08\x1AV[\0[`*Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x03\xBEg\r\xE0\xB6\xB3\xA7d\0\0\x81V[`@Q\x90\x81R` \x01b\0\x02\xA6V[b\0\x03\xD7b\0\x082V[`@Qb\0\x02\xA6\x91\x90b\0'\x11V[`)Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`.Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`0Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`&Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x04Tb\0\t\x1CV[`@Qb\0\x02\xA6\x91\x90b\0'\xC8V[`\x1ETb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`%Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x03\xD7b\0\t\xF6V[`4Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`$Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`+Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`5Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x03\x98b\0\n\xE0V[`\x1FTb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x04Tb\0\n\xF6V[b\0\x05\x17b\0\x0B\xD0V[`@Q\x90\x15\x15\x81R` \x01b\0\x02\xA6V[`3Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`#Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\xB9b\0\r\x07V[`!Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`-Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`6Tb\0\x02\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x07Tb\0\x05\x17\x90`\xFF\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x05\xFEW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x05\xDFW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x075W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x06\xA1\x90b\0(.V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x06\xCF\x90b\0(.V[\x80\x15b\0\x07 W\x80`\x1F\x10b\0\x06\xF4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x07 V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x07\x02W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x06\x7FV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x06,V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x05\xFEW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x05\xDFWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x05\xFEW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x05\xDFWPPPPP\x90P\x90V[b\0\x08%\x81b\0\riV[b\0\x08/b\0 \x10V[PV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\t\x03W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\x08\xC4W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x08VV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\tb\x90b\0(.V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\t\x90\x90b\0(.V[\x80\x15b\0\t\xE1W\x80`\x1F\x10b\0\t\xB5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\t\xE1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\t\xC3W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\t@V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\n\xC7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\n\x88W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\n\x1AV[b\0\n\xEAb\0![V[b\0\n\xF4b\0 \x10V[V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x07MW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x0B<\x90b\0(.V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x0Bj\x90b\0(.V[\x80\x15b\0\x0B\xBBW\x80`\x1F\x10b\0\x0B\x8FWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x0B\xBBV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x0B\x9DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x0B\x1AV[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0\x0B\xF3WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\r\x02W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0\x0C\x84\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0(kV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x0C\xA0\x91b\0(\x9EV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\x0C\xDFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x0C\xE4V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0\x0C\xFE\x91\x90b\0(\xBCV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x05\xFEW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x05\xDFWPPPPP\x90P\x90V[`@Qb\0\rw\x90b\0#\xE4V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\x94W=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q\x80\x82\x01\x82R`=T\x80\x82R`>T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R `\xAB`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E&W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E;W=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x0EM\x90b\0#\xF1V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0EjW=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837PP`5T\x82Q\x92\x93P`\x01`\x01`\xA0\x1B\x03\x16\x91\x83\x91P`\0\x90b\0\x0E\xD0Wb\0\x0E\xD0b\0(\xF6V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`6T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x0E\xFE\x90b\0#\xFFV[b\0\x0F\x0B\x92\x91\x90b\0)\x0CV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F(W=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x0FW\x90b\0$\rV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0FtW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x0F\xA3\x90b\0$\x1BV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\xC0W=`\0\x80>=`\0\xFD[P`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1ET`@Q\x91\x16\x90b\0\x0F\xF1\x90b\0$)V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\x1EW=`\0\x80>=`\0\xFD[P`/\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x10M\x90b\0$7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10jW=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`.T`@Q\x91\x92\x16\x90b\0\x10\x9F\x90b\0$EV[`\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\x10\xD3W=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x90\x91\x16\x81\x17\x82U`\x1DT`\x1ET`@\x80Q3`$\x82\x01R\x91\x86\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Q\x91\x93\x16\x91\x90b\0\x11R\x90b\0$SV[b\0\x11`\x93\x92\x91\x90b\0)8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11}W=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x11\xAC\x90b\0$\x1BV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xC9W=`\0\x80>=`\0\xFD[P`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`.T`@Q\x91\x16\x90b\0\x11\xFA\x90b\0$aV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12'W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x1DT`\x1ET`@Q3`$\x82\x01R\x90\x84\x16`D\x82\x01R`\0`d\x82\x01R\x91\x92\x16\x90c\x05\xE5.\xCF`\xE2\x1B\x90`\x84\x01`@\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\x90Qb\0\x12\xB4\x90b\0$SV[b\0\x12\xC2\x93\x92\x91\x90b\0)8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12\xDFW=`\0\x80>=`\0\xFD[P`0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`-T`.T`/T`\x1FT`@Qc\r\x8E\xFEY`\xE2\x1B\x81R\x92\x85\x16`\x04\x84\x01R\x90\x84\x16`$\x83\x01R\x83\x16`D\x82\x01R\x91\x16\x90c6;\xF9d\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13SW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13hW=`\0\x80>=`\0\xFD[PPPP`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x90\xC5\x01;`@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\x13\xBDW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xD2W=`\0\x80>=`\0\xFD[PP`\x1CT`4T`@Qc\x03\">\xAB`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\x06D}V\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14 W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x145W=`\0\x80>=`\0\xFD[PP`!T`\x1DT`@Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94P\x91\x16\x91Pb\0\x14\\\x90b\0$SV[b\0\x14i\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x14\x86W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`\x1DT`@Q\x91\x83\x16\x92\x16\x90b\0\x14\xBD\x90b\0$SV[b\0\x14\xCA\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x14\xE7W=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`\x1DT`@Q\x91\x83\x16\x92\x16\x90b\0\x15\x1E\x90b\0$SV[b\0\x15+\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x15HW=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`\x1DT`@Q\x91\x83\x16\x92\x16\x90b\0\x15\x7F\x90b\0$SV[b\0\x15\x8C\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x15\xA9W=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`\x1DT`@Q\x91\x83\x16\x92\x16\x90b\0\x15\xE0\x90b\0$SV[b\0\x15\xED\x92\x91\x90b\0)oV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x16\nW=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x16fW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16{W=`\0\x80>=`\0\xFD[PP`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\x06D}V\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16\xC9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16\xDEW=`\0\x80>=`\0\xFD[PP`(T`.T`@Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94P\x91\x16\x91Pb\0\x17\x05\x90b\0$oV[`\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\x179W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x1DT`)T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x17\xA4W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x17\xB9W=`\0\x80>=`\0\xFD[PP`(T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x17\xDA\x91Pb\0$}V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x18\x07W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x82U`\x1DT`*T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x85\x16`\x04\x82\x01R\x92\x83\x01\x91\x90\x91R\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x18pW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x18\x85W=`\0\x80>=`\0\xFD[PP`(T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x18\xA6\x91Pb\0$\x8BV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x18\xD3W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x1DT`+T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x19>W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x19SW=`\0\x80>=`\0\xFD[PP`2T`(T`)T`@Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x95P\x91\x83\x16\x93P\x90\x91\x16\x90b\0\x19\x82\x90b\0$\x99V[`\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\x19\xBFW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x1DT`,T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1A*W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1A?W=`\0\x80>=`\0\xFD[PP`,T`4T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1A\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1A\xA2W=`\0\x80>=`\0\xFD[PP`*T`;T`@Qc\x06\xFAhO`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`=T`$\x82\x01R`>T`D\x82\x01R\x91\x16\x92Pc\xDFM\t\xE0\x91P`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1B\0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1B\x15W=`\0\x80>=`\0\xFD[PPPP`\0\x82`\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0\x1B:Wb\0\x1B:b\0(\xE0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x1BdW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0\x1B\xC3Wb\0\x1B\x81\x81`\x01b\0)\xAEV[\x82\x82\x81Q\x81\x10b\0\x1B\x96Wb\0\x1B\x96b\0(\xF6V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x1B\xBA\x81b\0)\xC9V[\x91PPb\0\x1BjV[P`\0\x83`\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0\x1B\xE5Wb\0\x1B\xE5b\0(\xE0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x1C\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x1C\x04W\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0\x1D\tW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x90\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x1C?W\x90PP\x82\x82\x81Q\x81\x10b\0\x1C|Wb\0\x1C|b\0(\xF6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80\x82`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01g\r\xE0\xB6\xB3\xA7d\0\0`\x01`\x01``\x1B\x03\x16\x81RP\x82\x82\x81Q\x81\x10b\0\x1C\xCBWb\0\x1C\xCBb\0(\xF6V[` \x02` \x01\x01Q`\0\x81Q\x81\x10b\0\x1C\xE8Wb\0\x1C\xE8b\0(\xF6V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x1D\0\x90b\0)\xC9V[\x91PPb\0\x1C V[P`,T`)T`*T`+T`@Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x1D<\x90b\0$\xA7V[`\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\x1D\x81W=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ub\0\x1D\xB0`A`\0b\0$\xB5V[`\0[\x84`\xFF\x16\x81\x10\x15b\0\x1E\x8DW`@\x80Q``\x81\x01\x82R\x81Tc\xFF\xFF\xFF\xFF`\x01`h\x1B\x82\x04\x81\x16\x83Ra\xFF\xFF`\x01`\x88\x1B\x83\x04\x81\x16` \x85\x01\x90\x81R`\x01`\x98\x1B\x90\x93\x04\x81\x16\x94\x84\x01\x94\x85R`A\x80T`\x01\x81\x01\x82U`\0\x91\x90\x91R\x93Q\x7F|\x97\x85\xE8$\x16\x15\xBC\x80A]\x89wY\x84\xA13}\x15\xDC\x1B\xF4\xCEP\xF4\x19\x88\xB2\xA2\xB36\xA7\x90\x94\x01\x80T\x93Q\x95Q\x82\x16f\x01\0\0\0\0\0\0\x02g\xFF\xFF\0\0\0\0\0\0\x19\x96\x90\x92\x16d\x01\0\0\0\0\x02e\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x94\x90\x92\x16\x93\x90\x93\x17\x91\x90\x91\x17\x92\x90\x92\x16\x17\x90U\x80b\0\x1E\x84\x81b\0)\xC9V[\x91PPb\0\x1D\xB3V[P`\x1DT`(T`\"T`4T`8T`:T`\x1ET`@Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x97c\x96#`\x9D\x97\x81\x16\x96\x81\x16\x95c\xDD\x82\x83\xF3`\xE0\x1B\x95b\0\x1E\xED\x95\x91\x83\x16\x94\x90\x83\x16\x93\x91\x83\x16\x92\x16\x90`\0\x90`A\x90\x8E\x90\x8E\x90`$\x01b\0*\xBFV[`@\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\x1F6\x93\x92\x91`\x04\x01b\0)8V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1FQW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1FfW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x1Fx\x90b\0$\xD5V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x1F\x95W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x1F\xF1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0 \x06W=`\0\x80>=`\0\xFD[PPPPPPPPV[\x7F*;?~\xF4\xF6)\x85\xAF1\x80\x9F\xDCS\x14\x83\xE5\xF1\xCDg\xAA\x1B\xCF\x0F\x8A\xC0\xD1~\x15\x8A\xA9g`QU\x7F\x0B\xCB+h\xB6\xC6\x8AZ\xEA\x7F\xE7[TF\xC4\xCAA\x04a\xFA\"l$\x87\xD0~\xB2\xC5\x04c\x9C\xB5`PU~\xC8t\xE4\xFC\xFB\x88\xD5\xC9\x8A\x02@\xBCo\x7F7\xD4_\"&\xCA\x14s\x17\xB3\xA2\xB7$=\xDBl\x1B`SU\x7F\t@\xE6Dx\xDBQ\xFEc\x0C\xC5@\xDB\xEA\xBE\xA3M\x07*T\xFD|t0V\xE1\x81t\xF9\xA1\xB6N`RU\x7F\r\xAE\x15\xDA\xC5Q\xF0\x1E\"6N\xCE,\xC54\xF9Z\xC4\x95\x9A\x1A\xC1d@Y\xE7\xCB\x94r_\x0F\xAB`UU\x7F\x0B\xCBo\0\xAF\xD0\xAF\xD7+\xFEK\xC4\x9F\xC9j\xDF\xF8?~Kq\xAF\x90*\x10\xE9\x14\x1F\x15n\xAC7`TU\x7F\nR\x0Fi\xF5\xCC\xC7\xC2\xF5GN\xA9\x89\xD9\xA8\x18}\x9C\xCC\x05\x8B8}\x1AG\xE1\x13u3\xD5\xF3\xD7`WU\x7F/j\t\xAC\xA6\x11\xE6/<\xAE\xB1\xBA\x02\x91\x8E\xD1\xA7\x14$\xB7Y\xABr&\xBE\xCB\x10\x858\nf\x17`VU`OT`NTb\0!M\x91\x90b\0!F\x90b\0!sV[\x90b\0\"\x0CV[\x80Q`XU` \x01Q`YUV[`@Tb\0\n\xF4\x90`\x01`\xA8\x1B\x90\x04`\xFF\x16b\0\riV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80b\0!\xA6`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R\x86b\0+\x96V[\x90P[b\0!\xB4\x81b\0\"\xADV[\x90\x93P\x91P`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R\x82\x83\t\x83\x14\x15b\0!\xF0W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R`\x01\x82\x08\x90Pb\0!\xA9V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\"*b\0$\xE3V[\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\x15b\0\"_Wb\0\"aV[\xFE[P\x80b\0\"\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`\0\x80\x80`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R`\x03`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R\x86`\0\x80Q` b\x01\xD6-\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0b\0#)\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` b\x01\xD6-\x839\x81Q\x91Rb\0#5V[\x91\x95\x91\x94P\x90\x92PPPV[`\0\x80b\0#Bb\0%\x01V[b\0#Lb\0%\x1FV[` \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\x15b\0\"_WP\x82b\0#\xD9W`@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\x01b\0\"\x9CV[PQ\x95\x94PPPPPV[`\x94\x80b\0+\xBA\x839\x01\x90V[a\x07\x18\x80b\0,N\x839\x01\x90V[a\x07x\x80b\x003f\x839\x01\x90V[a\x15\x8C\x80b\0:\xDE\x839\x01\x90V[a\x04\x06\x80b\0Pj\x839\x01\x90V[a\x1Bn\x80b\0Tp\x839\x01\x90V[a\x17\x8E\x80b\0o\xDE\x839\x01\x90V[a\x0E\xFE\x80b\0\x87l\x839\x01\x90V[a\x0E\x81\x80b\0\x96j\x839\x01\x90V[a\x1Fx\x80b\0\xA4\xEB\x839\x01\x90V[a:j\x80b\0\xC4c\x839\x01\x90V[a!\xD2\x80b\0\xFE\xCD\x839\x01\x90V[a\x13\xEC\x80b\x01 \x9F\x839\x01\x90V[a\x16\xE0\x80b\x014\x8B\x839\x01\x90V[ap\x9D\x80b\x01Kk\x839\x01\x90V[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90b\0\x08/\x91\x90b\0%=V[a\x1A%\x80b\x01\xBC\x08\x839\x01\x90V[`@Q\x80``\x01`@R\x80`\x03\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[[\x80\x82\x11\x15b\0%_W\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81U`\x01\x01b\0%>V[P\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0%\x9EW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0%wV[P\x94\x95\x94PPPPPV[` \x81R`\0b\0%\xBE` \x83\x01\x84b\0%cV[\x93\x92PPPV[`\0[\x83\x81\x10\x15b\0%\xE2W\x81\x81\x01Q\x83\x82\x01R` \x01b\0%\xC8V[\x83\x81\x11\x15b\0%\xF2W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Rb\0&\x12\x81` \x86\x01` \x86\x01b\0%\xC5V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0&\xDCW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0&\xC5W`_\x19\x89\x85\x03\x01\x83Rb\0&\xB2\x84\x86Qb\0%\xF8V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0&\x93V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0&MV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x82\x84\x03\x12\x15b\0&\xFFW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14b\0%\xBEW`\0\x80\xFD[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0'\xB9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0'\xA3W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0'wV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0'9V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0(!W`?\x19\x88\x86\x03\x01\x84Rb\0(\x0E\x85\x83Qb\0%\xF8V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0'\xEFV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0(CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0(eWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90b\0(\x90\x81`\x04\x85\x01` \x87\x01b\0%\xC5V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qb\0(\xB2\x81\x84` \x87\x01b\0%\xC5V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0(\xCFW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14b\0%\xBEW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0)!`@\x83\x01\x85b\0%cV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0)f\x90\x83\x01\x84b\0%\xF8V[\x95\x94PPPPPV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15b\0)\xC4Wb\0)\xC4b\0)\x98V[P\x01\x90V[`\0`\0\x19\x82\x14\x15b\0)\xE0Wb\0)\xE0b\0)\x98V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0%\x9EW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0)\xFBV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0\x80[\x86\x81\x10\x15b\0*\xB1W\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15b\0*\x9BW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x8A\x01Q`\x01`\x01``\x1B\x03\x16\x8A\x84\x01R\x92\x89\x01\x92`@\x90\x92\x01\x91`\x01\x01b\0*`V[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01b\0*AV[P\x92\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\x8AT\x93P\x83\x85Ra\x01 \x88\x01\x95P\x8A`\0R\x82`\0 \x94P`\0[\x84\x81\x10\x15b\0+WW\x85Tc\xFF\xFF\xFF\xFF\x81\x16\x88Ra\xFF\xFF\x81\x86\x1C\x81\x16\x86\x8A\x01R`0\x91\x90\x91\x1C\x16\x83\x88\x01R\x95\x81\x01\x95`\x01\x95\x86\x01\x95\x01b\0+\x1BV[PPPPPP\x82\x81\x03`\xC0\x84\x01Rb\0+q\x81\x86b\0)\xE7V[\x90P\x82\x81\x03`\xE0\x84\x01Rb\0+\x87\x81\x85b\0*\"V[\x9B\x9APPPPPPPPPPPV[`\0\x82b\0+\xB4WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x15l\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\xBBW`\x005`\xE0\x1C\x80cmp\xF7\xAE\x11a\x01\x82W\x80c\xBBE\xFE\xF2\x11a\0\xE9W\x80c\xCB\xB5\xD4\xDB\x11a\0\xA2W\x80c\xDB\xE3[\xD8\x11a\0|W\x80c\xDB\xE3[\xD8\x14a\x06\x9FW\x80c\xEE\xA9\x06K\x14a\x06\xD9W\x80c\xF1ar\xB0\x14a\x07\x18W\x80c\xF6\x98\xDA%\x14a\x02\xE9W`\0\x80\xFD[\x80c\xCB\xB5\xD4\xDB\x14a\x06\nW\x80c\xCF\x80\x87>\x14a\x06CW\x80c\xDA\x8B\xE8d\x14a\x06gW`\0\x80\xFD[\x80c\xBBE\xFE\xF2\x14a\x03\xC4W\x80c\xBCV\xFFf\x14a\x05YW\x80c\xC4H\xFE\xB8\x14a\x05lW\x80c\xC4\x887Z\x14a\x03cW\x80c\xC5\xE4\x80\xDB\x14a\x05tW\x80c\xC9KQ\x11\x14a\x05\xFCW`\0\x80\xFD[\x80c\x91\x04\xC3\x19\x11a\x01;W\x80c\x91\x04\xC3\x19\x14a\x05(W\x80c\x96V\x82q\x14a\x03wW\x80c\x99\xBE\x81\xC8\x14a\x05/W\x80c\xA1\x06\x0C\x88\x14a\x05AW\x80c\xA1x\x84\x84\x14a\x03cW\x80c\xA9\x8F\xB3U\x14a\x05/W`\0\x80\xFD[\x80cmp\xF7\xAE\x14a\x04\x99W\x80ct\xD8\x98\xD7\x14a\x03wW\x80cw\x8EU\xF3\x14a\x04\xBCW\x80c\x7FT\x80q\x14a\x04\xE7W\x80c\x8D\x90\xCDV\x14a\x04\xF5W\x80c\x90\x04\x13G\x14a\x05\x08W`\0\x80\xFD[\x80c)\xC7}O\x11a\x02&W\x80cY{6\xDA\x11a\x01\xDFW\x80cY{6\xDA\x14a\x04)W\x80c_\x96o\x14\x14a\x03\xD2W\x80c`\xD7\xFA\xED\x14a\x047W\x80cc[\xBD\x10\x14a\x04LW\x80ce\xDA\x12d\x14a\x04]W\x80cg\xF2\x92\xC7\x14a\x04\x86W`\0\x80\xFD[\x80c)\xC7}O\x14a\x03cW\x80c3@C\x96\x14a\x03\xACW\x80c7H#\xB5\x14a\x03\xC4W\x80c<\xDE\xB5\xE0\x14a\x03\xD2W\x80c>(9\x1D\x14a\x03\xFBW\x80cC7s\x82\x14a\x02\xE9W`\0\x80\xFD[\x80c\x15\"\xBF\x02\x11a\x02xW\x80c\x15\"\xBF\x02\x14a\x03OW\x80c\x16\x92\x83e\x14a\x03cW\x80c\x1B\xBC\xE0\x91\x14a\x03wW\x80c\x1D6\x96\xB7\x14a\x03\x8EW\x80c `kp\x14a\x02\xE9W\x80c(\xA5s\xAE\x14a\x03AW`\0\x80\xFD[\x80c\x04I\xCA9\x14a\x02\xC0W\x80c\x04\xA4\xF9y\x14a\x02\xE9W\x80c\x0B\x9FHz\x14a\x02\xF0W\x80c\r\xD8\xDD\x02\x14a\x03\tW\x80c\x0FX\x9EY\x14a\x03,W\x80c\x13-Ig\x14a\x03AW[`\0\x80\xFD[a\x02\xD6a\x02\xCE6`\x04a\txV[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0a\x02\xD6V[a\x02\xD6a\x02\xFE6`\x04a\t\xDEV[`\0\x95\x94PPPPPV[a\x03\x1Fa\x03\x176`\x04a\txV[``\x92\x91PPV[`@Qa\x02\xE0\x91\x90a\n9V[a\x03?a\x03:6`\x04a\n\xD6V[PPPV[\0[a\x03?a\x03:6`\x04a\x0B)V[a\x03?a\x03]6`\x04a\x0BjV[PPPPV[a\x02\xD6a\x03q6`\x04a\x0B\xD5V[P`\0\x90V[a\x02\xD6a\x03\x856`\x04a\x0B)V[`\0\x93\x92PPPV[a\x03\x9Ca\x03q6`\x04a\x0B\xD5V[`@Q\x90\x15\x15\x81R` \x01a\x02\xE0V[a\x03?a\x03\xBA6`\x04a\x0B\xF9V[PPPPPPPPV[a\x03\x9Ca\x02\xCE6`\x04a\x0C\xBCV[a\x03\xE3a\x03\xE06`\x04a\x0B\xD5V[\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xE0V[a\x03\x9Ca\x04\t6`\x04a\x0B\xD5V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x02` R`@\x90 T\x16\x15\x15\x90V[a\x02\xD6a\x03q6`\x04a\x0E~V[a\x03?a\x04E6`\x04a\x0FlV[PPPPPV[a\x03?a\x04Z6`\x04a\x0F\xF7V[PV[a\x03\xE3a\x04k6`\x04a\x0B\xD5V[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03?a\x04\x946`\x04a\x10\x10V[a\x07&V[a\x03\x9Ca\x04\xA76`\x04a\x0B\xD5V[`\0` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xD6a\x04\xCA6`\x04a\x10xV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03?a\x04E6`\x04a\x11YV[a\x03?a\x05\x036`\x04a\x11\xE9V[a\x07\xA0V[a\x05\x1Ba\x05\x166`\x04a\x12:V[a\x08\x06V[`@Qa\x02\xE0\x91\x90a\x12\xC4V[`\0a\x03\xE3V[a\x03?a\x05=6`\x04a\x12\xD7V[PPV[a\x02\xD6a\x05O6`\x04a\x13\x0CV[`\0\x94\x93PPPPV[a\x03?a\x05g6`\x04a\x13RV[a\x08\xE8V[a\xC4\xE0a\x02\xD6V[a\x05\xC6a\x05\x826`\x04a\x0B\xD5V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x80\x83R` \x83\x01R`\0\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\x02\xE0V[a\x02\xD6a\x05O6`\x04a\x13\xB6V[a\x03?a\x06\x186`\x04a\x13\xEEV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[a\x06Ya\x06Q6`\x04a\x0B\xD5V[P``\x90\x81\x90V[`@Qa\x02\xE0\x92\x91\x90a\x14#V[a\x03\x1Fa\x06u6`\x04a\x0B\xD5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U``\x90V[a\x03?a\x06\xAD6`\x04a\x0B)V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[a\x03?a\x06\xE76`\x04a\x14\x83V[PP3`\0\x90\x81R`\x02` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x03?a\x04Z6`\x04a\x14\xDBV[`@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\x86\x16\x90c\xC6\x08\xC7\xF3\x90`\x84\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x81W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x95W=`\0\x80>=`\0\xFD[PPPPPPPPPV[`@Qc\x8C\x80\xD4\xE5`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x83\x90R\x85\x16\x90c\x8C\x80\xD4\xE5\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xBAW=`\0\x80>=`\0\xFD[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08#Wa\x08#a\x0C\xE8V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08LW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x08\xE0W`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x08\x8AWa\x08\x8Aa\x14\xF7V[` \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\x08\xC5Wa\x08\xC5a\x14\xF7V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x08\xD9\x81a\x15\rV[\x90Pa\x08RV[P\x93\x92PPPV[`@Qc\xC4b>\xA1`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x84\x81\x16`$\x83\x01R\x83\x81\x16`D\x83\x01R`d\x82\x01\x83\x90R\x86\x16\x90c\xC4b>\xA1\x90`\x84\x01a\x07gV[`\0\x80\x83`\x1F\x84\x01\x12a\t?W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\tVW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\tqW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\t\x8BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA1W`\0\x80\xFD[a\t\xAD\x85\x82\x86\x01a\t-V[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04ZW`\0\x80\xFD[\x805a\t\xD9\x81a\t\xB9V[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\t\xF6W`\0\x80\xFD[\x855a\n\x01\x81a\t\xB9V[\x94P` \x86\x015a\n\x11\x81a\t\xB9V[\x93P`@\x86\x015a\n!\x81a\t\xB9V[\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\x15a\nqW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nUV[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15a\n\x8FW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\n\xA7W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xBEW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\tqW`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15a\n\xEBW`\0\x80\xFD[a\n\xF5\x85\x85a\n}V[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0B\x10W`\0\x80\xFD[a\x0B\x1C\x86\x82\x87\x01a\n\x95V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B>W`\0\x80\xFD[\x835a\x0BI\x81a\t\xB9V[\x92P` \x84\x015a\x0BY\x81a\t\xB9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0B\x80W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0B\x97W`\0\x80\xFD[a\x0B\xA3\x88\x83\x89\x01a\t-V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0B\xBCW`\0\x80\xFD[Pa\x0B\xC9\x87\x82\x88\x01a\t-V[\x95\x98\x94\x97P\x95PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\xE7W`\0\x80\xFD[\x815a\x0B\xF2\x81a\t\xB9V[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\x80\x89\x8B\x03\x12\x15a\x0C\x15W`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0C,W`\0\x80\xFD[a\x0C8\x8C\x83\x8D\x01a\t-V[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15a\x0CQW`\0\x80\xFD[a\x0C]\x8C\x83\x8D\x01a\t-V[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15a\x0CvW`\0\x80\xFD[a\x0C\x82\x8C\x83\x8D\x01a\t-V[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15a\x0C\x9BW`\0\x80\xFD[Pa\x0C\xA8\x8B\x82\x8C\x01a\t-V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xCFW`\0\x80\xFD[\x825a\x0C\xDA\x81a\t\xB9V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\r Wa\r a\x0C\xE8V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\r Wa\r a\x0C\xE8V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\rpWa\rpa\x0C\xE8V[`@R\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xD9W`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\r\xA5Wa\r\xA5a\x0C\xE8V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\xC0W`\0\x80\xFD[\x815` a\r\xD5a\r\xD0\x83a\r\x8CV[a\rHV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\r\xF4W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0E\x18W\x805a\x0E\x0B\x81a\t\xB9V[\x83R\x91\x83\x01\x91\x83\x01a\r\xF8V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a\x0E4W`\0\x80\xFD[\x815` a\x0EDa\r\xD0\x83a\r\x8CV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x0EcW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0E\x18W\x805\x83R\x91\x83\x01\x91\x83\x01a\x0EgV[`\0` \x82\x84\x03\x12\x15a\x0E\x90W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0E\xA7W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0E\xBBW`\0\x80\xFD[a\x0E\xC3a\x0C\xFEV[a\x0E\xCC\x83a\t\xCEV[\x81Ra\x0E\xDA` \x84\x01a\t\xCEV[` \x82\x01Ra\x0E\xEB`@\x84\x01a\t\xCEV[`@\x82\x01R``\x83\x015``\x82\x01Ra\x0F\x06`\x80\x84\x01a\rxV[`\x80\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a\x0F\x1DW`\0\x80\xFD[a\x0F)\x87\x82\x86\x01a\r\xAFV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\x0FAW`\0\x80\xFD[a\x0FM\x87\x82\x86\x01a\x0E#V[`\xC0\x83\x01RP\x95\x94PPPPPV[\x805\x80\x15\x15\x81\x14a\t\xD9W`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a\x0F\x84W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\x9BW`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15a\x0F\xAFW`\0\x80\xFD[\x90\x95P` \x87\x015\x90\x80\x82\x11\x15a\x0F\xC5W`\0\x80\xFD[Pa\x0F\xD2\x88\x82\x89\x01a\t-V[\x90\x95P\x93PP`@\x86\x015\x91Pa\x0F\xEB``\x87\x01a\x0F\\V[\x90P\x92\x95P\x92\x95\x90\x93PV[`\0` \x82\x84\x03\x12\x15a\x10\tW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\x10(W`\0\x80\xFD[\x855a\x103\x81a\t\xB9V[\x94P` \x86\x015a\x10C\x81a\t\xB9V[\x93P`@\x86\x015a\x10S\x81a\t\xB9V[\x92P``\x86\x015\x91P`\x80\x86\x015a\x10j\x81a\t\xB9V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x80`@\x83\x85\x03\x12\x15a\x10\x8BW`\0\x80\xFD[\x825a\x10\x96\x81a\t\xB9V[\x91P` \x83\x015a\x10\xA6\x81a\t\xB9V[\x80\x91PP\x92P\x92\x90PV[`\0`@\x82\x84\x03\x12\x15a\x10\xC3W`\0\x80\xFD[a\x10\xCBa\r&V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10\xE4W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x10\xF8W`\0\x80\xFD[\x815` \x82\x82\x11\x15a\x11\x0CWa\x11\x0Ca\x0C\xE8V[a\x11\x1E`\x1F\x83\x01`\x1F\x19\x16\x82\x01a\rHV[\x92P\x81\x83R\x86\x81\x83\x86\x01\x01\x11\x15a\x114W`\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\x15a\x11qW`\0\x80\xFD[\x855a\x11|\x81a\t\xB9V[\x94P` \x86\x015a\x11\x8C\x81a\t\xB9V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xA8W`\0\x80\xFD[a\x11\xB4\x89\x83\x8A\x01a\x10\xB1V[\x94P``\x88\x015\x91P\x80\x82\x11\x15a\x11\xCAW`\0\x80\xFD[Pa\x11\xD7\x88\x82\x89\x01a\x10\xB1V[\x95\x98\x94\x97P\x92\x95`\x80\x015\x93\x92PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x11\xFFW`\0\x80\xFD[\x845a\x12\n\x81a\t\xB9V[\x93P` \x85\x015a\x12\x1A\x81a\t\xB9V[\x92P`@\x85\x015a\x12*\x81a\t\xB9V[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x12MW`\0\x80\xFD[\x825a\x12X\x81a\t\xB9V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12sW`\0\x80\xFD[a\x12\x7F\x85\x82\x86\x01a\r\xAFV[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x12\xB9W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x12\x9DV[P\x94\x95\x94PPPPPV[` \x81R`\0a\x0B\xF2` \x83\x01\x84a\x12\x89V[`\0\x80` \x83\x85\x03\x12\x15a\x12\xEAW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\0W`\0\x80\xFD[a\t\xAD\x85\x82\x86\x01a\n\x95V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\"W`\0\x80\xFD[\x845a\x13-\x81a\t\xB9V[\x93P` \x85\x015a\x13=\x81a\t\xB9V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\x13jW`\0\x80\xFD[\x855a\x13u\x81a\t\xB9V[\x94P` \x86\x015a\x13\x85\x81a\t\xB9V[\x93P`@\x86\x015a\x13\x95\x81a\t\xB9V[\x92P``\x86\x015a\x13\xA5\x81a\t\xB9V[\x94\x97\x93\x96P\x91\x94`\x80\x015\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\xCCW`\0\x80\xFD[\x845a\x13\xD7\x81a\t\xB9V[\x93P` \x85\x015\x92P`@\x85\x015a\x12*\x81a\t\xB9V[`\0\x80`@\x83\x85\x03\x12\x15a\x14\x01W`\0\x80\xFD[\x825a\x14\x0C\x81a\t\xB9V[\x91Pa\x14\x1A` \x84\x01a\x0F\\V[\x90P\x92P\x92\x90PV[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15a\x14eW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x14@V[PPP\x83\x81\x03\x82\x85\x01Ra\x14y\x81\x86a\x12\x89V[\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14\x98W`\0\x80\xFD[\x835a\x14\xA3\x81a\t\xB9V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBEW`\0\x80\xFD[a\x14\xCA\x86\x82\x87\x01a\x10\xB1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15a\x14\xEDW`\0\x80\xFD[a\x0B\xF2\x83\x83a\n}V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x15/WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x1D\xD1y\x0F\xDA\xFF\xC91\xF9\xA1,\x9CJ\xE6\x97f\xCE\x139\xD2w\xEB\xD3v\xB8\xD1\x96\x9F\x99<\xF1\xDEdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xE6\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xA9\x8F\xB3U\x11a\0[W\x80c\xA9\x8F\xB3U\x14a\x01\x03W\x80c\xD7\x9A\xCE\xAB\x14a\x01\x11W\x80c\xECv\xF4B\x14a\x01\x18W\x80c\xF6\x98\xDA%\x14a\x01\x11W`\0\x80\xFD[\x80c7H#\xB5\x14a\0\x8DW\x80c\x99&\xEE}\x14a\0\xB8W\x80c\xA1\x06\x0C\x88\x14a\0\xCCW\x80c\xA3d\xF4\xDA\x14a\0\xF2W[`\0\x80\xFD[a\0\xA3a\0\x9B6`\x04a\x01BV[`\0\x92\x91PPV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCAa\0\xC66`\x04a\x01\xDCV[PPV[\0[a\0\xE4a\0\xDA6`\x04a\x02\xC1V[`\0\x94\x93PPPPV[`@Q\x90\x81R` \x01a\0\xAFV[a\0\xCAa\x01\x006`\x04a\x03\x03V[PV[a\0\xCAa\0\xC66`\x04a\x03%V[`\0a\0\xE4V[a\0\xCAa\x01\x006`\x04a\x03\x97V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01=W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01UW`\0\x80\xFD[a\x01^\x83a\x01&V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA5Wa\x01\xA5a\x01lV[`@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\x01\xD4Wa\x01\xD4a\x01lV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xEFW`\0\x80\xFD[a\x01\xF8\x83a\x01&V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x16W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x02*W`\0\x80\xFD[a\x022a\x01\x82V[\x825\x82\x81\x11\x15a\x02AW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x02RW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x02dWa\x02da\x01lV[a\x02v`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\x01\xABV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x02\x8CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x02\xD7W`\0\x80\xFD[a\x02\xE0\x85a\x01&V[\x93Pa\x02\xEE` \x86\x01a\x01&V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x03\x15W`\0\x80\xFD[a\x03\x1E\x82a\x01&V[\x93\x92PPPV[`\0\x80` \x83\x85\x03\x12\x15a\x038W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03PW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x03dW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x03sW`\0\x80\xFD[\x86` \x82\x85\x01\x01\x11\x15a\x03\x85W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x03\xA9W`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB4\xCE#\xC3.\x90\xDD\x0C\xCE\xE3h\x1A\xA8\xC5u\xC39m0W\x9FP\xB6J\xAE\xB20\xA9\x80\x8A\x9BBdsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15b\0\0.W`\0\x80\xFD[P`@Qb\0\x1Bn8\x03\x80b\0\x1Bn\x839\x81\x01`@\x81\x90Rb\0\0Q\x91b\0\x02QV[b\0\0^\x81`\0b\0\0eV[Pb\0\x02\x83V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15b\0\0\x87WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[b\0\x01\x0FW`@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\x01[`@Q\x80\x91\x03\x90\xFD[`\x1D\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\xA2b\0\x01T\x82b\0\x01XV[PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x01\xE8W`@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\x01b\0\x01\x06V[`\x1CT`@\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`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0` \x82\x84\x03\x12\x15b\0\x02dW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02|W`\0\x80\xFD[\x93\x92PPPV[a\x18\xDB\x80b\0\x02\x93`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x020W`\x005`\xE0\x1C\x80c\x84\xD8\x10b\x11a\x01.W\x80c\xB5P\x8A\xA9\x11a\0\xABW\x80c\xD9\x91\nV\x11a\0oW\x80c\xD9\x91\nV\x14a\x05\xEFW\x80c\xE2\x0C\x9Fq\x14a\x06;W\x80c\xF6\x84\x8D$\x14a\x06PW\x80c\xFAv&\xD4\x14a\x06kW\x80c\xFA\xBC\x1C\xBC\x14a\x06\x85W`\0\x80\xFD[\x80c\xB5P\x8A\xA9\x14a\x05\xC5W\x80c\xBAAO\xA6\x14a\x05\xDAW\x80c\xBE\xFF\xBB\x89\x14a\x05\xEFW\x80c\xBF\xE3JA\x14a\x06\x0EW\x80c\xC2\xC5\x1C@\x14a\x05\xEFW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xF2W\x80c\x9BNF4\x14a\x05]W\x80c\x9B\xA0bu\x14a\x05rW\x80c\xA3\x84\x06\xA3\x14a\x05\x93W\x80c\xA6\xA5\t\xBE\x14a\x05\xB1W\x80c\xB14Bq\x14a\x03FW`\0\x80\xFD[\x80c\x84\xD8\x10b\x14a\x03FW\x80c\x85\"l\x81\x14a\x04\xDEW\x80c\x88o\x11\x95\x14a\x05\0W\x80c\x91\x04\xC3\x19\x14a\x05 W\x80c\x91j\x17\xC6\x14a\x05HW`\0\x80\xFD[\x80c>^<#\x11a\x01\xBCW\x80cZ\xC8j\xB7\x11a\x01\x80W\x80cZ\xC8j\xB7\x14a\x04\x11W\x80c\\\x97Z\xBB\x14a\x04QW\x80c`\xF4\x06+\x14a\x04fW\x80cf\xD9\xA9\xA0\x14a\x04\x9CW\x80ct\xCD\xD7\x98\x14a\x04\xBEW`\0\x80\xFD[\x80c>^<#\x14a\x03\x91W\x80c?r\x86\xF4\x14a\x03\xA6W\x80cD\xE7\x1C\x80\x14a\x03\xBBW\x80cF=\xB08\x14a\x03\xDEW\x80cY\\jg\x14a\x03\xFCW`\0\x80\xFD[\x80c)+{+\x11a\x02\x03W\x80c)+{+\x14a\x02\xCCW\x80c*\xDE8\x80\x14a\x03\x04W\x80c8{\x13\0\x14a\x03&W\x80c9\xB7\x0E8\x14a\x03FW\x80c:Y\x1F\x08\x14a\x03ZW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x025W\x80c\x10\xD6z/\x14a\x02hW\x80c\x13d9\xDD\x14a\x02\x8AW\x80c\x1E\xD7\x83\x1C\x14a\x02\xAAW[`\0\x80\xFD[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a\x13'V[\x91\x90PV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02tW`\0\x80\xFD[Pa\x02\x88a\x02\x836`\x04a\x13SV[a\x06\xA5V[\0[4\x80\x15a\x02\x96W`\0\x80\xFD[Pa\x02\x88a\x02\xA56`\x04a\x13pV[a\x07^V[4\x80\x15a\x02\xB6W`\0\x80\xFD[Pa\x02\xBFa\x08\x9DV[`@Qa\x02_\x91\x90a\x13\x89V[4\x80\x15a\x02\xD8W`\0\x80\xFD[P`NTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02_V[4\x80\x15a\x03\x10W`\0\x80\xFD[Pa\x03\x19a\x08\xFFV[`@Qa\x02_\x91\x90a\x14\x06V[4\x80\x15a\x032W`\0\x80\xFD[Pa\x02\x88a\x03A6`\x04a\x14\xE1V[PPPV[4\x80\x15a\x03RW`\0\x80\xFD[P`\0a\x02\xECV[4\x80\x15a\x03fW`\0\x80\xFD[Pa\x02\x88a\x03u6`\x04a\x13'V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`P` R`@\x90 UV[4\x80\x15a\x03\x9DW`\0\x80\xFD[Pa\x02\xBFa\nAV[4\x80\x15a\x03\xB2W`\0\x80\xFD[Pa\x02\xBFa\n\xA1V[4\x80\x15a\x03\xC7W`\0\x80\xFD[P`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a\x02_V[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02\x88a\x03\xF96`\x04a\x15\"V[PV[4\x80\x15a\x04\x08W`\0\x80\xFD[Pa\x02\x88a\x0B\x01V[4\x80\x15a\x04\x1DW`\0\x80\xFD[Pa\x04Aa\x04,6`\x04a\x15LV[`\x1DT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02_V[4\x80\x15a\x04]W`\0\x80\xFD[P`\x1DTa\x02UV[4\x80\x15a\x04rW`\0\x80\xFD[Pa\x02Ua\x04\x816`\x04a\x13SV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`P` R`@\x90 T\x90V[4\x80\x15a\x04\xA8W`\0\x80\xFD[Pa\x04\xB1a\x0B\xC8V[`@Qa\x02_\x91\x90a\x15oV[4\x80\x15a\x04\xCAW`\0\x80\xFD[P`OTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xEAW`\0\x80\xFD[Pa\x04\xF3a\x0C\xAEV[`@Qa\x02_\x91\x90a\x16\"V[4\x80\x15a\x05\x0CW`\0\x80\xFD[P`\x1CTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x05,W`\0\x80\xFD[Pa\x02\xECs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[4\x80\x15a\x05TW`\0\x80\xFD[Pa\x04\xB1a\r~V[a\x02\x88a\x05k6`\x04a\x16\xD8V[PPPPPV[4\x80\x15a\x05~W`\0\x80\xFD[Pa\x02\xECa\x05\x8D6`\x04a\x13SV[P`\0\x90V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x02\xECa\x05\xAE6`\x04a\x13SV[\x90V[4\x80\x15a\x05\xBDW`\0\x80\xFD[P`\0a\x02UV[4\x80\x15a\x05\xD1W`\0\x80\xFD[Pa\x04\xF3a\x0EdV[4\x80\x15a\x05\xE6W`\0\x80\xFD[Pa\x04Aa\x0F4V[4\x80\x15a\x05\xFBW`\0\x80\xFD[Pa\x02\x88a\x06\n6`\x04a\x13'V[PPV[4\x80\x15a\x06\x1AW`\0\x80\xFD[Pa\x02Ua\x06)6`\x04a\x13SV[`P` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x06GW`\0\x80\xFD[Pa\x02\xBFa\x10_V[4\x80\x15a\x06\\W`\0\x80\xFD[Pa\x04Aa\x05\x8D6`\x04a\x13SV[4\x80\x15a\x06wW`\0\x80\xFD[P`\x07Ta\x04A\x90`\xFF\x16\x81V[4\x80\x15a\x06\x91W`\0\x80\xFD[Pa\x02\x88a\x06\xA06`\x04a\x13pV[a\x10\xBFV[`\x1C`\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\x06\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x1C\x91\x90a\x17LV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07UW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17iV[`@Q\x80\x91\x03\x90\xFD[a\x03\xF9\x81a\x12\x1BV[`\x1CT`@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\x07\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xCA\x91\x90a\x17\xB3V[a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17\xD5V[`\x1DT\x81\x81\x16\x14a\x08_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\x07LV[`\x1D\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[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\n!W\x83\x82\x90`\0R` `\0 \x01\x80Ta\t\x94\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xC0\x90a\x18\x1DV[\x80\x15a\n\rW\x80`\x1F\x10a\t\xE2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\rV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\xF0W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\tuV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\t#V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[`\x1CT`@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\x0BIW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Bm\x91\x90a\x17\xB3V[a\x0B\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17\xD5V[`\0\x19`\x1D\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[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0C\x96W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0CXW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0B\xECV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0C\xF1\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\r\x1D\x90a\x18\x1DV[\x80\x15a\rjW\x80`\x1F\x10a\r?Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\rjV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\rMW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0C\xD2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0ELW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\x0EW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r\xA2V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0E\xA7\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0E\xD3\x90a\x18\x1DV[\x80\x15a\x0F W\x80`\x1F\x10a\x0E\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0F\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x88V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x0FVWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x02PW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x0F\xE4\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x18XV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xFE\x91a\x18\x89V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x10;W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10@V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x10X\x91\x90a\x17\xB3V[\x93\x92PPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[`\x1C`\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\x11\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x116\x91\x90a\x17LV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11fW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17iV[`\x1DT\x19\x81\x19`\x1DT\x19\x16\x14a\x11\xE4W`@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\x07LV[`\x1D\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\x08\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xA9W`@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\x07LV[`\x1CT`@\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`\x1C\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\x03\xF9W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x13:W`\0\x80\xFD[\x825a\x13E\x81a\x13\x12V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x13eW`\0\x80\xFD[\x815a\x10X\x81a\x13\x12V[`\0` \x82\x84\x03\x12\x15a\x13\x82W`\0\x80\xFD[P5\x91\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x13\xCAW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x13\xA5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x13\xF1W\x81\x81\x01Q\x83\x82\x01R` \x01a\x13\xD9V[\x83\x81\x11\x15a\x14\0W`\0\x84\x84\x01R[PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x14\xD4W`?\x19\x88\x86\x03\x01\x84R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x86R\x86\x01Q`@\x87\x87\x01\x81\x90R\x81Q\x90\x87\x01\x81\x90R\x90\x87\x01\x90```\x05\x82\x90\x1B\x88\x01\x81\x01\x91\x90\x88\x01\x90`\0[\x81\x81\x10\x15a\x14\xBDW\x89\x84\x03`_\x19\x01\x83R\x84Q\x80Q\x80\x86Ra\x14\x9E\x81\x8E\x88\x01\x8F\x85\x01a\x13\xD6V[\x95\x8C\x01\x95`\x1F\x01`\x1F\x19\x16\x94\x90\x94\x01\x8B\x01\x93P\x91\x8A\x01\x91`\x01\x01a\x14wV[P\x91\x97PPP\x93\x86\x01\x93P\x90\x85\x01\x90`\x01\x01a\x14-V[P\x92\x97\x96PPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14\xF6W`\0\x80\xFD[\x835a\x15\x01\x81a\x13\x12V[\x92P` \x84\x015a\x15\x11\x81a\x13\x12V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x154W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x10XW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15^W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x10XW`\0\x80\xFD[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x16\x13W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x15\xFEW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x15\xD4V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x15\x97V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x14\xD4W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x16p\x81\x89\x89\x01\x8A\x85\x01a\x13\xD6V[`\x1F\x01`\x1F\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x16IV[`\0\x80\x83`\x1F\x84\x01\x12a\x16\xA1W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xB9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x16\xD1W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x16\xF0W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17\x08W`\0\x80\xFD[a\x17\x14\x89\x83\x8A\x01a\x16\x8FV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\x17-W`\0\x80\xFD[Pa\x17:\x88\x82\x89\x01a\x16\x8FV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x17^W`\0\x80\xFD[\x81Qa\x10X\x81a\x13\x12V[` \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\x17\xC5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10XW`\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[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x181W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x18RWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x18{\x81`\x04\x85\x01` \x87\x01a\x13\xD6V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x18\x9B\x81\x84` \x87\x01a\x13\xD6V[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xA9\x92\x95*NB\xD9\n\x82\xE2b<\x98-\x04\xB1*\x8E\xE4E\xAD\x98\nu\xEF\x01\xC7\xD2qP\xF7\x7FdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x17n\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02SW`\x005`\xE0\x1C\x80c\x94\xF6I\xDD\x11a\x01FW\x80c\xC4b>\xA1\x11a\0\xC3W\x80c\xE2C\xDC<\x11a\0\x87W\x80c\xE2C\xDC<\x14a\x05\xA9W\x80c\xE2\xA8\x18\xC5\x14a\x05\xBCW\x80c\xE7\xA0P\xAA\x14a\x05\xCFW\x80c\xF2\xFD\xE3\x8B\x14a\x05\xE6W\x80c\xF6\x98\xDA%\x14a\x05\xF9W\x80c\xFA\xBC\x1C\xBC\x14a\x06\0W`\0\x80\xFD[\x80c\xC4b>\xA1\x14a\x05PW\x80c\xC6\x08\xC7\xF3\x14a\x05dW\x80c\xC6eg\x02\x14a\x05rW\x80c\xDF[5G\x14a\x05\x83W\x80c\xDF\\\xF7#\x14a\x05\x96W`\0\x80\xFD[\x80c\x9F\0\xFA$\x11a\x01\nW\x80c\x9F\0\xFA$\x14a\x04\xEFW\x80c\xA1x\x84\x84\x14a\x05\x01W\x80c\xA1\xCAx\x0B\x14a\x05!W\x80c\xB14Bq\x14a\x05/W\x80c\xB5\xD8\xB5\xB8\x14a\x05BW`\0\x80\xFD[\x80c\x94\xF6I\xDD\x14a\x04LW\x80c\x96\x7F\xC0\xD2\x14a\x04mW\x80c\x9A\x95\x19\xE0\x14a\x04\x80W\x80c\x9BM\xA0=\x14a\x04\x93W\x80c\x9B~/w\x14a\x04\xB6W`\0\x80\xFD[\x80c\\\x97Z\xBB\x11a\x01\xD4W\x80c\x88o\x11\x95\x11a\x01\x98W\x80c\x88o\x11\x95\x14a\x03\xF9W\x80c\x8B\x8A\xAC<\x14a\x04\x0CW\x80c\x8C\x80\xD4\xE5\x14a\x04!W\x80c\x8D\xA5\xCB[\x14a\x044W\x80c\x91\x04\xC3\x19\x14a\x04EW`\0\x80\xFD[\x80c\\\x97Z\xBB\x14a\x03\x9DW\x80cc\xFC\xA8\x88\x14a\x03\xA5W\x80cf<\x1D\xE4\x14a\x03\xB8W\x80cqP\x18\xA6\x14a\x03\xDBW\x80cz~\r\x92\x14a\x03\xE3W`\0\x80\xFD[\x80c6;\xF9d\x11a\x02\x1BW\x80c6;\xF9d\x14a\x02\xD7W\x80cFe\xBC\xDA\x14a\x03$W\x80cNZBc\x14a\x03OW\x80cY\\jg\x14a\x03bW\x80cZ\xC8j\xB7\x14a\x03jW`\0\x80\xFD[\x80c\x01\xF8 \xB2\x14a\x02XW\x80c\r9\x08\xF4\x14a\x02tW\x80c\x10\xD6z/\x14a\x02\x95W\x80c\x13d9\xDD\x14a\x02\xAAW\x80c2\xE8\x9A\xCE\x14a\x02\xBDW[`\0\x80\xFD[a\x02a`\xD2T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x88a\x02\x826`\x04a\x10nV[P``\x90V[`@Qa\x02k\x91\x90a\x10\xD6V[a\x02\xA8a\x02\xA36`\x04a\x10nV[a\x06\x13V[\0[a\x02\xA8a\x02\xB86`\x04a\x10\xE9V[a\x06\xCCV[a\x02aa\x02\xCB6`\x04a\x11\x18V[`\0\x96\x95PPPPPPV[a\x02\xA8a\x02\xE56`\x04a\x12\x13V[`\xC9\x80T`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\xCB\x80T\x92\x85\x16\x92\x82\x16\x92\x90\x92\x17\x90\x91U`\xCA\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`\xCATa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02kV[a\x02\xA8a\x03]6`\x04a\x12lV[a\x08\x0BV[a\x02\xA8a\x08yV[a\x03\x8Da\x03x6`\x04a\x12\xA5V[`\x98T`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02kV[`\x98Ta\x02aV[a\x02aa\x03\xB36`\x04a\x12\xC8V[a\t@V[a\x03\x8Da\x03\xC66`\x04a\x10nV[`\xCF` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xA8a\tqV[a\x02aa\x03\xF16`\x04a\x12\xF4V[`\0\x92\x91PPV[`\x97Ta\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02aa\x04\x1A6`\x04a\x10nV[P`\xD2T\x90V[a\x02\xA8a\x04/6`\x04a\x13\"V[PPPV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x037V[`\0a\x037V[a\x04_a\x04Z6`\x04a\x10nV[a\t\x85V[`@Qa\x02k\x92\x91\x90a\x13cV[`\xCCTa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\xA8a\x04\x8E6`\x04a\x10\xE9V[`\xD2UV[a\x03\x8Da\x04\xA16`\x04a\x10nV[`\xD1` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xA8a\x04\xC46`\x04a\x12lV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R`\xCF` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[a\x02\xA8a\x04\xFD6`\x04a\x12\xC8V[PPV[a\x02aa\x05\x0F6`\x04a\x10nV[`\xD0` R`\0\x90\x81R`@\x90 T\x81V[a\x02\xA8a\x04/6`\x04a\x13\xBAV[`\xCBTa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\xA8a\x04\xFD6`\x04a\x14;V[a\x02\xA8a\x05^6`\x04a\x14}V[PPPPV[a\x02\xA8a\x05^6`\x04a\x14\xCEV[a\x02\xA8a\x05\x806`\x04a\x10nV[PV[a\x02\xA8a\x05\x916`\x04a\x15!V[a\n^V[`\xC9Ta\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x037a\x05\xB76`\x04a\x12\xC8V[a\x0BOV[a\x02\xA8a\x05\xCA6`\x04a\x15\x8DV[a\x0B\x87V[a\x02aa\x05\xDD6`\x04a\x13\"V[`\0\x93\x92PPPV[a\x02\xA8a\x05\xF46`\x04a\x10nV[a\x0C1V[`\0a\x02aV[a\x02\xA8a\x06\x0E6`\x04a\x10\xE9V[a\x0C\xA7V[`\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\x06fW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x8A\x91\x90a\x16\x10V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16-V[`@Q\x80\x91\x03\x90\xFD[a\x05\x80\x81a\x0E\x03V[`\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\x07\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x078\x91\x90a\x16wV[a\x07TW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16\x94V[`\x98T\x81\x81\x16\x14a\x07\xCDW`@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\xBAV[`\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[`@\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`\xD1` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[`\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\x08\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xE5\x91\x90a\x16wV[a\t\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16\x94V[`\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[`\xCE` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\t\\W`\0\x80\xFD[\x90`\0R` `\0 \x01`\0\x91P\x91PPT\x81V[a\tya\x0E\xFAV[a\t\x83`\0a\x0FTV[V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x83R\x92\x81\x90 \x83T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x85\x94\x90\x93\x91\x84\x91\x83\x01\x82\x82\x80\x15a\t\xFCW` \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\t\xDEW[PPPPP\x91P\x80\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\nNW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\n:W[PPPPP\x90P\x91P\x91P\x91P\x91V[`\0[\x83\x81\x10\x15a\x0BHW`\x01`\xCF`\0\x87\x87\x85\x81\x81\x10a\n\x81Wa\n\x81a\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\n\x96\x91\x90a\x10nV[`\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\x82\x82\x82\x81\x81\x10a\n\xD0Wa\n\xD0a\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\n\xE5\x91\x90a\x16\xF2V[`\xD1`\0\x87\x87\x85\x81\x81\x10a\n\xFBWa\n\xFBa\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\x0B\x10\x91\x90a\x10nV[`\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\x90Ua\x0BA\x81a\x17\x0FV[\x90Pa\naV[PPPPPV[`\xCD` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x0BkW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[\x82\x81\x14a\x0B\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FStrategyManagerMock: length mism`D\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\xCD` R`@\x90 a\x0C\x05\x90\x85\x85a\x0F\xA6V[P`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\xCE` R`@\x90 a\x0C)\x90\x83\x83a\x10\tV[PPPPPPV[a\x0C9a\x0E\xFAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0C\x9EW`@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\xBAV[a\x05\x80\x81a\x0FTV[`\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\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\x16\x10V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16-V[`\x98T\x19\x81\x19`\x98T\x19\x16\x14a\r\xCCW`@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\xBAV[`\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\x08\0V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0E\x91W`@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\xBAV[`\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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x83W`@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\xBAV[`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[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15a\x0F\xF9W\x91` \x02\x82\x01[\x82\x81\x11\x15a\x0F\xF9W\x81T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x845\x16\x17\x82U` \x90\x92\x01\x91`\x01\x90\x91\x01\x90a\x0F\xC6V[Pa\x10\x05\x92\x91Pa\x10DV[P\x90V[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15a\x0F\xF9W\x91` \x02\x82\x01[\x82\x81\x11\x15a\x0F\xF9W\x825\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x10)V[[\x80\x82\x11\x15a\x10\x05W`\0\x81U`\x01\x01a\x10EV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05\x80W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x10\x80W`\0\x80\xFD[\x815a\x10\x8B\x81a\x10YV[\x93\x92PPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x10\xCBW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x10\xA6V[P\x94\x95\x94PPPPPV[` \x81R`\0a\x10\x8B` \x83\x01\x84a\x10\x92V[`\0` \x82\x84\x03\x12\x15a\x10\xFBW`\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\x111W`\0\x80\xFD[\x865a\x11<\x81a\x10YV[\x95P` \x87\x015a\x11L\x81a\x10YV[\x94P`@\x87\x015\x93P``\x87\x015a\x11c\x81a\x10YV[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\x87W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x11\x9BW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xADWa\x11\xADa\x11\x02V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x11\xD5Wa\x11\xD5a\x11\x02V[\x81`@R\x82\x81R\x8C` \x84\x87\x01\x01\x11\x15a\x11\xEEW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x12(W`\0\x80\xFD[\x835a\x123\x81a\x10YV[\x92P` \x84\x015a\x12C\x81a\x10YV[\x91P`@\x84\x015a\x12S\x81a\x10YV[\x80\x91PP\x92P\x92P\x92V[\x80\x15\x15\x81\x14a\x05\x80W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x12\x7FW`\0\x80\xFD[\x825a\x12\x8A\x81a\x10YV[\x91P` \x83\x015a\x12\x9A\x81a\x12^V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\xB7W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x10\x8BW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xDBW`\0\x80\xFD[\x825a\x12\xE6\x81a\x10YV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x13\x07W`\0\x80\xFD[\x825a\x13\x12\x81a\x10YV[\x91P` \x83\x015a\x12\x9A\x81a\x10YV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x137W`\0\x80\xFD[\x835a\x13B\x81a\x10YV[\x92P` \x84\x015a\x13R\x81a\x10YV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`@\x81R`\0a\x13v`@\x83\x01\x85a\x10\x92V[\x82\x81\x03` \x84\x81\x01\x91\x90\x91R\x84Q\x80\x83R\x85\x82\x01\x92\x82\x01\x90`\0[\x81\x81\x10\x15a\x13\xADW\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x13\x91V[P\x90\x97\x96PPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x13\xCFW`\0\x80\xFD[\x835a\x13\xDA\x81a\x10YV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x14\x01W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\x19W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x144W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x14NW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14eW`\0\x80\xFD[a\x14q\x85\x82\x86\x01a\x13\xEFV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\x93W`\0\x80\xFD[\x845a\x14\x9E\x81a\x10YV[\x93P` \x85\x015a\x14\xAE\x81a\x10YV[\x92P`@\x85\x015a\x14\xBE\x81a\x10YV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\xE4W`\0\x80\xFD[\x845a\x14\xEF\x81a\x10YV[\x93P` \x85\x015a\x14\xFF\x81a\x10YV[\x92P`@\x85\x015\x91P``\x85\x015a\x15\x16\x81a\x10YV[\x93\x96\x92\x95P\x90\x93PPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x157W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15OW`\0\x80\xFD[a\x15[\x88\x83\x89\x01a\x13\xEFV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x15tW`\0\x80\xFD[Pa\x15\x81\x87\x82\x88\x01a\x13\xEFV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x15\xA5W`\0\x80\xFD[\x855a\x15\xB0\x81a\x10YV[\x94P` \x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\xCDW`\0\x80\xFD[a\x15\xD9\x89\x83\x8A\x01a\x13\xEFV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\x15\xF2W`\0\x80\xFD[Pa\x15\xFF\x88\x82\x89\x01a\x13\xEFV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x16\"W`\0\x80\xFD[\x81Qa\x10\x8B\x81a\x10YV[` \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\x16\x89W`\0\x80\xFD[\x81Qa\x10\x8B\x81a\x12^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[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x17\x04W`\0\x80\xFD[\x815a\x10\x8B\x81a\x12^V[`\0`\0\x19\x82\x14\x15a\x171WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xCA\xFF\xCC\x84\xA5i\x7F\xE1\x9F\xAF\x08\x1E\xA8\xBB.\x8E=\xBE\x95\x99\xCF\x80r\xA3\x8B\xB6=\xC8L\t2|dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\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\x079\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07iW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x84a\x07\x85\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[\x83\x80a\x08\x17W`@\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\x01a\x06\x98V[\x82\x81\x14a\x08\x8CW`@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\x98V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\t\xDDW\x85\x85\x82\x81\x81\x10a\x08\xBAWa\x08\xBAa5\xFCV[\x90P` \x02\x01` \x81\x01\x90a\x08\xCF\x91\x90a6\x12V[\x82\x89\x89\x84\x81\x81\x10a\x08\xE2Wa\x08\xE2a5\xFCV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF9Wa\x08\xF9a5\xFCV[\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\tbWa\tba5\xFCV[\x90P` \x02\x015\x81T\x81\x10a\tyWa\tya5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\xA0Wa\t\xA0a5\xFCV[\x90P` \x02\x01` \x81\x01\x90a\t\xB5\x91\x90a6\x12V[`@Qa\t\xC3\x92\x91\x90a-\x13V[`@Q\x80\x91\x03\x90\xA2\x80a\t\xD5\x81a6CV[\x91PPa\x08\xA0V[PPPPPPPPPV[``\x803`\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\n3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\nMWa\nMa/\xF1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\nvW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x93Wa\n\x93a/\xF1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xBCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\xA5W`\0\x87\x87\x83\x81\x81\x10a\n\xDEWa\n\xDEa5\xFCV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x0BfW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x98V[`\0\x80a\x0Bs\x83\x8Da hV[\x91P\x91P\x80a\x0C\x10W`@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\x98V[`\0a\x0C\x1D\x8C\x85\x85a\"fV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0C2Wa\x0C2a5\xFCV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0C\\\x84\x82a\x1E\xEEV[\x86\x86\x81Q\x81\x10a\x0CnWa\x0Cna5\xFCV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x9D\x90a6CV[\x91PPa\n\xC2V[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\rEW`\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\x0C\xECV[PPPP\x90P[\x92\x91PPV[`\0\x80a\r_\x84\x84a\x1C=V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\r\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xED\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0E\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x0E9\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x0EUW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[\x81Q\x80a\x0E\xCAW`@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\x98V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x11\x82W\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\x0F)Wa\x0F)a5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x0FAWa\x0FAa5\xFCV[`\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\x0F\x9FWa\x0F\x9Fa5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB7Wa\x0F\xB7a5\xFCV[`\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\x0F\xF7\x90`\x01\x90a6\xD0V[\x81T\x81\x10a\x10\x07Wa\x10\x07a5\xFCV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x10$Wa\x10$a5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x10=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18+\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18[W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x18w\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x18\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[a\x06\x19\x83\x83a%\x14V[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\x18\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\0[\x81\x81\x10\x15a\x19\xC4W`\0\x83\x83\x83\x81\x81\x10a\x19\x04Wa\x19\x04a5\xFCV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x19\x94W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[`\0a\x19\xA2\x86\x83`\0a\"fV[\x90Pa\x19\xAE\x82\x82a\x1E\xEEV[PPP\x80\x80a\x19\xBC\x90a6CV[\x91PPa\x18\xE8V[PPPPV[\x7F\0\0\0\0\0\0\0\0\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(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AL\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x1A\x98\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[a\x06\x19\x83\x83a%}V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\xE5Wa\x1A\xE5a5\xFCV[`\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\r_\x81\x85a)\xC0V[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1B]\x91a6\xD0V[\x81T\x81\x10a\x1BmWa\x1Bma5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x12\xF2\x84\x84\x84a+:V[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1B\xCDWa\x1B\xCDa5\xFCV[`\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\x1C$\x81\x86a)\xC0V[`@\x01Q\x95\x94PPPPPV[`\0a\x12\xF5\x83\x83a,\xA0V[`@\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\x1C\x96W\x91Pa\rL\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\xBD`\x01\x84a6\xD0V[\x81T\x81\x10a\x1C\xCDWa\x1C\xCDa5\xFCV[`\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\rL\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1DI\x85\x85\x85a+:V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1D_Wa\x1D_a5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1EIW`@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\x98V[a\x1ES\x83\x82a%}V[a\x1E]\x83\x83a%\x14V[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\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\x1F\x12\x90\x84a6\xD0V[\x81T\x81\x10a\x1F\"Wa\x1F\"a5\xFCV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a\x1FQWT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\rL\x90PV[\x80T`\0\x90a\x1Fp\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a$\xE6V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1F\xADW\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua _V[\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[`\0\x80`\0\x80a \x87\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 \xFC\x92\x8C\x92\x01a6\xFDV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a!\x19W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra!A\x91\x90\x81\x01\x90a7\\V[\x90P`\0[\x83\x81\x10\x15a\"2W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a!rWa!ra5\xFCV[`\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!\xC0Wa!\xC0a5\xFCV[` \x02` \x01\x01Q\x11\x15a\" Wg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a!\xF7Wa!\xF7a5\xFCV[` \x02` \x01\x01Qa\"\t\x91\x90a7\xECV[a\"\x13\x91\x90a8\x0BV[a\"\x1D\x90\x86a8-V[\x94P[\x80a\"*\x81a6CV[\x91PPa!FV[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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a#*W`\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$\x8CV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a#Q`\x01\x84a6\xD0V[\x81T\x81\x10a#aWa#aa5\xFCV[`\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#\x9AW`\0\x93PPPPa\x12\xF5V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\xD4W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua$\x8AV[\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$\xDC\x82\x85a,\xA0V[\x96\x95PPPPPPV[`\0\x80\x82\x12\x15a%\nWa$\xF9\x82a8XV[a%\x03\x90\x84a8uV[\x90Pa\rLV[a%\x03\x82\x84a8-V[`\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%\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a9\x0C\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a&\x05\x83\x83a8\x9DV[\x11\x15a&uW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a9\x0C\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\x98V[`\0[\x82\x81\x10\x15a)\xB9W`\0[a&\x8D\x82\x84a8\x9DV[\x81\x10\x15a'nW\x84\x82\x81Q\x81\x10a&\xA6Wa&\xA6a5\xFCV[` \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&\xE5Wa&\xE5a5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a'\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a9\x0C\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[\x80a'f\x81a6CV[\x91PPa&\x83V[P`\0\x84\x82\x81Q\x81\x10a'\x83Wa'\x83a5\xFCV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a(\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a9\x0C\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\x98V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a(.Wa(.a5\xFCV[` \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(\x93Wa(\x93a5\xFCV[` \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)\nWa)\na5\xFCV[` \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)gWa)ga5\xFCV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a)\x85Wa)\x85a5\xFCV[` \x02` \x01\x01Q` \x01Q`@Qa)\x9F\x92\x91\x90a-\x13V[`@Q\x80\x91\x03\x90\xA2\x80a)\xB1\x81a6CV[\x91PPa&xV[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a*eW`@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\x98V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a*\x8BWP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a+6W`@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\x98V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\xDBW`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a+\x8E`\x01\x84a6\xD0V[\x81T\x81\x10a+\x9EWa+\x9Ea5\xFCV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a+\xC9Wa+\xC0`\x01\x82a6\xD0V[\x92PPPa\x12\xF5V[\x80a+\xD3\x81a8\xB5V[\x91PPa+YV[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\x98V[`\0a\x12\xF5`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a8\xCCV[\x805`\xFF\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xE1W`\0\x80\xFD[a,\xEA\x83a,\xB8V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a-\nW`\0\x80\xFD[a\x12\xF5\x82a,\xB8V[`\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-JW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a-`W`\0\x80\xFD[a-i\x83a,\xB8V[\x91P` \x83\x015a-y\x81a-5V[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a-\x96W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xADW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"_W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-\xE0W`\0\x80\xFD[a-\xE9\x86a,\xB8V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\x05W`\0\x80\xFD[a.\x11\x89\x83\x8A\x01a-\x84V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a.*W`\0\x80\xFD[Pa.7\x88\x82\x89\x01a-\x84V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a.ZW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"_W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a.\x9FW`\0\x80\xFD[\x845a.\xAA\x81a-5V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xCCW`\0\x80\xFD[a.\xD8\x87\x82\x88\x01a.HV[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a/\x1DW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.\xF8V[P\x94\x95\x94PPPPPV[`@\x81R`\0a/;`@\x83\x01\x85a.\xE4V[\x82\x81\x03` \x84\x01Ra _\x81\x85a.\xE4V[`\0\x80`@\x83\x85\x03\x12\x15a/`W`\0\x80\xFD[\x825\x91Pa/p` \x84\x01a,\xB8V[\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/\xE5Wa/\xD2\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/\x95V[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\x15a0)Wa0)a/\xF1V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a0WWa0Wa/\xF1V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0xWa0xa/\xF1V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\x95W`\0\x80\xFD[a0\x9E\x83a,\xB8V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xBAW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0\xCBW`\0\x80\xFD[\x805a0\xDEa0\xD9\x82a0_V[a0/V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0\xFDW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a1\x1BW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a1\x02V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a1VW`\0\x80\xFD[\x835\x92Pa1f` \x85\x01a,\xB8V[\x91Pa1t`@\x85\x01a1*V[\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a1\x90W`\0\x80\xFD[a,\xEA\x83a1*V[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a1\xC2W`\0\x80\xFD[a1\xCB\x84a1\x99V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE6W`\0\x80\xFD[a1\xF2\x86\x82\x87\x01a.HV[\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/\xE5W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a2\x1BV[`\0\x80`\0``\x84\x86\x03\x12\x15a2RW`\0\x80\xFD[a2[\x84a,\xB8V[\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\rLV[`\0\x80`@\x83\x85\x03\x12\x15a2\xB8W`\0\x80\xFD[a2\xC1\x83a,\xB8V[\x91Pa/p` \x84\x01a1*V[`\0\x80`\0`@\x84\x86\x03\x12\x15a2\xE4W`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a3\x12W`\0\x80\xFD[\x815` a3\"a0\xD9\x83a0_V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a3AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a3\x90W`@\x81\x89\x03\x12\x15a3^W`\0\x80\x81\xFD[a3fa0\x07V[\x815a3q\x81a-5V[\x81Ra3~\x82\x86\x01a1*V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a3EV[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a3\xAEW`\0\x80\xFD[a3\xB7\x83a,\xB8V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xD2W`\0\x80\xFD[a3\xDE\x85\x82\x86\x01a3\x01V[\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a3\xFDW`\0\x80\xFD[a4\x06\x84a,\xB8V[\x92Pa4\x14` \x85\x01a1\x99V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a49W`\0\x80\xFD[\x835\x92Pa4I` \x85\x01a,\xB8V[\x91Pa1t`@\x85\x01a1\x99V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a4mW`\0\x80\xFD[a4v\x85a,\xB8V[\x93Pa4\x84` \x86\x01a1\x99V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a4\xACW`\0\x80\xFD[a2\xC1\x83a1*V[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xCAW`\0\x80\xFD[a4\xD3\x84a,\xB8V[\x92Pa4\xE1` \x85\x01a1*V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xFCW`\0\x80\xFD[a5\x08\x86\x82\x87\x01a3\x01V[\x91PP\x92P\x92P\x92V[` \x80\x82R`1\x90\x82\x01R\x7FStakeRegistry.quorumExists: quor`@\x82\x01Rp\x1D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`z\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a5uW`\0\x80\xFD[\x81Qa\x12\xF5\x81a-5V[` \x80\x82R`V\x90\x82\x01R\x7FStakeRegistry.onlyCoordinatorOwn`@\x82\x01R\x7Fer: caller is not the owner of t``\x82\x01Ru42\x9092\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`Q\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a6$W`\0\x80\xFD[a\x12\xF5\x82a1*V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a6WWa6Wa6-V[P`\x01\x01\x90V[` \x80\x82R`L\x90\x82\x01R\x7FStakeRegistry.onlyRegistryCoordi`@\x82\x01R\x7Fnator: caller is not the Registr``\x82\x01Rk<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`\xA1\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x82\x10\x15a6\xE2Wa6\xE2a6-V[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\x15a7NW\x85T\x85\x16\x83R`\x01\x95\x86\x01\x95\x92\x84\x01\x92\x01a70V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a7oW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7\x85W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a7\x96W`\0\x80\xFD[\x80Qa7\xA4a0\xD9\x82a0_V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a7\xC3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a7\xE1W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a7\xC8V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a8\x06Wa8\x06a6-V[P\x02\x90V[`\0\x82a8(WcNH{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\x15a8OWa8Oa6-V[\x01\x94\x93PPPPV[`\0`\x01`\xFF\x1B\x82\x14\x15a8nWa8na6-V[P`\0\x03\x90V[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a8\x95Wa8\x95a6-V[\x03\x93\x92PPPV[`\0\x82\x19\x82\x11\x15a8\xB0Wa8\xB0a6-V[P\x01\x90V[`\0\x81a8\xC4Wa8\xC4a6-V[P`\0\x19\x01\x90V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a8\xEAWa8\xEAa6-V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a9\x05Wa9\x05a6-V[PP\x03\x90V\xFEStakeRegistry._addStrategyParams\xA2dipfsX\"\x12 \xD1\xC1`\xB6mq\xA1\xA41G1F\xB2\x860;i\xB5\x16si\xC9G[m\xA78\x0E\x18\xC6\xB5odsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0!\xD28\x03\x80b\0!\xD2\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x18V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80\x80b\0\0Mb\0\0VV[PPPb\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[`\x80Qa Pb\0\x01\x82`\09`\0\x81\x81a\x03\x1A\x01R\x81\x81a\x04\xDB\x01R\x81\x81a\x064\x01R\x81\x81a\n:\x01Ra\x10\xA6\x01Ra P`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01 W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\xADW\x80c\xD5%J\x8C\x11a\0qW\x80c\xD5%J\x8C\x14a\x03\xEAW\x80c\xDE)\xFA\xC0\x14a\x04\nW\x80c\xDFM\t\xE0\x14a\x04*W\x80c\xE8\xBB\x9A\xE6\x14a\x04\x94W\x80c\xF4\xE2O\xE5\x14a\x04\xBDW`\0\x80\xFD[\x80cm\x14\xA9\x87\x14a\x03\x15W\x80cy\x16\xCE\xA6\x14a\x03W\x80c`WG\xD5\x14a\x02\x9AW\x80ch\xBC\xCA\xAC\x14a\x02\xE8W`\0\x80\xFD[\x80b\xA1\xF4\xCB\x14a\x01%W\x80c\x13T*N\x14a\x01fW\x80c&\xD9A\xF2\x14a\x01\x9DW\x80c7~\xD9\x9D\x14a\x01\xB2W[`\0\x80\xFD[a\x01La\x0136`\x04a\x19yV[`\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\x8Fa\x01t6`\x04a\x19yV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01]V[a\x01\xB0a\x01\xAB6`\x04a\x19\xACV[a\x04\xD0V[\0[a\x01\xD5a\x01\xC06`\x04a\x19\xACV[`\xFF\x16`\0\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01]V[a\x01\xB0a\x01\xF86`\x04a\x1A7V[a\x06)V[a\x02&a\x02\x0B6`\x04a\x1A\xDDV[`\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\x01]V[a\x02\x8Da\x02L6`\x04a\x19\xACV[`@\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\x01]\x91\x90a\x1A\xF6V[a\x02\xADa\x02\xA86`\x04a\x1B\rV[a\x06\xE7V[`@\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\x01]V[a\x02\xFBa\x02\xF66`\x04a\x1B7V[a\x07zV[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01]V[a\x02&\x7F\0\0\0\0\0\0\0\0\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\x03Oa\x03J6`\x04a\x1B\rV[a\t\x15V[`@\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\x01]V[a\x03\x90a\x03\x8B6`\x04a\x19yV[a\t`V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01]V[a\x01La\x03\xBE6`\x04a\x19\xACV[`\x05` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x8Fa\x03\xE56`\x04a\x1B\x7FV[a\n-V[a\x03\xFDa\x03\xF86`\x04a\x1B\xDCV[a\x0E\x81V[`@Qa\x01]\x91\x90a\x1CTV[a\x01\x8Fa\x04\x186`\x04a\x19yV[`\x01` R`\0\x90\x81R`@\x90 T\x81V[a\x01\xB0a\x0486`\x04a\x1C\xCEV[\x80Q`\0\x90\x81R` \x80\x83\x01\x80Q\x82R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x80\x85R`\x01\x80\x85R\x82\x86 \x88\x90U\x96\x85R`\x02\x84R\x81\x85 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x82\x17\x90U\x84R`\x03\x90\x92R\x91 \x91Q\x82UQ\x91\x01UV[a\x02&a\x04\xA26`\x04a\x1A\xDDV[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xB0a\x04\xCB6`\x04a\x1A7V[a\x10\x9BV[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!W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16`\0\x90\x81R`\x04` R`@\x90 T\x15a\x05\xA0W`@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\x01a\x05\x18V[`\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[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\x06qW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\x06|\x83a\t`V[P\x90Pa\x06\x89\x82\x82a\x11DV[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06\xCA\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06\xDA\x93\x92\x91\x90a\x1DvV[`@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\x07$Wa\x07$a\x1D\xE2V[`\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\x07\xA1Wa\x07\xA1a\x1D\xE2V[`\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\x08hW`@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\x05\x18V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x8EWP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\t\x0CW`@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\x05\x18V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\t1W`\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\n#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\x05\x18V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\nwW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\n\xA5a\n\x8E6\x86\x90\x03\x86\x01`@\x87\x01a\x1D\xF8V[\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\x0B-W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x05\x18V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0B\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x05\x18V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C;W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F\xFB\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x05\x18V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x94\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\x1E\x14V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0C\xB7\x91\x90a\x1E_V[\x90Pa\rQa\x0C\xF0a\x0C\xDB\x83a\x0C\xD56\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\xF8V[\x90a\x13\x8FV[a\x0C\xEA6\x89\x90\x03\x89\x01\x89a\x1D\xF8V[\x90a\x14&V[a\x0C\xF8a\x14\xBAV[a\r:a\r+\x85a\x0C\xD5`@\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\x0C\xEA6\x8A\x90\x03\x8A\x01\x8Aa\x1D\xF8V[a\rL6\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\xF1V[a\x15zV[a\r\xECW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F\xFB\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\x05\x18V[`\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\x0Ep\x91`\x80\x8A\x01\x90a\x1F0V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x9EWa\x0E\x9Ea\x19\xC7V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xC7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x92W`\0\x86\x86\x83\x81\x81\x10a\x0E\xE9Wa\x0E\xE9a\x1D\xE2V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0FLWP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0F0Wa\x0F0a\x1D\xE2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0F\xD9W`@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\x05\x18V[\x80[\x80\x15a\x10|W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x10\0`\x01\x84a\x1FzV[\x81T\x81\x10a\x10\x10Wa\x10\x10a\x1D\xE2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x10jWa\x109`\x01\x82a\x1FzV[\x85\x85\x81Q\x81\x10a\x10KWa\x10Ka\x1D\xE2V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10|V[\x80a\x10t\x81a\x1F\x91V[\x91PPa\x0F\xDBV[PPP\x80\x80a\x10\x8A\x90a\x1F\xA8V[\x91PPa\x0E\xCDV[P\x94\x93PPPPV[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\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x18\x90a\x1D\x02V[`\0a\x10\xEE\x83a\t`V[P\x90Pa\x11\x03\x82a\x10\xFE\x83a\x17\xE7V[a\x11DV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06\xCA\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x89W`\0\x84\x82\x81Q\x81\x10a\x11xWa\x11xa\x1D\xE2V[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x12\x08W`@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\x05\x18V[`\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\x12<\x90\x86a\x14&V[`\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\x12\x85\x90\x85a\x1FzV[\x81T\x81\x10a\x12\x95Wa\x12\x95a\x1D\xE2V[`\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\xD6W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x13rV[\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\x13\x81\x90a\x1F\xA8V[\x91PPa\x11[V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xABa\x18\xA6V[\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\xDEWa\x13\xE0V[\xFE[P\x80a\x14\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x05\x18V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x14Ba\x18\xC4V[\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\xDEWP\x80a\x14\x1EW`@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\x05\x18V[a\x14\xC2a\x18\xE2V[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\x15\xA9a\x19\x07V[`\0[`\x02\x81\x10\x15a\x17nW`\0a\x15\xC2\x82`\x06a\x1F\xC3V[\x90P\x84\x82`\x02\x81\x10a\x15\xD6Wa\x15\xD6a\x1D\xE2V[` \x02\x01QQ\x83a\x15\xE8\x83`\0a\x1F\xE2V[`\x0C\x81\x10a\x15\xF8Wa\x15\xF8a\x1D\xE2V[` \x02\x01R\x84\x82`\x02\x81\x10a\x16\x0FWa\x16\x0Fa\x1D\xE2V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x16&\x91\x90a\x1F\xE2V[`\x0C\x81\x10a\x166Wa\x166a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16MWa\x16Ma\x1D\xE2V[` \x02\x01QQQ\x83a\x16`\x83`\x02a\x1F\xE2V[`\x0C\x81\x10a\x16pWa\x16pa\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x87Wa\x16\x87a\x1D\xE2V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16\xA0\x83`\x03a\x1F\xE2V[`\x0C\x81\x10a\x16\xB0Wa\x16\xB0a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xC7Wa\x16\xC7a\x1D\xE2V[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16\xE2Wa\x16\xE2a\x1D\xE2V[` \x02\x01Q\x83a\x16\xF3\x83`\x04a\x1F\xE2V[`\x0C\x81\x10a\x17\x03Wa\x17\x03a\x1D\xE2V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\x1AWa\x17\x1Aa\x1D\xE2V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x175Wa\x175a\x1D\xE2V[` \x02\x01Q\x83a\x17F\x83`\x05a\x1F\xE2V[`\x0C\x81\x10a\x17VWa\x17Va\x1D\xE2V[` \x02\x01RP\x80a\x17f\x81a\x1F\xA8V[\x91PPa\x15\xACV[Pa\x17wa\x19&V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\xDEWP\x80a\x17\xD7W`@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\x05\x18V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x18\x0CWP` \x82\x01Q\x15[\x15a\x18*WPP`@\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\x18o\x91\x90a\x1E_V[a\x18\x99\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1FzV[\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\x18\xF5a\x19DV[\x81R` \x01a\x19\x02a\x19DV[\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\x18\xA1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x8BW`\0\x80\xFD[a\x19\x94\x82a\x19bV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18\xA1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\xBEW`\0\x80\xFD[a\x19\x94\x82a\x19\x9BV[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\x1A\0Wa\x1A\0a\x19\xC7V[`@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\x1A/Wa\x1A/a\x19\xC7V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x1AJW`\0\x80\xFD[a\x1AS\x83a\x19bV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1AqW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x85W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\x97Wa\x1A\x97a\x19\xC7V[a\x1A\xA9`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x1A\x06V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1A\xBFW`\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\xEFW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x07tV[`\0\x80`@\x83\x85\x03\x12\x15a\x1B W`\0\x80\xFD[a\x1B)\x83a\x19\x9BV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1BLW`\0\x80\xFD[a\x1BU\x84a\x19\x9BV[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1BnW`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B\x96W`\0\x80\xFD[a\x1B\x9F\x85a\x19bV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B\xB4W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1B\xCDW`\0\x80\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x1B\xF1W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1C\tW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1C\x1DW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1C,W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1C>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\x1C\x92W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1CpV[P\x90\x96\x95PPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x1C\xB0W`\0\x80\xFD[a\x1C\xB8a\x19\xDDV[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x80``\x83\x85\x03\x12\x15a\x1C\xE1W`\0\x80\xFD[a\x1C\xEA\x83a\x19bV[\x91Pa\x1C\xF9\x84` \x85\x01a\x1C\x9EV[\x90P\x92P\x92\x90PV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R`\0` \x84\x81\x84\x01R```@\x84\x01R\x83Q\x80``\x85\x01R`\0[\x81\x81\x10\x15a\x1D\xB8W\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1D\x9CV[\x81\x81\x11\x15a\x1D\xCAW`\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\x1E\nW`\0\x80\xFD[a\x19\x94\x83\x83a\x1C\x9EV[\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\x1E|WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x92W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1E\xB5Wa\x1E\xB5a\x19\xC7V[\x80`@RP\x80`@\x84\x01\x85\x81\x11\x15a\x1E\xCCW`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\xE6W\x805\x83R` \x92\x83\x01\x92\x01a\x1E\xCEV[P\x91\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1F\x03W`\0\x80\xFD[a\x1F\x0Ba\x19\xDDV[a\x1F\x15\x84\x84a\x1E\x81V[\x81Ra\x1F$\x84`@\x85\x01a\x1E\x81V[` \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\x1F\x8CWa\x1F\x8Ca\x1FdV[P\x03\x90V[`\0\x81a\x1F\xA0Wa\x1F\xA0a\x1FdV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1F\xBCWa\x1F\xBCa\x1FdV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\xDDWa\x1F\xDDa\x1FdV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F\xF5Wa\x1F\xF5a\x1FdV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \x91JKb\xB5W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R`\xCF\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\xD3\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15b\0\0/W`\0\x80\xFD[P`@Qb\0p\x9D8\x03\x80b\0p\x9D\x839\x81\x01`@\x81\x90Rb\0\0R\x91b\0\x02\xC0V[`@\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\x85R`\x06\x81Rev0.0.1`\xD0\x1B\x90\x82\x01R\x91Q\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`\xA0\x81\x81R\x85Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x81\x87\x01\x81\x90R\x81\x88\x01\x95\x90\x95R``\x81\x01\x93\x90\x93R`\x80\x80\x84\x01\x92\x90\x92R0\x83\x82\x01\x81\x90R\x86Q\x80\x85\x03\x90\x92\x01\x82R`\xC0\x93\x84\x01\x90\x96R\x80Q\x94\x01\x93\x90\x93 \x90\x92R\x91\x90Ra\x01 R`\x01`\x01`\xA0\x1B\x03\x80\x85\x16a\x01@R\x80\x84\x16a\x01\x80R\x80\x83\x16a\x01`R\x81\x16a\x01\xA0R\x83\x83\x83\x83b\0\x01tb\0\x01\x93V[PPPPb\0\x01\x893b\0\x02U` \x1B` \x1CV[PPPPb\0\x03(V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x02\0W`@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\x02SW`\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[`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[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02\xBDW`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xD7W`\0\x80\xFD[\x84Qb\0\x02\xE4\x81b\0\x02\xA7V[` \x86\x01Q\x90\x94Pb\0\x02\xF7\x81b\0\x02\xA7V[`@\x86\x01Q\x90\x93Pb\0\x03\n\x81b\0\x02\xA7V[``\x86\x01Q\x90\x92Pb\0\x03\x1D\x81b\0\x02\xA7V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qalmb\0\x040`\09`\0\x81\x81a\x087\x01R\x81\x81a\x16E\x01R\x81\x81a)\xE1\x01R\x81\x81a4\xB7\x01R\x81\x81a>P\x01RaG\x1E\x01R`\0\x81\x81a\x07L\x01R\x81\x81a)l\x01R\x81\x81a.z\x01R\x81\x81a4\x0E\x01R\x81\x81a=\xD0\x01R\x81\x81aB\xF3\x01RaF\x9D\x01R`\0\x81\x81a\x06\xFD\x01R\x81\x81a\x11\xDE\x01R\x81\x81a)\xAA\x01R\x81\x81a3\x8E\x01R\x81\x81a=R\x01R\x81\x81a?8\x01R\x81\x81a?\xAE\x01RaG\x9A\x01R`\0\x81\x81a\x061\x01R\x81\x81a2\xD6\x01Ra<\xA8\x01R`\0aI\x9D\x01R`\0aI\xEC\x01R`\0aI\xC7\x01R`\0aI \x01R`\0aIJ\x01R`\0aIt\x01Ralm`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x03\xCFW`\x005`\xE0\x1C\x80cf\xD9\xA9\xA0\x11a\x01\xFFW\x80c\xB5P\x8A\xA9\x11a\x01\x1AW\x80c\xD9,\xBB\x84\x11a\0\xADW\x80c\xF2\xFD\xE3\x8B\x11a\0|W\x80c\xF2\xFD\xE3\x8B\x14a\n$W\x80c\xFAv&\xD4\x14a\n7W\x80c\xFA\xBC\x1C\xBC\x14a\nDW\x80c\xFD9\x10Z\x14a\nWW`\0\x80\xFD[\x80c\xD9,\xBB\x84\x14a\t^<#\x14a\x06sW\x80c?r\x86\xF4\x14a\x06{W`\0\x80\xFD[\x80c)k\xB0d\x14a\x05\xDEW\x80c)\xD1\xE0\xC3\x14a\x05\xF1W\x80c*\xDE8\x80\x14a\x06\x04W\x80c,\xDD\x1E\x86\x14a\x06\x19W`\0\x80\xFD[\x80c\x14x\x85\x1F\x11a\x03gW\x80c$\x9A\x0CB\x11a\x036W\x80c$\x9A\x0CB\x14a\x05\x85W\x80c'\xE7\x92\x88\x14a\x05\xA5W\x80c(\xF6\x1B1\x14a\x05\xB8W\x80c)ST|\x14a\x05\xCBW`\0\x80\xFD[\x80c\x14x\x85\x1F\x14a\x04\xD4W\x80c\x1A\xB2WO\x14a\x05\x07W\x80c\x1E\xB8\x12\xDA\x14a\x05'W\x80c\x1E\xD7\x83\x1C\x14a\x05pW`\0\x80\xFD[\x80c\x0C\xF4\xB7g\x11a\x03\xA3W\x80c\x0C\xF4\xB7g\x14a\x04rW\x80c\x10\xD6z/\x14a\x04\x85W\x80c\x13T*N\x14a\x04\x98W\x80c\x13d9\xDD\x14a\x04\xC1W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x03\xD4W\x80c\x03\xFD4\x92\x14a\x03\xE9W\x80c\x04\xECcQ\x14a\x04\x1CW\x80c\x05C\x10\xE6\x14a\x04GW[`\0\x80\xFD[a\x03\xE7a\x03\xE26`\x04aR\xDDV[a\n\x93V[\0[a\x04\ta\x03\xF76`\x04aS\x1EV[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x04/a\x04*6`\x04aSIV[a\x0B\xA9V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x04\x13V[`\x9DTa\x04Z\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x04\x13V[a\x03\xE7a\x04\x806`\x04aT\x80V[a\r\x9FV[a\x03\xE7a\x04\x936`\x04aT\xDCV[a\x0E\x87V[a\x04\ta\x04\xA66`\x04aT\xDCV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x03\xE7a\x04\xCF6`\x04aS\x1EV[a\x0F:V[a\x04\xF7a\x04\xE26`\x04aS\x1EV[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x04\x13V[a\x05\x1Aa\x05\x156`\x04aU\x95V[a\x10wV[`@Qa\x04\x13\x91\x90aV\x81V[a\x05:a\x0556`\x04aW\tV[a\x10\xB4V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x04\x13V[a\x05xa\x11EV[`@Qa\x04\x13\x91\x90aW+V[a\x04\ta\x05\x936`\x04aW\x89V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xE7a\x05\xB36`\x04aW\xB9V[a\x11\xA7V[`\x9ETa\x04Z\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\xE7a\x05\xD96`\x04aW\xE9V[a\x11\xB5V[a\x04Za\x05\xEC6`\x04aS\x1EV[a\x11\xC5V[a\x03\xE7a\x05\xFF6`\x04aT\xDCV[a\x12QV[a\x06\x0Ca\x12bV[`@Qa\x04\x13\x91\x90aY#V[a\x03\xE7a\x06'6`\x04aT\xDCV[a\x13\xA4V[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x06fa\x06a6`\x04aT\xDCV[a\x13\xB5V[`@Qa\x04\x13\x91\x90aY\xA0V[a\x05xa\x144V[a\x05xa\x14\x94V[a\x03\xE7a\x06\x916`\x04aY\xB7V[a\x14\xF4V[a\x06\xA9a\x06\xA46`\x04aT\xDCV[a\x1A\x05V[`@Qa\x04\x13\x91\x90aZZV[a\x03\xE7a\x1AyV[a\x04\xF7a\x06\xCC6`\x04aW\x89V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x03\xE7a\x06\xEB6`\x04aZ\xDFV[a\x1BEV[`\x01Ta\x04\tV[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x04Za\x07-6`\x04aS\x1EV[a\x1B\xD7V[a\x07:a\x1C\x01V[`@Qa\x04\x13\x91\x90a[\x13V[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x03\xE7a\x07|6`\x04a[\xC6V[a\x1C\xE7V[a\x03\xE7a\x1D\xA7V[a\x03\xE7a\x07\x976`\x04a[\xC6V[a\x1DgV[a\x04\ta\x07\xAA6`\x04a\\}V[a\x1D\xBBV[a\x07\xB7a\x1E\x05V[`@Qa\x04\x13\x91\x90a]JV[a\x04/a\x07\xD26`\x04aS\x1EV[a\x1E\xD5V[`\0Ta\x04Z\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x04Za\x1E\xE0V[a\x07:a\x1E\xF9V[`\x96Ta\x08\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x04\x13V[a\x03\xE7a\x08-6`\x04a]\xB4V[a\x1F\xDFV[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x04\t\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x03\xE7a\x08\x8E6`\x04a^\xADV[a#\x17V[a\x07\xB7a$\x9BV[a\x04\xF7a%kV[a\x08\xB6a\x08\xB16`\x04a_;V[a&\x98V[`@Qa\x04\x13\x91\x90a_\xE0V[a\x03\xE7a\x08\xD16`\x04aW\x89V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x04\t\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x03\xE7a\t\x1C6`\x04a`\x1EV[a'QV[`\x9CTa\x04\tV[a\x03\xE7a\t76`\x04aa\x04V[a'\xB8V[a\x03\xE7a\tJ6`\x04aaZV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`\x99` R`@\x90 UV[a\x03\xE7a\tt6`\x04ab\xD9V[a'\xCBV[a\x05xa*\xCFV[a\t\xF0a\t\x8F6`\x04aW\x89V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x04\x13V[a\x03\xE7a\n26`\x04aT\xDCV[a+/V[`\xCFTa\x04\xF7\x90`\xFF\x16\x81V[a\x03\xE7a\nR6`\x04aS\x1EV[a+\xA5V[a\n\x86a\ne6`\x04aT\xDCV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x04\x13\x91\x90ac\xADV[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\n\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\x0B\xA3W`\0\x84\x84\x83\x81\x81\x10a\n\xE4Wa\n\xE4ac\xF2V[\x90P` \x02\x01` \x81\x01\x90a\n\xF9\x91\x90aT\xDCV[`\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\x0BDWa\x0BDaZ\"V[`\x02\x81\x11\x15a\x0BUWa\x0BUaZ\"V[\x90RP\x80Q\x90\x91P`\0a\x0Bh\x82a-\x01V[\x90P`\0a\x0B~\x82`\x01`\x01`\xC0\x1B\x03\x16a-pV[\x90Pa\x0B\x8B\x85\x85\x83a.=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xFE\x91\x90adLV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F.W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90adiV[a\x0F7\x81a/)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\x0F\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xAB\x91\x90ad\xB3V[a\x0F\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ad\xD5V[`\x01T\x81\x81\x16\x14a\x10@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\n\xBCV[`\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\x0E|V[a\x10\x9B`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[a\x10\xA9\x87\x87\x87\x87\x87\x87a0.V[\x97\x96PPPPPPPV[`@\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\x10\xF1Wa\x10\xF1ac\xF2V[`\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[```\xDC\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FW[PPPPP\x90P\x90V[a\x11\xB1\x82\x82a5EV[PPV[a\x11\xC0\x83\x83\x83a.=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11?\x91\x90adLV[a\x12Ya7\x05V[a\x0F7\x81a7dV[```\xE3\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x13\x84W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x12\xF7\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x13#\x90ae\x1DV[\x80\x15a\x13pW\x80`\x1F\x10a\x13EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x13pV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x13SW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x12\xD8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x12\x86V[PPPP\x90P\x90V[a\x13\xACa7\x05V[a\x0F7\x81a7\xCDV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x11?a\x14/\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\x14\x14\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 a86V[a8\x84V[```\xDE\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[```\xDD\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x15\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`\0a\x15e\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\x91Pa9\x14\x90PV[\x90P\x84\x83\x14a\x15\xD6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` ak\xD8\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0[\x83\x81\x10\x15a\x19\xFCW`\0\x85\x85\x83\x81\x81\x10a\x15\xF5Wa\x15\xF5ac\xF2V[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x16\x16Wa\x16\x16ac\xF2V[\x90P` \x02\x81\x01\x90a\x16(\x91\x90aeRV[`@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\x16\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xB8\x91\x90ae\x9BV[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x17TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R`\0\x80Q` ak\xD8\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\n\xBCV[`\0\x80[\x82\x81\x10\x15a\x19\x9BW`\0\x84\x84\x83\x81\x81\x10a\x17tWa\x17tac\xF2V[\x90P` \x02\x01` \x81\x01\x90a\x17\x89\x91\x90aT\xDCV[`\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\x17\xD4Wa\x17\xD4aZ\"V[`\x02\x81\x11\x15a\x17\xE5Wa\x17\xE5aZ\"V[\x90RP\x80Q\x90\x91P`\0a\x17\xF8\x82a-\x01V[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x18|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` ak\xD8\x839\x81Q\x91R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x19'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R`\0\x80Q` ak\xD8\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\n\xBCV[Pa\x19\x85\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x19>\x91\x90ae\xB8V[\x92a\x19K\x93\x92\x91\x90ae\xD0V[\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.<\x92PPPV[P\x90\x92Pa\x19\x94\x90P\x81ad\x1EV[\x90Pa\x17XV[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\x19\xF5\x90ad\x1EV[\x90Pa\x15\xD9V[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\x1A_Wa\x1A_aZ\"V[`\x02\x81\x11\x15a\x1ApWa\x1ApaZ\"V[\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\x1A\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xEA\x91\x90ad\xB3V[a\x1B\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ad\xD5V[`\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\x1BMa7\x05V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x1B\xCDW`@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\n\xBCV[a\x11\xC0\x83\x83a9\xA5V[`\x9C\x81\x81T\x81\x10a\x1B\xE7W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[```\xE1\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x1C\xCFW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x1C\x91W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x1C%V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1DgW`@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\n\xBCV[a\x11\xC0\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\x91RPa:R\x92PPPV[a\x1D\xAFa7\x05V[a\x1D\xB9`\0a>\xC4V[V[`\0a\x1D\xFB\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\x14\x14\x96\x95\x94\x93\x92\x91\x90ae\xFAV[\x96\x95PPPPPPV[```\xE0\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1EH\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1Et\x90ae\x1DV[\x80\x15a\x1E\xC1W\x80`\x1F\x10a\x1E\x96Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xC1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\xA4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E)V[`\0a\x11?\x82a-\x01V[`\0a\x1E\xF4`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[```\xE2\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x1F\xC7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x1F\x89W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x1F\x1DV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a \x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[\x83\x89\x14a \x8AW`@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\n\xBCV[`\0a \x963\x88a?\x16V[\x90Pa \xF63\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 \xEBWa \xDC`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90af\x7FV[\x81R` \x01\x90`\x01\x01\x90a \xBFV[PPPPP\x87a@GV[`\0a!=3\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\x92Pa0.\x91PPV[\x90P`\0[\x8B\x81\x10\x15a#\x08W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a!bWa!bac\xF2V[\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!\xCFWa!\xCFac\xF2V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\"\xF5Wa\"p\x8E\x8E\x84\x81\x81\x10a!\xF8Wa!\xF8ac\xF2V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\"\x1BWa\"\x1Bac\xF2V[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\":Wa\":ac\xF2V[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\"TWa\"Tac\xF2V[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\"j\x91\x90af\x7FV[\x86aA\xD4V[a\"\xF5\x89\x89\x84\x81\x81\x10a\"\x85Wa\"\x85ac\xF2V[\x90P`@\x02\x01` \x01` \x81\x01\x90a\"\x9D\x91\x90aT\xDCV[\x8F\x8F\x85\x90\x86`\x01a\"\xAE\x91\x90ae\xB8V[\x92a\"\xBB\x93\x92\x91\x90ae\xD0V[\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:R\x92PPPV[P\x80a#\0\x81ad\x1EV[\x91PPa!BV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a#?W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`\0a#K3\x85a?\x16V[\x90P`\0a#\x943\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\x92Pa0.\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a$\x8FW`\0\x8A\x8A\x83\x81\x81\x10a#\xB6Wa#\xB6ac\xF2V[\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#\xECWa#\xECac\xF2V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a$|W`@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\n\xBCV[P\x80a$\x87\x81ad\x1EV[\x91PPa#\x9AV[PPPPPPPPPPV[```\xDF\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta$\xDE\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta%\n\x90ae\x1DV[\x80\x15a%WW\x80`\x1F\x10a%,Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a%WV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a%:W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a$\xBFV[`\xCFT`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a%\x8DWP`\xCFTa\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a&\x93W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a&\x1B\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01af\x9BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra&5\x91af\xCCV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a&rW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a&wV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a&\x8F\x91\x90ad\xB3V[\x91PP[\x91\x90PV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xB5Wa&\xB5aS\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a&\xDEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a'IWa'\x10\x85\x85\x83\x81Q\x81\x10a'\x03Wa'\x03ac\xF2V[` \x02` \x01\x01QaD\xA9V[\x82\x82\x81Q\x81\x10a'\"Wa'\"ac\xF2V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a'A\x81ad\x1EV[\x91PPa&\xE4V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a'xW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[a\x11\xC03\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:R\x92PPPV[a'\xC0a7\x05V[a\x11\xC0\x83\x83\x83aE\xE5V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a'\xEBWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a(\x05WP0;\x15\x80\x15a(\x05WP`\0T`\xFF\x16`\x01\x14[a(hW`@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(\x8BW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a(\x9DWP\x81Q\x83Q\x14[a)\x07W`@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\n\xBCV[a)\x10\x89a>\xC4V[a)\x1A\x86\x86aG\xFCV[a)#\x88a7dV[a),\x87a7\xCDV[`\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*k\x85\x82\x81Q\x81\x10a**Wa**ac\xF2V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a*DWa*Dac\xF2V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a*^Wa*^ac\xF2V[` \x02` \x01\x01QaE\xE5V[\x80a*u\x81ad\x1EV[\x91PPa*\x0CV[P\x80\x15a*\xC4W`\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[```\xDB\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[a+7a7\x05V[`\x01`\x01`\xA0\x1B\x03\x81\x16a+\x9CW`@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\x0F7\x81a>\xC4V[`\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+\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a,\x1C\x91\x90adLV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a,LW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90adiV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a,\xCAW`@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[`\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\x0E|V[`\0\x81\x81R`\x98` R`@\x81 T\x80a-\x1EWP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a-7`\x01\x83af\xE8V[\x81T\x81\x10a-GWa-Gac\xF2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[P\x91\x90PV[```\0\x80a-~\x84aH\xE8V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x99Wa-\x99aS\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a-\xC3W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a-\xDBWPa\x01\0\x81\x10[\x15a.2W`\x01\x81\x1B\x93P\x85\x84\x16\x15a.\"W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a.\x04Wa.\x04ac\xF2V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a.+\x81ad\x1EV[\x90Pa-\xCAV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a.TWa.TaZ\"V[\x14a.^WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a.\xB3\x90\x88\x90\x86\x90\x88\x90`\x04\x01af\xFFV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a.\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xF6\x91\x90ag/V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a/\"Wa/\"\x85a/\x1D\x83`\x01`\x01`\xC0\x1B\x03\x16a-pV[a:RV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a/\xB7W`@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[`\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[a0R`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a0\x9A\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\x91Pa9\x14\x90PV[\x90P`\0a0\xA7\x88a-\x01V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1%W`@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\n\xBCV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a1\xDBW`@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\n\xBCV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a1\xF4\x89\x82a5EV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2$\x91\x90ad9V[`@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\x15a2^Wa2^aZ\"V[\x14a3wW`@\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\x15a2\xB9Wa2\xB9aZ\"V[\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}\x90a3\x0E\x90\x8D\x90\x89\x90`\x04\x01agLV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3(W`\0\x80\xFD[PZ\xF1\x15\x80\x15a3=`\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\x90a3\xC7\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01ag\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xE1W`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xF5W=`\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\x91Pa4K\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01ag\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a4jW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4\x92\x91\x90\x81\x01\x90ahqV[`@\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\x90a4\xEF\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01ah\xD4V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra56\x91\x90\x81\x01\x90ah\xEEV[\x84RPPP\x96\x95PPPPPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80a5\xEAW`\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 a6\x03`\x01\x84af\xE8V[\x81T\x81\x10a6\x13Wa6\x13ac\xF2V[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a6WW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\x0B\xA3V[\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[3a7\x0Ea\x1E\xE0V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1D\xB9W`@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[`\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\x11?a8CaI\x13V[\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\x80a8\xB4`\0\x80Q` al\x18\x839\x81Q\x91R\x86ai\x92V[\x90P[a8\xC0\x81aJ:V[\x90\x93P\x91P`\0\x80Q` al\x18\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a8\xFAW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` al\x18\x839\x81Q\x91R`\x01\x82\x08\x90Pa8\xB7V[`\0\x80a9 \x84aJ\xBCV[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a9\x9EW`@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\n\xBCV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a:\x86Wa:\x86aZ\"V[\x14a;\x05W`@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\n\xBCV[`\x96T`\0\x90a;\x19\x90\x85\x90`\xFF\x16a9\x14V[\x90P`\0a;&\x83a-\x01V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a;\xA4W`@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\n\xBCV[a;\xBB`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a=`\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=\x89\x90\x8A\x90\x8A\x90`\x04\x01ai\xA6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=\xB7W=`\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>\t\x90\x87\x90\x8A\x90`\x04\x01ai\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>#W`\0\x80\xFD[PZ\xF1\x15\x80\x15a>7W=`\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>\x89\x90\x87\x90\x8A\x90`\x04\x01ai\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a>\xB7W=`\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?\x81W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?\xA5\x91\x90ai\xE3V[\x90P\x80a\x11?W\x7F\0\0\0\0\0\0\0\0\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\x84a?\xE6\x87a\x13\xB5V[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a@\x04\x93\x92\x91\x90ai\xFCV[` `@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\x90a9\x9E\x91\x90ai\xE3V[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a@\xEDW`@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\n\xBCV[B\x81`@\x01Q\x10\x15aA\x82W`@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\n\xBCV[` \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\x0B\xA3\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91aA\xCD\x91\x88\x91\x88\x91\x88\x91\x90a\x1D\xBBV[\x83QaLIV[` \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\x15aBTW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` ak\xF8\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\n\xBCV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14aB\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[`@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\x15aCBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aCf\x91\x90aj{V[\x90PaCr\x81\x85aN\x03V[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11aD\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[aD\x0F\x88\x85aN'V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a*\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15aE;W`\x01aD\xCE\x82\x84af\xE8V[aD\xD8\x91\x90af\xE8V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10aE\x0BWaE\x0Bac\xF2V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11aE)WPPa\x11?V[\x80aE3\x81ad\x1EV[\x91PPaD\xBAV[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\n\xBCV[`\x96T`\xFF\x16`\xC0\x81\x10aFYW`@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\n\xBCV[aFd\x81`\x01aj\x98V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80aF\x83\x81\x86a9\xA5V[`@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\x90aF\xD6\x90\x84\x90\x88\x90\x88\x90`\x04\x01aj\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aF\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15aG\x04W=`\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\x15aGlW`\0\x80\xFD[PZ\xF1\x15\x80\x15aG\x80W=`\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\x15aG\xE8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xC4W=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15aH#WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[aH\xA5W`@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[`\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\x11\xB1\x82a/)V[`\0\x80[\x82\x15a\x11?WaH\xFD`\x01\x84af\xE8V[\x90\x92\x16\x91\x80aI\x0B\x81ak6V[\x91PPaH\xECV[`\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\x15aIlWP\x7F\0\0\0\0\0\0\0\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[\x15aI\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\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` al\x18\x839\x81Q\x91R`\x03`\0\x80Q` al\x18\x839\x81Q\x91R\x86`\0\x80Q` al\x18\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0aJ\xB0\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` al\x18\x839\x81Q\x91RaNAV[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15aKEW`@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\n\xBCV[\x81QaKSWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10aKiWaKiac\xF2V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15aL@W\x84\x81\x81Q\x81\x10aK\x97WaK\x97ac\xF2V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11aL,W`@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\n\xBCV[\x91\x81\x17\x91aL9\x81ad\x1EV[\x90PaK|V[P\x90\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aMcW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aL\x89\x90\x86\x90\x86\x90`\x04\x01ai\xCAV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aL\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aL\xCA\x91\x90akXV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x11\xC0W`@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\x16aMw\x83\x83aN\xF0V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11\xC0W`@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[` \x81\x01Q`\0\x90a'\x10\x90aN\x1D\x90a\xFF\xFF\x16\x85ak\x82V[a9\x9E\x91\x90ak\xB1V[`@\x81\x01Q`\0\x90a'\x10\x90aN\x1D\x90a\xFF\xFF\x16\x85ak\x82V[`\0\x80aNLaR]V[aNTaR{V[` \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\x15aN\x95WaN\x97V[\xFE[P\x82aN\xE5W`@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\n\xBCV[PQ\x95\x94PPPPPV[`\0\x80`\0aN\xFF\x85\x85aO\x0CV[\x91P\x91Pa'I\x81aO|V[`\0\x80\x82Q`A\x14\x15aOCW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaO7\x87\x82\x85\x85aQ7V[\x94P\x94PPPPaOuV[\x82Q`@\x14\x15aOmW` \x83\x01Q`@\x84\x01QaOb\x86\x83\x83aR$V[\x93P\x93PPPaOuV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aO\x90WaO\x90aZ\"V[\x14\x15aO\x99WPV[`\x01\x81`\x04\x81\x11\x15aO\xADWaO\xADaZ\"V[\x14\x15aO\xFBW`@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\x15aP\x0FWaP\x0FaZ\"V[\x14\x15aP]W`@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\x15aPqWaPqaZ\"V[\x14\x15aP\xCAW`@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\x15aP\xDEWaP\xDEaZ\"V[\x14\x15a\x0F7W`@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\x15aQnWP`\0\x90P`\x03aR\x1BV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aQ\x86WP\x84`\xFF\x16`\x1C\x14\x15[\x15aQ\x97WP`\0\x90P`\x04aR\x1BV[`@\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\x15aQ\xEBW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aR\x14W`\0`\x01\x92P\x92PPaR\x1BV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aRA`\xFF\x86\x90\x1C`\x1Bae\xB8V[\x90PaRO\x87\x82\x88\x85aQ7V[\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\x12aR\xABW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xC2W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aR\xF0W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aS\x06W`\0\x80\xFD[aS\x12\x85\x82\x86\x01aR\x99V[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aS0W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aS^W`\0\x80\xFD[\x835\x92P` \x84\x015aSp\x81aS7V[\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\x15aS\xB9WaS\xB9aS\x81V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aS\xB9WaS\xB9aS\x81V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aT\tWaT\taS\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aT\"W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aT;WaT;aS\x81V[aTN`\x1F\x82\x01`\x1F\x19\x16` \x01aS\xE1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15aTcW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aT\x92W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aT\xA8W`\0\x80\xFD[aT\xB4\x84\x82\x85\x01aT\x11V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[\x805a&\x93\x81aT\xBCV[`\0` \x82\x84\x03\x12\x15aT\xEEW`\0\x80\xFD[\x815a9\x9E\x81aT\xBCV[`\0\x80\x83`\x1F\x84\x01\x12aU\x0BW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aU\"W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aULW`\0\x80\xFD[aUTaS\x97V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aUlW`\0\x80\xFD[aUx\x84\x82\x85\x01aT\x11V[\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0\x80`\xA0\x87\x89\x03\x12\x15aU\xAEW`\0\x80\xFD[\x865aU\xB9\x81aT\xBCV[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aU\xDCW`\0\x80\xFD[aU\xE8\x8A\x83\x8B\x01aT\xF9V[\x90\x96P\x94P``\x89\x015\x91P\x80\x82\x11\x15aV\x01W`\0\x80\xFD[aV\r\x8A\x83\x8B\x01aT\x11V[\x93P`\x80\x89\x015\x91P\x80\x82\x11\x15aV#W`\0\x80\xFD[PaV0\x89\x82\x8A\x01aU:V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aVvW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aVQV[P\x94\x95\x94PPPPPV[` \x80\x82R\x82Q``\x83\x83\x01R\x80Q`\x80\x84\x01\x81\x90R`\0\x92\x91\x82\x01\x90\x83\x90`\xA0\x86\x01\x90[\x80\x83\x10\x15aV\xCCW\x83Qc\xFF\xFF\xFF\xFF\x16\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aV\xA6V[P\x83\x87\x01Q\x93P`\x1F\x19\x92P\x82\x86\x82\x03\x01`@\x87\x01RaV\xEC\x81\x85aV=V[\x93PPP`@\x85\x01Q\x81\x85\x84\x03\x01``\x86\x01Ra\x1D\xFB\x83\x82aV=V[`\0\x80`@\x83\x85\x03\x12\x15aW\x1CW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aWlW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aWGV[P\x90\x96\x95PPPPPPV[\x805`\xFF\x81\x16\x81\x14a&\x93W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW\x9BW`\0\x80\xFD[a9\x9E\x82aWxV[`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15aW\xCCW`\0\x80\xFD[\x825\x91P` \x83\x015aW\xDE\x81aW\xA4V[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x83\x85\x03`\x80\x81\x12\x15aW\xFFW`\0\x80\xFD[\x845aX\n\x81aT\xBCV[\x93P`@`\x1F\x19\x82\x01\x12\x15aX\x1EW`\0\x80\xFD[PaX'aS\xBFV[` \x85\x015\x81R`@\x85\x015`\x03\x81\x10aX@W`\0\x80\xFD[` \x82\x01R\x91P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aX`W`\0\x80\xFD[aXl\x86\x82\x87\x01aT\x11V[\x91PP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15aX\x91W\x81\x81\x01Q\x83\x82\x01R` \x01aXyV[\x83\x81\x11\x15a\x0B\xA3WPP`\0\x91\x01RV[`\0\x81Q\x80\x84RaX\xBA\x81` \x86\x01` \x86\x01aXvV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15aY\x16W\x82\x84\x03\x89RaY\x04\x84\x83QaX\xA2V[\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01aX\xECV[P\x91\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15aY\x92W\x88\x83\x03`?\x19\x01\x85R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90RaY\x7F\x87\x85\x01\x82aX\xCEV[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01aYJV[P\x90\x98\x97PPPPPPPPV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x11?V[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aY\xCDW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aY\xE4W`\0\x80\xFD[aY\xF0\x88\x83\x89\x01aR\x99V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aZ\tW`\0\x80\xFD[PaZ\x16\x87\x82\x88\x01aT\xF9V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aZVWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aZu\x90\x84\x01\x82aZ8V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14a&\x93W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aZ\xA0W`\0\x80\xFD[aZ\xA8aS\x97V[\x90P\x815aZ\xB5\x81aS7V[\x81RaZ\xC3` \x83\x01aZ|V[` \x82\x01RaZ\xD4`@\x83\x01aZ|V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aZ\xF2W`\0\x80\xFD[aZ\xFB\x83aWxV[\x91Pa[\n\x84` \x85\x01aZ\x8EV[\x90P\x92P\x92\x90PV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a[\xB7W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a[\xA2W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a[xV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a[;V[P\x91\x99\x98PPPPPPPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a[\xDBW`\0\x80\xFD[\x835a[\xE6\x81aT\xBCV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\x01W`\0\x80\xFD[a\\\r\x86\x82\x87\x01aT\xF9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\\3Wa\\3aS\x81V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a\\OW`\0\x80\xFD[a\\WaS\xBFV[\x90Pa\\b\x82aWxV[\x81R` \x82\x015a\\r\x81aT\xBCV[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\\\x95W`\0\x80\xFD[\x855a\\\xA0\x81aT\xBCV[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\xC4W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13a\\\xD5W`\0\x80\xFD[\x805a\\\xE8a\\\xE3\x82a\\\x1AV[aS\xE1V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15a]\x07W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15a]-Wa]\x1E\x8D\x85a\\=V[\x82R\x92\x84\x01\x92\x90\x85\x01\x90a]\x0CV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[` \x81R`\0a9\x9E` \x83\x01\x84aX\xCEV[`\0a\x01\0\x82\x84\x03\x12\x15a-jW`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a]\x82W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a]\x99W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01\xA0\x8A\x8C\x03\x12\x15a]\xD3W`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a]\xEAW`\0\x80\xFD[a]\xF6\x8D\x83\x8E\x01aT\xF9V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15a^\x0FW`\0\x80\xFD[a^\x1B\x8D\x83\x8E\x01aT\xF9V[\x90\x99P\x97P\x87\x91Pa^0\x8D`@\x8E\x01a]]V[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15a^GW`\0\x80\xFD[a^S\x8D\x83\x8E\x01a]pV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15a^mW`\0\x80\xFD[a^y\x8D\x83\x8E\x01aU:V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15a^\x90W`\0\x80\xFD[Pa^\x9D\x8C\x82\x8D\x01aU:V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15a^\xC7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a^\xDEW`\0\x80\xFD[a^\xEA\x8A\x83\x8B\x01aT\xF9V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a_\x03W`\0\x80\xFD[a_\x0F\x8A\x83\x8B\x01aT\xF9V[\x90\x96P\x94P\x84\x91Pa_$\x8A`@\x8B\x01a]]V[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aV#W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a_NW`\0\x80\xFD[\x825a_Y\x81aS7V[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a_uW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a_\x86W`\0\x80\xFD[\x805a_\x94a\\\xE3\x82a\\\x1AV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a_\xB3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a_\xD1W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a_\xB8V[\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\x15aWlW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a_\xFCV[`\0\x80` \x83\x85\x03\x12\x15a`1W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a`GW`\0\x80\xFD[aS\x12\x85\x82\x86\x01aT\xF9V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a`yW`\0\x80\xFD[\x815` a`\x89a\\\xE3\x83a\\\x1AV[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a`\xA8W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W`@\x81\x89\x03\x12\x15a`\xC5W`\0\x80\x81\xFD[a`\xCDaS\xBFV[\x815a`\xD8\x81aT\xBCV[\x81R\x81\x85\x015a`\xE7\x81a`SV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a`\xACV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aa\x19W`\0\x80\xFD[aa#\x85\x85aZ\x8EV[\x92P``\x84\x015aa3\x81a`SV[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aaNW`\0\x80\xFD[aXl\x86\x82\x87\x01a`hV[`\0\x80`@\x83\x85\x03\x12\x15aamW`\0\x80\xFD[\x825aax\x81aT\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x82`\x1F\x83\x01\x12aa\x97W`\0\x80\xFD[\x815` aa\xA7a\\\xE3\x83a\\\x1AV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aa\xC6W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aa\xE9Waa\xDC\x89\x82aZ\x8EV[\x84R\x92\x84\x01\x92\x81\x01aa\xCAV[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12ab\x07W`\0\x80\xFD[\x815` ab\x17a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ab6W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x805abM\x81a`SV[\x83R\x91\x83\x01\x91\x83\x01ab:V[`\0\x82`\x1F\x83\x01\x12abkW`\0\x80\xFD[\x815` ab{a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ab\x9AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15ab\xBDW`\0\x80\x81\xFD[ab\xCB\x89\x86\x83\x8B\x01\x01a`hV[\x84RP\x91\x83\x01\x91\x83\x01ab\x9EV[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15ab\xF6W`\0\x80\xFD[ab\xFF\x89aT\xD1V[\x97Pac\r` \x8A\x01aT\xD1V[\x96Pac\x1B`@\x8A\x01aT\xD1V[\x95Pac)``\x8A\x01aT\xD1V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15acLW`\0\x80\xFD[acX\x8C\x83\x8D\x01aa\x86V[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15acnW`\0\x80\xFD[acz\x8C\x83\x8D\x01aa\xF6V[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15ac\x90W`\0\x80\xFD[Pac\x9D\x8B\x82\x8C\x01abZV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x11?\x82\x84aZ8V[` \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\x15ad2Wad2ad\x08V[P`\x01\x01\x90V[` \x81R`\0a9\x9E` \x83\x01\x84aX\xA2V[`\0` \x82\x84\x03\x12\x15ad^W`\0\x80\xFD[\x81Qa9\x9E\x81aT\xBCV[` \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\x15ad\xC5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a9\x9EW`\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[`\x01\x81\x81\x1C\x90\x82\x16\x80ae1W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a-jWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aeiW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15ae\x83W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aOuW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15ae\xADW`\0\x80\xFD[\x81Qa9\x9E\x81aS7V[`\0\x82\x19\x82\x11\x15ae\xCBWae\xCBad\x08V[P\x01\x90V[`\0\x80\x85\x85\x11\x15ae\xE0W`\0\x80\xFD[\x83\x86\x11\x15ae\xEDW`\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\x15af_W\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01af5V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15af\x91W`\0\x80\xFD[a9\x9E\x83\x83a\\=V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90af\xBE\x81`\x04\x85\x01` \x87\x01aXvV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qaf\xDE\x81\x84` \x87\x01aXvV[\x91\x90\x91\x01\x92\x91PPV[`\0\x82\x82\x10\x15af\xFAWaf\xFAad\x08V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0ag&``\x83\x01\x84aX\xA2V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15agAW`\0\x80\xFD[\x81Qa9\x9E\x81aW\xA4V[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ragv`\xA0\x84\x01\x82aX\xA2V[\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\x90ag&\x90\x83\x01\x84\x86ag\x97V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x1D\xFB``\x83\x01\x84\x86ag\x97V[`\0\x82`\x1F\x83\x01\x12ah\x1EW`\0\x80\xFD[\x81Q` ah.a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ahMW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x80Qahd\x81a`SV[\x83R\x91\x83\x01\x91\x83\x01ahQV[`\0\x80`@\x83\x85\x03\x12\x15ah\x84W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15ah\x9BW`\0\x80\xFD[ah\xA7\x86\x83\x87\x01ah\rV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15ah\xBDW`\0\x80\xFD[Pah\xCA\x85\x82\x86\x01ah\rV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0ag&`@\x83\x01\x84\x86ag\x97V[`\0` \x80\x83\x85\x03\x12\x15ai\x01W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15ai\x17W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13ai(W`\0\x80\xFD[\x80Qai6a\\\xE3\x82a\\\x1AV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15aiUW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x10\xA9W\x83Qaim\x81aS7V[\x82R\x92\x84\x01\x92\x90\x84\x01\x90aiZV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82ai\xA1Wai\xA1ai|V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aT\xB4\x90\x83\x01\x84aX\xA2V[\x82\x81R`@` \x82\x01R`\0aT\xB4`@\x83\x01\x84aX\xA2V[`\0` \x82\x84\x03\x12\x15ai\xF5W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aj$` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aj>``\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[`\0` \x82\x84\x03\x12\x15aj\x8DW`\0\x80\xFD[\x81Qa9\x9E\x81a`SV[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15aj\xB5Waj\xB5ad\x08V[\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\x15ak&W\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\x01aj\xF6V[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15akNWakNad\x08V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15akjW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a9\x9EW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15ak\xA8Wak\xA8ad\x08V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80ak\xCBWak\xCBai|V[\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 \xB3\xF6\xE5q\x04\xAA@rT\xDB\x80\x0E\xFF^\x93bf\xA9p ]\xDB\x81`\x13m\x98h\x88\x1F\x0FqdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x0030dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \x1A\x14\x057\xFB1\xEE\xCD\xC5el\xE327yM\xA9]\x06\x95\xD263=\x1F|\x8Bf\xFF,\x15\xE4dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `WEIGHTING_DIVISOR()` and selector `0x5e5a6775`. + ```solidity + function WEIGHTING_DIVISOR() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `_setUpBLSMockAVSDeployer(uint8)` and selector `0x58408f0c`. + ```solidity + function _setUpBLSMockAVSDeployer(uint8 numQuorumsToAdd) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _setUpBLSMockAVSDeployer_0Call { + pub numQuorumsToAdd: u8, + } + ///Container type for the return parameters of the [`_setUpBLSMockAVSDeployer(uint8)`](_setUpBLSMockAVSDeployer_0Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _setUpBLSMockAVSDeployer_0Return {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<_setUpBLSMockAVSDeployer_0Call> for UnderlyingRustTuple<'_> { + fn from(value: _setUpBLSMockAVSDeployer_0Call) -> Self { + (value.numQuorumsToAdd,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _setUpBLSMockAVSDeployer_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + numQuorumsToAdd: 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<_setUpBLSMockAVSDeployer_0Return> for UnderlyingRustTuple<'_> { + fn from(value: _setUpBLSMockAVSDeployer_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _setUpBLSMockAVSDeployer_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for _setUpBLSMockAVSDeployer_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = _setUpBLSMockAVSDeployer_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "_setUpBLSMockAVSDeployer(uint8)"; + const SELECTOR: [u8; 4] = [88u8, 64u8, 143u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.numQuorumsToAdd, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `_setUpBLSMockAVSDeployer()` and selector `0xabc1997c`. + ```solidity + function _setUpBLSMockAVSDeployer() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _setUpBLSMockAVSDeployer_1Call {} + ///Container type for the return parameters of the [`_setUpBLSMockAVSDeployer()`](_setUpBLSMockAVSDeployer_1Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _setUpBLSMockAVSDeployer_1Return {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<_setUpBLSMockAVSDeployer_1Call> for UnderlyingRustTuple<'_> { + fn from(value: _setUpBLSMockAVSDeployer_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _setUpBLSMockAVSDeployer_1Call { + 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<_setUpBLSMockAVSDeployer_1Return> for UnderlyingRustTuple<'_> { + fn from(value: _setUpBLSMockAVSDeployer_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _setUpBLSMockAVSDeployer_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for _setUpBLSMockAVSDeployer_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = _setUpBLSMockAVSDeployer_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "_setUpBLSMockAVSDeployer()"; + const SELECTOR: [u8; 4] = [171u8, 193u8, 153u8, 124u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `avsDirectoryImplementation()` and selector `0x3e2bee3b`. + ```solidity + function avsDirectoryImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryImplementationCall {} + ///Container type for the return parameters of the [`avsDirectoryImplementation()`](avsDirectoryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryImplementationCall { + 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: avsDirectoryImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectoryImplementation()"; + const SELECTOR: [u8; 4] = [62u8, 43u8, 238u8, 59u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `avsDirectoryMock()` and selector `0x56f0b8a0`. + ```solidity + function avsDirectoryMock() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryMockCall {} + ///Container type for the return parameters of the [`avsDirectoryMock()`](avsDirectoryMockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryMockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryMockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryMockCall { + 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: avsDirectoryMockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryMockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryMockCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryMockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectoryMock()"; + const SELECTOR: [u8; 4] = [86u8, 240u8, 184u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationCall {} + ///Container type for the return parameters of the [`blsApkRegistryImplementation()`](blsApkRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `delegationMock()` and selector `0x694ed610`. + ```solidity + function delegationMock() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationMockCall {} + ///Container type for the return parameters of the [`delegationMock()`](delegationMockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationMockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationMockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationMockCall { + 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: delegationMockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationMockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationMockCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationMockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegationMock()"; + const SELECTOR: [u8; 4] = [105u8, 78u8, 214u8, 16u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `eigenPodManagerMock()` and selector `0x248294ab`. + ```solidity + function eigenPodManagerMock() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerMockCall {} + ///Container type for the return parameters of the [`eigenPodManagerMock()`](eigenPodManagerMockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerMockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerMockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerMockCall { + 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: eigenPodManagerMockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerMockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eigenPodManagerMockCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eigenPodManagerMockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eigenPodManagerMock()"; + const SELECTOR: [u8; 4] = [36u8, 130u8, 148u8, 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 `emptyContract()` and selector `0xe3a8b345`. + ```solidity + function emptyContract() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct emptyContractCall {} + ///Container type for the return parameters of the [`emptyContract()`](emptyContractCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct emptyContractReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `indexRegistry()` and selector `0x9e9923c2`. + ```solidity + function indexRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryImplementationCall {} + ///Container type for the return parameters of the [`indexRegistryImplementation()`](indexRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `operatorStateRetriever()` and selector `0x4ca22c3f`. + ```solidity + function operatorStateRetriever() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorStateRetrieverCall {} + ///Container type for the return parameters of the [`operatorStateRetriever()`](operatorStateRetrieverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorStateRetrieverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `pauser()` and selector `0x9fd0506d`. + ```solidity + function pauser() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserCall {} + ///Container type for the return parameters of the [`pauser()`](pauserCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserCall { + 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: pauserReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauser()"; + const SELECTOR: [u8; 4] = [159u8, 208u8, 80u8, 109u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `proxyAdmin()` and selector `0x3e47158c`. + ```solidity + function proxyAdmin() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxyAdminCall {} + ///Container type for the return parameters of the [`proxyAdmin()`](proxyAdminCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxyAdminReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proxyAdminCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxyAdminCall { + 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: proxyAdminReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxyAdminReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for proxyAdminCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = proxyAdminReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "proxyAdmin()"; + const SELECTOR: [u8; 4] = [62u8, 71u8, 21u8, 140u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `proxyAdminOwner()` and selector `0xdad544e0`. + ```solidity + function proxyAdminOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxyAdminOwnerCall {} + ///Container type for the return parameters of the [`proxyAdminOwner()`](proxyAdminOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxyAdminOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proxyAdminOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxyAdminOwnerCall { + 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: proxyAdminOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxyAdminOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for proxyAdminOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = proxyAdminOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "proxyAdminOwner()"; + const SELECTOR: [u8; 4] = [218u8, 213u8, 68u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationCall {} + ///Container type for the return parameters of the [`registryCoordinatorImplementation()`](registryCoordinatorImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `serviceManager()` and selector `0x3998fdd3`. + ```solidity + function serviceManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerCall {} + ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `serviceManagerImplementation()` and selector `0x7bef4aac`. + ```solidity + function serviceManagerImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerImplementationCall {} + ///Container type for the return parameters of the [`serviceManagerImplementation()`](serviceManagerImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: serviceManagerImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for serviceManagerImplementationCall { + 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: serviceManagerImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for serviceManagerImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for serviceManagerImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = serviceManagerImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "serviceManagerImplementation()"; + const SELECTOR: [u8; 4] = [123u8, 239u8, 74u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `slasherImplementation()` and selector `0x0832af52`. + ```solidity + function slasherImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherImplementationCall {} + ///Container type for the return parameters of the [`slasherImplementation()`](slasherImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherImplementationCall { + 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: slasherImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for slasherImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = slasherImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "slasherImplementation()"; + const SELECTOR: [u8; 4] = [8u8, 50u8, 175u8, 82u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryImplementationCall {} + ///Container type for the return parameters of the [`stakeRegistryImplementation()`](stakeRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `strategyManagerMock()` and selector `0xe4b5200b`. + ```solidity + function strategyManagerMock() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerMockCall {} + ///Container type for the return parameters of the [`strategyManagerMock()`](strategyManagerMockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerMockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerMockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerMockCall { + 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: strategyManagerMockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerMockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyManagerMockCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyManagerMockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyManagerMock()"; + const SELECTOR: [u8; 4] = [228u8, 181u8, 32u8, 11u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `unpauser()` and selector `0xeab66d7a`. + ```solidity + function unpauser() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauserCall {} + ///Container type for the return parameters of the [`unpauser()`](unpauserCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauserReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 [`BLSMockAVSDeployer`](self) function calls. + pub enum BLSMockAVSDeployerCalls { + IS_TEST(IS_TESTCall), + WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall), + _setUpBLSMockAVSDeployer_0(_setUpBLSMockAVSDeployer_0Call), + _setUpBLSMockAVSDeployer_1(_setUpBLSMockAVSDeployer_1Call), + avsDirectory(avsDirectoryCall), + avsDirectoryImplementation(avsDirectoryImplementationCall), + avsDirectoryMock(avsDirectoryMockCall), + blsApkRegistry(blsApkRegistryCall), + blsApkRegistryImplementation(blsApkRegistryImplementationCall), + delegationMock(delegationMockCall), + eigenPodManagerMock(eigenPodManagerMockCall), + emptyContract(emptyContractCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + indexRegistry(indexRegistryCall), + indexRegistryImplementation(indexRegistryImplementationCall), + operatorStateRetriever(operatorStateRetrieverCall), + pauser(pauserCall), + pauserRegistry(pauserRegistryCall), + proxyAdmin(proxyAdminCall), + proxyAdminOwner(proxyAdminOwnerCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorImplementation(registryCoordinatorImplementationCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + serviceManager(serviceManagerCall), + serviceManagerImplementation(serviceManagerImplementationCall), + slasher(slasherCall), + slasherImplementation(slasherImplementationCall), + stakeRegistry(stakeRegistryCall), + stakeRegistryImplementation(stakeRegistryImplementationCall), + strategyManagerMock(strategyManagerMockCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + unpauser(unpauserCall), + } + #[automatically_derived] + impl BLSMockAVSDeployerCalls { + /// 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]] = &[ + [8u8, 50u8, 175u8, 82u8], + [30u8, 215u8, 131u8, 28u8], + [36u8, 130u8, 148u8, 171u8], + [42u8, 222u8, 56u8, 128u8], + [57u8, 152u8, 253u8, 211u8], + [57u8, 165u8, 252u8, 250u8], + [62u8, 43u8, 238u8, 59u8], + [62u8, 71u8, 21u8, 140u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [76u8, 162u8, 44u8, 63u8], + [86u8, 240u8, 184u8, 160u8], + [88u8, 64u8, 143u8, 12u8], + [93u8, 244u8, 89u8, 70u8], + [94u8, 90u8, 103u8, 117u8], + [102u8, 217u8, 169u8, 160u8], + [104u8, 48u8, 72u8, 53u8], + [105u8, 78u8, 214u8, 16u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [123u8, 239u8, 74u8, 172u8], + [133u8, 34u8, 108u8, 129u8], + [136u8, 111u8, 17u8, 149u8], + [139u8, 44u8, 105u8, 235u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [158u8, 59u8, 164u8, 55u8], + [158u8, 153u8, 35u8, 194u8], + [159u8, 208u8, 80u8, 109u8], + [171u8, 193u8, 153u8, 124u8], + [177u8, 52u8, 66u8, 113u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [218u8, 213u8, 68u8, 224u8], + [225u8, 130u8, 114u8, 194u8], + [226u8, 12u8, 159u8, 113u8], + [227u8, 168u8, 179u8, 69u8], + [228u8, 181u8, 32u8, 11u8], + [234u8, 182u8, 109u8, 122u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BLSMockAVSDeployerCalls { + const NAME: &'static str = "BLSMockAVSDeployerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 40usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::WEIGHTING_DIVISOR(_) => { + ::SELECTOR + } + Self::_setUpBLSMockAVSDeployer_0(_) => { + <_setUpBLSMockAVSDeployer_0Call as alloy_sol_types::SolCall>::SELECTOR + } + Self::_setUpBLSMockAVSDeployer_1(_) => { + <_setUpBLSMockAVSDeployer_1Call as alloy_sol_types::SolCall>::SELECTOR + } + Self::avsDirectory(_) => ::SELECTOR, + Self::avsDirectoryImplementation(_) => { + ::SELECTOR + } + Self::avsDirectoryMock(_) => { + ::SELECTOR + } + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::blsApkRegistryImplementation(_) => { + ::SELECTOR + } + Self::delegationMock(_) => { + ::SELECTOR + } + Self::eigenPodManagerMock(_) => { + ::SELECTOR + } + Self::emptyContract(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::indexRegistry(_) => ::SELECTOR, + Self::indexRegistryImplementation(_) => { + ::SELECTOR + } + Self::operatorStateRetriever(_) => { + ::SELECTOR + } + Self::pauser(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::proxyAdmin(_) => ::SELECTOR, + Self::proxyAdminOwner(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorImplementation(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::serviceManager(_) => { + ::SELECTOR + } + Self::serviceManagerImplementation(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::slasherImplementation(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + Self::stakeRegistryImplementation(_) => { + ::SELECTOR + } + Self::strategyManagerMock(_) => { + ::SELECTOR + } + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::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 slasherImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::slasherImplementation) + } + slasherImplementation + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::excludeSenders) + } + excludeSenders + }, + { + fn eigenPodManagerMock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::eigenPodManagerMock) + } + eigenPodManagerMock + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn serviceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::serviceManager) + } + serviceManager + }, + { + fn registryCoordinatorImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + BLSMockAVSDeployerCalls::registryCoordinatorImplementation, + ) + } + registryCoordinatorImplementation + }, + { + fn avsDirectoryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSMockAVSDeployerCalls::avsDirectoryImplementation) + } + avsDirectoryImplementation + }, + { + fn proxyAdmin( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSMockAVSDeployerCalls::proxyAdmin) + } + proxyAdmin + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::targetContracts) + } + targetContracts + }, + { + fn operatorStateRetriever( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::operatorStateRetriever) + } + operatorStateRetriever + }, + { + fn avsDirectoryMock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::avsDirectoryMock) + } + avsDirectoryMock + }, + { + fn _setUpBLSMockAVSDeployer_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + <_setUpBLSMockAVSDeployer_0Call as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map(BLSMockAVSDeployerCalls::_setUpBLSMockAVSDeployer_0) + } + _setUpBLSMockAVSDeployer_0 + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn WEIGHTING_DIVISOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::WEIGHTING_DIVISOR) + } + WEIGHTING_DIVISOR + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn delegationMock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::delegationMock) + } + delegationMock + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn serviceManagerImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSMockAVSDeployerCalls::serviceManagerImplementation) + } + serviceManagerImplementation + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn indexRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSMockAVSDeployerCalls::indexRegistryImplementation) + } + indexRegistryImplementation + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::targetSelectors) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn blsApkRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSMockAVSDeployerCalls::blsApkRegistryImplementation) + } + blsApkRegistryImplementation + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::indexRegistry) + } + indexRegistry + }, + { + fn pauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSMockAVSDeployerCalls::pauser) + } + pauser + }, + { + fn _setUpBLSMockAVSDeployer_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + <_setUpBLSMockAVSDeployer_1Call as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map(BLSMockAVSDeployerCalls::_setUpBLSMockAVSDeployer_1) + } + _setUpBLSMockAVSDeployer_1 + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSMockAVSDeployerCalls::slasher) + } + slasher + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSMockAVSDeployerCalls::failed) + } + failed + }, + { + fn proxyAdminOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::proxyAdminOwner) + } + proxyAdminOwner + }, + { + fn stakeRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSMockAVSDeployerCalls::stakeRegistryImplementation) + } + stakeRegistryImplementation + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::excludeContracts) + } + excludeContracts + }, + { + fn emptyContract( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::emptyContract) + } + emptyContract + }, + { + fn strategyManagerMock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSMockAVSDeployerCalls::strategyManagerMock) + } + strategyManagerMock + }, + { + fn unpauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSMockAVSDeployerCalls::unpauser) + } + unpauser + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSMockAVSDeployerCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::_setUpBLSMockAVSDeployer_0(inner) => { + <_setUpBLSMockAVSDeployer_0Call as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::_setUpBLSMockAVSDeployer_1(inner) => { + <_setUpBLSMockAVSDeployer_1Call as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::avsDirectoryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::avsDirectoryMock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegationMock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManagerMock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::emptyContract(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::indexRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorStateRetriever(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::pauser(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::proxyAdmin(inner) => { + ::abi_encoded_size(inner) + } + Self::proxyAdminOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::serviceManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::serviceManagerImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::slasher(inner) => { + ::abi_encoded_size(inner) + } + Self::slasherImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyManagerMock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSenders(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::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::_setUpBLSMockAVSDeployer_0(inner) => { + <_setUpBLSMockAVSDeployer_0Call as alloy_sol_types::SolCall>::abi_encode_raw( + inner, + out, + ) + } + Self::_setUpBLSMockAVSDeployer_1(inner) => { + <_setUpBLSMockAVSDeployer_1Call as alloy_sol_types::SolCall>::abi_encode_raw( + inner, + out, + ) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::avsDirectoryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::avsDirectoryMock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegationMock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManagerMock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::emptyContract(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::indexRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorStateRetriever(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pauser(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::proxyAdmin(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::proxyAdminOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::serviceManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::serviceManagerImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::slasher(inner) => { + ::abi_encode_raw(inner, out) + } + Self::slasherImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyManagerMock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpauser(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`BLSMockAVSDeployer`](self) events. + pub enum BLSMockAVSDeployerEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl BLSMockAVSDeployerEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for BLSMockAVSDeployerEvents { + const NAME: &'static str = "BLSMockAVSDeployerEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 BLSMockAVSDeployerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BLSMockAVSDeployer`](self) contract instance. + + See the [wrapper's documentation](`BLSMockAVSDeployerInstance`) 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, + ) -> BLSMockAVSDeployerInstance { + BLSMockAVSDeployerInstance::::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>> + { + BLSMockAVSDeployerInstance::::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 { + BLSMockAVSDeployerInstance::::deploy_builder(provider) + } + /**A [`BLSMockAVSDeployer`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BLSMockAVSDeployer`](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 BLSMockAVSDeployerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BLSMockAVSDeployerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BLSMockAVSDeployerInstance") + .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, + > BLSMockAVSDeployerInstance + { + /**Creates a new wrapper around an on-chain [`BLSMockAVSDeployer`](self) contract instance. + + See the [wrapper's documentation](`BLSMockAVSDeployerInstance`) 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 BLSMockAVSDeployerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BLSMockAVSDeployerInstance { + BLSMockAVSDeployerInstance { + 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, + > BLSMockAVSDeployerInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`_setUpBLSMockAVSDeployer_0`] function. + pub fn _setUpBLSMockAVSDeployer_0( + &self, + numQuorumsToAdd: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&_setUpBLSMockAVSDeployer_0Call { numQuorumsToAdd }) + } + ///Creates a new call builder for the [`_setUpBLSMockAVSDeployer_1`] function. + pub fn _setUpBLSMockAVSDeployer_1( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&_setUpBLSMockAVSDeployer_1Call {}) + } + ///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 [`avsDirectoryImplementation`] function. + pub fn avsDirectoryImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryImplementationCall {}) + } + ///Creates a new call builder for the [`avsDirectoryMock`] function. + pub fn avsDirectoryMock( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryMockCall {}) + } + ///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 [`delegationMock`] function. + pub fn delegationMock( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationMockCall {}) + } + ///Creates a new call builder for the [`eigenPodManagerMock`] function. + pub fn eigenPodManagerMock( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eigenPodManagerMockCall {}) + } + ///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 [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///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 [`operatorStateRetriever`] function. + pub fn operatorStateRetriever( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorStateRetrieverCall {}) + } + ///Creates a new call builder for the [`pauser`] function. + pub fn pauser(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserCall {}) + } + ///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 [`proxyAdmin`] function. + pub fn proxyAdmin(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&proxyAdminCall {}) + } + ///Creates a new call builder for the [`proxyAdminOwner`] function. + pub fn proxyAdminOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&proxyAdminOwnerCall {}) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///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 [`serviceManagerImplementation`] function. + pub fn serviceManagerImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&serviceManagerImplementationCall {}) + } + ///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 [`slasherImplementation`] function. + pub fn slasherImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&slasherImplementationCall {}) + } + ///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 {}) + } + ///Creates a new call builder for the [`strategyManagerMock`] function. + pub fn strategyManagerMock( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyManagerMockCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///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, + > BLSMockAVSDeployerInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/blssignaturechecker.rs b/crates/utils/src/middleware/blssignaturechecker.rs similarity index 61% rename from crates/utils/src/blssignaturechecker.rs rename to crates/utils/src/middleware/blssignaturechecker.rs index 70181f97..670bfdb8 100644 --- a/crates/utils/src/blssignaturechecker.rs +++ b/crates/utils/src/middleware/blssignaturechecker.rs @@ -7,20 +7,30 @@ library BN254 { struct G2Point { uint256[2] X; uint256[2] Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -196,13 +206,18 @@ pub mod BN254 { /**```solidity struct G2Point { uint256[2] X; uint256[2] Y; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -528,14 +543,19 @@ library IBLSSignatureChecker { struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NonSignerStakesAndSignature { pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec, @@ -550,7 +570,12 @@ pub mod IBLSSignatureChecker { pub nonSignerStakeIndices: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -890,7 +915,7 @@ pub mod IBLSSignatureChecker { /**```solidity struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct QuorumStakeTotals { pub signedStakeForQuorum: @@ -898,7 +923,12 @@ pub mod IBLSSignatureChecker { pub totalStakeForQuorum: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1588,41 +1618,56 @@ interface BLSSignatureChecker { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod BLSSignatureChecker { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6101006040523480156200001257600080fd5b506040516200292c3803806200292c8339810160408190526200003591620001d0565b6001600160a01b038116608081905260408051636830483560e01b815290516368304835916004808201926020929091908290030181865afa15801562000080573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a69190620001d0565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001249190620001d0565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a49190620001d0565b6001600160a01b031660e05250620001f7565b6001600160a01b0381168114620001cd57600080fd5b50565b600060208284031215620001e357600080fd5b8151620001f081620001b7565b9392505050565b60805160a05160c05160e0516126c462000268600039600081816101a10152610b7601526000818160d60152610d5801526000818161011501528181610f2e01526110f001526000818161013c0152818161034f0152818161083f015281816109d70152610c1301526126c46000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636d14a9871161005b5780636d14a987146101375780636efb46361461015e578063b98d09081461017f578063df5cf7231461019c57600080fd5b8063171f1d5b1461008d578063416c7e5e146100bc5780635df45946146100d15780636830483514610110575b600080fd5b6100a061009b366004611fbe565b6101c3565b6040805192151583529015156020830152015b60405180910390f35b6100cf6100ca36600461200f565b61034d565b005b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100b3565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b61017161016c3660046122e7565b61048c565b6040516100b39291906123da565b60005461018c9060ff1681565b60405190151581526020016100b3565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061020b5761020b612423565b60200201518951600160200201518a6020015160006002811061023057610230612423565b60200201518b6020015160016002811061024c5761024c612423565b602090810291909101518c518d8301516040516102a99a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6102cc9190612439565b905061033f6102e56102de88846113a5565b869061143c565b6102ed6114d0565b61033561032685610320604080518082018252600080825260209182015281518083019092526001825260029082015290565b906113a5565b61032f8c611590565b9061143c565b886201d4c0611620565b909890975095505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cf919061245b565b6001600160a01b0316336001600160a01b0316146104805760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b61048981611844565b50565b60408051808201909152606080825260208201526000846105035760405162461bcd60e51b8152602060048201526037602482015260008051602061266f83398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610477565b6040830151518514801561051b575060a08301515185145b801561052b575060c08301515185145b801561053b575060e08301515185145b6105a55760405162461bcd60e51b8152602060048201526041602482015260008051602061266f83398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610477565b8251516020840151511461061d5760405162461bcd60e51b81526020600482015260446024820181905260008051602061266f833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610477565b4363ffffffff168463ffffffff161061068c5760405162461bcd60e51b815260206004820152603c602482015260008051602061266f83398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610477565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b038111156106cd576106cd611e59565b6040519080825280602002602001820160405280156106f6578160200160208202803683370190505b506020820152866001600160401b0381111561071457610714611e59565b60405190808252806020026020018201604052801561073d578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561077157610771611e59565b60405190808252806020026020018201604052801561079a578160200160208202803683370190505b5081526020860151516001600160401b038111156107ba576107ba611e59565b6040519080825280602002602001820160405280156107e3578160200160208202803683370190505b50816020018190525060006108b58a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190612484565b61188b565b905060005b876020015151811015610b50576108ff886020015182815181106108e0576108e0612423565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061091557610915612423565b602090810291909101015280156109d55760208301516109366001836124bd565b8151811061094657610946612423565b602002602001015160001c8360200151828151811061096757610967612423565b602002602001015160001c116109d5576040805162461bcd60e51b815260206004820152602481019190915260008051602061266f83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610477565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110610a1a57610a1a612423565b60200260200101518b8b600001518581518110610a3957610a39612423565b60200260200101516040518463ffffffff1660e01b8152600401610a769392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab791906124d4565b6001600160c01b031683600001518281518110610ad657610ad6612423565b602002602001018181525050610b3c6102de610b108486600001518581518110610b0257610b02612423565b60200260200101511661191e565b8a602001518481518110610b2657610b26612423565b602002602001015161194990919063ffffffff16565b945080610b48816124fd565b9150506108ba565b5050610b5b83611a2d565b6000805491945060ff9091169081610b74576000610bf6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190612518565b905060005b8a811015611274578215610d56578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110610c5257610c52612423565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190612518565b610cc09190612531565b11610d565760405162461bcd60e51b8152602060048201526066602482015260008051602061266f83398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610477565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110610d9757610d97612423565b9050013560f81c60f81b60f81c8c8c60a001518581518110610dbb57610dbb612423565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612549565b6001600160401b031916610e5e8a6040015183815181106108e0576108e0612423565b67ffffffffffffffff191614610efa5760405162461bcd60e51b8152602060048201526061602482015260008051602061266f83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610477565b610f2a89604001518281518110610f1357610f13612423565b60200260200101518761143c90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110610f6d57610f6d612423565b9050013560f81c60f81b60f81c8c8c60c001518581518110610f9157610f91612423565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190612574565b8560200151828151811061102757611027612423565b6001600160601b0390921660209283029190910182015285015180518290811061105357611053612423565b60200260200101518560000151828151811061107157611071612423565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a602001515181101561125f576110e9866000015182815181106110bb576110bb612423565b60200260200101518f8f868181106110d5576110d5612423565b600192013560f81c9290921c811614919050565b1561124d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061112f5761112f612423565b9050013560f81c60f81b60f81c8e8960200151858151811061115357611153612423565b60200260200101518f60e00151888151811061117157611171612423565b6020026020010151878151811061118a5761118a612423565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190612574565b875180518590811061122657611226612423565b6020026020010181815161123a919061259d565b6001600160601b03169052506001909101905b80611257816124fd565b915050611095565b5050808061126c906124fd565b915050610bfb565b50505060008061128e8c868a606001518b608001516101c3565b91509150816112ff5760405162461bcd60e51b8152602060048201526043602482015260008051602061266f83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610477565b806113605760405162461bcd60e51b8152602060048201526039602482015260008051602061266f83398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610477565b5050600087826020015160405160200161137b9291906125c5565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b60408051808201909152600080825260208201526113c1611d7f565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113f4576113f6565bfe5b50806114345760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610477565b505092915050565b6040805180820190915260008082526020820152611458611d9d565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113f45750806114345760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610477565b6114d8611dbb565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806115c060008051602061264f83398151915286612439565b90505b6115cc81611ac8565b909350915060008051602061264f833981519152828309831415611606576040805180820190915290815260208101919091529392505050565b60008051602061264f8339815191526001820890506115c3565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190611652611de0565b60005b600281101561181757600061166b82600661260d565b905084826002811061167f5761167f612423565b60200201515183611691836000612531565b600c81106116a1576116a1612423565b60200201528482600281106116b8576116b8612423565b602002015160200151838260016116cf9190612531565b600c81106116df576116df612423565b60200201528382600281106116f6576116f6612423565b6020020151515183611709836002612531565b600c811061171957611719612423565b602002015283826002811061173057611730612423565b6020020151516001602002015183611749836003612531565b600c811061175957611759612423565b602002015283826002811061177057611770612423565b60200201516020015160006002811061178b5761178b612423565b60200201518361179c836004612531565b600c81106117ac576117ac612423565b60200201528382600281106117c3576117c3612423565b6020020151602001516001600281106117de576117de612423565b6020020151836117ef836005612531565b600c81106117ff576117ff612423565b6020020152508061180f816124fd565b915050611655565b50611820611dff565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6000805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60008061189784611b4a565b9050808360ff166001901b116119155760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610477565b90505b92915050565b6000805b8215611918576119336001846124bd565b90921691806119418161262c565b915050611922565b60408051808201909152600080825260208201526102008261ffff16106119a55760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610477565b8161ffff16600114156119b9575081611918565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610611a2257600161ffff871660ff83161c81161415611a0557611a02848461143c565b93505b611a0f838461143c565b92506201fffe600192831b1691016119d5565b509195945050505050565b60408051808201909152600080825260208201528151158015611a5257506020820151155b15611a70575050604080518082019091526000808252602082015290565b60405180604001604052808360000151815260200160008051602061264f8339815191528460200151611aa39190612439565b611abb9060008051602061264f8339815191526124bd565b905292915050565b919050565b6000808060008051602061264f833981519152600360008051602061264f8339815191528660008051602061264f833981519152888909090890506000611b3e827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260008051602061264f833981519152611cd7565b91959194509092505050565b600061010082511115611bd35760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610477565b8151611be157506000919050565b60008083600081518110611bf757611bf7612423565b0160200151600160f89190911c81901b92505b8451811015611cce57848181518110611c2557611c25612423565b0160200151600160f89190911c1b9150828211611cba5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610477565b91811791611cc7816124fd565b9050611c0a565b50909392505050565b600080611ce2611dff565b611cea611e1d565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156113f4575082611d745760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610477565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611dce611e3b565b8152602001611ddb611e3b565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611e9157611e91611e59565b60405290565b60405161010081016001600160401b0381118282101715611e9157611e91611e59565b604051601f8201601f191681016001600160401b0381118282101715611ee257611ee2611e59565b604052919050565b600060408284031215611efc57600080fd5b611f04611e6f565b9050813581526020820135602082015292915050565b600082601f830112611f2b57600080fd5b604051604081018181106001600160401b0382111715611f4d57611f4d611e59565b8060405250806040840185811115611f6457600080fd5b845b81811015611a22578035835260209283019201611f66565b600060808284031215611f9057600080fd5b611f98611e6f565b9050611fa48383611f1a565b8152611fb38360408401611f1a565b602082015292915050565b6000806000806101208587031215611fd557600080fd5b84359350611fe68660208701611eea565b9250611ff58660608701611f7e565b91506120048660e08701611eea565b905092959194509250565b60006020828403121561202157600080fd5b8135801515811461191557600080fd5b803563ffffffff81168114611ac357600080fd5b60006001600160401b0382111561205e5761205e611e59565b5060051b60200190565b600082601f83011261207957600080fd5b8135602061208e61208983612045565b611eba565b82815260059290921b840181019181810190868411156120ad57600080fd5b8286015b848110156120cf576120c281612031565b83529183019183016120b1565b509695505050505050565b600082601f8301126120eb57600080fd5b813560206120fb61208983612045565b82815260069290921b8401810191818101908684111561211a57600080fd5b8286015b848110156120cf576121308882611eea565b83529183019160400161211e565b600082601f83011261214f57600080fd5b8135602061215f61208983612045565b82815260059290921b8401810191818101908684111561217e57600080fd5b8286015b848110156120cf5780356001600160401b038111156121a15760008081fd5b6121af8986838b0101612068565b845250918301918301612182565b600061018082840312156121d057600080fd5b6121d8611e97565b905081356001600160401b03808211156121f157600080fd5b6121fd85838601612068565b8352602084013591508082111561221357600080fd5b61221f858386016120da565b6020840152604084013591508082111561223857600080fd5b612244858386016120da565b60408401526122568560608601611f7e565b60608401526122688560e08601611eea565b608084015261012084013591508082111561228257600080fd5b61228e85838601612068565b60a08401526101408401359150808211156122a857600080fd5b6122b485838601612068565b60c08401526101608401359150808211156122ce57600080fd5b506122db8482850161213e565b60e08301525092915050565b6000806000806000608086880312156122ff57600080fd5b8535945060208601356001600160401b038082111561231d57600080fd5b818801915088601f83011261233157600080fd5b81358181111561234057600080fd5b89602082850101111561235257600080fd5b602083019650945061236660408901612031565b9350606088013591508082111561237c57600080fd5b50612389888289016121bd565b9150509295509295909350565b600081518084526020808501945080840160005b838110156123cf5781516001600160601b0316875295820195908201906001016123aa565b509495945050505050565b60408152600083516040808401526123f56080840182612396565b90506020850151603f198483030160608501526124128282612396565b925050508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b60008261245657634e487b7160e01b600052601260045260246000fd5b500690565b60006020828403121561246d57600080fd5b81516001600160a01b038116811461191557600080fd5b60006020828403121561249657600080fd5b815160ff8116811461191557600080fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156124cf576124cf6124a7565b500390565b6000602082840312156124e657600080fd5b81516001600160c01b038116811461191557600080fd5b6000600019821415612511576125116124a7565b5060010190565b60006020828403121561252a57600080fd5b5051919050565b60008219821115612544576125446124a7565b500190565b60006020828403121561255b57600080fd5b815167ffffffffffffffff198116811461191557600080fd5b60006020828403121561258657600080fd5b81516001600160601b038116811461191557600080fd5b60006001600160601b03838116908316818110156125bd576125bd6124a7565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015612600578151855293820193908201906001016125e4565b5092979650505050505050565b6000816000190483118215151615612627576126276124a7565b500290565b600061ffff80831681811415612644576126446124a7565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220b709889c463ee88b96df1e43223ed847f3b0de8e217c2ef3ed9704dbac87550264736f6c634300080c0033 + ///0x6101006040523480156200001257600080fd5b506040516200292d3803806200292d8339810160408190526200003591620001dd565b6001600160a01b038116608081905260408051636830483560e01b815290516368304835916004808201926020929091908290030181865afa15801562000080573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a69190620001dd565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001249190620001dd565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a49190620001dd565b6001600160a01b031660e052506000805460ff1916600117905562000204565b6001600160a01b0381168114620001da57600080fd5b50565b600060208284031215620001f057600080fd5b8151620001fd81620001c4565b9392505050565b60805160a05160c05160e0516126b862000275600039600081816101a10152610bb101526000818160d60152610d9301526000818161011501528181610f69015261112b01526000818161013c0152818161034f0152818161087a01528181610a120152610c4e01526126b86000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636d14a9871161005b5780636d14a987146101375780636efb46361461015e578063b98d09081461017f578063df5cf7231461019c57600080fd5b8063171f1d5b1461008d578063416c7e5e146100bc5780635df45946146100d15780636830483514610110575b600080fd5b6100a061009b366004611fb2565b6101c3565b6040805192151583529015156020830152015b60405180910390f35b6100cf6100ca366004612003565b61034d565b005b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100b3565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b61017161016c3660046122db565b6104c7565b6040516100b39291906123ce565b60005461018c9060ff1681565b60405190151581526020016100b3565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061020b5761020b612417565b60200201518951600160200201518a6020015160006002811061023057610230612417565b60200201518b6020015160016002811061024c5761024c612417565b602090810291909101518c518d8301516040516102a99a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6102cc919061242d565b905061033f6102e56102de88846113e0565b8690611477565b6102ed61150b565b61033561032685610320604080518082018252600080825260209182015281518083019092526001825260029082015290565b906113e0565b61032f8c6115cb565b90611477565b886201d4c061165b565b909890975095505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cf919061244f565b6001600160a01b0316336001600160a01b0316146104805760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6000805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b604080518082019091526060808252602082015260008461053e5760405162461bcd60e51b8152602060048201526037602482015260008051602061266383398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610477565b60408301515185148015610556575060a08301515185145b8015610566575060c08301515185145b8015610576575060e08301515185145b6105e05760405162461bcd60e51b8152602060048201526041602482015260008051602061266383398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610477565b825151602084015151146106585760405162461bcd60e51b815260206004820152604460248201819052600080516020612663833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610477565b4363ffffffff168463ffffffff16106106c75760405162461bcd60e51b815260206004820152603c602482015260008051602061266383398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610477565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b0381111561070857610708611e4d565b604051908082528060200260200182016040528015610731578160200160208202803683370190505b506020820152866001600160401b0381111561074f5761074f611e4d565b604051908082528060200260200182016040528015610778578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b038111156107ac576107ac611e4d565b6040519080825280602002602001820160405280156107d5578160200160208202803683370190505b5081526020860151516001600160401b038111156107f5576107f5611e4d565b60405190808252806020026020018201604052801561081e578160200160208202803683370190505b50816020018190525060006108f08a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb9190612478565b61187f565b905060005b876020015151811015610b8b5761093a8860200151828151811061091b5761091b612417565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061095057610950612417565b60209081029190910101528015610a105760208301516109716001836124b1565b8151811061098157610981612417565b602002602001015160001c836020015182815181106109a2576109a2612417565b602002602001015160001c11610a10576040805162461bcd60e51b815260206004820152602481019190915260008051602061266383398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610477565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110610a5557610a55612417565b60200260200101518b8b600001518581518110610a7457610a74612417565b60200260200101516040518463ffffffff1660e01b8152600401610ab19392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af291906124c8565b6001600160c01b031683600001518281518110610b1157610b11612417565b602002602001018181525050610b776102de610b4b8486600001518581518110610b3d57610b3d612417565b602002602001015116611912565b8a602001518481518110610b6157610b61612417565b602002602001015161193d90919063ffffffff16565b945080610b83816124f1565b9150506108f5565b5050610b9683611a21565b6000805491945060ff9091169081610baf576000610c31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c31919061250c565b905060005b8a8110156112af578215610d91578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110610c8d57610c8d612417565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015610ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf1919061250c565b610cfb9190612525565b11610d915760405162461bcd60e51b8152602060048201526066602482015260008051602061266383398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610477565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110610dd257610dd2612417565b9050013560f81c60f81b60f81c8c8c60a001518581518110610df657610df6612417565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e76919061253d565b6001600160401b031916610e998a60400151838151811061091b5761091b612417565b67ffffffffffffffff191614610f355760405162461bcd60e51b8152602060048201526061602482015260008051602061266383398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610477565b610f6589604001518281518110610f4e57610f4e612417565b60200260200101518761147790919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110610fa857610fa8612417565b9050013560f81c60f81b60f81c8c8c60c001518581518110610fcc57610fcc612417565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104c9190612568565b8560200151828151811061106257611062612417565b6001600160601b0390921660209283029190910182015285015180518290811061108e5761108e612417565b6020026020010151856000015182815181106110ac576110ac612417565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a602001515181101561129a57611124866000015182815181106110f6576110f6612417565b60200260200101518f8f8681811061111057611110612417565b600192013560f81c9290921c811614919050565b15611288577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061116a5761116a612417565b9050013560f81c60f81b60f81c8e8960200151858151811061118e5761118e612417565b60200260200101518f60e0015188815181106111ac576111ac612417565b602002602001015187815181106111c5576111c5612417565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015611229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124d9190612568565b875180518590811061126157611261612417565b602002602001018181516112759190612591565b6001600160601b03169052506001909101905b80611292816124f1565b9150506110d0565b505080806112a7906124f1565b915050610c36565b5050506000806112c98c868a606001518b608001516101c3565b915091508161133a5760405162461bcd60e51b8152602060048201526043602482015260008051602061266383398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610477565b8061139b5760405162461bcd60e51b8152602060048201526039602482015260008051602061266383398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610477565b505060008782602001516040516020016113b69291906125b9565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b60408051808201909152600080825260208201526113fc611d73565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561142f57611431565bfe5b508061146f5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610477565b505092915050565b6040805180820190915260008082526020820152611493611d91565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561142f57508061146f5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610477565b611513611daf565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806115fb6000805160206126438339815191528661242d565b90505b61160781611abc565b9093509150600080516020612643833981519152828309831415611641576040805180820190915290815260208101919091529392505050565b6000805160206126438339815191526001820890506115fe565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061168d611dd4565b60005b60028110156118525760006116a6826006612601565b90508482600281106116ba576116ba612417565b602002015151836116cc836000612525565b600c81106116dc576116dc612417565b60200201528482600281106116f3576116f3612417565b6020020151602001518382600161170a9190612525565b600c811061171a5761171a612417565b602002015283826002811061173157611731612417565b6020020151515183611744836002612525565b600c811061175457611754612417565b602002015283826002811061176b5761176b612417565b6020020151516001602002015183611784836003612525565b600c811061179457611794612417565b60200201528382600281106117ab576117ab612417565b6020020151602001516000600281106117c6576117c6612417565b6020020151836117d7836004612525565b600c81106117e7576117e7612417565b60200201528382600281106117fe576117fe612417565b60200201516020015160016002811061181957611819612417565b60200201518361182a836005612525565b600c811061183a5761183a612417565b6020020152508061184a816124f1565b915050611690565b5061185b611df3565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60008061188b84611b3e565b9050808360ff166001901b116119095760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610477565b90505b92915050565b6000805b821561190c576119276001846124b1565b909216918061193581612620565b915050611916565b60408051808201909152600080825260208201526102008261ffff16106119995760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610477565b8161ffff16600114156119ad57508161190c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610611a1657600161ffff871660ff83161c811614156119f9576119f68484611477565b93505b611a038384611477565b92506201fffe600192831b1691016119c9565b509195945050505050565b60408051808201909152600080825260208201528151158015611a4657506020820151155b15611a64575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206126438339815191528460200151611a97919061242d565b611aaf906000805160206126438339815191526124b1565b905292915050565b919050565b60008080600080516020612643833981519152600360008051602061264383398151915286600080516020612643833981519152888909090890506000611b32827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020612643833981519152611ccb565b91959194509092505050565b600061010082511115611bc75760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610477565b8151611bd557506000919050565b60008083600081518110611beb57611beb612417565b0160200151600160f89190911c81901b92505b8451811015611cc257848181518110611c1957611c19612417565b0160200151600160f89190911c1b9150828211611cae5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610477565b91811791611cbb816124f1565b9050611bfe565b50909392505050565b600080611cd6611df3565b611cde611e11565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561142f575082611d685760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610477565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611dc2611e2f565b8152602001611dcf611e2f565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611e8557611e85611e4d565b60405290565b60405161010081016001600160401b0381118282101715611e8557611e85611e4d565b604051601f8201601f191681016001600160401b0381118282101715611ed657611ed6611e4d565b604052919050565b600060408284031215611ef057600080fd5b611ef8611e63565b9050813581526020820135602082015292915050565b600082601f830112611f1f57600080fd5b604051604081018181106001600160401b0382111715611f4157611f41611e4d565b8060405250806040840185811115611f5857600080fd5b845b81811015611a16578035835260209283019201611f5a565b600060808284031215611f8457600080fd5b611f8c611e63565b9050611f988383611f0e565b8152611fa78360408401611f0e565b602082015292915050565b6000806000806101208587031215611fc957600080fd5b84359350611fda8660208701611ede565b9250611fe98660608701611f72565b9150611ff88660e08701611ede565b905092959194509250565b60006020828403121561201557600080fd5b8135801515811461190957600080fd5b803563ffffffff81168114611ab757600080fd5b60006001600160401b0382111561205257612052611e4d565b5060051b60200190565b600082601f83011261206d57600080fd5b8135602061208261207d83612039565b611eae565b82815260059290921b840181019181810190868411156120a157600080fd5b8286015b848110156120c3576120b681612025565b83529183019183016120a5565b509695505050505050565b600082601f8301126120df57600080fd5b813560206120ef61207d83612039565b82815260069290921b8401810191818101908684111561210e57600080fd5b8286015b848110156120c3576121248882611ede565b835291830191604001612112565b600082601f83011261214357600080fd5b8135602061215361207d83612039565b82815260059290921b8401810191818101908684111561217257600080fd5b8286015b848110156120c35780356001600160401b038111156121955760008081fd5b6121a38986838b010161205c565b845250918301918301612176565b600061018082840312156121c457600080fd5b6121cc611e8b565b905081356001600160401b03808211156121e557600080fd5b6121f18583860161205c565b8352602084013591508082111561220757600080fd5b612213858386016120ce565b6020840152604084013591508082111561222c57600080fd5b612238858386016120ce565b604084015261224a8560608601611f72565b606084015261225c8560e08601611ede565b608084015261012084013591508082111561227657600080fd5b6122828583860161205c565b60a084015261014084013591508082111561229c57600080fd5b6122a88583860161205c565b60c08401526101608401359150808211156122c257600080fd5b506122cf84828501612132565b60e08301525092915050565b6000806000806000608086880312156122f357600080fd5b8535945060208601356001600160401b038082111561231157600080fd5b818801915088601f83011261232557600080fd5b81358181111561233457600080fd5b89602082850101111561234657600080fd5b602083019650945061235a60408901612025565b9350606088013591508082111561237057600080fd5b5061237d888289016121b1565b9150509295509295909350565b600081518084526020808501945080840160005b838110156123c35781516001600160601b03168752958201959082019060010161239e565b509495945050505050565b60408152600083516040808401526123e9608084018261238a565b90506020850151603f19848303016060850152612406828261238a565b925050508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b60008261244a57634e487b7160e01b600052601260045260246000fd5b500690565b60006020828403121561246157600080fd5b81516001600160a01b038116811461190957600080fd5b60006020828403121561248a57600080fd5b815160ff8116811461190957600080fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156124c3576124c361249b565b500390565b6000602082840312156124da57600080fd5b81516001600160c01b038116811461190957600080fd5b60006000198214156125055761250561249b565b5060010190565b60006020828403121561251e57600080fd5b5051919050565b600082198211156125385761253861249b565b500190565b60006020828403121561254f57600080fd5b815167ffffffffffffffff198116811461190957600080fd5b60006020828403121561257a57600080fd5b81516001600160601b038116811461190957600080fd5b60006001600160601b03838116908316818110156125b1576125b161249b565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156125f4578151855293820193908201906001016125d8565b5092979650505050505050565b600081600019048311821515161561261b5761261b61249b565b500290565b600061ffff808316818114156126385761263861249b565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220298d81fbd2e1b4161ca28d04d8dcc9de12e6efe5a04629415d7003c6dc3c64d664736f6c634300080c0033 /// ``` #[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", + 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\xDDV[`\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\xDDV[`\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\xDDV[`\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\xDDV[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RP`\0\x80T`\xFF\x19\x16`\x01\x17\x90Ub\0\x02\x04V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xDAW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x01\xF0W`\0\x80\xFD[\x81Qb\0\x01\xFD\x81b\0\x01\xC4V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa&\xB8b\0\x02u`\09`\0\x81\x81a\x01\xA1\x01Ra\x0B\xB1\x01R`\0\x81\x81`\xD6\x01Ra\r\x93\x01R`\0\x81\x81a\x01\x15\x01R\x81\x81a\x0Fi\x01Ra\x11+\x01R`\0\x81\x81a\x01<\x01R\x81\x81a\x03O\x01R\x81\x81a\x08z\x01R\x81\x81a\n\x12\x01Ra\x0CN\x01Ra&\xB8`\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\xB2V[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 \x03V[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\"\xDBV[a\x04\xC7V[`@Qa\0\xB3\x92\x91\x90a#\xCEV[`\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$\x17V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q`\0`\x02\x81\x10a\x020Wa\x020a$\x17V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x02LWa\x02La$\x17V[` \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$-V[\x90Pa\x03?a\x02\xE5a\x02\xDE\x88\x84a\x13\xE0V[\x86\x90a\x14wV[a\x02\xEDa\x15\x0BV[a\x035a\x03&\x85a\x03 `@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a\x13\xE0V[a\x03/\x8Ca\x15\xCBV[\x90a\x14wV[\x88b\x01\xD4\xC0a\x16[V[\x90\x98\x90\x97P\x95PPPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x03\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xCF\x91\x90a$OV[`\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[`\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[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R`\0\x84a\x05>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R`\0\x80Q` a&c\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\x05VWP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x05fWP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x05vWP`\xE0\x83\x01QQ\x85\x14[a\x05\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a&c\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\x06XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a&c\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\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R`\0\x80Q` a&c\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\x07\x08Wa\x07\x08a\x1EMV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x071W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07OWa\x07Oa\x1EMV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07xW\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\x07\xACWa\x07\xACa\x1EMV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xD5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xF5Wa\x07\xF5a\x1EMV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\x1EW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP`\0a\x08\xF0\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\xC7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEB\x91\x90a$xV[a\x18\x7FV[\x90P`\0[\x87` \x01QQ\x81\x10\x15a\x0B\x8BWa\t:\x88` \x01Q\x82\x81Q\x81\x10a\t\x1BWa\t\x1Ba$\x17V[` \x02` \x01\x01Q\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\tPWa\tPa$\x17V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\n\x10W` \x83\x01Qa\tq`\x01\x83a$\xB1V[\x81Q\x81\x10a\t\x81Wa\t\x81a$\x17V[` \x02` \x01\x01Q`\0\x1C\x83` \x01Q\x82\x81Q\x81\x10a\t\xA2Wa\t\xA2a$\x17V[` \x02` \x01\x01Q`\0\x1C\x11a\n\x10W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a&c\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\nUWa\nUa$\x17V[` \x02` \x01\x01Q\x8B\x8B`\0\x01Q\x85\x81Q\x81\x10a\ntWa\nta$\x17V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xB1\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\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a$\xC8V[`\x01`\x01`\xC0\x1B\x03\x16\x83`\0\x01Q\x82\x81Q\x81\x10a\x0B\x11Wa\x0B\x11a$\x17V[` \x02` \x01\x01\x81\x81RPPa\x0Bwa\x02\xDEa\x0BK\x84\x86`\0\x01Q\x85\x81Q\x81\x10a\x0B=Wa\x0B=a$\x17V[` \x02` \x01\x01Q\x16a\x19\x12V[\x8A` \x01Q\x84\x81Q\x81\x10a\x0BaWa\x0Baa$\x17V[` \x02` \x01\x01Qa\x19=\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P\x80a\x0B\x83\x81a$\xF1V[\x91PPa\x08\xF5V[PPa\x0B\x96\x83a\x1A!V[`\0\x80T\x91\x94P`\xFF\x90\x91\x16\x90\x81a\x0B\xAFW`\0a\x0C1V[\x7F\0\0\0\0\0\0\0\0\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\x0C\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C1\x91\x90a%\x0CV[\x90P`\0[\x8A\x81\x10\x15a\x12\xAFW\x82\x15a\r\x91W\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\x0C\x8DWa\x0C\x8Da$\x17V[`@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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xF1\x91\x90a%\x0CV[a\x0C\xFB\x91\x90a%%V[\x11a\r\x91W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R`\0\x80Q` a&c\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\xD2Wa\r\xD2a$\x17V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\r\xF6Wa\r\xF6a$\x17V[` \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\x0ERW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Ev\x91\x90a%=V[`\x01`\x01`@\x1B\x03\x19\x16a\x0E\x99\x8A`@\x01Q\x83\x81Q\x81\x10a\t\x1BWa\t\x1Ba$\x17V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0F5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R`\0\x80Q` a&c\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\x0Fe\x89`@\x01Q\x82\x81Q\x81\x10a\x0FNWa\x0FNa$\x17V[` \x02` \x01\x01Q\x87a\x14w\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\x0F\xA8Wa\x0F\xA8a$\x17V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x0F\xCCWa\x0F\xCCa$\x17V[` \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\x10(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10L\x91\x90a%hV[\x85` \x01Q\x82\x81Q\x81\x10a\x10bWa\x10ba$\x17V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x10\x8EWa\x10\x8Ea$\x17V[` \x02` \x01\x01Q\x85`\0\x01Q\x82\x81Q\x81\x10a\x10\xACWa\x10\xACa$\x17V[` \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\x9AWa\x11$\x86`\0\x01Q\x82\x81Q\x81\x10a\x10\xF6Wa\x10\xF6a$\x17V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x11\x10Wa\x11\x10a$\x17V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x12\x88W\x7F\0\0\0\0\0\0\0\0\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\x11jWa\x11ja$\x17V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x11\x8EWa\x11\x8Ea$\x17V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x11\xACWa\x11\xACa$\x17V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x11\xC5Wa\x11\xC5a$\x17V[` \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\x12)W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12M\x91\x90a%hV[\x87Q\x80Q\x85\x90\x81\x10a\x12aWa\x12aa$\x17V[` \x02` \x01\x01\x81\x81Qa\x12u\x91\x90a%\x91V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[\x80a\x12\x92\x81a$\xF1V[\x91PPa\x10\xD0V[PP\x80\x80a\x12\xA7\x90a$\xF1V[\x91PPa\x0C6V[PPP`\0\x80a\x12\xC9\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x01\xC3V[\x91P\x91P\x81a\x13:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a&c\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\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R`\0\x80Q` a&c\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\xB6\x92\x91\x90a%\xB9V[`@\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\xFCa\x1DsV[\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\x14/Wa\x141V[\xFE[P\x80a\x14oW`@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\x14\x93a\x1D\x91V[\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\x14/WP\x80a\x14oW`@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\x15\x13a\x1D\xAFV[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\xFB`\0\x80Q` a&C\x839\x81Q\x91R\x86a$-V[\x90P[a\x16\x07\x81a\x1A\xBCV[\x90\x93P\x91P`\0\x80Q` a&C\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a\x16AW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a&C\x839\x81Q\x91R`\x01\x82\x08\x90Pa\x15\xFEV[`@\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\x16\x8Da\x1D\xD4V[`\0[`\x02\x81\x10\x15a\x18RW`\0a\x16\xA6\x82`\x06a&\x01V[\x90P\x84\x82`\x02\x81\x10a\x16\xBAWa\x16\xBAa$\x17V[` \x02\x01QQ\x83a\x16\xCC\x83`\0a%%V[`\x0C\x81\x10a\x16\xDCWa\x16\xDCa$\x17V[` \x02\x01R\x84\x82`\x02\x81\x10a\x16\xF3Wa\x16\xF3a$\x17V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x17\n\x91\x90a%%V[`\x0C\x81\x10a\x17\x1AWa\x17\x1Aa$\x17V[` \x02\x01R\x83\x82`\x02\x81\x10a\x171Wa\x171a$\x17V[` \x02\x01QQQ\x83a\x17D\x83`\x02a%%V[`\x0C\x81\x10a\x17TWa\x17Ta$\x17V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17kWa\x17ka$\x17V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x17\x84\x83`\x03a%%V[`\x0C\x81\x10a\x17\x94Wa\x17\x94a$\x17V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\xABWa\x17\xABa$\x17V[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x17\xC6Wa\x17\xC6a$\x17V[` \x02\x01Q\x83a\x17\xD7\x83`\x04a%%V[`\x0C\x81\x10a\x17\xE7Wa\x17\xE7a$\x17V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\xFEWa\x17\xFEa$\x17V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x18\x19Wa\x18\x19a$\x17V[` \x02\x01Q\x83a\x18*\x83`\x05a%%V[`\x0C\x81\x10a\x18:Wa\x18:a$\x17V[` \x02\x01RP\x80a\x18J\x81a$\xF1V[\x91PPa\x16\x90V[Pa\x18[a\x1D\xF3V[`\0` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[`\0\x80a\x18\x8B\x84a\x1B>V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a\x19\tW`@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\x0CWa\x19'`\x01\x84a$\xB1V[\x90\x92\x16\x91\x80a\x195\x81a& V[\x91PPa\x19\x16V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a\x19\x99W`@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\xADWP\x81a\x19\x0CV[`@\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\x16W`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x14\x15a\x19\xF9Wa\x19\xF6\x84\x84a\x14wV[\x93P[a\x1A\x03\x83\x84a\x14wV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a\x19\xC9V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x1AFWP` \x82\x01Q\x15[\x15a\x1AdWPP`@\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&C\x839\x81Q\x91R\x84` \x01Qa\x1A\x97\x91\x90a$-V[a\x1A\xAF\x90`\0\x80Q` a&C\x839\x81Q\x91Ra$\xB1V[\x90R\x92\x91PPV[\x91\x90PV[`\0\x80\x80`\0\x80Q` a&C\x839\x81Q\x91R`\x03`\0\x80Q` a&C\x839\x81Q\x91R\x86`\0\x80Q` a&C\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a\x1B2\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&C\x839\x81Q\x91Ra\x1C\xCBV[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a\x1B\xC7W`@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\xD5WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a\x1B\xEBWa\x1B\xEBa$\x17V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\x1C\xC2W\x84\x81\x81Q\x81\x10a\x1C\x19Wa\x1C\x19a$\x17V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\x1C\xAEW`@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\xBB\x81a$\xF1V[\x90Pa\x1B\xFEV[P\x90\x93\x92PPPV[`\0\x80a\x1C\xD6a\x1D\xF3V[a\x1C\xDEa\x1E\x11V[` \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\x14/WP\x82a\x1DhW`@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\xC2a\x1E/V[\x81R` \x01a\x1D\xCFa\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\x85Wa\x1E\x85a\x1EMV[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\x85Wa\x1E\x85a\x1EMV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\xD6Wa\x1E\xD6a\x1EMV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a\x1E\xF0W`\0\x80\xFD[a\x1E\xF8a\x1EcV[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x1F\x1FW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a\x1FAWa\x1FAa\x1EMV[\x80`@RP\x80`@\x84\x01\x85\x81\x11\x15a\x1FXW`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1A\x16W\x805\x83R` \x92\x83\x01\x92\x01a\x1FZV[`\0`\x80\x82\x84\x03\x12\x15a\x1F\x84W`\0\x80\xFD[a\x1F\x8Ca\x1EcV[\x90Pa\x1F\x98\x83\x83a\x1F\x0EV[\x81Ra\x1F\xA7\x83`@\x84\x01a\x1F\x0EV[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80a\x01 \x85\x87\x03\x12\x15a\x1F\xC9W`\0\x80\xFD[\x845\x93Pa\x1F\xDA\x86` \x87\x01a\x1E\xDEV[\x92Pa\x1F\xE9\x86``\x87\x01a\x1FrV[\x91Pa\x1F\xF8\x86`\xE0\x87\x01a\x1E\xDEV[\x90P\x92\x95\x91\x94P\x92PV[`\0` \x82\x84\x03\x12\x15a \x15W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x19\tW`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xB7W`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a RWa Ra\x1EMV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a mW`\0\x80\xFD[\x815` a \x82a }\x83a 9V[a\x1E\xAEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a \xA1W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xC3Wa \xB6\x81a %V[\x83R\x91\x83\x01\x91\x83\x01a \xA5V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a \xDFW`\0\x80\xFD[\x815` a \xEFa }\x83a 9V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a!\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xC3Wa!$\x88\x82a\x1E\xDEV[\x83R\x91\x83\x01\x91`@\x01a!\x12V[`\0\x82`\x1F\x83\x01\x12a!CW`\0\x80\xFD[\x815` a!Sa }\x83a 9V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a!rW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xC3W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a!\x95W`\0\x80\x81\xFD[a!\xA3\x89\x86\x83\x8B\x01\x01a \\V[\x84RP\x91\x83\x01\x91\x83\x01a!vV[`\0a\x01\x80\x82\x84\x03\x12\x15a!\xC4W`\0\x80\xFD[a!\xCCa\x1E\x8BV[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a!\xE5W`\0\x80\xFD[a!\xF1\x85\x83\x86\x01a \\V[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\"\x07W`\0\x80\xFD[a\"\x13\x85\x83\x86\x01a \xCEV[` \x84\x01R`@\x84\x015\x91P\x80\x82\x11\x15a\",W`\0\x80\xFD[a\"8\x85\x83\x86\x01a \xCEV[`@\x84\x01Ra\"J\x85``\x86\x01a\x1FrV[``\x84\x01Ra\"\\\x85`\xE0\x86\x01a\x1E\xDEV[`\x80\x84\x01Ra\x01 \x84\x015\x91P\x80\x82\x11\x15a\"vW`\0\x80\xFD[a\"\x82\x85\x83\x86\x01a \\V[`\xA0\x84\x01Ra\x01@\x84\x015\x91P\x80\x82\x11\x15a\"\x9CW`\0\x80\xFD[a\"\xA8\x85\x83\x86\x01a \\V[`\xC0\x84\x01Ra\x01`\x84\x015\x91P\x80\x82\x11\x15a\"\xC2W`\0\x80\xFD[Pa\"\xCF\x84\x82\x85\x01a!2V[`\xE0\x83\x01RP\x92\x91PPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a\"\xF3W`\0\x80\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#\x11W`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a#%W`\0\x80\xFD[\x815\x81\x81\x11\x15a#4W`\0\x80\xFD[\x89` \x82\x85\x01\x01\x11\x15a#FW`\0\x80\xFD[` \x83\x01\x96P\x94Pa#Z`@\x89\x01a %V[\x93P``\x88\x015\x91P\x80\x82\x11\x15a#pW`\0\x80\xFD[Pa#}\x88\x82\x89\x01a!\xB1V[\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a#\xC3W\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a#\x9EV[P\x94\x95\x94PPPPPV[`@\x81R`\0\x83Q`@\x80\x84\x01Ra#\xE9`\x80\x84\x01\x82a#\x8AV[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra$\x06\x82\x82a#\x8AV[\x92PPP\x82` \x83\x01R\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82a$JWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0` \x82\x84\x03\x12\x15a$aW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a$\x8AW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a$\xC3Wa$\xC3a$\x9BV[P\x03\x90V[`\0` \x82\x84\x03\x12\x15a$\xDAW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[`\0`\0\x19\x82\x14\x15a%\x05Wa%\x05a$\x9BV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a%\x1EW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82\x19\x82\x11\x15a%8Wa%8a$\x9BV[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a%OW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a%zW`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a%\xB1Wa%\xB1a$\x9BV[\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%\xF4W\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xD8V[P\x92\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&\x1BWa&\x1Ba$\x9BV[P\x02\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a&8Wa&8a$\x9BV[`\x01\x01\x93\x92PPPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 )\x8D\x81\xFB\xD2\xE1\xB4\x16\x1C\xA2\x8D\x04\xD8\xDC\xC9\xDE\x12\xE6\xEF\xE5\xA0F)A]p\x03\xC6\xDC=`\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", + 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\xB2V[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 \x03V[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\"\xDBV[a\x04\xC7V[`@Qa\0\xB3\x92\x91\x90a#\xCEV[`\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$\x17V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q`\0`\x02\x81\x10a\x020Wa\x020a$\x17V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x02LWa\x02La$\x17V[` \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$-V[\x90Pa\x03?a\x02\xE5a\x02\xDE\x88\x84a\x13\xE0V[\x86\x90a\x14wV[a\x02\xEDa\x15\x0BV[a\x035a\x03&\x85a\x03 `@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a\x13\xE0V[a\x03/\x8Ca\x15\xCBV[\x90a\x14wV[\x88b\x01\xD4\xC0a\x16[V[\x90\x98\x90\x97P\x95PPPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x03\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xCF\x91\x90a$OV[`\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[`\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[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R`\0\x84a\x05>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R`\0\x80Q` a&c\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\x05VWP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x05fWP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x05vWP`\xE0\x83\x01QQ\x85\x14[a\x05\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a&c\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\x06XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a&c\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\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R`\0\x80Q` a&c\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\x07\x08Wa\x07\x08a\x1EMV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x071W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07OWa\x07Oa\x1EMV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07xW\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\x07\xACWa\x07\xACa\x1EMV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xD5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xF5Wa\x07\xF5a\x1EMV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\x1EW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP`\0a\x08\xF0\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\xC7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEB\x91\x90a$xV[a\x18\x7FV[\x90P`\0[\x87` \x01QQ\x81\x10\x15a\x0B\x8BWa\t:\x88` \x01Q\x82\x81Q\x81\x10a\t\x1BWa\t\x1Ba$\x17V[` \x02` \x01\x01Q\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\tPWa\tPa$\x17V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\n\x10W` \x83\x01Qa\tq`\x01\x83a$\xB1V[\x81Q\x81\x10a\t\x81Wa\t\x81a$\x17V[` \x02` \x01\x01Q`\0\x1C\x83` \x01Q\x82\x81Q\x81\x10a\t\xA2Wa\t\xA2a$\x17V[` \x02` \x01\x01Q`\0\x1C\x11a\n\x10W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a&c\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\nUWa\nUa$\x17V[` \x02` \x01\x01Q\x8B\x8B`\0\x01Q\x85\x81Q\x81\x10a\ntWa\nta$\x17V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xB1\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\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a$\xC8V[`\x01`\x01`\xC0\x1B\x03\x16\x83`\0\x01Q\x82\x81Q\x81\x10a\x0B\x11Wa\x0B\x11a$\x17V[` \x02` \x01\x01\x81\x81RPPa\x0Bwa\x02\xDEa\x0BK\x84\x86`\0\x01Q\x85\x81Q\x81\x10a\x0B=Wa\x0B=a$\x17V[` \x02` \x01\x01Q\x16a\x19\x12V[\x8A` \x01Q\x84\x81Q\x81\x10a\x0BaWa\x0Baa$\x17V[` \x02` \x01\x01Qa\x19=\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P\x80a\x0B\x83\x81a$\xF1V[\x91PPa\x08\xF5V[PPa\x0B\x96\x83a\x1A!V[`\0\x80T\x91\x94P`\xFF\x90\x91\x16\x90\x81a\x0B\xAFW`\0a\x0C1V[\x7F\0\0\0\0\0\0\0\0\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\x0C\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C1\x91\x90a%\x0CV[\x90P`\0[\x8A\x81\x10\x15a\x12\xAFW\x82\x15a\r\x91W\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\x0C\x8DWa\x0C\x8Da$\x17V[`@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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xF1\x91\x90a%\x0CV[a\x0C\xFB\x91\x90a%%V[\x11a\r\x91W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R`\0\x80Q` a&c\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\xD2Wa\r\xD2a$\x17V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\r\xF6Wa\r\xF6a$\x17V[` \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\x0ERW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Ev\x91\x90a%=V[`\x01`\x01`@\x1B\x03\x19\x16a\x0E\x99\x8A`@\x01Q\x83\x81Q\x81\x10a\t\x1BWa\t\x1Ba$\x17V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0F5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R`\0\x80Q` a&c\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\x0Fe\x89`@\x01Q\x82\x81Q\x81\x10a\x0FNWa\x0FNa$\x17V[` \x02` \x01\x01Q\x87a\x14w\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\x0F\xA8Wa\x0F\xA8a$\x17V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x0F\xCCWa\x0F\xCCa$\x17V[` \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\x10(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10L\x91\x90a%hV[\x85` \x01Q\x82\x81Q\x81\x10a\x10bWa\x10ba$\x17V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x10\x8EWa\x10\x8Ea$\x17V[` \x02` \x01\x01Q\x85`\0\x01Q\x82\x81Q\x81\x10a\x10\xACWa\x10\xACa$\x17V[` \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\x9AWa\x11$\x86`\0\x01Q\x82\x81Q\x81\x10a\x10\xF6Wa\x10\xF6a$\x17V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x11\x10Wa\x11\x10a$\x17V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x12\x88W\x7F\0\0\0\0\0\0\0\0\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\x11jWa\x11ja$\x17V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x11\x8EWa\x11\x8Ea$\x17V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x11\xACWa\x11\xACa$\x17V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x11\xC5Wa\x11\xC5a$\x17V[` \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\x12)W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12M\x91\x90a%hV[\x87Q\x80Q\x85\x90\x81\x10a\x12aWa\x12aa$\x17V[` \x02` \x01\x01\x81\x81Qa\x12u\x91\x90a%\x91V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[\x80a\x12\x92\x81a$\xF1V[\x91PPa\x10\xD0V[PP\x80\x80a\x12\xA7\x90a$\xF1V[\x91PPa\x0C6V[PPP`\0\x80a\x12\xC9\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x01\xC3V[\x91P\x91P\x81a\x13:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a&c\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\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R`\0\x80Q` a&c\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\xB6\x92\x91\x90a%\xB9V[`@\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\xFCa\x1DsV[\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\x14/Wa\x141V[\xFE[P\x80a\x14oW`@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\x14\x93a\x1D\x91V[\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\x14/WP\x80a\x14oW`@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\x15\x13a\x1D\xAFV[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\xFB`\0\x80Q` a&C\x839\x81Q\x91R\x86a$-V[\x90P[a\x16\x07\x81a\x1A\xBCV[\x90\x93P\x91P`\0\x80Q` a&C\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a\x16AW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a&C\x839\x81Q\x91R`\x01\x82\x08\x90Pa\x15\xFEV[`@\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\x16\x8Da\x1D\xD4V[`\0[`\x02\x81\x10\x15a\x18RW`\0a\x16\xA6\x82`\x06a&\x01V[\x90P\x84\x82`\x02\x81\x10a\x16\xBAWa\x16\xBAa$\x17V[` \x02\x01QQ\x83a\x16\xCC\x83`\0a%%V[`\x0C\x81\x10a\x16\xDCWa\x16\xDCa$\x17V[` \x02\x01R\x84\x82`\x02\x81\x10a\x16\xF3Wa\x16\xF3a$\x17V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x17\n\x91\x90a%%V[`\x0C\x81\x10a\x17\x1AWa\x17\x1Aa$\x17V[` \x02\x01R\x83\x82`\x02\x81\x10a\x171Wa\x171a$\x17V[` \x02\x01QQQ\x83a\x17D\x83`\x02a%%V[`\x0C\x81\x10a\x17TWa\x17Ta$\x17V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17kWa\x17ka$\x17V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x17\x84\x83`\x03a%%V[`\x0C\x81\x10a\x17\x94Wa\x17\x94a$\x17V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\xABWa\x17\xABa$\x17V[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x17\xC6Wa\x17\xC6a$\x17V[` \x02\x01Q\x83a\x17\xD7\x83`\x04a%%V[`\x0C\x81\x10a\x17\xE7Wa\x17\xE7a$\x17V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\xFEWa\x17\xFEa$\x17V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x18\x19Wa\x18\x19a$\x17V[` \x02\x01Q\x83a\x18*\x83`\x05a%%V[`\x0C\x81\x10a\x18:Wa\x18:a$\x17V[` \x02\x01RP\x80a\x18J\x81a$\xF1V[\x91PPa\x16\x90V[Pa\x18[a\x1D\xF3V[`\0` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[`\0\x80a\x18\x8B\x84a\x1B>V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a\x19\tW`@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\x0CWa\x19'`\x01\x84a$\xB1V[\x90\x92\x16\x91\x80a\x195\x81a& V[\x91PPa\x19\x16V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a\x19\x99W`@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\xADWP\x81a\x19\x0CV[`@\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\x16W`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x14\x15a\x19\xF9Wa\x19\xF6\x84\x84a\x14wV[\x93P[a\x1A\x03\x83\x84a\x14wV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a\x19\xC9V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x1AFWP` \x82\x01Q\x15[\x15a\x1AdWPP`@\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&C\x839\x81Q\x91R\x84` \x01Qa\x1A\x97\x91\x90a$-V[a\x1A\xAF\x90`\0\x80Q` a&C\x839\x81Q\x91Ra$\xB1V[\x90R\x92\x91PPV[\x91\x90PV[`\0\x80\x80`\0\x80Q` a&C\x839\x81Q\x91R`\x03`\0\x80Q` a&C\x839\x81Q\x91R\x86`\0\x80Q` a&C\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a\x1B2\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&C\x839\x81Q\x91Ra\x1C\xCBV[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a\x1B\xC7W`@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\xD5WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a\x1B\xEBWa\x1B\xEBa$\x17V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\x1C\xC2W\x84\x81\x81Q\x81\x10a\x1C\x19Wa\x1C\x19a$\x17V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\x1C\xAEW`@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\xBB\x81a$\xF1V[\x90Pa\x1B\xFEV[P\x90\x93\x92PPPV[`\0\x80a\x1C\xD6a\x1D\xF3V[a\x1C\xDEa\x1E\x11V[` \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\x14/WP\x82a\x1DhW`@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\xC2a\x1E/V[\x81R` \x01a\x1D\xCFa\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\x85Wa\x1E\x85a\x1EMV[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\x85Wa\x1E\x85a\x1EMV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\xD6Wa\x1E\xD6a\x1EMV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a\x1E\xF0W`\0\x80\xFD[a\x1E\xF8a\x1EcV[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x1F\x1FW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a\x1FAWa\x1FAa\x1EMV[\x80`@RP\x80`@\x84\x01\x85\x81\x11\x15a\x1FXW`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1A\x16W\x805\x83R` \x92\x83\x01\x92\x01a\x1FZV[`\0`\x80\x82\x84\x03\x12\x15a\x1F\x84W`\0\x80\xFD[a\x1F\x8Ca\x1EcV[\x90Pa\x1F\x98\x83\x83a\x1F\x0EV[\x81Ra\x1F\xA7\x83`@\x84\x01a\x1F\x0EV[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80a\x01 \x85\x87\x03\x12\x15a\x1F\xC9W`\0\x80\xFD[\x845\x93Pa\x1F\xDA\x86` \x87\x01a\x1E\xDEV[\x92Pa\x1F\xE9\x86``\x87\x01a\x1FrV[\x91Pa\x1F\xF8\x86`\xE0\x87\x01a\x1E\xDEV[\x90P\x92\x95\x91\x94P\x92PV[`\0` \x82\x84\x03\x12\x15a \x15W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x19\tW`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xB7W`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a RWa Ra\x1EMV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a mW`\0\x80\xFD[\x815` a \x82a }\x83a 9V[a\x1E\xAEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a \xA1W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xC3Wa \xB6\x81a %V[\x83R\x91\x83\x01\x91\x83\x01a \xA5V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a \xDFW`\0\x80\xFD[\x815` a \xEFa }\x83a 9V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a!\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xC3Wa!$\x88\x82a\x1E\xDEV[\x83R\x91\x83\x01\x91`@\x01a!\x12V[`\0\x82`\x1F\x83\x01\x12a!CW`\0\x80\xFD[\x815` a!Sa }\x83a 9V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a!rW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xC3W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a!\x95W`\0\x80\x81\xFD[a!\xA3\x89\x86\x83\x8B\x01\x01a \\V[\x84RP\x91\x83\x01\x91\x83\x01a!vV[`\0a\x01\x80\x82\x84\x03\x12\x15a!\xC4W`\0\x80\xFD[a!\xCCa\x1E\x8BV[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a!\xE5W`\0\x80\xFD[a!\xF1\x85\x83\x86\x01a \\V[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\"\x07W`\0\x80\xFD[a\"\x13\x85\x83\x86\x01a \xCEV[` \x84\x01R`@\x84\x015\x91P\x80\x82\x11\x15a\",W`\0\x80\xFD[a\"8\x85\x83\x86\x01a \xCEV[`@\x84\x01Ra\"J\x85``\x86\x01a\x1FrV[``\x84\x01Ra\"\\\x85`\xE0\x86\x01a\x1E\xDEV[`\x80\x84\x01Ra\x01 \x84\x015\x91P\x80\x82\x11\x15a\"vW`\0\x80\xFD[a\"\x82\x85\x83\x86\x01a \\V[`\xA0\x84\x01Ra\x01@\x84\x015\x91P\x80\x82\x11\x15a\"\x9CW`\0\x80\xFD[a\"\xA8\x85\x83\x86\x01a \\V[`\xC0\x84\x01Ra\x01`\x84\x015\x91P\x80\x82\x11\x15a\"\xC2W`\0\x80\xFD[Pa\"\xCF\x84\x82\x85\x01a!2V[`\xE0\x83\x01RP\x92\x91PPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a\"\xF3W`\0\x80\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#\x11W`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a#%W`\0\x80\xFD[\x815\x81\x81\x11\x15a#4W`\0\x80\xFD[\x89` \x82\x85\x01\x01\x11\x15a#FW`\0\x80\xFD[` \x83\x01\x96P\x94Pa#Z`@\x89\x01a %V[\x93P``\x88\x015\x91P\x80\x82\x11\x15a#pW`\0\x80\xFD[Pa#}\x88\x82\x89\x01a!\xB1V[\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a#\xC3W\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a#\x9EV[P\x94\x95\x94PPPPPV[`@\x81R`\0\x83Q`@\x80\x84\x01Ra#\xE9`\x80\x84\x01\x82a#\x8AV[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra$\x06\x82\x82a#\x8AV[\x92PPP\x82` \x83\x01R\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82a$JWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0` \x82\x84\x03\x12\x15a$aW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a$\x8AW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a$\xC3Wa$\xC3a$\x9BV[P\x03\x90V[`\0` \x82\x84\x03\x12\x15a$\xDAW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[`\0`\0\x19\x82\x14\x15a%\x05Wa%\x05a$\x9BV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a%\x1EW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82\x19\x82\x11\x15a%8Wa%8a$\x9BV[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a%OW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a%zW`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x19\tW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a%\xB1Wa%\xB1a$\x9BV[\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%\xF4W\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xD8V[P\x92\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&\x1BWa&\x1Ba$\x9BV[P\x02\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a&8Wa&8a$\x9BV[`\x01\x01\x93\x92PPPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 )\x8D\x81\xFB\xD2\xE1\xB4\x16\x1C\xA2\x8D\x04\xD8\xDC\xC9\xDE\x12\xE6\xEF\xE5\xA0F)A]p\x03\xC6\xDC, @@ -1880,13 +1930,18 @@ pub mod BLSSignatureChecker { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2032,16 +2087,21 @@ pub mod BLSSignatureChecker { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2137,16 +2197,21 @@ pub mod BLSSignatureChecker { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2242,16 +2307,21 @@ pub mod BLSSignatureChecker { ```solidity function setStaleStakesForbidden(bool value) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setStaleStakesForbiddenReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2351,16 +2421,21 @@ pub mod BLSSignatureChecker { ```solidity function stakeRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryCall {} ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2456,16 +2531,21 @@ pub mod BLSSignatureChecker { ```solidity function staleStakesForbidden() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct staleStakesForbiddenCall {} ///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct staleStakesForbiddenReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2561,7 +2641,7 @@ pub mod BLSSignatureChecker { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct trySignatureAndApkVerificationCall { pub msgHash: alloy::sol_types::private::FixedBytes<32>, @@ -2570,13 +2650,18 @@ pub mod BLSSignatureChecker { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct trySignatureAndApkVerificationReturn { pub pairingSuccessful: bool, pub siganatureIsValid: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/bn254.rs b/crates/utils/src/middleware/bn254.rs similarity index 93% rename from crates/utils/src/bn254.rs rename to crates/utils/src/middleware/bn254.rs index ad254164..0d2c9e35 100644 --- a/crates/utils/src/bn254.rs +++ b/crates/utils/src/middleware/bn254.rs @@ -9,29 +9,34 @@ interface BN254 {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod BN254 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059517be07911a7d36769780693acca5a35b51f47c849b3781223d4fb19eccf2f64736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000290b518949668db352264350a88412757de1cd3ef079990ac8fc5963da6c6b64736f6c634300080c0033 /// ``` #[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", + 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)\x0BQ\x89If\x8D\xB3R&CP\xA8\x84\x12u}\xE1\xCD>\xF0y\x99\n\xC8\xFCYc\xDAlkdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059517be07911a7d36769780693acca5a35b51f47c849b3781223d4fb19eccf2f64736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000290b518949668db352264350a88412757de1cd3ef079990ac8fc5963da6c6b64736f6c634300080c0033 /// ``` #[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", + 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)\x0BQ\x89If\x8D\xB3R&CP\xA8\x84\x12u}\xE1\xCD>\xF0y\x99\n\xC8\xFCYc\xDAlkdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. diff --git a/crates/utils/src/middleware/byteslib.rs b/crates/utils/src/middleware/byteslib.rs new file mode 100644 index 00000000..cde739a0 --- /dev/null +++ b/crates/utils/src/middleware/byteslib.rs @@ -0,0 +1,224 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BytesLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BytesLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206675c2b4f5202d6c9a6b684762f70b52edc54e2232d1d415cac8218f1aefbb5864736f6c634300080c0033 + /// ``` + #[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 fu\xC2\xB4\xF5 -l\x9AkhGb\xF7\x0BR\xED\xC5N\"2\xD1\xD4\x15\xCA\xC8!\x8F\x1A\xEF\xBBXdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206675c2b4f5202d6c9a6b684762f70b52edc54e2232d1d415cac8218f1aefbb5864736f6c634300080c0033 + /// ``` + #[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 fu\xC2\xB4\xF5 -l\x9AkhGb\xF7\x0BR\xED\xC5N\"2\xD1\xD4\x15\xCA\xC8!\x8F\x1A\xEF\xBBXdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BytesLib`](self) contract instance. + + See the [wrapper's documentation](`BytesLibInstance`) 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, + ) -> BytesLibInstance { + BytesLibInstance::::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>> + { + BytesLibInstance::::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 { + BytesLibInstance::::deploy_builder(provider) + } + /**A [`BytesLib`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BytesLib`](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 BytesLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BytesLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BytesLibInstance") + .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, + > BytesLibInstance + { + /**Creates a new wrapper around an on-chain [`BytesLib`](self) contract instance. + + See the [wrapper's documentation](`BytesLibInstance`) 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 BytesLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BytesLibInstance { + BytesLibInstance { + 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, + > BytesLibInstance + { + /// 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, + > BytesLibInstance + { + /// 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/middleware/checkpointsupgradeable.rs similarity index 93% rename from crates/utils/src/checkpointsupgradeable.rs rename to crates/utils/src/middleware/checkpointsupgradeable.rs index ace6eed1..bdb1d68a 100644 --- a/crates/utils/src/checkpointsupgradeable.rs +++ b/crates/utils/src/middleware/checkpointsupgradeable.rs @@ -9,29 +9,34 @@ interface CheckpointsUpgradeable {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod CheckpointsUpgradeable { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5a7542902fe498ba3876024fc428c47ca46aa619453e1349eddcb270c9e8e7164736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a28c65cfe50f0adb3cb3ce41b3c8ad14a072ddde6d722886425e8d07bd1858e64736f6c634300080c0033 /// ``` #[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", + 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 *(\xC6\\\xFEP\xF0\xAD\xB3\xCB<\xE4\x1B<\x8A\xD1J\x07-\xDD\xE6\xD7\"\x88d%\xE8\xD0{\xD1\x85\x8EdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5a7542902fe498ba3876024fc428c47ca46aa619453e1349eddcb270c9e8e7164736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a28c65cfe50f0adb3cb3ce41b3c8ad14a072ddde6d722886425e8d07bd1858e64736f6c634300080c0033 /// ``` #[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", + 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 *(\xC6\\\xFEP\xF0\xAD\xB3\xCB<\xE4\x1B<\x8A\xD1J\x07-\xDD\xE6\xD7\"\x88d%\xE8\xD0{\xD1\x85\x8EdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`CheckpointsUpgradeable`](self) contract instance. diff --git a/crates/utils/src/middleware/constants.rs b/crates/utils/src/middleware/constants.rs new file mode 100644 index 00000000..8ae8a223 --- /dev/null +++ b/crates/utils/src/middleware/constants.rs @@ -0,0 +1,224 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Constants {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Constants { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122040682a9efb33ef80efb18cf3c104af048330272c933f12abf7e50fb633c3655764736f6c634300080c0033 + /// ``` + #[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`?\x80`\x1D`\09`\0\xF3\xFE`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 @h*\x9E\xFB3\xEF\x80\xEF\xB1\x8C\xF3\xC1\x04\xAF\x04\x830',\x93?\x12\xAB\xF7\xE5\x0F\xB63\xC3eWdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600080fdfea264697066735822122040682a9efb33ef80efb18cf3c104af048330272c933f12abf7e50fb633c3655764736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 @h*\x9E\xFB3\xEF\x80\xEF\xB1\x8C\xF3\xC1\x04\xAF\x04\x830',\x93?\x12\xAB\xF7\xE5\x0F\xB63\xC3eWdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Constants`](self) contract instance. + + See the [wrapper's documentation](`ConstantsInstance`) 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, + ) -> ConstantsInstance { + ConstantsInstance::::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>> + { + ConstantsInstance::::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 { + ConstantsInstance::::deploy_builder(provider) + } + /**A [`Constants`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Constants`](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 ConstantsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ConstantsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ConstantsInstance") + .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, + > ConstantsInstance + { + /**Creates a new wrapper around an on-chain [`Constants`](self) contract instance. + + See the [wrapper's documentation](`ConstantsInstance`) 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 ConstantsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ConstantsInstance { + ConstantsInstance { + 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, + > ConstantsInstance + { + /// 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, + > ConstantsInstance + { + /// 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/middleware/context.rs b/crates/utils/src/middleware/context.rs new file mode 100644 index 00000000..6e35c292 --- /dev/null +++ b/crates/utils/src/middleware/context.rs @@ -0,0 +1,224 @@ +/** + +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::pub_underscore_fields, + 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/middleware/contextupgradeable.rs b/crates/utils/src/middleware/contextupgradeable.rs new file mode 100644 index 00000000..c2e7ba7c --- /dev/null +++ b/crates/utils/src/middleware/contextupgradeable.rs @@ -0,0 +1,407 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/create2.rs b/crates/utils/src/middleware/create2.rs new file mode 100644 index 00000000..e5b31453 --- /dev/null +++ b/crates/utils/src/middleware/create2.rs @@ -0,0 +1,224 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Create2 {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Create2 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cd48227bb69147949bdace56ce875788c7ed230e740ba716186860284cd3998e64736f6c634300080c0033 + /// ``` + #[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 \xCDH\"{\xB6\x91G\x94\x9B\xDA\xCEV\xCE\x87W\x88\xC7\xED#\x0Et\x0B\xA7\x16\x18h`(L\xD3\x99\x8EdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cd48227bb69147949bdace56ce875788c7ed230e740ba716186860284cd3998e64736f6c634300080c0033 + /// ``` + #[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 \xCDH\"{\xB6\x91G\x94\x9B\xDA\xCEV\xCE\x87W\x88\xC7\xED#\x0Et\x0B\xA7\x16\x18h`(L\xD3\x99\x8EdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Create2`](self) contract instance. + + See the [wrapper's documentation](`Create2Instance`) 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, + ) -> Create2Instance { + Create2Instance::::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>> + { + Create2Instance::::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 { + Create2Instance::::deploy_builder(provider) + } + /**A [`Create2`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Create2`](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 Create2Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for Create2Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("Create2Instance") + .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, + > Create2Instance + { + /**Creates a new wrapper around an on-chain [`Create2`](self) contract instance. + + See the [wrapper's documentation](`Create2Instance`) 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 Create2Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> Create2Instance { + Create2Instance { + 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, + > Create2Instance + { + /// 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, + > Create2Instance + { + /// 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/middleware/delegationmanager.rs similarity index 74% rename from crates/utils/src/delegationmanager.rs rename to crates/utils/src/middleware/delegationmanager.rs index f697072b..b35730c8 100644 --- a/crates/utils/src/delegationmanager.rs +++ b/crates/utils/src/middleware/delegationmanager.rs @@ -8,21 +8,31 @@ library IDelegationManager { 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)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -229,7 +239,7 @@ pub mod IDelegationManager { /**```solidity struct QueuedWithdrawalParams { address[] strategies; uint256[] shares; address withdrawer; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct QueuedWithdrawalParams { pub strategies: alloy::sol_types::private::Vec, @@ -237,7 +247,12 @@ pub mod IDelegationManager { alloy::sol_types::private::Vec, pub withdrawer: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -442,7 +457,7 @@ pub mod IDelegationManager { /**```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct Withdrawal { pub staker: alloy::sol_types::private::Address, @@ -454,7 +469,12 @@ pub mod IDelegationManager { pub shares: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -876,20 +896,30 @@ library ISignatureUtils { struct SignatureWithExpiry { bytes signature; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2966,41 +2996,56 @@ interface DelegationManager { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod DelegationManager { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6101006040523480156200001257600080fd5b5060405162005c3338038062005c33833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a0a6200022960003960006126870152600081816105b10152818161102e015281816113aa01528181611c0a015281816129e001528181613e93015261437f015260006107620152600081816104f901528181610ffc0152818161137801528181611c9e01528181612aad01528181612c3001528181613fb901526144250152615a0a6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a610355366004614835565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461489b565b6109ce565b6103ba6103b5366004614835565b610a90565b60405161036491906148f6565b6103da6103d5366004614993565b610df9565b005b6103da6103ea3660046149e6565b610f3e565b6103da6103fd366004614a0a565b610ff1565b6103da610410366004614a4b565b6110a8565b6103da610423366004614a64565b6111e7565b61035a6104363660046149e6565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a0a565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614acf565b611229565b6103da6104bc366004614a0a565b61136d565b61035a6104cf3660046149e6565b609b6020526000908152604090205481565b6103da6104ef366004614b76565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149e6565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149e6565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e73565b611641565b610575610606366004614eaf565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ee0565b611671565b6103da610644366004614a4b565b61170c565b61051b6106573660046149e6565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149e6565b61171d565b6103da61173e565b61035a61069b366004614f6f565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615050565b611752565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150e0565b61197e565b604051610364919061516a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461517d565b611a58565b61035a61074b3660046149e6565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a4b565b609e6020526000908152604090205460ff1681565b6105756107b53660046151b2565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149e6565b60a16020526000908152604090205481565b61086e61080c3660046149e6565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151de565b611b2a565b61035a62034bc081565b6108d46108cf3660046149e6565b611be3565b60405161036492919061525f565b6103ba6108f03660046149e6565b611f9b565b6103da610903366004615284565b61245f565b6103da6109163660046152dc565b61257c565b6103da6109293660046149e6565b61260d565b61035a612683565b6103da610944366004614a4b565b6126c1565b609d54600090815b838110156109c657600060a16000878785818110610971576109716152f8565b905060200201602081019061098691906149e6565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf81615324565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c612683565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc9061533f565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c18565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b436152f8565b9050602002810190610b559190615376565b610b63906020810190615396565b9050878783818110610b7757610b776152f8565b9050602002810190610b899190615376565b610b939080615396565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b6152f8565b9050602002810190610c2d9190615376565b610c3e9060608101906040016149e6565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd16152f8565b9050602002810190610ce39190615376565b610cf49060608101906040016149e6565b8a8a86818110610d0657610d066152f8565b9050602002810190610d189190615376565b610d229080615396565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d686152f8565b9050602002810190610d7a9190615376565b610d88906020810190615396565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061281d92505050565b838281518110610dd157610dd16152f8565b602090810291909101015280610de681615324565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612ddd565b604080518082019091526060815260006020820152610eb43380836000612fd0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153df565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f30929190615431565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615460565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc9061547d565b610fee81613266565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154c7565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561335d565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190615524565b6111305760405162461bcd60e51b8152600401610abc90615541565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133d8565b6110a184848484613432565b6001600160a01b0383166000908152609b602052604081205461122085828686611b2a565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613658565b6112fb613742565b609755611307896137d9565b6113108661382b565b61131c85858585613432565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154c7565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613925565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc9061533f565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be6152f8565b90506020028101906114d09190615589565b8989848181106114e2576114e26152f8565b90506020028101906114f49190615396565b898986818110611506576115066152f8565b9050602002013588888781811061151f5761151f6152f8565b9050602002016020810190611534919061559f565b6139a0565b61154281615324565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190615524565b6116025760405162461bcd60e51b8152600401610abc90615541565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615630565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc9061533f565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139a0565b5050600160c95550505050565b6117146133d8565b610fee8161382b565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117466133d8565b61175060006137d9565b565b42836020015110156117d65760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117df8561155a565b156118685760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b6118718461171d565b6118fd5760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119398783888860200151611b2a565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611969908890839061418a565b61197587878686612fd0565b50505050505050565b6060600082516001600160401b0381111561199b5761199b614c18565b6040519080825280602002602001820160405280156119c4578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a0257611a026152f8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a3d57611a3d6152f8565b6020908102919091010152611a5181615324565b90506119ca565b611a613361171d565b611ae35760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b1e929190615431565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611ba0612683565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190615643565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0f91908101906156b7565b9150915060008313611d2657909590945092505050565b606080835160001415611de0576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d9b57611d9b6152f8565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611dcf57611dcf6152f8565b602002602001018181525050611f8e565b8351611ded906001615771565b6001600160401b03811115611e0457611e04614c18565b604051908082528060200260200182016040528015611e2d578160200160208202803683370190505b50915081516001600160401b03811115611e4957611e49614c18565b604051908082528060200260200182016040528015611e72578160200160208202803683370190505b50905060005b8451811015611f0c57848181518110611e9357611e936152f8565b6020026020010151838281518110611ead57611ead6152f8565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611edf57611edf6152f8565b6020026020010151828281518110611ef957611ef96152f8565b6020908102919091010152600101611e78565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f319190615789565b81518110611f4157611f416152f8565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f719190615789565b81518110611f8157611f816152f8565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fc75760405162461bcd60e51b8152600401610abc9061533f565b611fd08361155a565b6120505760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120598361171d565b156120cc5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121485760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a60205260409020549091169033148061217b5750336001600160a01b038216145b806121a257506001600160a01b038181166000908152609960205260409020600101541633145b6122145760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061222086611be3565b9092509050336001600160a01b0387161461227657826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516122f8576040805160008152602081019091529450612456565b81516001600160401b0381111561231157612311614c18565b60405190808252806020026020018201604052801561233a578160200160208202803683370190505b50945060005b8251811015612454576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123a0576123a06152f8565b6020026020010151826000815181106123bb576123bb6152f8565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123ed576123ed6152f8565b602002602001015181600081518110612408576124086152f8565b60200260200101818152505061242189878b858561281d565b888481518110612433576124336152f8565b6020026020010181815250505050808061244c90615324565b915050612340565b505b50505050919050565b6124683361155a565b156124e65760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6124ef8361171d565b6125705760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fd0565b6125853361171d565b6126035760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612ddd565b6126156133d8565b6001600160a01b03811661267a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137d9565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126b4575060975490565b6126bc613742565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127389190615460565b6001600160a01b0316336001600160a01b0316146127685760405162461bcd60e51b8152600401610abc9061547d565b6066541981196066541916146127e65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128b45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b825161293e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612ceb576001600160a01b03861615612997576129978688868481518110612970576129706152f8565b602002602001015186858151811061298a5761298a6152f8565b602002602001015161335d565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129c7576129c76152f8565b60200260200101516001600160a01b03161415612a90577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a2057612a206152f8565b60200260200101516040518363ffffffff1660e01b8152600401612a599291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a7357600080fd5b505af1158015612a87573d6000803e3d6000fd5b50505050612ce3565b846001600160a01b0316876001600160a01b03161480612b6257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612aec57612aec6152f8565b60200260200101516040518263ffffffff1660e01b8152600401612b1f91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b609190615524565b155b612c2e5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c7057612c706152f8565b6020026020010151868581518110612c8a57612c8a6152f8565b60200260200101516040518463ffffffff1660e01b8152600401612cb0939291906157a0565b600060405180830381600087803b158015612cca57600080fd5b505af1158015612cde573d6000803e3d6000fd5b505050505b600101612941565b506001600160a01b0386166000908152609f60205260408120805491829190612d1383615324565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d7b82611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612dc990839085906157c4565b60405180910390a198975050505050505050565b6213c680612df160608301604084016157dd565b63ffffffff161115612ea65760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612ee290606084019084016157dd565b63ffffffff161015612f785760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612f9c828261581a565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b1e9084906153df565b60665460009060019081161415612ff95760405162461bcd60e51b8152600401610abc9061533f565b6001600160a01b0380851660009081526099602052604090206001015416801580159061302f5750336001600160a01b03821614155b80156130445750336001600160a01b03861614155b156131b15742846020015110156130c35760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561315d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161319e9088908890859088906109ce565b90506131af8282876000015161418a565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061321088611be3565b9150915060005b82518110156113625761325e888a858481518110613237576132376152f8565b6020026020010151858581518110613251576132516152f8565b6020026020010151613925565b600101613217565b6001600160a01b0381166132f45760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613394908490615789565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157a0565b6033546001600160a01b031633146117505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134ba5760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136505760008686838181106134da576134da6152f8565b90506020020160208101906134ef91906149e6565b6001600160a01b038116600090815260a1602052604081205491925086868581811061351d5761351d6152f8565b90506020020135905062034bc08111156135e15760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a15050508061364990615324565b90506134be565b505050505050565b6065546001600160a01b031615801561367957506001600160a01b03821615155b6136fb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261373e82613266565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138e45760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061395c908490615771565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157a0565b60006139ae6105f38761587d565b6000818152609e602052604090205490915060ff16613a2f5760405162461bcd60e51b815260206004820152604360248201526000805160206159b583398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a4460a0890160808a016157dd565b63ffffffff16613a549190615771565b1115613adc5760405162461bcd60e51b815260206004820152605f60248201526000805160206159b583398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613aec60608701604088016149e6565b6001600160a01b0316336001600160a01b031614613b795760405162461bcd60e51b815260206004820152605060248201526000805160206159b583398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613bfb57613b8c60a0870187615396565b85149050613bfb5760405162461bcd60e51b815260206004820152604260248201526000805160206159b583398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d605760005b613c2760a0880188615396565b9050811015613d5a574360a16000613c4260a08b018b615396565b85818110613c5257613c526152f8565b9050602002016020810190613c6791906149e6565b6001600160a01b03168152602081019190915260400160002054613c9160a08a0160808b016157dd565b63ffffffff16613ca19190615771565b1115613cbf5760405162461bcd60e51b8152600401610abc9061588f565b613d52613ccf60208901896149e6565b33613cdd60a08b018b615396565b85818110613ced57613ced6152f8565b9050602002016020810190613d0291906149e6565b613d0f60c08c018c615396565b86818110613d1f57613d1f6152f8565b905060200201358a8a87818110613d3857613d386152f8565b9050602002016020810190613d4d91906149e6565b614344565b600101613c1a565b5061414f565b336000908152609a60205260408120546001600160a01b0316905b613d8860a0890189615396565b905081101561414c574360a16000613da360a08c018c615396565b85818110613db357613db36152f8565b9050602002016020810190613dc891906149e6565b6001600160a01b03168152602081019190915260400160002054613df260a08b0160808c016157dd565b63ffffffff16613e029190615771565b1115613e205760405162461bcd60e51b8152600401610abc9061588f565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e4260a08a018a615396565b83818110613e5257613e526152f8565b9050602002016020810190613e6791906149e6565b6001600160a01b03161415613fb7576000613e8560208a018a6149e6565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613ec660c08e018e615396565b87818110613ed657613ed66152f8565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4e9190615643565b6001600160a01b038084166000908152609a6020526040902054919250168015613faf57613faf8184613f8460a08f018f615396565b88818110613f9457613f946152f8565b9050602002016020810190613fa991906149e6565b85613925565b505050614144565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea133898985818110613ff957613ff96152f8565b905060200201602081019061400e91906149e6565b61401b60a08d018d615396565b8681811061402b5761402b6152f8565b905060200201602081019061404091906149e6565b61404d60c08e018e615396565b8781811061405d5761405d6152f8565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140bd57600080fd5b505af11580156140d1573d6000803e3d6000fd5b505050506001600160a01b038216156141445761414482336140f660a08c018c615396565b85818110614106576141066152f8565b905060200201602081019061411b91906149e6565b61412860c08d018d615396565b86818110614138576141386152f8565b90506020020135613925565b600101613d7b565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142a457604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141ca9086908690600401615917565b602060405180830381865afa1580156141e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420b9190615974565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142b88383614484565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156143ef5760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143b8908890889087906004016157a0565b600060405180830381600087803b1580156143d257600080fd5b505af11580156143e6573d6000803e3d6000fd5b5050505061447d565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561446957600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b600080600061449385856144a0565b915091506109c681614510565b6000808251604114156144d75760208301516040840151606085015160001a6144cb878285856146cb565b94509450505050614509565b82516040141561450157602083015160408401516144f68683836147b8565b935093505050614509565b506000905060025b9250929050565b60008160048111156145245761452461599e565b141561452d5750565b60018160048111156145415761454161599e565b141561458f5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145a3576145a361599e565b14156145f15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b60038160048111156146055761460561599e565b141561465e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b60048160048111156146725761467261599e565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561470257506000905060036147af565b8460ff16601b1415801561471a57508460ff16601c14155b1561472b57506000905060046147af565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561477f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147a8576000600192509250506147af565b9150600090505b94509492505050565b6000806001600160ff1b038316816147d560ff86901c601b615771565b90506147e3878288856146cb565b935093505050935093915050565b60008083601f84011261480357600080fd5b5081356001600160401b0381111561481a57600080fd5b6020830191508360208260051b850101111561450957600080fd5b6000806020838503121561484857600080fd5b82356001600160401b0381111561485e57600080fd5b61486a858286016147f1565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b803561489681614876565b919050565b600080600080600060a086880312156148b357600080fd5b85356148be81614876565b945060208601356148ce81614876565b935060408601356148de81614876565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b8181101561492e57835183529284019291840191600101614912565b50909695505050505050565b60006060828403121561494c57600080fd5b50919050565b60008083601f84011261496457600080fd5b5081356001600160401b0381111561497b57600080fd5b60208301915083602082850101111561450957600080fd5b6000806000608084860312156149a857600080fd5b6149b2858561493a565b925060608401356001600160401b038111156149cd57600080fd5b6149d986828701614952565b9497909650939450505050565b6000602082840312156149f857600080fd5b8135614a0381614876565b9392505050565b600080600060608486031215614a1f57600080fd5b8335614a2a81614876565b92506020840135614a3a81614876565b929592945050506040919091013590565b600060208284031215614a5d57600080fd5b5035919050565b60008060008060408587031215614a7a57600080fd5b84356001600160401b0380821115614a9157600080fd5b614a9d888389016147f1565b90965094506020870135915080821115614ab657600080fd5b50614ac3878288016147f1565b95989497509550505050565b60008060008060008060008060c0898b031215614aeb57600080fd5b8835614af681614876565b97506020890135614b0681614876565b9650604089013595506060890135945060808901356001600160401b0380821115614b3057600080fd5b614b3c8c838d016147f1565b909650945060a08b0135915080821115614b5557600080fd5b50614b628b828c016147f1565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b9257600080fd5b88356001600160401b0380821115614ba957600080fd5b614bb58c838d016147f1565b909a50985060208b0135915080821115614bce57600080fd5b614bda8c838d016147f1565b909850965060408b0135915080821115614bf357600080fd5b614bff8c838d016147f1565b909650945060608b0135915080821115614b5557600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c5057614c50614c18565b60405290565b604080519081016001600160401b0381118282101715614c5057614c50614c18565b604051601f8201601f191681016001600160401b0381118282101715614ca057614ca0614c18565b604052919050565b63ffffffff81168114610fee57600080fd5b803561489681614ca8565b60006001600160401b03821115614cde57614cde614c18565b5060051b60200190565b600082601f830112614cf957600080fd5b81356020614d0e614d0983614cc5565b614c78565b82815260059290921b84018101918181019086841115614d2d57600080fd5b8286015b84811015614d51578035614d4481614876565b8352918301918301614d31565b509695505050505050565b600082601f830112614d6d57600080fd5b81356020614d7d614d0983614cc5565b82815260059290921b84018101918181019086841115614d9c57600080fd5b8286015b84811015614d515780358352918301918301614da0565b600060e08284031215614dc957600080fd5b614dd1614c2e565b9050614ddc8261488b565b8152614dea6020830161488b565b6020820152614dfb6040830161488b565b604082015260608201356060820152614e1660808301614cba565b608082015260a08201356001600160401b0380821115614e3557600080fd5b614e4185838601614ce8565b60a084015260c0840135915080821115614e5a57600080fd5b50614e6784828501614d5c565b60c08301525092915050565b600060208284031215614e8557600080fd5b81356001600160401b03811115614e9b57600080fd5b614ea784828501614db7565b949350505050565b600060208284031215614ec157600080fd5b813560ff81168114614a0357600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614ef857600080fd5b85356001600160401b0380821115614f0f57600080fd5b9087019060e0828a031215614f2357600080fd5b90955060208701359080821115614f3957600080fd5b50614f46888289016147f1565b909550935050604086013591506060860135614f6181614ed2565b809150509295509295909350565b60008060408385031215614f8257600080fd5b8235614f8d81614876565b91506020830135614f9d81614876565b809150509250929050565b600060408284031215614fba57600080fd5b614fc2614c56565b905081356001600160401b0380821115614fdb57600080fd5b818401915084601f830112614fef57600080fd5b813560208282111561500357615003614c18565b615015601f8301601f19168201614c78565b9250818352868183860101111561502b57600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561506857600080fd5b853561507381614876565b9450602086013561508381614876565b935060408601356001600160401b038082111561509f57600080fd5b6150ab89838a01614fa8565b945060608801359150808211156150c157600080fd5b506150ce88828901614fa8565b95989497509295608001359392505050565b600080604083850312156150f357600080fd5b82356150fe81614876565b915060208301356001600160401b0381111561511957600080fd5b61512585828601614ce8565b9150509250929050565b600081518084526020808501945080840160005b8381101561515f57815187529582019590820190600101615143565b509495945050505050565b602081526000614a03602083018461512f565b6000806020838503121561519057600080fd5b82356001600160401b038111156151a657600080fd5b61486a85828601614952565b600080604083850312156151c557600080fd5b82356151d081614876565b946020939093013593505050565b600080600080608085870312156151f457600080fd5b84356151ff81614876565b935060208501359250604085013561521681614876565b9396929550929360600135925050565b600081518084526020808501945080840160005b8381101561515f5781516001600160a01b03168752958201959082019060010161523a565b6040815260006152726040830185615226565b8281036020840152611220818561512f565b60008060006060848603121561529957600080fd5b83356152a481614876565b925060208401356001600160401b038111156152bf57600080fd5b6152cb86828701614fa8565b925050604084013590509250925092565b6000606082840312156152ee57600080fd5b614a03838361493a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156153385761533861530e565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261538c57600080fd5b9190910192915050565b6000808335601e198436030181126153ad57600080fd5b8301803591506001600160401b038211156153c757600080fd5b6020019150600581901b360382131561450957600080fd5b6060810182356153ee81614876565b6001600160a01b03908116835260208401359061540a82614876565b166020830152604083013561541e81614ca8565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561547257600080fd5b8151614a0381614876565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561553657600080fd5b8151614a0381614ed2565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261538c57600080fd5b6000602082840312156155b157600080fd5b8135614a0381614ed2565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261561760e0850182615226565b905060c083015184820360c0860152611220828261512f565b602081526000614a0360208301846155bc565b60006020828403121561565557600080fd5b5051919050565b600082601f83011261566d57600080fd5b8151602061567d614d0983614cc5565b82815260059290921b8401810191818101908684111561569c57600080fd5b8286015b84811015614d5157805183529183019183016156a0565b600080604083850312156156ca57600080fd5b82516001600160401b03808211156156e157600080fd5b818501915085601f8301126156f557600080fd5b81516020615705614d0983614cc5565b82815260059290921b8401810191818101908984111561572457600080fd5b948201945b8386101561574b57855161573c81614876565b82529482019490820190615729565b9188015191965090935050508082111561576457600080fd5b506151258582860161565c565b600082198211156157845761578461530e565b500190565b60008282101561579b5761579b61530e565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ea760408301846155bc565b6000602082840312156157ef57600080fd5b8135614a0381614ca8565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561582581614876565b61582f81836157fa565b5060018101602083013561584281614876565b61584c81836157fa565b50604083013561585b81614ca8565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006158893683614db7565b92915050565b6020808252606e908201526000805160206159b583398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561594b5785810183015185820160600152820161592f565b8181111561595d576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561598657600080fd5b81516001600160e01b031981168114614a0357600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220e279121a4b2ff4cfcda4e7d1b51e40a577f27af7f3e36e9eba326fad5075fde864736f6c634300080c0033 + ///0x6101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c0033 /// ``` #[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", + b"a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a610355366004614835565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461489b565b6109ce565b6103ba6103b5366004614835565b610a90565b60405161036491906148f6565b6103da6103d5366004614993565b610df9565b005b6103da6103ea3660046149e6565b610f3e565b6103da6103fd366004614a0a565b610ff1565b6103da610410366004614a4b565b6110a8565b6103da610423366004614a64565b6111e7565b61035a6104363660046149e6565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a0a565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614acf565b611229565b6103da6104bc366004614a0a565b61136d565b61035a6104cf3660046149e6565b609b6020526000908152604090205481565b6103da6104ef366004614b76565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149e6565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149e6565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e73565b611641565b610575610606366004614eaf565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ee0565b611671565b6103da610644366004614a4b565b61170c565b61051b6106573660046149e6565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149e6565b61171d565b6103da61173e565b61035a61069b366004614f6f565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615050565b611752565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150e0565b61197e565b604051610364919061516a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461517d565b611a58565b61035a61074b3660046149e6565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a4b565b609e6020526000908152604090205460ff1681565b6105756107b53660046151b2565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149e6565b60a16020526000908152604090205481565b61086e61080c3660046149e6565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151de565b611b2a565b61035a62034bc081565b6108d46108cf3660046149e6565b611be3565b60405161036492919061525f565b6103ba6108f03660046149e6565b611f9b565b6103da610903366004615284565b61245f565b6103da6109163660046152dc565b61257c565b6103da6109293660046149e6565b61260d565b61035a612683565b6103da610944366004614a4b565b6126c1565b609d54600090815b838110156109c657600060a16000878785818110610971576109716152f8565b905060200201602081019061098691906149e6565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf81615324565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c612683565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc9061533f565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c18565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b436152f8565b9050602002810190610b559190615376565b610b63906020810190615396565b9050878783818110610b7757610b776152f8565b9050602002810190610b899190615376565b610b939080615396565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b6152f8565b9050602002810190610c2d9190615376565b610c3e9060608101906040016149e6565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd16152f8565b9050602002810190610ce39190615376565b610cf49060608101906040016149e6565b8a8a86818110610d0657610d066152f8565b9050602002810190610d189190615376565b610d229080615396565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d686152f8565b9050602002810190610d7a9190615376565b610d88906020810190615396565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061281d92505050565b838281518110610dd157610dd16152f8565b602090810291909101015280610de681615324565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612ddd565b604080518082019091526060815260006020820152610eb43380836000612fd0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153df565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f30929190615431565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615460565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc9061547d565b610fee81613266565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154c7565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561335d565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190615524565b6111305760405162461bcd60e51b8152600401610abc90615541565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133d8565b6110a184848484613432565b6001600160a01b0383166000908152609b602052604081205461122085828686611b2a565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613658565b6112fb613742565b609755611307896137d9565b6113108661382b565b61131c85858585613432565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154c7565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613925565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc9061533f565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be6152f8565b90506020028101906114d09190615589565b8989848181106114e2576114e26152f8565b90506020028101906114f49190615396565b898986818110611506576115066152f8565b9050602002013588888781811061151f5761151f6152f8565b9050602002016020810190611534919061559f565b6139a0565b61154281615324565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190615524565b6116025760405162461bcd60e51b8152600401610abc90615541565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615630565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc9061533f565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139a0565b5050600160c95550505050565b6117146133d8565b610fee8161382b565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117466133d8565b61175060006137d9565b565b42836020015110156117d65760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117df8561155a565b156118685760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b6118718461171d565b6118fd5760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119398783888860200151611b2a565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611969908890839061418a565b61197587878686612fd0565b50505050505050565b6060600082516001600160401b0381111561199b5761199b614c18565b6040519080825280602002602001820160405280156119c4578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a0257611a026152f8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a3d57611a3d6152f8565b6020908102919091010152611a5181615324565b90506119ca565b611a613361171d565b611ae35760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b1e929190615431565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611ba0612683565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190615643565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0f91908101906156b7565b9150915060008313611d2657909590945092505050565b606080835160001415611de0576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d9b57611d9b6152f8565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611dcf57611dcf6152f8565b602002602001018181525050611f8e565b8351611ded906001615771565b6001600160401b03811115611e0457611e04614c18565b604051908082528060200260200182016040528015611e2d578160200160208202803683370190505b50915081516001600160401b03811115611e4957611e49614c18565b604051908082528060200260200182016040528015611e72578160200160208202803683370190505b50905060005b8451811015611f0c57848181518110611e9357611e936152f8565b6020026020010151838281518110611ead57611ead6152f8565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611edf57611edf6152f8565b6020026020010151828281518110611ef957611ef96152f8565b6020908102919091010152600101611e78565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f319190615789565b81518110611f4157611f416152f8565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f719190615789565b81518110611f8157611f816152f8565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fc75760405162461bcd60e51b8152600401610abc9061533f565b611fd08361155a565b6120505760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120598361171d565b156120cc5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121485760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a60205260409020549091169033148061217b5750336001600160a01b038216145b806121a257506001600160a01b038181166000908152609960205260409020600101541633145b6122145760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061222086611be3565b9092509050336001600160a01b0387161461227657826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516122f8576040805160008152602081019091529450612456565b81516001600160401b0381111561231157612311614c18565b60405190808252806020026020018201604052801561233a578160200160208202803683370190505b50945060005b8251811015612454576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123a0576123a06152f8565b6020026020010151826000815181106123bb576123bb6152f8565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123ed576123ed6152f8565b602002602001015181600081518110612408576124086152f8565b60200260200101818152505061242189878b858561281d565b888481518110612433576124336152f8565b6020026020010181815250505050808061244c90615324565b915050612340565b505b50505050919050565b6124683361155a565b156124e65760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6124ef8361171d565b6125705760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fd0565b6125853361171d565b6126035760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612ddd565b6126156133d8565b6001600160a01b03811661267a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137d9565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126b4575060975490565b6126bc613742565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127389190615460565b6001600160a01b0316336001600160a01b0316146127685760405162461bcd60e51b8152600401610abc9061547d565b6066541981196066541916146127e65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128b45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b825161293e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612ceb576001600160a01b03861615612997576129978688868481518110612970576129706152f8565b602002602001015186858151811061298a5761298a6152f8565b602002602001015161335d565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129c7576129c76152f8565b60200260200101516001600160a01b03161415612a90577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a2057612a206152f8565b60200260200101516040518363ffffffff1660e01b8152600401612a599291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a7357600080fd5b505af1158015612a87573d6000803e3d6000fd5b50505050612ce3565b846001600160a01b0316876001600160a01b03161480612b6257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612aec57612aec6152f8565b60200260200101516040518263ffffffff1660e01b8152600401612b1f91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b609190615524565b155b612c2e5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c7057612c706152f8565b6020026020010151868581518110612c8a57612c8a6152f8565b60200260200101516040518463ffffffff1660e01b8152600401612cb0939291906157a0565b600060405180830381600087803b158015612cca57600080fd5b505af1158015612cde573d6000803e3d6000fd5b505050505b600101612941565b506001600160a01b0386166000908152609f60205260408120805491829190612d1383615324565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d7b82611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612dc990839085906157c4565b60405180910390a198975050505050505050565b6213c680612df160608301604084016157dd565b63ffffffff161115612ea65760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612ee290606084019084016157dd565b63ffffffff161015612f785760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612f9c828261581a565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b1e9084906153df565b60665460009060019081161415612ff95760405162461bcd60e51b8152600401610abc9061533f565b6001600160a01b0380851660009081526099602052604090206001015416801580159061302f5750336001600160a01b03821614155b80156130445750336001600160a01b03861614155b156131b15742846020015110156130c35760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561315d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161319e9088908890859088906109ce565b90506131af8282876000015161418a565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061321088611be3565b9150915060005b82518110156113625761325e888a858481518110613237576132376152f8565b6020026020010151858581518110613251576132516152f8565b6020026020010151613925565b600101613217565b6001600160a01b0381166132f45760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613394908490615789565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157a0565b6033546001600160a01b031633146117505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134ba5760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136505760008686838181106134da576134da6152f8565b90506020020160208101906134ef91906149e6565b6001600160a01b038116600090815260a1602052604081205491925086868581811061351d5761351d6152f8565b90506020020135905062034bc08111156135e15760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a15050508061364990615324565b90506134be565b505050505050565b6065546001600160a01b031615801561367957506001600160a01b03821615155b6136fb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261373e82613266565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138e45760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061395c908490615771565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157a0565b60006139ae6105f38761587d565b6000818152609e602052604090205490915060ff16613a2f5760405162461bcd60e51b815260206004820152604360248201526000805160206159b583398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a4460a0890160808a016157dd565b63ffffffff16613a549190615771565b1115613adc5760405162461bcd60e51b815260206004820152605f60248201526000805160206159b583398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613aec60608701604088016149e6565b6001600160a01b0316336001600160a01b031614613b795760405162461bcd60e51b815260206004820152605060248201526000805160206159b583398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613bfb57613b8c60a0870187615396565b85149050613bfb5760405162461bcd60e51b815260206004820152604260248201526000805160206159b583398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d605760005b613c2760a0880188615396565b9050811015613d5a574360a16000613c4260a08b018b615396565b85818110613c5257613c526152f8565b9050602002016020810190613c6791906149e6565b6001600160a01b03168152602081019190915260400160002054613c9160a08a0160808b016157dd565b63ffffffff16613ca19190615771565b1115613cbf5760405162461bcd60e51b8152600401610abc9061588f565b613d52613ccf60208901896149e6565b33613cdd60a08b018b615396565b85818110613ced57613ced6152f8565b9050602002016020810190613d0291906149e6565b613d0f60c08c018c615396565b86818110613d1f57613d1f6152f8565b905060200201358a8a87818110613d3857613d386152f8565b9050602002016020810190613d4d91906149e6565b614344565b600101613c1a565b5061414f565b336000908152609a60205260408120546001600160a01b0316905b613d8860a0890189615396565b905081101561414c574360a16000613da360a08c018c615396565b85818110613db357613db36152f8565b9050602002016020810190613dc891906149e6565b6001600160a01b03168152602081019190915260400160002054613df260a08b0160808c016157dd565b63ffffffff16613e029190615771565b1115613e205760405162461bcd60e51b8152600401610abc9061588f565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e4260a08a018a615396565b83818110613e5257613e526152f8565b9050602002016020810190613e6791906149e6565b6001600160a01b03161415613fb7576000613e8560208a018a6149e6565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613ec660c08e018e615396565b87818110613ed657613ed66152f8565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4e9190615643565b6001600160a01b038084166000908152609a6020526040902054919250168015613faf57613faf8184613f8460a08f018f615396565b88818110613f9457613f946152f8565b9050602002016020810190613fa991906149e6565b85613925565b505050614144565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea133898985818110613ff957613ff96152f8565b905060200201602081019061400e91906149e6565b61401b60a08d018d615396565b8681811061402b5761402b6152f8565b905060200201602081019061404091906149e6565b61404d60c08e018e615396565b8781811061405d5761405d6152f8565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140bd57600080fd5b505af11580156140d1573d6000803e3d6000fd5b505050506001600160a01b038216156141445761414482336140f660a08c018c615396565b85818110614106576141066152f8565b905060200201602081019061411b91906149e6565b61412860c08d018d615396565b86818110614138576141386152f8565b90506020020135613925565b600101613d7b565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142a457604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141ca9086908690600401615917565b602060405180830381865afa1580156141e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420b9190615974565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142b88383614484565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156143ef5760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143b8908890889087906004016157a0565b600060405180830381600087803b1580156143d257600080fd5b505af11580156143e6573d6000803e3d6000fd5b5050505061447d565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561446957600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b600080600061449385856144a0565b915091506109c681614510565b6000808251604114156144d75760208301516040840151606085015160001a6144cb878285856146cb565b94509450505050614509565b82516040141561450157602083015160408401516144f68683836147b8565b935093505050614509565b506000905060025b9250929050565b60008160048111156145245761452461599e565b141561452d5750565b60018160048111156145415761454161599e565b141561458f5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145a3576145a361599e565b14156145f15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b60038160048111156146055761460561599e565b141561465e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b60048160048111156146725761467261599e565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561470257506000905060036147af565b8460ff16601b1415801561471a57508460ff16601c14155b1561472b57506000905060046147af565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561477f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147a8576000600192509250506147af565b9150600090505b94509492505050565b6000806001600160ff1b038316816147d560ff86901c601b615771565b90506147e3878288856146cb565b935093505050935093915050565b60008083601f84011261480357600080fd5b5081356001600160401b0381111561481a57600080fd5b6020830191508360208260051b850101111561450957600080fd5b6000806020838503121561484857600080fd5b82356001600160401b0381111561485e57600080fd5b61486a858286016147f1565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b803561489681614876565b919050565b600080600080600060a086880312156148b357600080fd5b85356148be81614876565b945060208601356148ce81614876565b935060408601356148de81614876565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b8181101561492e57835183529284019291840191600101614912565b50909695505050505050565b60006060828403121561494c57600080fd5b50919050565b60008083601f84011261496457600080fd5b5081356001600160401b0381111561497b57600080fd5b60208301915083602082850101111561450957600080fd5b6000806000608084860312156149a857600080fd5b6149b2858561493a565b925060608401356001600160401b038111156149cd57600080fd5b6149d986828701614952565b9497909650939450505050565b6000602082840312156149f857600080fd5b8135614a0381614876565b9392505050565b600080600060608486031215614a1f57600080fd5b8335614a2a81614876565b92506020840135614a3a81614876565b929592945050506040919091013590565b600060208284031215614a5d57600080fd5b5035919050565b60008060008060408587031215614a7a57600080fd5b84356001600160401b0380821115614a9157600080fd5b614a9d888389016147f1565b90965094506020870135915080821115614ab657600080fd5b50614ac3878288016147f1565b95989497509550505050565b60008060008060008060008060c0898b031215614aeb57600080fd5b8835614af681614876565b97506020890135614b0681614876565b9650604089013595506060890135945060808901356001600160401b0380821115614b3057600080fd5b614b3c8c838d016147f1565b909650945060a08b0135915080821115614b5557600080fd5b50614b628b828c016147f1565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b9257600080fd5b88356001600160401b0380821115614ba957600080fd5b614bb58c838d016147f1565b909a50985060208b0135915080821115614bce57600080fd5b614bda8c838d016147f1565b909850965060408b0135915080821115614bf357600080fd5b614bff8c838d016147f1565b909650945060608b0135915080821115614b5557600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c5057614c50614c18565b60405290565b604080519081016001600160401b0381118282101715614c5057614c50614c18565b604051601f8201601f191681016001600160401b0381118282101715614ca057614ca0614c18565b604052919050565b63ffffffff81168114610fee57600080fd5b803561489681614ca8565b60006001600160401b03821115614cde57614cde614c18565b5060051b60200190565b600082601f830112614cf957600080fd5b81356020614d0e614d0983614cc5565b614c78565b82815260059290921b84018101918181019086841115614d2d57600080fd5b8286015b84811015614d51578035614d4481614876565b8352918301918301614d31565b509695505050505050565b600082601f830112614d6d57600080fd5b81356020614d7d614d0983614cc5565b82815260059290921b84018101918181019086841115614d9c57600080fd5b8286015b84811015614d515780358352918301918301614da0565b600060e08284031215614dc957600080fd5b614dd1614c2e565b9050614ddc8261488b565b8152614dea6020830161488b565b6020820152614dfb6040830161488b565b604082015260608201356060820152614e1660808301614cba565b608082015260a08201356001600160401b0380821115614e3557600080fd5b614e4185838601614ce8565b60a084015260c0840135915080821115614e5a57600080fd5b50614e6784828501614d5c565b60c08301525092915050565b600060208284031215614e8557600080fd5b81356001600160401b03811115614e9b57600080fd5b614ea784828501614db7565b949350505050565b600060208284031215614ec157600080fd5b813560ff81168114614a0357600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614ef857600080fd5b85356001600160401b0380821115614f0f57600080fd5b9087019060e0828a031215614f2357600080fd5b90955060208701359080821115614f3957600080fd5b50614f46888289016147f1565b909550935050604086013591506060860135614f6181614ed2565b809150509295509295909350565b60008060408385031215614f8257600080fd5b8235614f8d81614876565b91506020830135614f9d81614876565b809150509250929050565b600060408284031215614fba57600080fd5b614fc2614c56565b905081356001600160401b0380821115614fdb57600080fd5b818401915084601f830112614fef57600080fd5b813560208282111561500357615003614c18565b615015601f8301601f19168201614c78565b9250818352868183860101111561502b57600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561506857600080fd5b853561507381614876565b9450602086013561508381614876565b935060408601356001600160401b038082111561509f57600080fd5b6150ab89838a01614fa8565b945060608801359150808211156150c157600080fd5b506150ce88828901614fa8565b95989497509295608001359392505050565b600080604083850312156150f357600080fd5b82356150fe81614876565b915060208301356001600160401b0381111561511957600080fd5b61512585828601614ce8565b9150509250929050565b600081518084526020808501945080840160005b8381101561515f57815187529582019590820190600101615143565b509495945050505050565b602081526000614a03602083018461512f565b6000806020838503121561519057600080fd5b82356001600160401b038111156151a657600080fd5b61486a85828601614952565b600080604083850312156151c557600080fd5b82356151d081614876565b946020939093013593505050565b600080600080608085870312156151f457600080fd5b84356151ff81614876565b935060208501359250604085013561521681614876565b9396929550929360600135925050565b600081518084526020808501945080840160005b8381101561515f5781516001600160a01b03168752958201959082019060010161523a565b6040815260006152726040830185615226565b8281036020840152611220818561512f565b60008060006060848603121561529957600080fd5b83356152a481614876565b925060208401356001600160401b038111156152bf57600080fd5b6152cb86828701614fa8565b925050604084013590509250925092565b6000606082840312156152ee57600080fd5b614a03838361493a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156153385761533861530e565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261538c57600080fd5b9190910192915050565b6000808335601e198436030181126153ad57600080fd5b8301803591506001600160401b038211156153c757600080fd5b6020019150600581901b360382131561450957600080fd5b6060810182356153ee81614876565b6001600160a01b03908116835260208401359061540a82614876565b166020830152604083013561541e81614ca8565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561547257600080fd5b8151614a0381614876565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561553657600080fd5b8151614a0381614ed2565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261538c57600080fd5b6000602082840312156155b157600080fd5b8135614a0381614ed2565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261561760e0850182615226565b905060c083015184820360c0860152611220828261512f565b602081526000614a0360208301846155bc565b60006020828403121561565557600080fd5b5051919050565b600082601f83011261566d57600080fd5b8151602061567d614d0983614cc5565b82815260059290921b8401810191818101908684111561569c57600080fd5b8286015b84811015614d5157805183529183019183016156a0565b600080604083850312156156ca57600080fd5b82516001600160401b03808211156156e157600080fd5b818501915085601f8301126156f557600080fd5b81516020615705614d0983614cc5565b82815260059290921b8401810191818101908984111561572457600080fd5b948201945b8386101561574b57855161573c81614876565b82529482019490820190615729565b9188015191965090935050508082111561576457600080fd5b506151258582860161565c565b600082198211156157845761578461530e565b500190565b60008282101561579b5761579b61530e565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ea760408301846155bc565b6000602082840312156157ef57600080fd5b8135614a0381614ca8565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561582581614876565b61582f81836157fa565b5060018101602083013561584281614876565b61584c81836157fa565b50604083013561585b81614ca8565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006158893683614db7565b92915050565b6020808252606e908201526000805160206159b583398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561594b5785810183015185820160600152820161592f565b8181111561595d576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561598657600080fd5b81516001600160e01b031981168114614a0357600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220e279121a4b2ff4cfcda4e7d1b51e40a577f27af7f3e36e9eba326fad5075fde864736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c0033 /// ``` #[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", + 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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3082,7 +3127,12 @@ pub mod DelegationManager { ```solidity event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinWithdrawalDelayBlocksSet { #[allow(missing_docs)] @@ -3090,7 +3140,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub newValue: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3181,7 +3236,12 @@ pub mod DelegationManager { ```solidity event OperatorDetailsModified(address indexed operator, IDelegationManager.OperatorDetails newOperatorDetails); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDetailsModified { #[allow(missing_docs)] @@ -3190,7 +3250,12 @@ pub mod DelegationManager { pub newOperatorDetails: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3282,7 +3347,12 @@ pub mod DelegationManager { ```solidity event OperatorMetadataURIUpdated(address indexed operator, string metadataURI); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorMetadataURIUpdated { #[allow(missing_docs)] @@ -3290,7 +3360,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub metadataURI: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3381,7 +3456,12 @@ pub mod DelegationManager { ```solidity event OperatorRegistered(address indexed operator, IDelegationManager.OperatorDetails operatorDetails); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -3390,7 +3470,12 @@ pub mod DelegationManager { pub operatorDetails: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3481,7 +3566,12 @@ pub mod DelegationManager { ```solidity event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSharesDecreased { #[allow(missing_docs)] @@ -3493,7 +3583,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3597,7 +3692,12 @@ pub mod DelegationManager { ```solidity event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSharesIncreased { #[allow(missing_docs)] @@ -3609,7 +3709,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3713,7 +3818,12 @@ pub mod DelegationManager { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -3721,7 +3831,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3816,7 +3931,12 @@ pub mod DelegationManager { ```solidity event Paused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -3824,7 +3944,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3915,7 +4040,12 @@ pub mod DelegationManager { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -3923,7 +4053,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4014,7 +4149,12 @@ pub mod DelegationManager { ```solidity event StakerDelegated(address indexed staker, address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StakerDelegated { #[allow(missing_docs)] @@ -4022,7 +4162,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4117,7 +4262,12 @@ pub mod DelegationManager { ```solidity event StakerForceUndelegated(address indexed staker, address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StakerForceUndelegated { #[allow(missing_docs)] @@ -4125,7 +4275,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4220,7 +4375,12 @@ pub mod DelegationManager { ```solidity event StakerUndelegated(address indexed staker, address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StakerUndelegated { #[allow(missing_docs)] @@ -4228,7 +4388,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4323,7 +4488,12 @@ pub mod DelegationManager { ```solidity event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyWithdrawalDelayBlocksSet { #[allow(missing_docs)] @@ -4333,7 +4503,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub newValue: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4430,7 +4605,12 @@ pub mod DelegationManager { ```solidity event Unpaused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -4438,7 +4618,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4529,13 +4714,23 @@ pub mod DelegationManager { ```solidity event WithdrawalCompleted(bytes32 withdrawalRoot); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4619,7 +4814,12 @@ pub mod DelegationManager { ```solidity event WithdrawalQueued(bytes32 withdrawalRoot, IDelegationManager.Withdrawal withdrawal); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct WithdrawalQueued { #[allow(missing_docs)] @@ -4627,7 +4827,12 @@ pub mod DelegationManager { #[allow(missing_docs)] pub withdrawal: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4718,7 +4923,7 @@ pub mod DelegationManager { ```solidity constructor(address _strategyManager, address _slasher, address _eigenPodManager); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _strategyManager: alloy::sol_types::private::Address, @@ -4806,16 +5011,21 @@ pub mod DelegationManager { ```solidity function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4911,16 +5121,21 @@ pub mod DelegationManager { ```solidity function DOMAIN_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DOMAIN_TYPEHASHReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5016,16 +5231,21 @@ pub mod DelegationManager { ```solidity function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5121,16 +5341,21 @@ pub mod DelegationManager { ```solidity function MAX_WITHDRAWAL_DELAY_BLOCKS() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5226,16 +5451,21 @@ pub mod DelegationManager { ```solidity function STAKER_DELEGATION_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5331,16 +5561,21 @@ pub mod DelegationManager { ```solidity function beaconChainETHStrategy() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct beaconChainETHStrategyCall {} ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct beaconChainETHStrategyReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5436,7 +5671,7 @@ pub mod DelegationManager { ```solidity function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateCurrentStakerDelegationDigestHashCall { pub staker: alloy::sol_types::private::Address, @@ -5444,12 +5679,17 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateCurrentStakerDelegationDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5580,7 +5820,7 @@ pub mod DelegationManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateDelegationApprovalDigestHashCall { pub staker: alloy::sol_types::private::Address, @@ -5590,12 +5830,17 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateDelegationApprovalDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5742,7 +5987,7 @@ pub mod DelegationManager { ```solidity function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateStakerDelegationDigestHashCall { pub staker: alloy::sol_types::private::Address, @@ -5751,12 +5996,17 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateStakerDelegationDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5891,18 +6141,23 @@ pub mod DelegationManager { ```solidity function calculateWithdrawalRoot(IDelegationManager.Withdrawal memory withdrawal) external pure returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateWithdrawalRootReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6005,7 +6260,7 @@ pub mod DelegationManager { ```solidity function completeQueuedWithdrawal(IDelegationManager.Withdrawal memory withdrawal, address[] memory tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct completeQueuedWithdrawalCall { pub withdrawal: ::RustType, @@ -6014,10 +6269,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct completeQueuedWithdrawalReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6151,7 +6411,7 @@ pub mod DelegationManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct completeQueuedWithdrawalsCall { pub withdrawals: alloy::sol_types::private::Vec< @@ -6165,10 +6425,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct completeQueuedWithdrawalsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6316,18 +6581,23 @@ pub mod DelegationManager { ```solidity function cumulativeWithdrawalsQueued(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct cumulativeWithdrawalsQueuedReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6427,7 +6697,7 @@ pub mod DelegationManager { ```solidity function decreaseDelegatedShares(address staker, address strategy, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decreaseDelegatedSharesCall { pub staker: alloy::sol_types::private::Address, @@ -6435,10 +6705,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decreaseDelegatedSharesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6560,7 +6835,7 @@ pub mod DelegationManager { ```solidity function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegateToCall { pub operator: alloy::sol_types::private::Address, @@ -6569,10 +6844,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegateToReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6698,7 +6978,7 @@ pub mod DelegationManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegateToBySignatureCall { pub staker: alloy::sol_types::private::Address, @@ -6710,10 +6990,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegateToBySignatureReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6856,18 +7141,23 @@ pub mod DelegationManager { ```solidity function delegatedTo(address) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegatedToReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6967,18 +7257,23 @@ pub mod DelegationManager { ```solidity function delegationApprover(address operator) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationApproverReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7078,19 +7373,24 @@ pub mod DelegationManager { ```solidity function delegationApproverSaltIsSpent(address, bytes32) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationApproverSaltIsSpentReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7205,16 +7505,21 @@ pub mod DelegationManager { ```solidity function domainSeparator() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct domainSeparatorCall {} ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct domainSeparatorReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7310,16 +7615,21 @@ pub mod DelegationManager { ```solidity function eigenPodManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eigenPodManagerCall {} ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eigenPodManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7415,20 +7725,25 @@ pub mod DelegationManager { ```solidity function getDelegatableShares(address staker) external view returns (address[] memory, uint256[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7542,20 +7857,25 @@ pub mod DelegationManager { ```solidity function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorSharesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7676,18 +7996,23 @@ pub mod DelegationManager { ```solidity function getWithdrawalDelay(address[] memory strategies) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getWithdrawalDelayReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7792,7 +8117,7 @@ pub mod DelegationManager { ```solidity function increaseDelegatedShares(address staker, address strategy, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct increaseDelegatedSharesCall { pub staker: alloy::sol_types::private::Address, @@ -7800,10 +8125,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct increaseDelegatedSharesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7925,7 +8255,7 @@ pub mod DelegationManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeCall { pub initialOwner: alloy::sol_types::private::Address, @@ -7937,10 +8267,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8097,18 +8432,23 @@ pub mod DelegationManager { ```solidity function isDelegated(address staker) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isDelegatedReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8208,18 +8548,23 @@ pub mod DelegationManager { ```solidity function isOperator(address operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isOperatorReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8319,16 +8664,21 @@ pub mod DelegationManager { ```solidity function minWithdrawalDelayBlocks() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minWithdrawalDelayBlocksCall {} ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minWithdrawalDelayBlocksReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8424,17 +8774,22 @@ pub mod DelegationManager { ```solidity function modifyOperatorDetails(IDelegationManager.OperatorDetails memory newOperatorDetails) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct modifyOperatorDetailsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8537,18 +8892,23 @@ pub mod DelegationManager { ```solidity function operatorDetails(address operator) external view returns (IDelegationManager.OperatorDetails memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorDetailsReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8649,19 +9009,24 @@ pub mod DelegationManager { ```solidity function operatorShares(address, address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8776,16 +9141,21 @@ pub mod DelegationManager { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8881,16 +9251,21 @@ pub mod DelegationManager { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8992,14 +9367,19 @@ pub mod DelegationManager { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9095,18 +9475,23 @@ pub mod DelegationManager { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9206,16 +9591,21 @@ pub mod DelegationManager { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9311,16 +9701,21 @@ pub mod DelegationManager { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9416,18 +9811,23 @@ pub mod DelegationManager { ```solidity function pendingWithdrawals(bytes32) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pendingWithdrawalsReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9527,7 +9927,7 @@ pub mod DelegationManager { ```solidity function queueWithdrawals(IDelegationManager.QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct queueWithdrawalsCall { pub queuedWithdrawalParams: alloy::sol_types::private::Vec< @@ -9535,12 +9935,17 @@ pub mod DelegationManager { >, } ///Container type for the return parameters of the [`queueWithdrawals((address[],uint256[],address)[])`](queueWithdrawalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct queueWithdrawalsReturn { pub _0: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9651,7 +10056,7 @@ pub mod DelegationManager { ```solidity function registerAsOperator(IDelegationManager.OperatorDetails memory registeringOperatorDetails, string memory metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerAsOperatorCall { pub registeringOperatorDetails: @@ -9659,10 +10064,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerAsOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9777,14 +10187,19 @@ pub mod DelegationManager { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9880,16 +10295,21 @@ pub mod DelegationManager { ```solidity function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setMinWithdrawalDelayBlocksReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9991,16 +10411,21 @@ pub mod DelegationManager { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10102,7 +10527,7 @@ pub mod DelegationManager { ```solidity function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setStrategyWithdrawalDelayBlocksCall { pub strategies: alloy::sol_types::private::Vec, @@ -10110,10 +10535,15 @@ pub mod DelegationManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setStrategyWithdrawalDelayBlocksReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10230,16 +10660,21 @@ pub mod DelegationManager { ```solidity function slasher() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct slasherCall {} ///Container type for the return parameters of the [`slasher()`](slasherCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct slasherReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10335,18 +10770,23 @@ pub mod DelegationManager { ```solidity function stakerNonce(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerNonceReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10446,18 +10886,23 @@ pub mod DelegationManager { ```solidity function stakerOptOutWindowBlocks(address operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerOptOutWindowBlocksReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10557,16 +11002,21 @@ pub mod DelegationManager { ```solidity function strategyManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerCall {} ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10662,18 +11112,23 @@ pub mod DelegationManager { ```solidity function strategyWithdrawalDelayBlocks(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyWithdrawalDelayBlocksReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10773,16 +11228,21 @@ pub mod DelegationManager { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10882,19 +11342,24 @@ pub mod DelegationManager { ```solidity function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct undelegateReturn { pub withdrawalRoots: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10999,16 +11464,21 @@ pub mod DelegationManager { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -11110,16 +11580,21 @@ pub mod DelegationManager { ```solidity function updateOperatorMetadataURI(string memory metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/delegationmanagerstorage.rs b/crates/utils/src/middleware/delegationmanagerstorage.rs new file mode 100644 index 00000000..92165ff8 --- /dev/null +++ b/crates/utils/src/middleware/delegationmanagerstorage.rs @@ -0,0 +1,11549 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 DelegationManagerStorage { + 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 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, IDelegationManager.Withdrawal withdrawal); + + function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32); + function DOMAIN_TYPEHASH() external view returns (bytes32); + 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 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 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 setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) 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 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": "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": "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": "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": "setMinWithdrawalDelayBlocks", + "inputs": [ + { + "name": "newMinWithdrawalDelayBlocks", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "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::pub_underscore_fields, + clippy::style +)] +pub mod DelegationManagerStorage { + 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 `MinWithdrawalDelayBlocksSet(uint256,uint256)` and selector `0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69`. + ```solidity + event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DELEGATION_APPROVAL_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_WITHDRAWAL_DELAY_BLOCKS()` and selector `0xca661c04`. + ```solidity + function MAX_WITHDRAWAL_DELAY_BLOCKS() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct STAKER_DELEGATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateCurrentStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateDelegationApprovalDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateWithdrawalRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct cumulativeWithdrawalsQueuedReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decreaseDelegatedSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegateToReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegateToBySignatureReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegatedToReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationApproverSaltIsSpentReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSharesReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalDelayReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct increaseDelegatedSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isDelegatedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isOperatorReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksCall {} + ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyOperatorDetailsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorDetailsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `pendingWithdrawals(bytes32)` and selector `0xb7f06ebe`. + ```solidity + function pendingWithdrawals(bytes32) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pendingWithdrawalsReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct queueWithdrawalsReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerAsOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setMinWithdrawalDelayBlocks(uint256)` and selector `0x635bbd10`. + ```solidity + function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setMinWithdrawalDelayBlocksReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setStrategyWithdrawalDelayBlocks(address[],uint256[])` and selector `0x1522bf02`. + ```solidity + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWithdrawalDelayBlocksReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerNonceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerOptOutWindowBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `undelegate(address)` and selector `0xda8be864`. + ```solidity + function undelegate(address staker) external returns (bytes32[] memory withdrawalRoot); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct undelegateReturn { + pub withdrawalRoot: + alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorMetadataURIReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`DelegationManagerStorage`](self) function calls. + pub enum DelegationManagerStorageCalls { + DELEGATION_APPROVAL_TYPEHASH(DELEGATION_APPROVAL_TYPEHASHCall), + DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall), + 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), + isDelegated(isDelegatedCall), + isOperator(isOperatorCall), + minWithdrawalDelayBlocks(minWithdrawalDelayBlocksCall), + modifyOperatorDetails(modifyOperatorDetailsCall), + operatorDetails(operatorDetailsCall), + operatorShares(operatorSharesCall), + pendingWithdrawals(pendingWithdrawalsCall), + queueWithdrawals(queueWithdrawalsCall), + registerAsOperator(registerAsOperatorCall), + setMinWithdrawalDelayBlocks(setMinWithdrawalDelayBlocksCall), + setStrategyWithdrawalDelayBlocks(setStrategyWithdrawalDelayBlocksCall), + slasher(slasherCall), + stakerNonce(stakerNonceCall), + stakerOptOutWindowBlocks(stakerOptOutWindowBlocksCall), + strategyManager(strategyManagerCall), + strategyWithdrawalDelayBlocks(strategyWithdrawalDelayBlocksCall), + undelegate(undelegateCall), + updateOperatorMetadataURI(updateOperatorMetadataURICall), + } + #[automatically_derived] + impl DelegationManagerStorageCalls { + /// 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], + [21u8, 34u8, 191u8, 2u8], + [22u8, 146u8, 131u8, 101u8], + [27u8, 188u8, 224u8, 145u8], + [32u8, 96u8, 107u8, 112u8], + [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], + [89u8, 123u8, 54u8, 218u8], + [96u8, 215u8, 250u8, 237u8], + [99u8, 91u8, 189u8, 16u8], + [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], + [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], + [246u8, 152u8, 218u8, 37u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DelegationManagerStorageCalls { + const NAME: &'static str = "DelegationManagerStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 42usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DELEGATION_APPROVAL_TYPEHASH(_) => { + ::SELECTOR + } + Self::DOMAIN_TYPEHASH(_) => { + ::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::isDelegated(_) => { + ::SELECTOR + } + Self::isOperator(_) => { + ::SELECTOR + } + Self::minWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::modifyOperatorDetails(_) => { + ::SELECTOR + } + Self::operatorDetails(_) => { + ::SELECTOR + } + Self::operatorShares(_) => { + ::SELECTOR + } + Self::pendingWithdrawals(_) => { + ::SELECTOR + } + Self::queueWithdrawals(_) => { + ::SELECTOR + } + Self::registerAsOperator(_) => { + ::SELECTOR + } + Self::setMinWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::setStrategyWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stakerNonce(_) => { + ::SELECTOR + } + Self::stakerOptOutWindowBlocks(_) => { + ::SELECTOR + } + Self::strategyManager(_) => { + ::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(DelegationManagerStorageCalls::getWithdrawalDelay) + } + getWithdrawalDelay + }, + { + fn DELEGATION_APPROVAL_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::DELEGATION_APPROVAL_TYPEHASH, + ) + } + DELEGATION_APPROVAL_TYPEHASH + }, + { + fn calculateDelegationApprovalDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::calculateDelegationApprovalDigestHash, + ) + } + calculateDelegationApprovalDigestHash + }, + { + fn queueWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::queueWithdrawals) + } + queueWithdrawals + }, + { + fn registerAsOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::registerAsOperator) + } + registerAsOperator + }, + { + fn decreaseDelegatedShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::decreaseDelegatedShares) + } + decreaseDelegatedShares + }, + { + fn setStrategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::setStrategyWithdrawalDelayBlocks, + ) + } + setStrategyWithdrawalDelayBlocks + }, + { + fn stakerOptOutWindowBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::stakerOptOutWindowBlocks) + } + stakerOptOutWindowBlocks + }, + { + fn calculateCurrentStakerDelegationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::calculateCurrentStakerDelegationDigestHash, + ) + } + calculateCurrentStakerDelegationDigestHash + }, + { + fn DOMAIN_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::DOMAIN_TYPEHASH) + } + DOMAIN_TYPEHASH + }, + { + fn increaseDelegatedShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::increaseDelegatedShares) + } + increaseDelegatedShares + }, + { + fn stakerNonce( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::stakerNonce) + } + stakerNonce + }, + { + fn completeQueuedWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::completeQueuedWithdrawals) + } + completeQueuedWithdrawals + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::strategyManager) + } + strategyManager + }, + { + fn delegationApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::delegationApprover) + } + delegationApprover + }, + { + fn isDelegated( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::isDelegated) + } + isDelegated + }, + { + fn STAKER_DELEGATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::STAKER_DELEGATION_TYPEHASH, + ) + } + STAKER_DELEGATION_TYPEHASH + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn calculateWithdrawalRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::calculateWithdrawalRoot) + } + calculateWithdrawalRoot + }, + { + fn completeQueuedWithdrawal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::completeQueuedWithdrawal) + } + completeQueuedWithdrawal + }, + { + fn setMinWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::setMinWithdrawalDelayBlocks, + ) + } + setMinWithdrawalDelayBlocks + }, + { + fn delegatedTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::delegatedTo) + } + delegatedTo + }, + { + fn isOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(DelegationManagerStorageCalls::isOperator) + } + isOperator + }, + { + fn operatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::operatorShares) + } + operatorShares + }, + { + fn delegateToBySignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::delegateToBySignature) + } + delegateToBySignature + }, + { + fn getOperatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::getOperatorShares) + } + getOperatorShares + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn updateOperatorMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::updateOperatorMetadataURI) + } + updateOperatorMetadataURI + }, + { + fn cumulativeWithdrawalsQueued( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::cumulativeWithdrawalsQueued, + ) + } + cumulativeWithdrawalsQueued + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(DelegationManagerStorageCalls::slasher) + } + slasher + }, + { + fn pendingWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::pendingWithdrawals) + } + pendingWithdrawals + }, + { + fn delegationApproverSaltIsSpent( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::delegationApproverSaltIsSpent, + ) + } + delegationApproverSaltIsSpent + }, + { + fn minWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::minWithdrawalDelayBlocks) + } + minWithdrawalDelayBlocks + }, + { + fn strategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::strategyWithdrawalDelayBlocks, + ) + } + strategyWithdrawalDelayBlocks + }, + { + fn operatorDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::operatorDetails) + } + operatorDetails + }, + { + fn calculateStakerDelegationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::calculateStakerDelegationDigestHash, + ) + } + calculateStakerDelegationDigestHash + }, + { + fn MAX_WITHDRAWAL_DELAY_BLOCKS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerStorageCalls::MAX_WITHDRAWAL_DELAY_BLOCKS, + ) + } + MAX_WITHDRAWAL_DELAY_BLOCKS + }, + { + fn getDelegatableShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::getDelegatableShares) + } + getDelegatableShares + }, + { + fn undelegate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(DelegationManagerStorageCalls::undelegate) + } + undelegate + }, + { + fn delegateTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(DelegationManagerStorageCalls::delegateTo) + } + delegateTo + }, + { + fn modifyOperatorDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::modifyOperatorDetails) + } + modifyOperatorDetails + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerStorageCalls::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::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::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::pendingWithdrawals(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::queueWithdrawals(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerAsOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setMinWithdrawalDelayBlocks(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::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::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::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::pendingWithdrawals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::queueWithdrawals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerAsOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setMinWithdrawalDelayBlocks(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::undelegate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorMetadataURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`DelegationManagerStorage`](self) events. + pub enum DelegationManagerStorageEvents { + 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 DelegationManagerStorageEvents { + /// 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 DelegationManagerStorageEvents { + const NAME: &'static str = "DelegationManagerStorageEvents"; + 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 DelegationManagerStorageEvents { + 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 [`DelegationManagerStorage`](self) contract instance. + + See the [wrapper's documentation](`DelegationManagerStorageInstance`) 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, + ) -> DelegationManagerStorageInstance { + DelegationManagerStorageInstance::::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>, + > { + DelegationManagerStorageInstance::::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 { + DelegationManagerStorageInstance::::deploy_builder(provider) + } + /**A [`DelegationManagerStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`DelegationManagerStorage`](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 DelegationManagerStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DelegationManagerStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DelegationManagerStorageInstance") + .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, + > DelegationManagerStorageInstance + { + /**Creates a new wrapper around an on-chain [`DelegationManagerStorage`](self) contract instance. + + See the [wrapper's documentation](`DelegationManagerStorageInstance`) 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 DelegationManagerStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DelegationManagerStorageInstance { + DelegationManagerStorageInstance { + 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, + > DelegationManagerStorageInstance + { + /// 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_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 [`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 [`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 [`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 [`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 [`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, + > DelegationManagerStorageInstance + { + /// 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/middleware/delegationmock.rs b/crates/utils/src/middleware/delegationmock.rs new file mode 100644 index 00000000..b304cfae --- /dev/null +++ b/crates/utils/src/middleware/delegationmock.rs @@ -0,0 +1,13068 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 DelegationMock { + 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 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, IDelegationManager.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 addShares(address strategyManager, address staker, address token, address strategy, uint256 shares) external; + function beaconChainETHStrategy() external view returns (address); + function calculateApproverDigestHash(address, address, uint256) external pure returns (bytes32 approverDigestHash); + function calculateCurrentStakerDelegationDigestHash(address, address, uint256) external view returns (bytes32); + function calculateDelegationApprovalDigestHash(address, address, address, bytes32, uint256) external view returns (bytes32); + function calculateOperatorAVSRegistrationDigestHash(address, address, bytes32, uint256) external pure returns (bytes32 digestHash); + function calculateStakerDelegationDigestHash(address, uint256, address, uint256) external view returns (bytes32); + function calculateStakerDigestHash(address, address, uint256) external pure returns (bytes32 stakerDigestHash); + 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 staker) external view returns (uint256); + function decreaseDelegatedShares(address, address, uint256) external pure; + function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory, bytes32) external; + function delegateToBySignature(address, address, ISignatureUtils.SignatureWithExpiry memory, ISignatureUtils.SignatureWithExpiry memory, bytes32) external pure; + function delegatedTo(address) external view returns (address); + function delegationApprover(address operator) external pure returns (address); + function delegationApproverSaltIsSpent(address, bytes32) external pure returns (bool); + function domainSeparator() external view returns (bytes32); + function earningsReceiver(address operator) external pure 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) external view returns (uint256); + function increaseDelegatedShares(address, address, uint256) external pure; + function isDelegated(address staker) external view returns (bool); + function isNotDelegated(address) external pure returns (bool); + function isOperator(address) external view returns (bool); + function minWithdrawalDelayBlocks() external view returns (uint256); + function modifyOperatorDetails(IDelegationManager.OperatorDetails memory) external pure; + function operatorDetails(address operator) external pure returns (IDelegationManager.OperatorDetails memory); + function operatorSaltIsSpent(address avs, bytes32 salt) external view returns (bool); + function operatorShares(address, address) external view returns (uint256); + function queueWithdrawals(IDelegationManager.QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory); + function registerAsOperator(IDelegationManager.OperatorDetails memory, string memory) external pure; + function removeShares(address strategyManager, address staker, address strategy, uint256 shares) external; + function setIsOperator(address operator, bool _isOperatorReturnValue) external; + function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; + function setOperatorShares(address operator, address strategy, uint256 shares) external; + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external; + function stakerNonce(address) external pure returns (uint256); + function stakerOptOutWindowBlocks(address) external pure returns (uint256); + function strategyWithdrawalDelayBlocks(address) external view returns (uint256); + function undelegate(address staker) external returns (bytes32[] memory withdrawalRoot); + function updateAVSMetadataURI(string memory) external pure; + function updateOperatorMetadataURI(string memory) external pure; + function withdrawSharesAsTokens(address strategyManager, address recipient, address strategy, uint256 shares, address token) 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": "addShares", + "inputs": [ + { + "name": "strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + }, + { + "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": "beaconChainETHStrategy", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateApproverDigestHash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "approverDigestHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "calculateCurrentStakerDelegationDigestHash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateDelegationApprovalDigestHash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateOperatorAVSRegistrationDigestHash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "digestHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "calculateStakerDelegationDigestHash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateStakerDigestHash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "stakerDigestHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "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": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "delegateTo", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegateToBySignature", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "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": "pure" + }, + { + "type": "function", + "name": "delegationApproverSaltIsSpent", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "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": "pure" + }, + { + "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": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "increaseDelegatedShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "isDelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isNotDelegated", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "isOperator", + "inputs": [ + { + "name": "", + "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": "", + "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": "pure" + }, + { + "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": "pure" + }, + { + "type": "function", + "name": "operatorSaltIsSpent", + "inputs": [ + { + "name": "avs", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "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": "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": "", + "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": "", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "removeShares", + "inputs": [ + { + "name": "strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + }, + { + "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": "setIsOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_isOperatorReturnValue", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMinWithdrawalDelayBlocks", + "inputs": [ + { + "name": "newMinWithdrawalDelayBlocks", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setOperatorShares", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "stakerNonce", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "stakerOptOutWindowBlocks", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "strategyWithdrawalDelayBlocks", + "inputs": [ + { + "name": "", + "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": "updateAVSMetadataURI", + "inputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "updateOperatorMetadataURI", + "inputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "withdrawSharesAsTokens", + "inputs": [ + { + "name": "strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + }, + { + "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": "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::pub_underscore_fields, + clippy::style +)] +pub mod DelegationMock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061156c806100206000396000f3fe608060405234801561001057600080fd5b50600436106102bb5760003560e01c80636d70f7ae11610182578063bb45fef2116100e9578063cbb5d4db116100a2578063dbe35bd81161007c578063dbe35bd81461069f578063eea9064b146106d9578063f16172b014610718578063f698da25146102e957600080fd5b8063cbb5d4db1461060a578063cf80873e14610643578063da8be8641461066757600080fd5b8063bb45fef2146103c4578063bc56ff6614610559578063c448feb81461056c578063c488375a14610363578063c5e480db14610574578063c94b5111146105fc57600080fd5b80639104c3191161013b5780639104c31914610528578063965682711461037757806399be81c81461052f578063a1060c8814610541578063a178848414610363578063a98fb3551461052f57600080fd5b80636d70f7ae1461049957806374d898d714610377578063778e55f3146104bc5780637f548071146104e75780638d90cd56146104f5578063900413471461050857600080fd5b806329c77d4f11610226578063597b36da116101df578063597b36da146104295780635f966f14146103d257806360d7faed14610437578063635bbd101461044c57806365da12641461045d57806367f292c71461048657600080fd5b806329c77d4f1461036357806333404396146103ac578063374823b5146103c45780633cdeb5e0146103d25780633e28391d146103fb57806343377382146102e957600080fd5b80631522bf02116102785780631522bf021461034f57806316928365146103635780631bbce091146103775780631d3696b71461038e57806320606b70146102e957806328a573ae1461034157600080fd5b80630449ca39146102c057806304a4f979146102e95780630b9f487a146102f05780630dd8dd02146103095780630f589e591461032c578063132d496714610341575b600080fd5b6102d66102ce366004610978565b600092915050565b6040519081526020015b60405180910390f35b60006102d6565b6102d66102fe3660046109de565b600095945050505050565b61031f610317366004610978565b606092915050565b6040516102e09190610a39565b61033f61033a366004610ad6565b505050565b005b61033f61033a366004610b29565b61033f61035d366004610b6a565b50505050565b6102d6610371366004610bd5565b50600090565b6102d6610385366004610b29565b60009392505050565b61039c610371366004610bd5565b60405190151581526020016102e0565b61033f6103ba366004610bf9565b5050505050505050565b61039c6102ce366004610cbc565b6103e36103e0366004610bd5565b90565b6040516001600160a01b0390911681526020016102e0565b61039c610409366004610bd5565b6001600160a01b0390811660009081526002602052604090205416151590565b6102d6610371366004610e7e565b61033f610445366004610f6c565b5050505050565b61033f61045a366004610ff7565b50565b6103e361046b366004610bd5565b6002602052600090815260409020546001600160a01b031681565b61033f610494366004611010565b610726565b61039c6104a7366004610bd5565b60006020819052908152604090205460ff1681565b6102d66104ca366004611078565b600160209081526000928352604080842090915290825290205481565b61033f610445366004611159565b61033f6105033660046111e9565b6107a0565b61051b61051636600461123a565b610806565b6040516102e091906112c4565b60006103e3565b61033f61053d3660046112d7565b5050565b6102d661054f36600461130c565b6000949350505050565b61033f610567366004611352565b6108e8565b61c4e06102d6565b6105c6610582366004610bd5565b604080516060810182526000808252602082018190529181019190915250604080516060810182526001600160a01b03909216808352602083015260009082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016102e0565b6102d661054f3660046113b6565b61033f6106183660046113ee565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b610659610651366004610bd5565b506060908190565b6040516102e0929190611423565b61031f610675366004610bd5565b6001600160a01b0316600090815260026020526040902080546001600160a01b0319169055606090565b61033f6106ad366004610b29565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b61033f6106e7366004611483565b505033600090815260026020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61033f61045a3660046114db565b60405163c608c7f360e01b81526001600160a01b038581166004830152848116602483015260448201849052828116606483015286169063c608c7f3906084015b600060405180830381600087803b15801561078157600080fd5b505af1158015610795573d6000803e3d6000fd5b505050505050505050565b604051638c80d4e560e01b81526001600160a01b038481166004830152838116602483015260448201839052851690638c80d4e590606401600060405180830381600087803b1580156107f257600080fd5b505af11580156103ba573d6000803e3d6000fd5b6060600082516001600160401b0381111561082357610823610ce8565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b50905060005b83518110156108e0576001600160a01b0385166000908152600160205260408120855190919086908490811061088a5761088a6114f7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106108c5576108c56114f7565b60209081029190910101526108d98161150d565b9050610852565b509392505050565b60405163c4623ea160e01b81526001600160a01b038581166004830152848116602483015283811660448301526064820183905286169063c4623ea190608401610767565b60008083601f84011261093f57600080fd5b5081356001600160401b0381111561095657600080fd5b6020830191508360208260051b850101111561097157600080fd5b9250929050565b6000806020838503121561098b57600080fd5b82356001600160401b038111156109a157600080fd5b6109ad8582860161092d565b90969095509350505050565b6001600160a01b038116811461045a57600080fd5b80356109d9816109b9565b919050565b600080600080600060a086880312156109f657600080fd5b8535610a01816109b9565b94506020860135610a11816109b9565b93506040860135610a21816109b9565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015610a7157835183529284019291840191600101610a55565b50909695505050505050565b600060608284031215610a8f57600080fd5b50919050565b60008083601f840112610aa757600080fd5b5081356001600160401b03811115610abe57600080fd5b60208301915083602082850101111561097157600080fd5b600080600060808486031215610aeb57600080fd5b610af58585610a7d565b925060608401356001600160401b03811115610b1057600080fd5b610b1c86828701610a95565b9497909650939450505050565b600080600060608486031215610b3e57600080fd5b8335610b49816109b9565b92506020840135610b59816109b9565b929592945050506040919091013590565b60008060008060408587031215610b8057600080fd5b84356001600160401b0380821115610b9757600080fd5b610ba38883890161092d565b90965094506020870135915080821115610bbc57600080fd5b50610bc98782880161092d565b95989497509550505050565b600060208284031215610be757600080fd5b8135610bf2816109b9565b9392505050565b6000806000806000806000806080898b031215610c1557600080fd5b88356001600160401b0380821115610c2c57600080fd5b610c388c838d0161092d565b909a50985060208b0135915080821115610c5157600080fd5b610c5d8c838d0161092d565b909850965060408b0135915080821115610c7657600080fd5b610c828c838d0161092d565b909650945060608b0135915080821115610c9b57600080fd5b50610ca88b828c0161092d565b999c989b5096995094979396929594505050565b60008060408385031215610ccf57600080fd5b8235610cda816109b9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610d2057610d20610ce8565b60405290565b604080519081016001600160401b0381118282101715610d2057610d20610ce8565b604051601f8201601f191681016001600160401b0381118282101715610d7057610d70610ce8565b604052919050565b803563ffffffff811681146109d957600080fd5b60006001600160401b03821115610da557610da5610ce8565b5060051b60200190565b600082601f830112610dc057600080fd5b81356020610dd5610dd083610d8c565b610d48565b82815260059290921b84018101918181019086841115610df457600080fd5b8286015b84811015610e18578035610e0b816109b9565b8352918301918301610df8565b509695505050505050565b600082601f830112610e3457600080fd5b81356020610e44610dd083610d8c565b82815260059290921b84018101918181019086841115610e6357600080fd5b8286015b84811015610e185780358352918301918301610e67565b600060208284031215610e9057600080fd5b81356001600160401b0380821115610ea757600080fd5b9083019060e08286031215610ebb57600080fd5b610ec3610cfe565b610ecc836109ce565b8152610eda602084016109ce565b6020820152610eeb604084016109ce565b604082015260608301356060820152610f0660808401610d78565b608082015260a083013582811115610f1d57600080fd5b610f2987828601610daf565b60a08301525060c083013582811115610f4157600080fd5b610f4d87828601610e23565b60c08301525095945050505050565b803580151581146109d957600080fd5b600080600080600060808688031215610f8457600080fd5b85356001600160401b0380821115610f9b57600080fd5b9087019060e0828a031215610faf57600080fd5b90955060208701359080821115610fc557600080fd5b50610fd28882890161092d565b90955093505060408601359150610feb60608701610f5c565b90509295509295909350565b60006020828403121561100957600080fd5b5035919050565b600080600080600060a0868803121561102857600080fd5b8535611033816109b9565b94506020860135611043816109b9565b93506040860135611053816109b9565b925060608601359150608086013561106a816109b9565b809150509295509295909350565b6000806040838503121561108b57600080fd5b8235611096816109b9565b915060208301356110a6816109b9565b809150509250929050565b6000604082840312156110c357600080fd5b6110cb610d26565b905081356001600160401b03808211156110e457600080fd5b818401915084601f8301126110f857600080fd5b813560208282111561110c5761110c610ce8565b61111e601f8301601f19168201610d48565b9250818352868183860101111561113457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561117157600080fd5b853561117c816109b9565b9450602086013561118c816109b9565b935060408601356001600160401b03808211156111a857600080fd5b6111b489838a016110b1565b945060608801359150808211156111ca57600080fd5b506111d7888289016110b1565b95989497509295608001359392505050565b600080600080608085870312156111ff57600080fd5b843561120a816109b9565b9350602085013561121a816109b9565b9250604085013561122a816109b9565b9396929550929360600135925050565b6000806040838503121561124d57600080fd5b8235611258816109b9565b915060208301356001600160401b0381111561127357600080fd5b61127f85828601610daf565b9150509250929050565b600081518084526020808501945080840160005b838110156112b95781518752958201959082019060010161129d565b509495945050505050565b602081526000610bf26020830184611289565b600080602083850312156112ea57600080fd5b82356001600160401b0381111561130057600080fd5b6109ad85828601610a95565b6000806000806080858703121561132257600080fd5b843561132d816109b9565b9350602085013561133d816109b9565b93969395505050506040820135916060013590565b600080600080600060a0868803121561136a57600080fd5b8535611375816109b9565b94506020860135611385816109b9565b93506040860135611395816109b9565b925060608601356113a5816109b9565b949793965091946080013592915050565b600080600080608085870312156113cc57600080fd5b84356113d7816109b9565b935060208501359250604085013561122a816109b9565b6000806040838503121561140157600080fd5b823561140c816109b9565b915061141a60208401610f5c565b90509250929050565b604080825283519082018190526000906020906060840190828701845b828110156114655781516001600160a01b031684529284019290840190600101611440565b505050838103828501526114798186611289565b9695505050505050565b60008060006060848603121561149857600080fd5b83356114a3816109b9565b925060208401356001600160401b038111156114be57600080fd5b6114ca868287016110b1565b925050604084013590509250925092565b6000606082840312156114ed57600080fd5b610bf28383610a7d565b634e487b7160e01b600052603260045260246000fd5b600060001982141561152f57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201dd1790fdaffc931f9a12c9c4ae69766ce1339d277ebd376b8d1969f993cf1de64736f6c634300080c0033 + /// ``` + #[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\x15l\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\xBBW`\x005`\xE0\x1C\x80cmp\xF7\xAE\x11a\x01\x82W\x80c\xBBE\xFE\xF2\x11a\0\xE9W\x80c\xCB\xB5\xD4\xDB\x11a\0\xA2W\x80c\xDB\xE3[\xD8\x11a\0|W\x80c\xDB\xE3[\xD8\x14a\x06\x9FW\x80c\xEE\xA9\x06K\x14a\x06\xD9W\x80c\xF1ar\xB0\x14a\x07\x18W\x80c\xF6\x98\xDA%\x14a\x02\xE9W`\0\x80\xFD[\x80c\xCB\xB5\xD4\xDB\x14a\x06\nW\x80c\xCF\x80\x87>\x14a\x06CW\x80c\xDA\x8B\xE8d\x14a\x06gW`\0\x80\xFD[\x80c\xBBE\xFE\xF2\x14a\x03\xC4W\x80c\xBCV\xFFf\x14a\x05YW\x80c\xC4H\xFE\xB8\x14a\x05lW\x80c\xC4\x887Z\x14a\x03cW\x80c\xC5\xE4\x80\xDB\x14a\x05tW\x80c\xC9KQ\x11\x14a\x05\xFCW`\0\x80\xFD[\x80c\x91\x04\xC3\x19\x11a\x01;W\x80c\x91\x04\xC3\x19\x14a\x05(W\x80c\x96V\x82q\x14a\x03wW\x80c\x99\xBE\x81\xC8\x14a\x05/W\x80c\xA1\x06\x0C\x88\x14a\x05AW\x80c\xA1x\x84\x84\x14a\x03cW\x80c\xA9\x8F\xB3U\x14a\x05/W`\0\x80\xFD[\x80cmp\xF7\xAE\x14a\x04\x99W\x80ct\xD8\x98\xD7\x14a\x03wW\x80cw\x8EU\xF3\x14a\x04\xBCW\x80c\x7FT\x80q\x14a\x04\xE7W\x80c\x8D\x90\xCDV\x14a\x04\xF5W\x80c\x90\x04\x13G\x14a\x05\x08W`\0\x80\xFD[\x80c)\xC7}O\x11a\x02&W\x80cY{6\xDA\x11a\x01\xDFW\x80cY{6\xDA\x14a\x04)W\x80c_\x96o\x14\x14a\x03\xD2W\x80c`\xD7\xFA\xED\x14a\x047W\x80cc[\xBD\x10\x14a\x04LW\x80ce\xDA\x12d\x14a\x04]W\x80cg\xF2\x92\xC7\x14a\x04\x86W`\0\x80\xFD[\x80c)\xC7}O\x14a\x03cW\x80c3@C\x96\x14a\x03\xACW\x80c7H#\xB5\x14a\x03\xC4W\x80c<\xDE\xB5\xE0\x14a\x03\xD2W\x80c>(9\x1D\x14a\x03\xFBW\x80cC7s\x82\x14a\x02\xE9W`\0\x80\xFD[\x80c\x15\"\xBF\x02\x11a\x02xW\x80c\x15\"\xBF\x02\x14a\x03OW\x80c\x16\x92\x83e\x14a\x03cW\x80c\x1B\xBC\xE0\x91\x14a\x03wW\x80c\x1D6\x96\xB7\x14a\x03\x8EW\x80c `kp\x14a\x02\xE9W\x80c(\xA5s\xAE\x14a\x03AW`\0\x80\xFD[\x80c\x04I\xCA9\x14a\x02\xC0W\x80c\x04\xA4\xF9y\x14a\x02\xE9W\x80c\x0B\x9FHz\x14a\x02\xF0W\x80c\r\xD8\xDD\x02\x14a\x03\tW\x80c\x0FX\x9EY\x14a\x03,W\x80c\x13-Ig\x14a\x03AW[`\0\x80\xFD[a\x02\xD6a\x02\xCE6`\x04a\txV[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0a\x02\xD6V[a\x02\xD6a\x02\xFE6`\x04a\t\xDEV[`\0\x95\x94PPPPPV[a\x03\x1Fa\x03\x176`\x04a\txV[``\x92\x91PPV[`@Qa\x02\xE0\x91\x90a\n9V[a\x03?a\x03:6`\x04a\n\xD6V[PPPV[\0[a\x03?a\x03:6`\x04a\x0B)V[a\x03?a\x03]6`\x04a\x0BjV[PPPPV[a\x02\xD6a\x03q6`\x04a\x0B\xD5V[P`\0\x90V[a\x02\xD6a\x03\x856`\x04a\x0B)V[`\0\x93\x92PPPV[a\x03\x9Ca\x03q6`\x04a\x0B\xD5V[`@Q\x90\x15\x15\x81R` \x01a\x02\xE0V[a\x03?a\x03\xBA6`\x04a\x0B\xF9V[PPPPPPPPV[a\x03\x9Ca\x02\xCE6`\x04a\x0C\xBCV[a\x03\xE3a\x03\xE06`\x04a\x0B\xD5V[\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xE0V[a\x03\x9Ca\x04\t6`\x04a\x0B\xD5V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x02` R`@\x90 T\x16\x15\x15\x90V[a\x02\xD6a\x03q6`\x04a\x0E~V[a\x03?a\x04E6`\x04a\x0FlV[PPPPPV[a\x03?a\x04Z6`\x04a\x0F\xF7V[PV[a\x03\xE3a\x04k6`\x04a\x0B\xD5V[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03?a\x04\x946`\x04a\x10\x10V[a\x07&V[a\x03\x9Ca\x04\xA76`\x04a\x0B\xD5V[`\0` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xD6a\x04\xCA6`\x04a\x10xV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03?a\x04E6`\x04a\x11YV[a\x03?a\x05\x036`\x04a\x11\xE9V[a\x07\xA0V[a\x05\x1Ba\x05\x166`\x04a\x12:V[a\x08\x06V[`@Qa\x02\xE0\x91\x90a\x12\xC4V[`\0a\x03\xE3V[a\x03?a\x05=6`\x04a\x12\xD7V[PPV[a\x02\xD6a\x05O6`\x04a\x13\x0CV[`\0\x94\x93PPPPV[a\x03?a\x05g6`\x04a\x13RV[a\x08\xE8V[a\xC4\xE0a\x02\xD6V[a\x05\xC6a\x05\x826`\x04a\x0B\xD5V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x80\x83R` \x83\x01R`\0\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\x02\xE0V[a\x02\xD6a\x05O6`\x04a\x13\xB6V[a\x03?a\x06\x186`\x04a\x13\xEEV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[a\x06Ya\x06Q6`\x04a\x0B\xD5V[P``\x90\x81\x90V[`@Qa\x02\xE0\x92\x91\x90a\x14#V[a\x03\x1Fa\x06u6`\x04a\x0B\xD5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U``\x90V[a\x03?a\x06\xAD6`\x04a\x0B)V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[a\x03?a\x06\xE76`\x04a\x14\x83V[PP3`\0\x90\x81R`\x02` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x03?a\x04Z6`\x04a\x14\xDBV[`@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\x86\x16\x90c\xC6\x08\xC7\xF3\x90`\x84\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x81W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x95W=`\0\x80>=`\0\xFD[PPPPPPPPPV[`@Qc\x8C\x80\xD4\xE5`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x83\x90R\x85\x16\x90c\x8C\x80\xD4\xE5\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xBAW=`\0\x80>=`\0\xFD[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08#Wa\x08#a\x0C\xE8V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08LW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x08\xE0W`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x08\x8AWa\x08\x8Aa\x14\xF7V[` \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\x08\xC5Wa\x08\xC5a\x14\xF7V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x08\xD9\x81a\x15\rV[\x90Pa\x08RV[P\x93\x92PPPV[`@Qc\xC4b>\xA1`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x84\x81\x16`$\x83\x01R\x83\x81\x16`D\x83\x01R`d\x82\x01\x83\x90R\x86\x16\x90c\xC4b>\xA1\x90`\x84\x01a\x07gV[`\0\x80\x83`\x1F\x84\x01\x12a\t?W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\tVW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\tqW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\t\x8BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA1W`\0\x80\xFD[a\t\xAD\x85\x82\x86\x01a\t-V[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04ZW`\0\x80\xFD[\x805a\t\xD9\x81a\t\xB9V[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\t\xF6W`\0\x80\xFD[\x855a\n\x01\x81a\t\xB9V[\x94P` \x86\x015a\n\x11\x81a\t\xB9V[\x93P`@\x86\x015a\n!\x81a\t\xB9V[\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\x15a\nqW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nUV[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15a\n\x8FW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\n\xA7W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xBEW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\tqW`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15a\n\xEBW`\0\x80\xFD[a\n\xF5\x85\x85a\n}V[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0B\x10W`\0\x80\xFD[a\x0B\x1C\x86\x82\x87\x01a\n\x95V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B>W`\0\x80\xFD[\x835a\x0BI\x81a\t\xB9V[\x92P` \x84\x015a\x0BY\x81a\t\xB9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0B\x80W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0B\x97W`\0\x80\xFD[a\x0B\xA3\x88\x83\x89\x01a\t-V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0B\xBCW`\0\x80\xFD[Pa\x0B\xC9\x87\x82\x88\x01a\t-V[\x95\x98\x94\x97P\x95PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\xE7W`\0\x80\xFD[\x815a\x0B\xF2\x81a\t\xB9V[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\x80\x89\x8B\x03\x12\x15a\x0C\x15W`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0C,W`\0\x80\xFD[a\x0C8\x8C\x83\x8D\x01a\t-V[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15a\x0CQW`\0\x80\xFD[a\x0C]\x8C\x83\x8D\x01a\t-V[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15a\x0CvW`\0\x80\xFD[a\x0C\x82\x8C\x83\x8D\x01a\t-V[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15a\x0C\x9BW`\0\x80\xFD[Pa\x0C\xA8\x8B\x82\x8C\x01a\t-V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xCFW`\0\x80\xFD[\x825a\x0C\xDA\x81a\t\xB9V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\r Wa\r a\x0C\xE8V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\r Wa\r a\x0C\xE8V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\rpWa\rpa\x0C\xE8V[`@R\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xD9W`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\r\xA5Wa\r\xA5a\x0C\xE8V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\xC0W`\0\x80\xFD[\x815` a\r\xD5a\r\xD0\x83a\r\x8CV[a\rHV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\r\xF4W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0E\x18W\x805a\x0E\x0B\x81a\t\xB9V[\x83R\x91\x83\x01\x91\x83\x01a\r\xF8V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a\x0E4W`\0\x80\xFD[\x815` a\x0EDa\r\xD0\x83a\r\x8CV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x0EcW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0E\x18W\x805\x83R\x91\x83\x01\x91\x83\x01a\x0EgV[`\0` \x82\x84\x03\x12\x15a\x0E\x90W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0E\xA7W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0E\xBBW`\0\x80\xFD[a\x0E\xC3a\x0C\xFEV[a\x0E\xCC\x83a\t\xCEV[\x81Ra\x0E\xDA` \x84\x01a\t\xCEV[` \x82\x01Ra\x0E\xEB`@\x84\x01a\t\xCEV[`@\x82\x01R``\x83\x015``\x82\x01Ra\x0F\x06`\x80\x84\x01a\rxV[`\x80\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a\x0F\x1DW`\0\x80\xFD[a\x0F)\x87\x82\x86\x01a\r\xAFV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\x0FAW`\0\x80\xFD[a\x0FM\x87\x82\x86\x01a\x0E#V[`\xC0\x83\x01RP\x95\x94PPPPPV[\x805\x80\x15\x15\x81\x14a\t\xD9W`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a\x0F\x84W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\x9BW`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15a\x0F\xAFW`\0\x80\xFD[\x90\x95P` \x87\x015\x90\x80\x82\x11\x15a\x0F\xC5W`\0\x80\xFD[Pa\x0F\xD2\x88\x82\x89\x01a\t-V[\x90\x95P\x93PP`@\x86\x015\x91Pa\x0F\xEB``\x87\x01a\x0F\\V[\x90P\x92\x95P\x92\x95\x90\x93PV[`\0` \x82\x84\x03\x12\x15a\x10\tW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\x10(W`\0\x80\xFD[\x855a\x103\x81a\t\xB9V[\x94P` \x86\x015a\x10C\x81a\t\xB9V[\x93P`@\x86\x015a\x10S\x81a\t\xB9V[\x92P``\x86\x015\x91P`\x80\x86\x015a\x10j\x81a\t\xB9V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x80`@\x83\x85\x03\x12\x15a\x10\x8BW`\0\x80\xFD[\x825a\x10\x96\x81a\t\xB9V[\x91P` \x83\x015a\x10\xA6\x81a\t\xB9V[\x80\x91PP\x92P\x92\x90PV[`\0`@\x82\x84\x03\x12\x15a\x10\xC3W`\0\x80\xFD[a\x10\xCBa\r&V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10\xE4W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x10\xF8W`\0\x80\xFD[\x815` \x82\x82\x11\x15a\x11\x0CWa\x11\x0Ca\x0C\xE8V[a\x11\x1E`\x1F\x83\x01`\x1F\x19\x16\x82\x01a\rHV[\x92P\x81\x83R\x86\x81\x83\x86\x01\x01\x11\x15a\x114W`\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\x15a\x11qW`\0\x80\xFD[\x855a\x11|\x81a\t\xB9V[\x94P` \x86\x015a\x11\x8C\x81a\t\xB9V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xA8W`\0\x80\xFD[a\x11\xB4\x89\x83\x8A\x01a\x10\xB1V[\x94P``\x88\x015\x91P\x80\x82\x11\x15a\x11\xCAW`\0\x80\xFD[Pa\x11\xD7\x88\x82\x89\x01a\x10\xB1V[\x95\x98\x94\x97P\x92\x95`\x80\x015\x93\x92PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x11\xFFW`\0\x80\xFD[\x845a\x12\n\x81a\t\xB9V[\x93P` \x85\x015a\x12\x1A\x81a\t\xB9V[\x92P`@\x85\x015a\x12*\x81a\t\xB9V[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x12MW`\0\x80\xFD[\x825a\x12X\x81a\t\xB9V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12sW`\0\x80\xFD[a\x12\x7F\x85\x82\x86\x01a\r\xAFV[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x12\xB9W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x12\x9DV[P\x94\x95\x94PPPPPV[` \x81R`\0a\x0B\xF2` \x83\x01\x84a\x12\x89V[`\0\x80` \x83\x85\x03\x12\x15a\x12\xEAW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\0W`\0\x80\xFD[a\t\xAD\x85\x82\x86\x01a\n\x95V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\"W`\0\x80\xFD[\x845a\x13-\x81a\t\xB9V[\x93P` \x85\x015a\x13=\x81a\t\xB9V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\x13jW`\0\x80\xFD[\x855a\x13u\x81a\t\xB9V[\x94P` \x86\x015a\x13\x85\x81a\t\xB9V[\x93P`@\x86\x015a\x13\x95\x81a\t\xB9V[\x92P``\x86\x015a\x13\xA5\x81a\t\xB9V[\x94\x97\x93\x96P\x91\x94`\x80\x015\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\xCCW`\0\x80\xFD[\x845a\x13\xD7\x81a\t\xB9V[\x93P` \x85\x015\x92P`@\x85\x015a\x12*\x81a\t\xB9V[`\0\x80`@\x83\x85\x03\x12\x15a\x14\x01W`\0\x80\xFD[\x825a\x14\x0C\x81a\t\xB9V[\x91Pa\x14\x1A` \x84\x01a\x0F\\V[\x90P\x92P\x92\x90PV[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15a\x14eW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x14@V[PPP\x83\x81\x03\x82\x85\x01Ra\x14y\x81\x86a\x12\x89V[\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14\x98W`\0\x80\xFD[\x835a\x14\xA3\x81a\t\xB9V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBEW`\0\x80\xFD[a\x14\xCA\x86\x82\x87\x01a\x10\xB1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15a\x14\xEDW`\0\x80\xFD[a\x0B\xF2\x83\x83a\n}V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x15/WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x1D\xD1y\x0F\xDA\xFF\xC91\xF9\xA1,\x9CJ\xE6\x97f\xCE\x139\xD2w\xEB\xD3v\xB8\xD1\x96\x9F\x99<\xF1\xDEdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106102bb5760003560e01c80636d70f7ae11610182578063bb45fef2116100e9578063cbb5d4db116100a2578063dbe35bd81161007c578063dbe35bd81461069f578063eea9064b146106d9578063f16172b014610718578063f698da25146102e957600080fd5b8063cbb5d4db1461060a578063cf80873e14610643578063da8be8641461066757600080fd5b8063bb45fef2146103c4578063bc56ff6614610559578063c448feb81461056c578063c488375a14610363578063c5e480db14610574578063c94b5111146105fc57600080fd5b80639104c3191161013b5780639104c31914610528578063965682711461037757806399be81c81461052f578063a1060c8814610541578063a178848414610363578063a98fb3551461052f57600080fd5b80636d70f7ae1461049957806374d898d714610377578063778e55f3146104bc5780637f548071146104e75780638d90cd56146104f5578063900413471461050857600080fd5b806329c77d4f11610226578063597b36da116101df578063597b36da146104295780635f966f14146103d257806360d7faed14610437578063635bbd101461044c57806365da12641461045d57806367f292c71461048657600080fd5b806329c77d4f1461036357806333404396146103ac578063374823b5146103c45780633cdeb5e0146103d25780633e28391d146103fb57806343377382146102e957600080fd5b80631522bf02116102785780631522bf021461034f57806316928365146103635780631bbce091146103775780631d3696b71461038e57806320606b70146102e957806328a573ae1461034157600080fd5b80630449ca39146102c057806304a4f979146102e95780630b9f487a146102f05780630dd8dd02146103095780630f589e591461032c578063132d496714610341575b600080fd5b6102d66102ce366004610978565b600092915050565b6040519081526020015b60405180910390f35b60006102d6565b6102d66102fe3660046109de565b600095945050505050565b61031f610317366004610978565b606092915050565b6040516102e09190610a39565b61033f61033a366004610ad6565b505050565b005b61033f61033a366004610b29565b61033f61035d366004610b6a565b50505050565b6102d6610371366004610bd5565b50600090565b6102d6610385366004610b29565b60009392505050565b61039c610371366004610bd5565b60405190151581526020016102e0565b61033f6103ba366004610bf9565b5050505050505050565b61039c6102ce366004610cbc565b6103e36103e0366004610bd5565b90565b6040516001600160a01b0390911681526020016102e0565b61039c610409366004610bd5565b6001600160a01b0390811660009081526002602052604090205416151590565b6102d6610371366004610e7e565b61033f610445366004610f6c565b5050505050565b61033f61045a366004610ff7565b50565b6103e361046b366004610bd5565b6002602052600090815260409020546001600160a01b031681565b61033f610494366004611010565b610726565b61039c6104a7366004610bd5565b60006020819052908152604090205460ff1681565b6102d66104ca366004611078565b600160209081526000928352604080842090915290825290205481565b61033f610445366004611159565b61033f6105033660046111e9565b6107a0565b61051b61051636600461123a565b610806565b6040516102e091906112c4565b60006103e3565b61033f61053d3660046112d7565b5050565b6102d661054f36600461130c565b6000949350505050565b61033f610567366004611352565b6108e8565b61c4e06102d6565b6105c6610582366004610bd5565b604080516060810182526000808252602082018190529181019190915250604080516060810182526001600160a01b03909216808352602083015260009082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016102e0565b6102d661054f3660046113b6565b61033f6106183660046113ee565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b610659610651366004610bd5565b506060908190565b6040516102e0929190611423565b61031f610675366004610bd5565b6001600160a01b0316600090815260026020526040902080546001600160a01b0319169055606090565b61033f6106ad366004610b29565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b61033f6106e7366004611483565b505033600090815260026020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61033f61045a3660046114db565b60405163c608c7f360e01b81526001600160a01b038581166004830152848116602483015260448201849052828116606483015286169063c608c7f3906084015b600060405180830381600087803b15801561078157600080fd5b505af1158015610795573d6000803e3d6000fd5b505050505050505050565b604051638c80d4e560e01b81526001600160a01b038481166004830152838116602483015260448201839052851690638c80d4e590606401600060405180830381600087803b1580156107f257600080fd5b505af11580156103ba573d6000803e3d6000fd5b6060600082516001600160401b0381111561082357610823610ce8565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b50905060005b83518110156108e0576001600160a01b0385166000908152600160205260408120855190919086908490811061088a5761088a6114f7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106108c5576108c56114f7565b60209081029190910101526108d98161150d565b9050610852565b509392505050565b60405163c4623ea160e01b81526001600160a01b038581166004830152848116602483015283811660448301526064820183905286169063c4623ea190608401610767565b60008083601f84011261093f57600080fd5b5081356001600160401b0381111561095657600080fd5b6020830191508360208260051b850101111561097157600080fd5b9250929050565b6000806020838503121561098b57600080fd5b82356001600160401b038111156109a157600080fd5b6109ad8582860161092d565b90969095509350505050565b6001600160a01b038116811461045a57600080fd5b80356109d9816109b9565b919050565b600080600080600060a086880312156109f657600080fd5b8535610a01816109b9565b94506020860135610a11816109b9565b93506040860135610a21816109b9565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015610a7157835183529284019291840191600101610a55565b50909695505050505050565b600060608284031215610a8f57600080fd5b50919050565b60008083601f840112610aa757600080fd5b5081356001600160401b03811115610abe57600080fd5b60208301915083602082850101111561097157600080fd5b600080600060808486031215610aeb57600080fd5b610af58585610a7d565b925060608401356001600160401b03811115610b1057600080fd5b610b1c86828701610a95565b9497909650939450505050565b600080600060608486031215610b3e57600080fd5b8335610b49816109b9565b92506020840135610b59816109b9565b929592945050506040919091013590565b60008060008060408587031215610b8057600080fd5b84356001600160401b0380821115610b9757600080fd5b610ba38883890161092d565b90965094506020870135915080821115610bbc57600080fd5b50610bc98782880161092d565b95989497509550505050565b600060208284031215610be757600080fd5b8135610bf2816109b9565b9392505050565b6000806000806000806000806080898b031215610c1557600080fd5b88356001600160401b0380821115610c2c57600080fd5b610c388c838d0161092d565b909a50985060208b0135915080821115610c5157600080fd5b610c5d8c838d0161092d565b909850965060408b0135915080821115610c7657600080fd5b610c828c838d0161092d565b909650945060608b0135915080821115610c9b57600080fd5b50610ca88b828c0161092d565b999c989b5096995094979396929594505050565b60008060408385031215610ccf57600080fd5b8235610cda816109b9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610d2057610d20610ce8565b60405290565b604080519081016001600160401b0381118282101715610d2057610d20610ce8565b604051601f8201601f191681016001600160401b0381118282101715610d7057610d70610ce8565b604052919050565b803563ffffffff811681146109d957600080fd5b60006001600160401b03821115610da557610da5610ce8565b5060051b60200190565b600082601f830112610dc057600080fd5b81356020610dd5610dd083610d8c565b610d48565b82815260059290921b84018101918181019086841115610df457600080fd5b8286015b84811015610e18578035610e0b816109b9565b8352918301918301610df8565b509695505050505050565b600082601f830112610e3457600080fd5b81356020610e44610dd083610d8c565b82815260059290921b84018101918181019086841115610e6357600080fd5b8286015b84811015610e185780358352918301918301610e67565b600060208284031215610e9057600080fd5b81356001600160401b0380821115610ea757600080fd5b9083019060e08286031215610ebb57600080fd5b610ec3610cfe565b610ecc836109ce565b8152610eda602084016109ce565b6020820152610eeb604084016109ce565b604082015260608301356060820152610f0660808401610d78565b608082015260a083013582811115610f1d57600080fd5b610f2987828601610daf565b60a08301525060c083013582811115610f4157600080fd5b610f4d87828601610e23565b60c08301525095945050505050565b803580151581146109d957600080fd5b600080600080600060808688031215610f8457600080fd5b85356001600160401b0380821115610f9b57600080fd5b9087019060e0828a031215610faf57600080fd5b90955060208701359080821115610fc557600080fd5b50610fd28882890161092d565b90955093505060408601359150610feb60608701610f5c565b90509295509295909350565b60006020828403121561100957600080fd5b5035919050565b600080600080600060a0868803121561102857600080fd5b8535611033816109b9565b94506020860135611043816109b9565b93506040860135611053816109b9565b925060608601359150608086013561106a816109b9565b809150509295509295909350565b6000806040838503121561108b57600080fd5b8235611096816109b9565b915060208301356110a6816109b9565b809150509250929050565b6000604082840312156110c357600080fd5b6110cb610d26565b905081356001600160401b03808211156110e457600080fd5b818401915084601f8301126110f857600080fd5b813560208282111561110c5761110c610ce8565b61111e601f8301601f19168201610d48565b9250818352868183860101111561113457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561117157600080fd5b853561117c816109b9565b9450602086013561118c816109b9565b935060408601356001600160401b03808211156111a857600080fd5b6111b489838a016110b1565b945060608801359150808211156111ca57600080fd5b506111d7888289016110b1565b95989497509295608001359392505050565b600080600080608085870312156111ff57600080fd5b843561120a816109b9565b9350602085013561121a816109b9565b9250604085013561122a816109b9565b9396929550929360600135925050565b6000806040838503121561124d57600080fd5b8235611258816109b9565b915060208301356001600160401b0381111561127357600080fd5b61127f85828601610daf565b9150509250929050565b600081518084526020808501945080840160005b838110156112b95781518752958201959082019060010161129d565b509495945050505050565b602081526000610bf26020830184611289565b600080602083850312156112ea57600080fd5b82356001600160401b0381111561130057600080fd5b6109ad85828601610a95565b6000806000806080858703121561132257600080fd5b843561132d816109b9565b9350602085013561133d816109b9565b93969395505050506040820135916060013590565b600080600080600060a0868803121561136a57600080fd5b8535611375816109b9565b94506020860135611385816109b9565b93506040860135611395816109b9565b925060608601356113a5816109b9565b949793965091946080013592915050565b600080600080608085870312156113cc57600080fd5b84356113d7816109b9565b935060208501359250604085013561122a816109b9565b6000806040838503121561140157600080fd5b823561140c816109b9565b915061141a60208401610f5c565b90509250929050565b604080825283519082018190526000906020906060840190828701845b828110156114655781516001600160a01b031684529284019290840190600101611440565b505050838103828501526114798186611289565b9695505050505050565b60008060006060848603121561149857600080fd5b83356114a3816109b9565b925060208401356001600160401b038111156114be57600080fd5b6114ca868287016110b1565b925050604084013590509250925092565b6000606082840312156114ed57600080fd5b610bf28383610a7d565b634e487b7160e01b600052603260045260246000fd5b600060001982141561152f57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201dd1790fdaffc931f9a12c9c4ae69766ce1339d277ebd376b8d1969f993cf1de64736f6c634300080c0033 + /// ``` + #[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\xBBW`\x005`\xE0\x1C\x80cmp\xF7\xAE\x11a\x01\x82W\x80c\xBBE\xFE\xF2\x11a\0\xE9W\x80c\xCB\xB5\xD4\xDB\x11a\0\xA2W\x80c\xDB\xE3[\xD8\x11a\0|W\x80c\xDB\xE3[\xD8\x14a\x06\x9FW\x80c\xEE\xA9\x06K\x14a\x06\xD9W\x80c\xF1ar\xB0\x14a\x07\x18W\x80c\xF6\x98\xDA%\x14a\x02\xE9W`\0\x80\xFD[\x80c\xCB\xB5\xD4\xDB\x14a\x06\nW\x80c\xCF\x80\x87>\x14a\x06CW\x80c\xDA\x8B\xE8d\x14a\x06gW`\0\x80\xFD[\x80c\xBBE\xFE\xF2\x14a\x03\xC4W\x80c\xBCV\xFFf\x14a\x05YW\x80c\xC4H\xFE\xB8\x14a\x05lW\x80c\xC4\x887Z\x14a\x03cW\x80c\xC5\xE4\x80\xDB\x14a\x05tW\x80c\xC9KQ\x11\x14a\x05\xFCW`\0\x80\xFD[\x80c\x91\x04\xC3\x19\x11a\x01;W\x80c\x91\x04\xC3\x19\x14a\x05(W\x80c\x96V\x82q\x14a\x03wW\x80c\x99\xBE\x81\xC8\x14a\x05/W\x80c\xA1\x06\x0C\x88\x14a\x05AW\x80c\xA1x\x84\x84\x14a\x03cW\x80c\xA9\x8F\xB3U\x14a\x05/W`\0\x80\xFD[\x80cmp\xF7\xAE\x14a\x04\x99W\x80ct\xD8\x98\xD7\x14a\x03wW\x80cw\x8EU\xF3\x14a\x04\xBCW\x80c\x7FT\x80q\x14a\x04\xE7W\x80c\x8D\x90\xCDV\x14a\x04\xF5W\x80c\x90\x04\x13G\x14a\x05\x08W`\0\x80\xFD[\x80c)\xC7}O\x11a\x02&W\x80cY{6\xDA\x11a\x01\xDFW\x80cY{6\xDA\x14a\x04)W\x80c_\x96o\x14\x14a\x03\xD2W\x80c`\xD7\xFA\xED\x14a\x047W\x80cc[\xBD\x10\x14a\x04LW\x80ce\xDA\x12d\x14a\x04]W\x80cg\xF2\x92\xC7\x14a\x04\x86W`\0\x80\xFD[\x80c)\xC7}O\x14a\x03cW\x80c3@C\x96\x14a\x03\xACW\x80c7H#\xB5\x14a\x03\xC4W\x80c<\xDE\xB5\xE0\x14a\x03\xD2W\x80c>(9\x1D\x14a\x03\xFBW\x80cC7s\x82\x14a\x02\xE9W`\0\x80\xFD[\x80c\x15\"\xBF\x02\x11a\x02xW\x80c\x15\"\xBF\x02\x14a\x03OW\x80c\x16\x92\x83e\x14a\x03cW\x80c\x1B\xBC\xE0\x91\x14a\x03wW\x80c\x1D6\x96\xB7\x14a\x03\x8EW\x80c `kp\x14a\x02\xE9W\x80c(\xA5s\xAE\x14a\x03AW`\0\x80\xFD[\x80c\x04I\xCA9\x14a\x02\xC0W\x80c\x04\xA4\xF9y\x14a\x02\xE9W\x80c\x0B\x9FHz\x14a\x02\xF0W\x80c\r\xD8\xDD\x02\x14a\x03\tW\x80c\x0FX\x9EY\x14a\x03,W\x80c\x13-Ig\x14a\x03AW[`\0\x80\xFD[a\x02\xD6a\x02\xCE6`\x04a\txV[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0a\x02\xD6V[a\x02\xD6a\x02\xFE6`\x04a\t\xDEV[`\0\x95\x94PPPPPV[a\x03\x1Fa\x03\x176`\x04a\txV[``\x92\x91PPV[`@Qa\x02\xE0\x91\x90a\n9V[a\x03?a\x03:6`\x04a\n\xD6V[PPPV[\0[a\x03?a\x03:6`\x04a\x0B)V[a\x03?a\x03]6`\x04a\x0BjV[PPPPV[a\x02\xD6a\x03q6`\x04a\x0B\xD5V[P`\0\x90V[a\x02\xD6a\x03\x856`\x04a\x0B)V[`\0\x93\x92PPPV[a\x03\x9Ca\x03q6`\x04a\x0B\xD5V[`@Q\x90\x15\x15\x81R` \x01a\x02\xE0V[a\x03?a\x03\xBA6`\x04a\x0B\xF9V[PPPPPPPPV[a\x03\x9Ca\x02\xCE6`\x04a\x0C\xBCV[a\x03\xE3a\x03\xE06`\x04a\x0B\xD5V[\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xE0V[a\x03\x9Ca\x04\t6`\x04a\x0B\xD5V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x02` R`@\x90 T\x16\x15\x15\x90V[a\x02\xD6a\x03q6`\x04a\x0E~V[a\x03?a\x04E6`\x04a\x0FlV[PPPPPV[a\x03?a\x04Z6`\x04a\x0F\xF7V[PV[a\x03\xE3a\x04k6`\x04a\x0B\xD5V[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03?a\x04\x946`\x04a\x10\x10V[a\x07&V[a\x03\x9Ca\x04\xA76`\x04a\x0B\xD5V[`\0` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xD6a\x04\xCA6`\x04a\x10xV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03?a\x04E6`\x04a\x11YV[a\x03?a\x05\x036`\x04a\x11\xE9V[a\x07\xA0V[a\x05\x1Ba\x05\x166`\x04a\x12:V[a\x08\x06V[`@Qa\x02\xE0\x91\x90a\x12\xC4V[`\0a\x03\xE3V[a\x03?a\x05=6`\x04a\x12\xD7V[PPV[a\x02\xD6a\x05O6`\x04a\x13\x0CV[`\0\x94\x93PPPPV[a\x03?a\x05g6`\x04a\x13RV[a\x08\xE8V[a\xC4\xE0a\x02\xD6V[a\x05\xC6a\x05\x826`\x04a\x0B\xD5V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x80\x83R` \x83\x01R`\0\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\x02\xE0V[a\x02\xD6a\x05O6`\x04a\x13\xB6V[a\x03?a\x06\x186`\x04a\x13\xEEV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[a\x06Ya\x06Q6`\x04a\x0B\xD5V[P``\x90\x81\x90V[`@Qa\x02\xE0\x92\x91\x90a\x14#V[a\x03\x1Fa\x06u6`\x04a\x0B\xD5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U``\x90V[a\x03?a\x06\xAD6`\x04a\x0B)V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[a\x03?a\x06\xE76`\x04a\x14\x83V[PP3`\0\x90\x81R`\x02` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x03?a\x04Z6`\x04a\x14\xDBV[`@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\x86\x16\x90c\xC6\x08\xC7\xF3\x90`\x84\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x81W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x95W=`\0\x80>=`\0\xFD[PPPPPPPPPV[`@Qc\x8C\x80\xD4\xE5`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x83\x90R\x85\x16\x90c\x8C\x80\xD4\xE5\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xBAW=`\0\x80>=`\0\xFD[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08#Wa\x08#a\x0C\xE8V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08LW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x08\xE0W`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x08\x8AWa\x08\x8Aa\x14\xF7V[` \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\x08\xC5Wa\x08\xC5a\x14\xF7V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x08\xD9\x81a\x15\rV[\x90Pa\x08RV[P\x93\x92PPPV[`@Qc\xC4b>\xA1`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x84\x81\x16`$\x83\x01R\x83\x81\x16`D\x83\x01R`d\x82\x01\x83\x90R\x86\x16\x90c\xC4b>\xA1\x90`\x84\x01a\x07gV[`\0\x80\x83`\x1F\x84\x01\x12a\t?W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\tVW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\tqW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\t\x8BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA1W`\0\x80\xFD[a\t\xAD\x85\x82\x86\x01a\t-V[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04ZW`\0\x80\xFD[\x805a\t\xD9\x81a\t\xB9V[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\t\xF6W`\0\x80\xFD[\x855a\n\x01\x81a\t\xB9V[\x94P` \x86\x015a\n\x11\x81a\t\xB9V[\x93P`@\x86\x015a\n!\x81a\t\xB9V[\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\x15a\nqW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nUV[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15a\n\x8FW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\n\xA7W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xBEW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\tqW`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15a\n\xEBW`\0\x80\xFD[a\n\xF5\x85\x85a\n}V[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0B\x10W`\0\x80\xFD[a\x0B\x1C\x86\x82\x87\x01a\n\x95V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B>W`\0\x80\xFD[\x835a\x0BI\x81a\t\xB9V[\x92P` \x84\x015a\x0BY\x81a\t\xB9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0B\x80W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0B\x97W`\0\x80\xFD[a\x0B\xA3\x88\x83\x89\x01a\t-V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0B\xBCW`\0\x80\xFD[Pa\x0B\xC9\x87\x82\x88\x01a\t-V[\x95\x98\x94\x97P\x95PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\xE7W`\0\x80\xFD[\x815a\x0B\xF2\x81a\t\xB9V[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\x80\x89\x8B\x03\x12\x15a\x0C\x15W`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0C,W`\0\x80\xFD[a\x0C8\x8C\x83\x8D\x01a\t-V[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15a\x0CQW`\0\x80\xFD[a\x0C]\x8C\x83\x8D\x01a\t-V[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15a\x0CvW`\0\x80\xFD[a\x0C\x82\x8C\x83\x8D\x01a\t-V[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15a\x0C\x9BW`\0\x80\xFD[Pa\x0C\xA8\x8B\x82\x8C\x01a\t-V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xCFW`\0\x80\xFD[\x825a\x0C\xDA\x81a\t\xB9V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\r Wa\r a\x0C\xE8V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\r Wa\r a\x0C\xE8V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\rpWa\rpa\x0C\xE8V[`@R\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xD9W`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\r\xA5Wa\r\xA5a\x0C\xE8V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\xC0W`\0\x80\xFD[\x815` a\r\xD5a\r\xD0\x83a\r\x8CV[a\rHV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\r\xF4W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0E\x18W\x805a\x0E\x0B\x81a\t\xB9V[\x83R\x91\x83\x01\x91\x83\x01a\r\xF8V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a\x0E4W`\0\x80\xFD[\x815` a\x0EDa\r\xD0\x83a\r\x8CV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x0EcW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0E\x18W\x805\x83R\x91\x83\x01\x91\x83\x01a\x0EgV[`\0` \x82\x84\x03\x12\x15a\x0E\x90W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0E\xA7W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0E\xBBW`\0\x80\xFD[a\x0E\xC3a\x0C\xFEV[a\x0E\xCC\x83a\t\xCEV[\x81Ra\x0E\xDA` \x84\x01a\t\xCEV[` \x82\x01Ra\x0E\xEB`@\x84\x01a\t\xCEV[`@\x82\x01R``\x83\x015``\x82\x01Ra\x0F\x06`\x80\x84\x01a\rxV[`\x80\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a\x0F\x1DW`\0\x80\xFD[a\x0F)\x87\x82\x86\x01a\r\xAFV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\x0FAW`\0\x80\xFD[a\x0FM\x87\x82\x86\x01a\x0E#V[`\xC0\x83\x01RP\x95\x94PPPPPV[\x805\x80\x15\x15\x81\x14a\t\xD9W`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a\x0F\x84W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\x9BW`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15a\x0F\xAFW`\0\x80\xFD[\x90\x95P` \x87\x015\x90\x80\x82\x11\x15a\x0F\xC5W`\0\x80\xFD[Pa\x0F\xD2\x88\x82\x89\x01a\t-V[\x90\x95P\x93PP`@\x86\x015\x91Pa\x0F\xEB``\x87\x01a\x0F\\V[\x90P\x92\x95P\x92\x95\x90\x93PV[`\0` \x82\x84\x03\x12\x15a\x10\tW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\x10(W`\0\x80\xFD[\x855a\x103\x81a\t\xB9V[\x94P` \x86\x015a\x10C\x81a\t\xB9V[\x93P`@\x86\x015a\x10S\x81a\t\xB9V[\x92P``\x86\x015\x91P`\x80\x86\x015a\x10j\x81a\t\xB9V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x80`@\x83\x85\x03\x12\x15a\x10\x8BW`\0\x80\xFD[\x825a\x10\x96\x81a\t\xB9V[\x91P` \x83\x015a\x10\xA6\x81a\t\xB9V[\x80\x91PP\x92P\x92\x90PV[`\0`@\x82\x84\x03\x12\x15a\x10\xC3W`\0\x80\xFD[a\x10\xCBa\r&V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10\xE4W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x10\xF8W`\0\x80\xFD[\x815` \x82\x82\x11\x15a\x11\x0CWa\x11\x0Ca\x0C\xE8V[a\x11\x1E`\x1F\x83\x01`\x1F\x19\x16\x82\x01a\rHV[\x92P\x81\x83R\x86\x81\x83\x86\x01\x01\x11\x15a\x114W`\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\x15a\x11qW`\0\x80\xFD[\x855a\x11|\x81a\t\xB9V[\x94P` \x86\x015a\x11\x8C\x81a\t\xB9V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xA8W`\0\x80\xFD[a\x11\xB4\x89\x83\x8A\x01a\x10\xB1V[\x94P``\x88\x015\x91P\x80\x82\x11\x15a\x11\xCAW`\0\x80\xFD[Pa\x11\xD7\x88\x82\x89\x01a\x10\xB1V[\x95\x98\x94\x97P\x92\x95`\x80\x015\x93\x92PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x11\xFFW`\0\x80\xFD[\x845a\x12\n\x81a\t\xB9V[\x93P` \x85\x015a\x12\x1A\x81a\t\xB9V[\x92P`@\x85\x015a\x12*\x81a\t\xB9V[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x12MW`\0\x80\xFD[\x825a\x12X\x81a\t\xB9V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12sW`\0\x80\xFD[a\x12\x7F\x85\x82\x86\x01a\r\xAFV[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x12\xB9W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x12\x9DV[P\x94\x95\x94PPPPPV[` \x81R`\0a\x0B\xF2` \x83\x01\x84a\x12\x89V[`\0\x80` \x83\x85\x03\x12\x15a\x12\xEAW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\0W`\0\x80\xFD[a\t\xAD\x85\x82\x86\x01a\n\x95V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\"W`\0\x80\xFD[\x845a\x13-\x81a\t\xB9V[\x93P` \x85\x015a\x13=\x81a\t\xB9V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\x13jW`\0\x80\xFD[\x855a\x13u\x81a\t\xB9V[\x94P` \x86\x015a\x13\x85\x81a\t\xB9V[\x93P`@\x86\x015a\x13\x95\x81a\t\xB9V[\x92P``\x86\x015a\x13\xA5\x81a\t\xB9V[\x94\x97\x93\x96P\x91\x94`\x80\x015\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\xCCW`\0\x80\xFD[\x845a\x13\xD7\x81a\t\xB9V[\x93P` \x85\x015\x92P`@\x85\x015a\x12*\x81a\t\xB9V[`\0\x80`@\x83\x85\x03\x12\x15a\x14\x01W`\0\x80\xFD[\x825a\x14\x0C\x81a\t\xB9V[\x91Pa\x14\x1A` \x84\x01a\x0F\\V[\x90P\x92P\x92\x90PV[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15a\x14eW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x14@V[PPP\x83\x81\x03\x82\x85\x01Ra\x14y\x81\x86a\x12\x89V[\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14\x98W`\0\x80\xFD[\x835a\x14\xA3\x81a\t\xB9V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBEW`\0\x80\xFD[a\x14\xCA\x86\x82\x87\x01a\x10\xB1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15a\x14\xEDW`\0\x80\xFD[a\x0B\xF2\x83\x83a\n}V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x15/WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x1D\xD1y\x0F\xDA\xFF\xC91\xF9\xA1,\x9CJ\xE6\x97f\xCE\x139\xD2w\xEB\xD3v\xB8\xD1\x96\x9F\x99<\xF1\xDEdsolcC\0\x08\x0C\x003", + ); + /**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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DELEGATION_APPROVAL_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct STAKER_DELEGATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `addShares(address,address,address,address,uint256)` and selector `0xbc56ff66`. + ```solidity + function addShares(address strategyManager, address staker, address token, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesCall { + pub strategyManager: alloy::sol_types::private::Address, + 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,address,uint256)`](addSharesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, + ); + #[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, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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.strategyManager, + value.staker, + value.token, + value.strategy, + value.shares, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategyManager: tuple.0, + staker: tuple.1, + token: tuple.2, + strategy: tuple.3, + shares: 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: 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::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,address,uint256)"; + const SELECTOR: [u8; 4] = [188u8, 86u8, 255u8, 102u8]; + #[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.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 `beaconChainETHStrategy()` and selector `0x9104c319`. + ```solidity + function beaconChainETHStrategy() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `calculateApproverDigestHash(address,address,uint256)` and selector `0x74d898d7`. + ```solidity + function calculateApproverDigestHash(address, address, uint256) external pure returns (bytes32 approverDigestHash); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateApproverDigestHashCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateApproverDigestHash(address,address,uint256)`](calculateApproverDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateApproverDigestHashReturn { + pub approverDigestHash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: calculateApproverDigestHashCall) -> Self { + (value._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateApproverDigestHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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: calculateApproverDigestHashReturn) -> Self { + (value.approverDigestHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateApproverDigestHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + approverDigestHash: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateApproverDigestHashCall { + 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 = calculateApproverDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "calculateApproverDigestHash(address,address,uint256)"; + const SELECTOR: [u8; 4] = [116u8, 216u8, 152u8, 215u8]; + #[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, + ), + as alloy_sol_types::SolType>::tokenize( + &self._2, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, address, uint256) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateCurrentStakerDelegationDigestHashCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateCurrentStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateCurrentStakerDelegationDigestHashCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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._0, + ), + ::tokenize( + &self._1, + ), + as alloy_sol_types::SolType>::tokenize( + &self._2, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, address, address, bytes32, uint256) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateDelegationApprovalDigestHashCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: alloy::sol_types::private::Address, + pub _3: alloy::sol_types::private::FixedBytes<32>, + pub _4: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateDelegationApprovalDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2, value._3, value._4) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateDelegationApprovalDigestHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + _3: tuple.3, + _4: 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._0, + ), + ::tokenize( + &self._1, + ), + ::tokenize( + &self._2, + ), + as alloy_sol_types::SolType>::tokenize(&self._3), + as alloy_sol_types::SolType>::tokenize(&self._4), + ) + } + #[inline] + fn abi_decode_returns( + 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, address, bytes32, uint256) external pure returns (bytes32 digestHash); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateOperatorAVSRegistrationDigestHashCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: alloy::sol_types::private::FixedBytes<32>, + pub _3: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateOperatorAVSRegistrationDigestHashReturn { + pub digestHash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2, value._3) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateOperatorAVSRegistrationDigestHashCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + _3: 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.digestHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateOperatorAVSRegistrationDigestHashReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + digestHash: 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._0, + ), + ::tokenize( + &self._1, + ), + as alloy_sol_types::SolType>::tokenize(&self._2), + as alloy_sol_types::SolType>::tokenize(&self._3), + ) + } + #[inline] + fn abi_decode_returns( + 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, uint256, address, uint256) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateStakerDelegationDigestHashCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + pub _2: alloy::sol_types::private::Address, + pub _3: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2, value._3) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateStakerDelegationDigestHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + _3: 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._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ::tokenize( + &self._2, + ), + as alloy_sol_types::SolType>::tokenize( + &self._3, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateStakerDigestHash(address,address,uint256)` and selector `0x96568271`. + ```solidity + function calculateStakerDigestHash(address, address, uint256) external pure returns (bytes32 stakerDigestHash); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateStakerDigestHashCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateStakerDigestHash(address,address,uint256)`](calculateStakerDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateStakerDigestHashReturn { + pub stakerDigestHash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: calculateStakerDigestHashCall) -> Self { + (value._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateStakerDigestHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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: calculateStakerDigestHashReturn) -> Self { + (value.stakerDigestHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateStakerDigestHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + stakerDigestHash: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateStakerDigestHashCall { + 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 = calculateStakerDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "calculateStakerDigestHash(address,address,uint256)"; + const SELECTOR: [u8; 4] = [150u8, 86u8, 130u8, 113u8]; + #[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, + ), + as alloy_sol_types::SolType>::tokenize( + &self._2, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateWithdrawalRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct cumulativeWithdrawalsQueuedReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, address, uint256) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decreaseDelegatedSharesCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decreaseDelegatedSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseDelegatedSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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._0, + ), + ::tokenize( + &self._1, + ), + as alloy_sol_types::SolType>::tokenize( + &self._2, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, bytes32) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegateToCall { + pub operator: alloy::sol_types::private::Address, + pub _1: ::RustType, + pub _2: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegateToReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + _1: tuple.1, + _2: 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._1, + ), + as alloy_sol_types::SolType>::tokenize(&self._2), + ) + } + #[inline] + fn abi_decode_returns( + 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, address, ISignatureUtils.SignatureWithExpiry memory, ISignatureUtils.SignatureWithExpiry memory, bytes32) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegateToBySignatureCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: ::RustType, + pub _3: ::RustType, + pub _4: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegateToBySignatureReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2, value._3, value._4) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToBySignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + _3: tuple.3, + _4: 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._0, + ), + ::tokenize( + &self._1, + ), + ::tokenize( + &self._2, + ), + ::tokenize( + &self._3, + ), + as alloy_sol_types::SolType>::tokenize(&self._4), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegatedToReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 pure returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 pure returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationApproverSaltIsSpentReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `earningsReceiver(address)` and selector `0x5f966f14`. + ```solidity + function earningsReceiver(address operator) external pure returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct earningsReceiverCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`earningsReceiver(address)`](earningsReceiverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct earningsReceiverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: earningsReceiverCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for earningsReceiverCall { + 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: earningsReceiverReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for earningsReceiverReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for earningsReceiverCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = earningsReceiverReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "earningsReceiver(address)"; + const SELECTOR: [u8; 4] = [95u8, 150u8, 111u8, 20u8]; + #[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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSharesReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalDelayCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalDelayReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalDelayCall { + 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: 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._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 `increaseDelegatedShares(address,address,uint256)` and selector `0x28a573ae`. + ```solidity + function increaseDelegatedShares(address, address, uint256) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct increaseDelegatedSharesCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct increaseDelegatedSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseDelegatedSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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._0, + ), + ::tokenize( + &self._1, + ), + as alloy_sol_types::SolType>::tokenize( + &self._2, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isDelegatedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `isNotDelegated(address)` and selector `0x1d3696b7`. + ```solidity + function isNotDelegated(address) external pure returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isNotDelegatedCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isNotDelegated(address)`](isNotDelegatedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isNotDelegatedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: isNotDelegatedCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isNotDelegatedCall { + 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: isNotDelegatedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isNotDelegatedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isNotDelegatedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isNotDelegatedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isNotDelegated(address)"; + const SELECTOR: [u8; 4] = [29u8, 54u8, 150u8, 183u8]; + #[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 `isOperator(address)` and selector `0x6d70f7ae`. + ```solidity + function isOperator(address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isOperatorCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isOperatorReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOperatorCall { + 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: 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._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 `minWithdrawalDelayBlocks()` and selector `0xc448feb8`. + ```solidity + function minWithdrawalDelayBlocks() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksCall {} + ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyOperatorDetailsCall { + pub _0: ::RustType, + } + ///Container type for the return parameters of the [`modifyOperatorDetails((address,address,uint32))`](modifyOperatorDetailsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyOperatorDetailsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyOperatorDetailsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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 `operatorDetails(address)` and selector `0xc5e480db`. + ```solidity + function operatorDetails(address operator) external pure returns (IDelegationManager.OperatorDetails memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorDetailsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `operatorSaltIsSpent(address,bytes32)` and selector `0x374823b5`. + ```solidity + function operatorSaltIsSpent(address avs, bytes32 salt) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSaltIsSpentCall { + pub avs: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSaltIsSpentReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.avs, value.salt) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSaltIsSpentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + avs: 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.avs, + ), + 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 `operatorShares(address,address)` and selector `0x778e55f3`. + ```solidity + function operatorShares(address, address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct queueWithdrawalsReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, string memory) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerAsOperatorCall { + pub _0: ::RustType, + pub _1: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerAsOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerAsOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: 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: 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._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 `removeShares(address,address,address,uint256)` and selector `0x8d90cd56`. + ```solidity + function removeShares(address strategyManager, address staker, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesCall { + pub strategyManager: alloy::sol_types::private::Address, + 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,address,uint256)`](removeSharesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: removeSharesCall) -> Self { + ( + value.strategyManager, + value.staker, + value.strategy, + value.shares, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategyManager: tuple.0, + staker: 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: 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::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,address,uint256)"; + const SELECTOR: [u8; 4] = [141u8, 144u8, 205u8, 86u8]; + #[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.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 `setIsOperator(address,bool)` and selector `0xcbb5d4db`. + ```solidity + function setIsOperator(address operator, bool _isOperatorReturnValue) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setIsOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub _isOperatorReturnValue: bool, + } + ///Container type for the return parameters of the [`setIsOperator(address,bool)`](setIsOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setIsOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setIsOperatorCall) -> Self { + (value.operator, value._isOperatorReturnValue) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setIsOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + _isOperatorReturnValue: 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: setIsOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setIsOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setIsOperatorCall { + 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 = setIsOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setIsOperator(address,bool)"; + const SELECTOR: [u8; 4] = [203u8, 181u8, 212u8, 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._isOperatorReturnValue, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setMinWithdrawalDelayBlocksReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setOperatorShares(address,address,uint256)` and selector `0xdbe35bd8`. + ```solidity + function setOperatorShares(address operator, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setOperatorSharesCall { + pub operator: 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 [`setOperatorShares(address,address,uint256)`](setOperatorSharesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setOperatorSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setOperatorSharesCall) -> Self { + (value.operator, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOperatorSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: 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: setOperatorSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOperatorSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setOperatorSharesCall { + 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 = setOperatorSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setOperatorShares(address,address,uint256)"; + const SELECTOR: [u8; 4] = [219u8, 227u8, 91u8, 216u8]; + #[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, + ), + 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 `setStrategyWithdrawalDelayBlocks(address[],uint256[])` and selector `0x1522bf02`. + ```solidity + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWithdrawalDelayBlocksReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `stakerNonce(address)` and selector `0x29c77d4f`. + ```solidity + function stakerNonce(address) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerNonceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerOptOutWindowBlocksCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerOptOutWindowBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerOptOutWindowBlocksCall { + 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: 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._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 `strategyWithdrawalDelayBlocks(address)` and selector `0xc488375a`. + ```solidity + function strategyWithdrawalDelayBlocks(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `undelegate(address)` and selector `0xda8be864`. + ```solidity + function undelegate(address staker) external returns (bytes32[] memory withdrawalRoot); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct undelegateReturn { + pub withdrawalRoot: + alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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 `updateOperatorMetadataURI(string)` and selector `0x99be81c8`. + ```solidity + function updateOperatorMetadataURI(string memory) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorMetadataURICall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorMetadataURIReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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 `withdrawSharesAsTokens(address,address,address,uint256,address)` and selector `0x67f292c7`. + ```solidity + function withdrawSharesAsTokens(address strategyManager, address recipient, address strategy, uint256 shares, address token) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensCall { + pub strategyManager: alloy::sol_types::private::Address, + 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,address,uint256,address)`](withdrawSharesAsTokensCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::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::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.strategyManager, + value.recipient, + value.strategy, + value.shares, + value.token, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawSharesAsTokensCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategyManager: tuple.0, + recipient: tuple.1, + strategy: tuple.2, + shares: tuple.3, + token: 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: 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::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,address,uint256,address)"; + const SELECTOR: [u8; 4] = [103u8, 242u8, 146u8, 199u8]; + #[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.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 [`DelegationMock`](self) function calls. + pub enum DelegationMockCalls { + DELEGATION_APPROVAL_TYPEHASH(DELEGATION_APPROVAL_TYPEHASHCall), + DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall), + STAKER_DELEGATION_TYPEHASH(STAKER_DELEGATION_TYPEHASHCall), + addShares(addSharesCall), + beaconChainETHStrategy(beaconChainETHStrategyCall), + calculateApproverDigestHash(calculateApproverDigestHashCall), + calculateCurrentStakerDelegationDigestHash(calculateCurrentStakerDelegationDigestHashCall), + calculateDelegationApprovalDigestHash(calculateDelegationApprovalDigestHashCall), + calculateOperatorAVSRegistrationDigestHash(calculateOperatorAVSRegistrationDigestHashCall), + calculateStakerDelegationDigestHash(calculateStakerDelegationDigestHashCall), + calculateStakerDigestHash(calculateStakerDigestHashCall), + calculateWithdrawalRoot(calculateWithdrawalRootCall), + completeQueuedWithdrawal(completeQueuedWithdrawalCall), + completeQueuedWithdrawals(completeQueuedWithdrawalsCall), + cumulativeWithdrawalsQueued(cumulativeWithdrawalsQueuedCall), + decreaseDelegatedShares(decreaseDelegatedSharesCall), + delegateTo(delegateToCall), + delegateToBySignature(delegateToBySignatureCall), + delegatedTo(delegatedToCall), + delegationApprover(delegationApproverCall), + delegationApproverSaltIsSpent(delegationApproverSaltIsSpentCall), + domainSeparator(domainSeparatorCall), + earningsReceiver(earningsReceiverCall), + getDelegatableShares(getDelegatableSharesCall), + getOperatorShares(getOperatorSharesCall), + getWithdrawalDelay(getWithdrawalDelayCall), + increaseDelegatedShares(increaseDelegatedSharesCall), + isDelegated(isDelegatedCall), + isNotDelegated(isNotDelegatedCall), + isOperator(isOperatorCall), + minWithdrawalDelayBlocks(minWithdrawalDelayBlocksCall), + modifyOperatorDetails(modifyOperatorDetailsCall), + operatorDetails(operatorDetailsCall), + operatorSaltIsSpent(operatorSaltIsSpentCall), + operatorShares(operatorSharesCall), + queueWithdrawals(queueWithdrawalsCall), + registerAsOperator(registerAsOperatorCall), + removeShares(removeSharesCall), + setIsOperator(setIsOperatorCall), + setMinWithdrawalDelayBlocks(setMinWithdrawalDelayBlocksCall), + setOperatorShares(setOperatorSharesCall), + setStrategyWithdrawalDelayBlocks(setStrategyWithdrawalDelayBlocksCall), + stakerNonce(stakerNonceCall), + stakerOptOutWindowBlocks(stakerOptOutWindowBlocksCall), + strategyWithdrawalDelayBlocks(strategyWithdrawalDelayBlocksCall), + undelegate(undelegateCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + updateOperatorMetadataURI(updateOperatorMetadataURICall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl DelegationMockCalls { + /// 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], + [21u8, 34u8, 191u8, 2u8], + [22u8, 146u8, 131u8, 101u8], + [27u8, 188u8, 224u8, 145u8], + [29u8, 54u8, 150u8, 183u8], + [32u8, 96u8, 107u8, 112u8], + [40u8, 165u8, 115u8, 174u8], + [41u8, 199u8, 125u8, 79u8], + [51u8, 64u8, 67u8, 150u8], + [55u8, 72u8, 35u8, 181u8], + [60u8, 222u8, 181u8, 224u8], + [62u8, 40u8, 57u8, 29u8], + [67u8, 55u8, 115u8, 130u8], + [89u8, 123u8, 54u8, 218u8], + [95u8, 150u8, 111u8, 20u8], + [96u8, 215u8, 250u8, 237u8], + [99u8, 91u8, 189u8, 16u8], + [101u8, 218u8, 18u8, 100u8], + [103u8, 242u8, 146u8, 199u8], + [109u8, 112u8, 247u8, 174u8], + [116u8, 216u8, 152u8, 215u8], + [119u8, 142u8, 85u8, 243u8], + [127u8, 84u8, 128u8, 113u8], + [141u8, 144u8, 205u8, 86u8], + [144u8, 4u8, 19u8, 71u8], + [145u8, 4u8, 195u8, 25u8], + [150u8, 86u8, 130u8, 113u8], + [153u8, 190u8, 129u8, 200u8], + [161u8, 6u8, 12u8, 136u8], + [161u8, 120u8, 132u8, 132u8], + [169u8, 143u8, 179u8, 85u8], + [187u8, 69u8, 254u8, 242u8], + [188u8, 86u8, 255u8, 102u8], + [196u8, 72u8, 254u8, 184u8], + [196u8, 136u8, 55u8, 90u8], + [197u8, 228u8, 128u8, 219u8], + [201u8, 75u8, 81u8, 17u8], + [203u8, 181u8, 212u8, 219u8], + [207u8, 128u8, 135u8, 62u8], + [218u8, 139u8, 232u8, 100u8], + [219u8, 227u8, 91u8, 216u8], + [238u8, 169u8, 6u8, 75u8], + [241u8, 97u8, 114u8, 176u8], + [246u8, 152u8, 218u8, 37u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DelegationMockCalls { + const NAME: &'static str = "DelegationMockCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 49usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DELEGATION_APPROVAL_TYPEHASH(_) => { + ::SELECTOR + } + Self::DOMAIN_TYPEHASH(_) => { + ::SELECTOR + } + Self::STAKER_DELEGATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::addShares(_) => { + ::SELECTOR + } + Self::beaconChainETHStrategy(_) => { + ::SELECTOR + } + Self::calculateApproverDigestHash(_) => { + ::SELECTOR + } + Self::calculateCurrentStakerDelegationDigestHash(_) => { + ::SELECTOR + } + Self::calculateDelegationApprovalDigestHash(_) => { + ::SELECTOR + } + Self::calculateOperatorAVSRegistrationDigestHash(_) => { + ::SELECTOR + } + Self::calculateStakerDelegationDigestHash(_) => { + ::SELECTOR + } + Self::calculateStakerDigestHash(_) => { + ::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::earningsReceiver(_) => { + ::SELECTOR + } + Self::getDelegatableShares(_) => { + ::SELECTOR + } + Self::getOperatorShares(_) => { + ::SELECTOR + } + Self::getWithdrawalDelay(_) => { + ::SELECTOR + } + Self::increaseDelegatedShares(_) => { + ::SELECTOR + } + Self::isDelegated(_) => { + ::SELECTOR + } + Self::isNotDelegated(_) => { + ::SELECTOR + } + Self::isOperator(_) => { + ::SELECTOR + } + Self::minWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::modifyOperatorDetails(_) => { + ::SELECTOR + } + Self::operatorDetails(_) => { + ::SELECTOR + } + Self::operatorSaltIsSpent(_) => { + ::SELECTOR + } + Self::operatorShares(_) => { + ::SELECTOR + } + Self::queueWithdrawals(_) => { + ::SELECTOR + } + Self::registerAsOperator(_) => { + ::SELECTOR + } + Self::removeShares(_) => { + ::SELECTOR + } + Self::setIsOperator(_) => { + ::SELECTOR + } + Self::setMinWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::setOperatorShares(_) => { + ::SELECTOR + } + Self::setStrategyWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::stakerNonce(_) => { + ::SELECTOR + } + Self::stakerOptOutWindowBlocks(_) => { + ::SELECTOR + } + Self::strategyWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::undelegate(_) => { + ::SELECTOR + } + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + Self::updateOperatorMetadataURI(_) => { + ::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 getWithdrawalDelay( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::getWithdrawalDelay) + } + getWithdrawalDelay + }, + { + fn DELEGATION_APPROVAL_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationMockCalls::DELEGATION_APPROVAL_TYPEHASH) + } + DELEGATION_APPROVAL_TYPEHASH + }, + { + fn calculateDelegationApprovalDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationMockCalls::calculateDelegationApprovalDigestHash, + ) + } + calculateDelegationApprovalDigestHash + }, + { + fn queueWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::queueWithdrawals) + } + queueWithdrawals + }, + { + fn registerAsOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::registerAsOperator) + } + registerAsOperator + }, + { + fn decreaseDelegatedShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::decreaseDelegatedShares) + } + decreaseDelegatedShares + }, + { + fn setStrategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationMockCalls::setStrategyWithdrawalDelayBlocks) + } + setStrategyWithdrawalDelayBlocks + }, + { + fn stakerOptOutWindowBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::stakerOptOutWindowBlocks) + } + stakerOptOutWindowBlocks + }, + { + fn calculateCurrentStakerDelegationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationMockCalls::calculateCurrentStakerDelegationDigestHash, + ) + } + calculateCurrentStakerDelegationDigestHash + }, + { + fn isNotDelegated( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::isNotDelegated) + } + isNotDelegated + }, + { + fn DOMAIN_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::DOMAIN_TYPEHASH) + } + DOMAIN_TYPEHASH + }, + { + fn increaseDelegatedShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::increaseDelegatedShares) + } + increaseDelegatedShares + }, + { + fn stakerNonce( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::stakerNonce) + } + stakerNonce + }, + { + fn completeQueuedWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::completeQueuedWithdrawals) + } + completeQueuedWithdrawals + }, + { + fn operatorSaltIsSpent( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::operatorSaltIsSpent) + } + operatorSaltIsSpent + }, + { + fn delegationApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::delegationApprover) + } + delegationApprover + }, + { + fn isDelegated( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::isDelegated) + } + isDelegated + }, + { + fn STAKER_DELEGATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationMockCalls::STAKER_DELEGATION_TYPEHASH) + } + STAKER_DELEGATION_TYPEHASH + }, + { + fn calculateWithdrawalRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::calculateWithdrawalRoot) + } + calculateWithdrawalRoot + }, + { + fn earningsReceiver( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::earningsReceiver) + } + earningsReceiver + }, + { + fn completeQueuedWithdrawal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::completeQueuedWithdrawal) + } + completeQueuedWithdrawal + }, + { + fn setMinWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationMockCalls::setMinWithdrawalDelayBlocks) + } + setMinWithdrawalDelayBlocks + }, + { + fn delegatedTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::delegatedTo) + } + delegatedTo + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn isOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationMockCalls::isOperator) + } + isOperator + }, + { + fn calculateApproverDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationMockCalls::calculateApproverDigestHash) + } + calculateApproverDigestHash + }, + { + fn operatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::operatorShares) + } + operatorShares + }, + { + fn delegateToBySignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::delegateToBySignature) + } + delegateToBySignature + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::removeShares) + } + removeShares + }, + { + fn getOperatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::getOperatorShares) + } + getOperatorShares + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn calculateStakerDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::calculateStakerDigestHash) + } + calculateStakerDigestHash + }, + { + fn updateOperatorMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::updateOperatorMetadataURI) + } + updateOperatorMetadataURI + }, + { + fn calculateOperatorAVSRegistrationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationMockCalls::calculateOperatorAVSRegistrationDigestHash, + ) + } + calculateOperatorAVSRegistrationDigestHash + }, + { + fn cumulativeWithdrawalsQueued( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationMockCalls::cumulativeWithdrawalsQueued) + } + cumulativeWithdrawalsQueued + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn delegationApproverSaltIsSpent( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationMockCalls::delegationApproverSaltIsSpent) + } + delegationApproverSaltIsSpent + }, + { + fn addShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationMockCalls::addShares) + } + addShares + }, + { + fn minWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::minWithdrawalDelayBlocks) + } + minWithdrawalDelayBlocks + }, + { + fn strategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationMockCalls::strategyWithdrawalDelayBlocks) + } + strategyWithdrawalDelayBlocks + }, + { + fn operatorDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::operatorDetails) + } + operatorDetails + }, + { + fn calculateStakerDelegationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationMockCalls::calculateStakerDelegationDigestHash, + ) + } + calculateStakerDelegationDigestHash + }, + { + fn setIsOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::setIsOperator) + } + setIsOperator + }, + { + fn getDelegatableShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::getDelegatableShares) + } + getDelegatableShares + }, + { + fn undelegate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationMockCalls::undelegate) + } + undelegate + }, + { + fn setOperatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::setOperatorShares) + } + setOperatorShares + }, + { + fn delegateTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationMockCalls::delegateTo) + } + delegateTo + }, + { + fn modifyOperatorDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::modifyOperatorDetails) + } + modifyOperatorDetails + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationMockCalls::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::addShares(inner) => { + ::abi_encoded_size(inner) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateApproverDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateCurrentStakerDelegationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateDelegationApprovalDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateStakerDelegationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateStakerDigestHash(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::earningsReceiver(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::isDelegated(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isNotDelegated(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::operatorSaltIsSpent(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::removeShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setIsOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setMinWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setOperatorShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStrategyWithdrawalDelayBlocks(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::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorMetadataURI(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::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::addShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateApproverDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateCurrentStakerDelegationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateDelegationApprovalDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateStakerDelegationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateStakerDigestHash(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::earningsReceiver(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::isDelegated(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isNotDelegated(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::operatorSaltIsSpent(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::removeShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setIsOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setMinWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setOperatorShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setStrategyWithdrawalDelayBlocks(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::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorMetadataURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawSharesAsTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`DelegationMock`](self) events. + pub enum DelegationMockEvents { + 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 DelegationMockEvents { + /// 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 DelegationMockEvents { + const NAME: &'static str = "DelegationMockEvents"; + 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 DelegationMockEvents { + 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 [`DelegationMock`](self) contract instance. + + See the [wrapper's documentation](`DelegationMockInstance`) 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, + ) -> DelegationMockInstance { + DelegationMockInstance::::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>> + { + DelegationMockInstance::::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 { + DelegationMockInstance::::deploy_builder(provider) + } + /**A [`DelegationMock`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`DelegationMock`](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 DelegationMockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DelegationMockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DelegationMockInstance") + .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, + > DelegationMockInstance + { + /**Creates a new wrapper around an on-chain [`DelegationMock`](self) contract instance. + + See the [wrapper's documentation](`DelegationMockInstance`) 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 DelegationMockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DelegationMockInstance { + DelegationMockInstance { + 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, + > DelegationMockInstance + { + /// 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 [`addShares`] function. + pub fn addShares( + &self, + strategyManager: alloy::sol_types::private::Address, + 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 { + strategyManager, + staker, + token, + strategy, + 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 [`calculateApproverDigestHash`] function. + pub fn calculateApproverDigestHash( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&calculateApproverDigestHashCall { _0, _1, _2 }) + } + ///Creates a new call builder for the [`calculateCurrentStakerDelegationDigestHash`] function. + pub fn calculateCurrentStakerDelegationDigestHash( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateCurrentStakerDelegationDigestHashCall { _0, _1, _2 }) + } + ///Creates a new call builder for the [`calculateDelegationApprovalDigestHash`] function. + pub fn calculateDelegationApprovalDigestHash( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: alloy::sol_types::private::Address, + _3: alloy::sol_types::private::FixedBytes<32>, + _4: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateDelegationApprovalDigestHashCall { _0, _1, _2, _3, _4 }) + } + ///Creates a new call builder for the [`calculateOperatorAVSRegistrationDigestHash`] function. + pub fn calculateOperatorAVSRegistrationDigestHash( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: alloy::sol_types::private::FixedBytes<32>, + _3: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateOperatorAVSRegistrationDigestHashCall { _0, _1, _2, _3 }) + } + ///Creates a new call builder for the [`calculateStakerDelegationDigestHash`] function. + pub fn calculateStakerDelegationDigestHash( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::primitives::aliases::U256, + _2: alloy::sol_types::private::Address, + _3: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateStakerDelegationDigestHashCall { _0, _1, _2, _3 }) + } + ///Creates a new call builder for the [`calculateStakerDigestHash`] function. + pub fn calculateStakerDigestHash( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&calculateStakerDigestHashCall { _0, _1, _2 }) + } + ///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, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decreaseDelegatedSharesCall { _0, _1, _2 }) + } + ///Creates a new call builder for the [`delegateTo`] function. + pub fn delegateTo( + &self, + operator: alloy::sol_types::private::Address, + _1: ::RustType, + _2: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegateToCall { operator, _1, _2 }) + } + ///Creates a new call builder for the [`delegateToBySignature`] function. + pub fn delegateToBySignature( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: ::RustType, + _3: ::RustType, + _4: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegateToBySignatureCall { _0, _1, _2, _3, _4 }) + } + ///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 [`earningsReceiver`] function. + pub fn earningsReceiver( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&earningsReceiverCall { operator }) + } + ///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, + _0: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getWithdrawalDelayCall { _0 }) + } + ///Creates a new call builder for the [`increaseDelegatedShares`] function. + pub fn increaseDelegatedShares( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&increaseDelegatedSharesCall { _0, _1, _2 }) + } + ///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 [`isNotDelegated`] function. + pub fn isNotDelegated( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isNotDelegatedCall { _0 }) + } + ///Creates a new call builder for the [`isOperator`] function. + pub fn isOperator( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isOperatorCall { _0 }) + } + ///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, + _0: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&modifyOperatorDetailsCall { _0 }) + } + ///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 [`operatorSaltIsSpent`] function. + pub fn operatorSaltIsSpent( + &self, + avs: alloy::sol_types::private::Address, + salt: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorSaltIsSpentCall { avs, salt }) + } + ///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 [`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, + _0: ::RustType, + _1: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterAsOperatorCall { _0, _1 }) + } + ///Creates a new call builder for the [`removeShares`] function. + pub fn removeShares( + &self, + strategyManager: alloy::sol_types::private::Address, + 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 { + strategyManager, + staker, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`setIsOperator`] function. + pub fn setIsOperator( + &self, + operator: alloy::sol_types::private::Address, + _isOperatorReturnValue: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setIsOperatorCall { + operator, + _isOperatorReturnValue, + }) + } + ///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 [`setOperatorShares`] function. + pub fn setOperatorShares( + &self, + operator: 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(&setOperatorSharesCall { + operator, + strategy, + shares, + }) + } + ///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 [`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, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerOptOutWindowBlocksCall { _0 }) + } + ///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 [`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 [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + _0: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { _0 }) + } + ///Creates a new call builder for the [`updateOperatorMetadataURI`] function. + pub fn updateOperatorMetadataURI( + &self, + _0: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorMetadataURICall { _0 }) + } + ///Creates a new call builder for the [`withdrawSharesAsTokens`] function. + pub fn withdrawSharesAsTokens( + &self, + strategyManager: alloy::sol_types::private::Address, + 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 { + strategyManager, + 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, + > DelegationMockInstance + { + /// 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/ecdsa.rs b/crates/utils/src/middleware/ecdsa.rs similarity index 93% rename from crates/utils/src/ecdsa.rs rename to crates/utils/src/middleware/ecdsa.rs index f52ff679..14fd510d 100644 --- a/crates/utils/src/ecdsa.rs +++ b/crates/utils/src/middleware/ecdsa.rs @@ -9,29 +9,34 @@ interface ECDSA {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ECDSA { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b57a97c6bccc5d94a4f5d703d9c2b21a45484037d80c0492c4b44b3d1327665f64736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204dfd94822643130ae58dd2c35e3701be6c06cda1fbf1de39fda14c986c0176c764736f6c634300080c0033 /// ``` #[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", + 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 M\xFD\x94\x82&C\x13\n\xE5\x8D\xD2\xC3^7\x01\xBEl\x06\xCD\xA1\xFB\xF1\xDE9\xFD\xA1L\x98l\x01v\xC7dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b57a97c6bccc5d94a4f5d703d9c2b21a45484037d80c0492c4b44b3d1327665f64736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204dfd94822643130ae58dd2c35e3701be6c06cda1fbf1de39fda14c986c0176c764736f6c634300080c0033 /// ``` #[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", + 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 M\xFD\x94\x82&C\x13\n\xE5\x8D\xD2\xC3^7\x01\xBEl\x06\xCD\xA1\xFB\xF1\xDE9\xFD\xA1L\x98l\x01v\xC7dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`ECDSA`](self) contract instance. diff --git a/crates/utils/src/ecdsastakeregistry.rs b/crates/utils/src/middleware/ecdsastakeregistry.rs similarity index 69% rename from crates/utils/src/ecdsastakeregistry.rs rename to crates/utils/src/middleware/ecdsastakeregistry.rs index 7ad619f8..4f9cf4d7 100644 --- a/crates/utils/src/ecdsastakeregistry.rs +++ b/crates/utils/src/middleware/ecdsastakeregistry.rs @@ -6,21 +6,31 @@ library ISignatureUtils { struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -375,7 +385,6 @@ interface ECDSAStakeRegistry { error InsufficientWeight(); error InvalidLength(); error InvalidQuorum(); - error InvalidReferenceBlock(); error InvalidSignature(); error InvalidSignedWeight(); error InvalidThreshold(); @@ -392,7 +401,6 @@ interface ECDSAStakeRegistry { 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); @@ -405,8 +413,6 @@ interface ECDSAStakeRegistry { 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; @@ -415,11 +421,10 @@ interface ECDSAStakeRegistry { 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 registerOperatorWithSignature(address _operator, ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature) 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; @@ -531,49 +536,6 @@ interface ECDSAStakeRegistry { ], "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", @@ -764,6 +726,11 @@ interface ECDSAStakeRegistry { "type": "function", "name": "registerOperatorWithSignature", "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, { "name": "_operatorSignature", "type": "tuple", @@ -785,11 +752,6 @@ interface ECDSAStakeRegistry { "internalType": "uint256" } ] - }, - { - "name": "_signingKey", - "type": "address", - "internalType": "address" } ], "outputs": [], @@ -833,19 +795,6 @@ interface ECDSAStakeRegistry { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "updateOperatorSigningKey", - "inputs": [ - { - "name": "_newSigningKey", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, { "type": "function", "name": "updateOperators", @@ -1098,37 +1047,6 @@ interface ECDSAStakeRegistry { ], "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", @@ -1200,11 +1118,6 @@ interface ECDSAStakeRegistry { "name": "InvalidQuorum", "inputs": [] }, - { - "type": "error", - "name": "InvalidReferenceBlock", - "inputs": [] - }, { "type": "error", "name": "InvalidSignature", @@ -1247,40 +1160,50 @@ interface ECDSAStakeRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ECDSAStakeRegistry { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b506040516200299538038062002995833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161290162000094600039600061071901526129016000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063696255be116100de57806398ec1ac911610097578063cdcd358111610071578063cdcd358114610315578063dec5d1f614610328578063ec7fbb311461033b578063f2fde38b1461037757600080fd5b806398ec1ac9146102e7578063ab118995146102fa578063b933fa741461030d57600080fd5b8063696255be1461028d578063715018a6146102a0578063743c31f4146102a8578063857dc190146102bb5780638da5cb5b146102c3578063955f2d90146102d457600080fd5b80633b242e4a116101305780633b242e4a1461020e5780633d5611f61461022157806340bf2fb7146102345780635140a5481461023c5780635e1042e81461024f5780635ef533291461027a57600080fd5b8062cf2ab5146101775780630dba33941461018c5780631626ba7e146101b25780631703a018146101de5780631e4cd85e146101f3578063314f3a4914610206575b600080fd5b61018a610185366004611dee565b61038a565b005b61019f61019a366004611e3c565b610396565b6040519081526020015b60405180910390f35b6101c56101c0366004611ed1565b6103b2565b6040516001600160e01b031990911681526020016101a9565b6101e66103f0565b6040516101a99190611f7a565b61019f610201366004611e3c565b610483565b61019f610499565b61019f61021c366004611f8d565b6104aa565b61018a61022f366004611faa565b6104cb565b60675461019f565b61018a61024a366004612057565b6104da565b61026261025d366004612120565b6104fd565b6040516001600160a01b0390911681526020016101a9565b61018a61028836600461214c565b610526565b61018a61029b366004612165565b610537565b61018a610551565b61018a6102b6366004611f8d565b610565565b61018a61059f565b6033546001600160a01b0316610262565b61019f6102e23660046121a1565b6105a8565b61019f6102f5366004611f8d565b6105d3565b61018a6103083660046122b0565b61083a565b61019f610956565b610262610323366004611f8d565b610962565b61018a610336366004612308565b610983565b610367610349366004611f8d565b6001600160a01b03166000908152606e602052604090205460ff1690565b60405190151581526020016101a9565b61018a610385366004611f8d565b610994565b61039381610a0a565b50565b60006103ac606b63ffffffff80851690610a6116565b92915050565b600080600080848060200190518101906103cc9190612458565b9250925092506103de86848484610b70565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561047657600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610427565b5050505081525050905090565b60006103ac606c63ffffffff80851690610a6116565b60006104a5606b610c2f565b905090565b6001600160a01b0381166000908152606d602052604081206103ac90610c2f565b6104d6338383610c8b565b5050565b6104d6826000815181106104f0576104f061252c565b6020026020010151610dc3565b6001600160a01b0382166000908152606a6020526040812061051f9083610a61565b9392505050565b61052e610de6565b61039381610e40565b61053f610de6565b61054882610e83565b6104d681610a0a565b610559610de6565b6105636000610ec9565b565b336000908152606e602052604090205460ff16610595576040516325ec6c1f60e01b815260040160405180910390fd5b6103933382610f1b565b61056333610fce565b6001600160a01b0382166000908152606d6020526040812061051f9063ffffffff80851690610a6116565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561064a57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105fb565b50505050905060008082516001600160401b0381111561066c5761066c611cb2565b604051908082528060200260200182016040528015610695578160200160208202803683370190505b50905060005b83518110156106fe578381815181106106b6576106b661252c565b6020026020010151600001518282815181106106d4576106d461252c565b6001600160a01b0390921660209283029190910190910152806106f681612558565b91505061069b565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906107509089908690600401612573565b600060405180830381865afa15801561076d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079591908101906125cf565b905060005b845181101561080c578481815181106107b5576107b561252c565b6020026020010151602001516001600160601b03168282815181106107dc576107dc61252c565b60200260200101516107ee919061265f565b6107f8908561267e565b93508061080481612558565b91505061079a565b5061081961271084612696565b9250606754831061082e575090949350505050565b50600095945050505050565b600054610100900460ff161580801561085a5750600054600160ff909116105b806108745750303b158015610874575060005460ff166001145b6108dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108ff576000805461ff0019166101001790555b61090a8484846110f1565b8015610950576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104a5606c610c2f565b6001600160a01b0381166000908152606a602052604081206103ac90610c2f565b61098b610de6565b61054882611152565b61099c610de6565b6001600160a01b038116610a015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d3565b61039381610ec9565b6000805b8251811015610a5757610a39838281518110610a2c57610a2c61252c565b60200260200101516112b1565b610a4390836126b8565b915080610a4f81612558565b915050610a0e565b50610950816113d4565b6000438210610ab25760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108d3565b825460005b81811015610b17576000610acb8284611440565b905084866000018281548110610ae357610ae361252c565b60009182526020909120015463ffffffff161115610b0357809250610b11565b610b0e81600161267e565b91505b50610ab7565b8115610b5b5784610b296001846126f9565b81548110610b3957610b3961252c565b60009182526020909120015464010000000090046001600160e01b0316610b5e565b60005b6001600160e01b031695945050505050565b600083519050600080600080610b8785885161145b565b60005b85811015610c1957888181518110610ba457610ba461252c565b60200260200101519450610bb8858861149c565b9250610bc484866114ef565b610be8838b8a8481518110610bdb57610bdb61252c565b6020026020010151611521565b8493506000610bf78689611552565b9050610c03818461267e565b9250508080610c1190612558565b915050610b8a565b50610c2481876115a5565b505050505050505050565b80546000908015610c785782610c466001836126f9565b81548110610c5657610c5661252c565b60009182526020909120015464010000000090046001600160e01b0316610c7b565b60005b6001600160e01b03169392505050565b6001600160a01b0383166000908152606e602052604090205460ff1615610cc5576040516342ee68b560e01b815260040160405180910390fd5b60658054906000610cd583612558565b90915550506001600160a01b0383166000908152606e60205260408120805460ff19166001179055610d06846112b1565b9050610d11816113d4565b5050610d1d8483610f1b565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d90610d4f908790879060040161273c565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b60655481511461038a5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b031633146105635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d3565b610e4b606c82611601565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610f3c90610c2f565b9050806001600160a01b0316826001600160a01b03161415610f5d57505050565b6001600160a01b038381166000908152606a60205260409020610f81918416611601565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff16611007576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061101783612787565b90915550506001600160a01b0381166000908152606e60205260408120805460ff19169055611045826112b1565b9050611050816113d4565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561109957600080fd5b505af11580156110ad573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff166111185760405162461bcd60e51b81526004016108d39061279e565b606880546001600160a01b0319166001600160a01b03851617905561113c82610e40565b61114581611152565b61114d61172c565b505050565b61115b8161175b565b6111785760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156111eb57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161119c565b5050509152509091506066905060006112048282611c84565b505060005b82515181101561127f5782518051606691908390811061122b5761122b61252c565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061127781612558565b915050611209565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610ebd9291906127e9565b6001600160a01b0381166000908152606d602052604081208190819081906112d890610c2f565b6001600160a01b0386166000908152606e602052604090205490915060ff1661133d576113058184612817565b9250826113155750909392505050565b6001600160a01b0385166000908152606d6020526040812061133691611601565b5050611387565b611346856105d3565b91506113528183612817565b9250826113625750909392505050565b6001600160a01b0385166000908152606d602052604090206113849083611601565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b6000806113e1606b610c2f565b915060006113ef84846126b8565b91508190506113ff606b82611601565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061144f6002848418612696565b61051f9084841661267e565b80821461147e576040516001621398b960e31b0319815260040160405180910390fd5b816104d65760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff16106114c45760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a6020526040902061051f9063ffffffff80851690610a6116565b806001600160a01b0316826001600160a01b0316106104d65760405163ba50f91160e01b815260040160405180910390fd5b6115356001600160a01b038416838361182b565b61114d57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff161061157a5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d6020526040902061051f9063ffffffff80851690610a6116565b60006115b082611977565b9050808311156115d357604051634b05a0f760e11b815260040160405180910390fd5b60006115de836119b3565b9050838111156109505760405163e121632f60e01b815260040160405180910390fd5b815460009081908161161286610c2f565b90506000821180156116505750438661162c6001856126f9565b8154811061163c5761163c61252c565b60009182526020909120015463ffffffff16145b156116b05761165e856119ef565b8661166a6001856126f9565b8154811061167a5761167a61252c565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061171e565b8560000160405180604001604052806116c843611a5c565b63ffffffff1681526020016116dc886119ef565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166117535760405162461bcd60e51b81526004016108d39061279e565b610563611ac1565b8051600090818080805b8451811015611809578481815181106117805761178061252c565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106117c05760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106117d5576117d561252c565b6020026020010151602001516001600160601b0316826117f5919061267e565b91508061180181612558565b915050611765565b50612710811461181f5750600095945050505050565b50600195945050505050565b600080600061183a8585611af1565b9092509050600081600481111561185357611853612856565b1480156118715750856001600160a01b0316826001600160a01b0316145b156118815760019250505061051f565b600080876001600160a01b0316631626ba7e60e01b88886040516024016118a992919061286c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516118e79190612885565b600060405180830381855afa9150503d8060008114611922576040519150601f19603f3d011682016040523d82523d6000602084013e611927565b606091505b509150915081801561193a575080516020145b801561196b57508051630b135d3f60e11b9061195f90830160209081019084016128a1565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff161061199f5760405163e64f180f60e01b815260040160405180910390fd5b6103ac606b63ffffffff80851690610a6116565b6000438263ffffffff16106119db5760405163e64f180f60e01b815260040160405180910390fd5b6103ac606c63ffffffff80851690610a6116565b60006001600160e01b03821115611a585760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108d3565b5090565b600063ffffffff821115611a585760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108d3565b600054610100900460ff16611ae85760405162461bcd60e51b81526004016108d39061279e565b61056333610ec9565b600080825160411415611b285760208301516040840151606085015160001a611b1c87828585611b5e565b94509450505050611725565b825160401415611b525760208301516040840151611b47868383611c4b565b935093505050611725565b50600090506002611725565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b955750600090506003611c42565b8460ff16601b14158015611bad57508460ff16601c14155b15611bbe5750600090506004611c42565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c12573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c3b57600060019250925050611c42565b9150600090505b94509492505050565b6000806001600160ff1b03831681611c6860ff86901c601b61267e565b9050611c7687828885611b5e565b935093505050935093915050565b508054600082559060005260206000209081019061039391905b80821115611a585760008155600101611c9e565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611cea57611cea611cb2565b60405290565b604080519081016001600160401b0381118282101715611cea57611cea611cb2565b604051601f8201601f191681016001600160401b0381118282101715611d3a57611d3a611cb2565b604052919050565b60006001600160401b03821115611d5b57611d5b611cb2565b5060051b60200190565b6001600160a01b038116811461039357600080fd5b600082601f830112611d8b57600080fd5b81356020611da0611d9b83611d42565b611d12565b82815260059290921b84018101918181019086841115611dbf57600080fd5b8286015b84811015611de3578035611dd681611d65565b8352918301918301611dc3565b509695505050505050565b600060208284031215611e0057600080fd5b81356001600160401b03811115611e1657600080fd5b611e2284828501611d7a565b949350505050565b63ffffffff8116811461039357600080fd5b600060208284031215611e4e57600080fd5b813561051f81611e2a565b60006001600160401b03821115611e7257611e72611cb2565b50601f01601f191660200190565b600082601f830112611e9157600080fd5b8135611e9f611d9b82611e59565b818152846020838601011115611eb457600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ee457600080fd5b8235915060208301356001600160401b03811115611f0157600080fd5b611f0d85828601611e80565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b81811015611f6d57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101611f36565b5090979650505050505050565b60208152600061051f6020830184611f17565b600060208284031215611f9f57600080fd5b813561051f81611d65565b60008060408385031215611fbd57600080fd5b82356001600160401b0380821115611fd457600080fd5b9084019060608287031215611fe857600080fd5b60405160608101818110838211171561200357612003611cb2565b60405282358281111561201557600080fd5b61202188828601611e80565b8252506020830135602082015260408301356040820152809450505050602083013561204c81611d65565b809150509250929050565b6000806040838503121561206a57600080fd5b82356001600160401b038082111561208157600080fd5b818501915085601f83011261209557600080fd5b813560206120a5611d9b83611d42565b82815260059290921b840181019181810190898411156120c457600080fd5b8286015b848110156120fc578035868111156120e05760008081fd5b6120ee8c86838b0101611d7a565b8452509183019183016120c8565b509650508601359250508082111561211357600080fd5b50611f0d85828601611e80565b6000806040838503121561213357600080fd5b823561213e81611d65565b946020939093013593505050565b60006020828403121561215e57600080fd5b5035919050565b6000806040838503121561217857600080fd5b8235915060208301356001600160401b0381111561219557600080fd5b611f0d85828601611d7a565b600080604083850312156121b457600080fd5b82356121bf81611d65565b9150602083013561204c81611e2a565b600060208083850312156121e257600080fd5b6121ea611cc8565b915082356001600160401b0381111561220257600080fd5b8301601f8101851361221357600080fd5b8035612221611d9b82611d42565b81815260069190911b8201830190838101908783111561224057600080fd5b928401925b828410156122a3576040848903121561225e5760008081fd5b612266611cf0565b843561227181611d65565b8152848601356001600160601b038116811461228d5760008081fd5b8187015282526040939093019290840190612245565b8552509295945050505050565b6000806000606084860312156122c557600080fd5b83356122d081611d65565b92506020840135915060408401356001600160401b038111156122f257600080fd5b6122fe868287016121cf565b9150509250925092565b6000806040838503121561231b57600080fd5b82356001600160401b038082111561233257600080fd5b61233e868387016121cf565b9350602085013591508082111561235457600080fd5b50611f0d85828601611d7a565b60005b8381101561237c578181015183820152602001612364565b838111156109505750506000910152565b600082601f83011261239e57600080fd5b815160206123ae611d9b83611d42565b82815260059290921b840181019181810190868411156123cd57600080fd5b8286015b84811015611de35780516001600160401b038111156123f05760008081fd5b8701603f810189136124025760008081fd5b848101516040612414611d9b83611e59565b8281528b828486010111156124295760008081fd5b61243883898301848701612361565b86525050509183019183016123d1565b805161245381611e2a565b919050565b60008060006060848603121561246d57600080fd5b83516001600160401b038082111561248457600080fd5b818601915086601f83011261249857600080fd5b815160206124a8611d9b83611d42565b82815260059290921b8401810191818101908a8411156124c757600080fd5b948201945b838610156124ee5785516124df81611d65565b825294820194908201906124cc565b9189015191975090935050508082111561250757600080fd5b506125148682870161238d565b92505061252360408501612448565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561256c5761256c612542565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b818110156125c15785518516835294830194918301916001016125a3565b509098975050505050505050565b600060208083850312156125e257600080fd5b82516001600160401b038111156125f857600080fd5b8301601f8101851361260957600080fd5b8051612617611d9b82611d42565b81815260059190911b8201830190838101908783111561263657600080fd5b928401925b828410156126545783518252928401929084019061263b565b979650505050505050565b600081600019048311821515161561267957612679612542565b500290565b6000821982111561269157612691612542565b500190565b6000826126b357634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156126da576126da612542565b600160ff1b83900384128116156126f3576126f3612542565b50500190565b60008282101561270b5761270b612542565b500390565b60008151808452612728816020860160208601612361565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261276660a0840182612710565b90506020840151606084015260408401516080840152809150509392505050565b60008161279657612796612542565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006127fc6040830185611f17565b828103602084015261280e8185611f17565b95945050505050565b60008083128015600160ff1b85018412161561283557612835612542565b6001600160ff1b038401831381161561285057612850612542565b50500390565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e226040830184612710565b60008251612897818460208701612361565b9190910192915050565b6000602082840312156128b357600080fd5b81516001600160e01b03198116811461051f57600080fdfea264697066735822122041a1848da3a333d4821839e44ee9cccc30bf436bcb37f47a0d3f0d7c8247493364736f6c634300080c0033 + ///0x60a06040523480156200001157600080fd5b506040516200275138038062002751833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516126bd62000094600039600061064401526126bd6000f3fe608060405234801561001057600080fd5b50600436106101415760003560e01c8063696255be116100b857806398ec1ac91161007c57806398ec1ac914610282578063ab11899514610295578063b933fa74146102a8578063dec5d1f6146102b0578063ec7fbb31146102c3578063f2fde38b146102ff57600080fd5b8063696255be14610231578063715018a614610244578063857dc1901461024c5780638da5cb5b14610254578063955f2d901461026f57600080fd5b80631e4cd85e1161010a5780631e4cd85e146101d5578063314f3a49146101e85780633b242e4a146101f057806340bf2fb7146102035780635140a5481461020b5780635ef533291461021e57600080fd5b8062cf2ab5146101465780630a601a121461015b5780630dba33941461016e5780631626ba7e146101945780631703a018146101c0575b600080fd5b610159610154366004611bd2565b610312565b005b610159610169366004611c86565b61031e565b61018161017c366004611d43565b61032c565b6040519081526020015b60405180910390f35b6101a76101a2366004611d60565b610348565b6040516001600160e01b0319909116815260200161018b565b6101c8610386565b60405161018b9190611e09565b6101816101e3366004611d43565b610419565b61018161042f565b6101816101fe366004611e1c565b610440565b606754610181565b610159610219366004611e39565b610461565b61015961022c366004611f02565b610484565b61015961023f366004611f1b565b610495565b6101596104af565b6101596104c3565b6033546040516001600160a01b03909116815260200161018b565b61018161027d366004611f57565b6104cc565b610181610290366004611e1c565b6104fe565b6101596102a3366004612071565b610765565b610181610881565b6101596102be3660046120c9565b61088d565b6102ef6102d1366004611e1c565b6001600160a01b03166000908152606d602052604090205460ff1690565b604051901515815260200161018b565b61015961030d366004611e1c565b61089e565b61031b81610914565b50565b610328828261096b565b5050565b6000610342606a63ffffffff80851690610a9816565b92915050565b600080600080848060200190518101906103629190612214565b92509250925061037486848484610ba7565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561040c57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016103bd565b5050505081525050905090565b6000610342606b63ffffffff80851690610a9816565b600061043b606a610c58565b905090565b6001600160a01b0381166000908152606c6020526040812061034290610c58565b61032882600081518110610477576104776122e8565b6020026020010151610cb4565b61048c610cd7565b61031b81610d31565b61049d610cd7565b6104a682610d74565b61032881610914565b6104b7610cd7565b6104c16000610dba565b565b6104c133610e0c565b6001600160a01b0382166000908152606c602052604081206104f79063ffffffff80851690610a9816565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561057557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610526565b50505050905060008082516001600160401b0381111561059757610597611a96565b6040519080825280602002602001820160405280156105c0578160200160208202803683370190505b50905060005b8351811015610629578381815181106105e1576105e16122e8565b6020026020010151600001518282815181106105ff576105ff6122e8565b6001600160a01b03909216602092830291909101909101528061062181612314565b9150506105c6565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061067b908990869060040161232f565b600060405180830381865afa158015610698573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106c0919081019061238b565b905060005b8451811015610737578481815181106106e0576106e06122e8565b6020026020010151602001516001600160601b0316828281518110610707576107076122e8565b6020026020010151610719919061241b565b610723908561243a565b93508061072f81612314565b9150506106c5565b5061074461271084612452565b92506067548310610759575090949350505050565b50600095945050505050565b600054610100900460ff16158080156107855750600054600160ff909116105b8061079f5750303b15801561079f575060005460ff166001145b6108075760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561082a576000805461ff0019166101001790555b610835848484610f2f565b801561087b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061043b606b610c58565b610895610cd7565b6104a682610f90565b6108a6610cd7565b6001600160a01b03811661090b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107fe565b61031b81610dba565b6000805b825181101561096157610943838281518110610936576109366122e8565b60200260200101516110ef565b61094d9083612474565b91508061095981612314565b915050610918565b5061087b81611212565b6001600160a01b0382166000908152606d602052604090205460ff16156109a5576040516342ee68b560e01b815260040160405180910390fd5b606580549060006109b583612314565b90915550506001600160a01b0382166000908152606d60205260408120805460ff191660011790556109e6836110ef565b90506109f181611212565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d90610a2590869086906004016124e1565b600060405180830381600087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b6000438210610ae95760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016107fe565b825460005b81811015610b4e576000610b02828461127e565b905084866000018281548110610b1a57610b1a6122e8565b60009182526020909120015463ffffffff161115610b3a57809250610b48565b610b4581600161243a565b91505b50610aee565b8115610b925784610b6060018461252c565b81548110610b7057610b706122e8565b60009182526020909120015464010000000090046001600160e01b0316610b95565b60005b6001600160e01b031695945050505050565b600083519050600080610bbb838651611299565b60005b83811015610c44576000878281518110610bda57610bda6122e8565b60200260200101519050610bee84826112da565b610c12818a898581518110610c0557610c056122e8565b602002602001015161130c565b8093506000610c21828861133d565b9050610c2d818561243a565b935050508080610c3c90612314565b915050610bbe565b50610c4f81856113a0565b50505050505050565b80546000908015610ca15782610c6f60018361252c565b81548110610c7f57610c7f6122e8565b60009182526020909120015464010000000090046001600160e01b0316610ca4565b60005b6001600160e01b03169392505050565b6065548151146103125760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b031633146104c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107fe565b610d3c606b826113fc565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610e45576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610e5583612543565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610e83826110ef565b9050610e8e81611212565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610f565760405162461bcd60e51b81526004016107fe9061255a565b606880546001600160a01b0319166001600160a01b038516179055610f7a82610d31565b610f8381610f90565b610f8b611527565b505050565b610f9981611556565b610fb65760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561102957600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610fda565b5050509152509091506066905060006110428282611a68565b505060005b8251518110156110bd57825180516066919083908110611069576110696122e8565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806110b581612314565b915050611047565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610dae9291906125a5565b6001600160a01b0381166000908152606c6020526040812081908190819061111690610c58565b6001600160a01b0386166000908152606d602052604090205490915060ff1661117b5761114381846125d3565b9250826111535750909392505050565b6001600160a01b0385166000908152606c60205260408120611174916113fc565b50506111c5565b611184856104fe565b915061119081836125d3565b9250826111a05750909392505050565b6001600160a01b0385166000908152606c602052604090206111c290836113fc565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b60008061121f606a610c58565b9150600061122d8484612474565b915081905061123d606a826113fc565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061128d6002848418612452565b6104f79084841661243a565b8082146112bc576040516001621398b960e31b0319815260040160405180910390fd5b816103285760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103285760405163ba50f91160e01b815260040160405180910390fd5b6113206001600160a01b0384168383611626565b610f8b57604051638baa579f60e01b815260040160405180910390fd5b600063ffffffff8281161415611375576001600160a01b0383166000908152606c6020526040902061136e90610c58565b9050610342565b6001600160a01b0383166000908152606c6020526040902061136e9063ffffffff80851690610a9816565b60006113ab82611772565b9050808311156113ce57604051634b05a0f760e11b815260040160405180910390fd5b60006113d9836117a5565b90508381111561087b5760405163e121632f60e01b815260040160405180910390fd5b815460009081908161140d86610c58565b905060008211801561144b5750438661142760018561252c565b81548110611437576114376122e8565b60009182526020909120015463ffffffff16145b156114ab57611459856117d3565b8661146560018561252c565b81548110611475576114756122e8565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611519565b8560000160405180604001604052806114c343611840565b63ffffffff1681526020016114d7886117d3565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff1661154e5760405162461bcd60e51b81526004016107fe9061255a565b6104c16118a5565b8051600090818080805b84518110156116045784818151811061157b5761157b6122e8565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106115bb5760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106115d0576115d06122e8565b6020026020010151602001516001600160601b0316826115f0919061243a565b9150806115fc81612314565b915050611560565b50612710811461161a5750600095945050505050565b50600195945050505050565b600080600061163585856118d5565b9092509050600081600481111561164e5761164e612612565b14801561166c5750856001600160a01b0316826001600160a01b0316145b1561167c576001925050506104f7565b600080876001600160a01b0316631626ba7e60e01b88886040516024016116a4929190612628565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116e29190612641565b600060405180830381855afa9150503d806000811461171d576040519150601f19603f3d011682016040523d82523d6000602084013e611722565b606091505b5091509150818015611735575080516020145b801561176657508051630b135d3f60e11b9061175a908301602090810190840161265d565b6001600160e01b031916145b98975050505050505050565b600063ffffffff828116141561178c57610342606a610c58565b610342606a63ffffffff80851690610a9816565b919050565b600063ffffffff82811614156117bf57610342606b610c58565b610342606b63ffffffff80851690610a9816565b60006001600160e01b0382111561183c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016107fe565b5090565b600063ffffffff82111561183c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016107fe565b600054610100900460ff166118cc5760405162461bcd60e51b81526004016107fe9061255a565b6104c133610dba565b60008082516041141561190c5760208301516040840151606085015160001a61190087828585611942565b94509450505050611520565b825160401415611936576020830151604084015161192b868383611a2f565b935093505050611520565b50600090506002611520565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156119795750600090506003611a26565b8460ff16601b1415801561199157508460ff16601c14155b156119a25750600090506004611a26565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156119f6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611a1f57600060019250925050611a26565b9150600090505b94509492505050565b6000806001600160ff1b03831681611a4c60ff86901c601b61243a565b9050611a5a87828885611942565b935093505050935093915050565b508054600082559060005260206000209081019061031b91905b8082111561183c5760008155600101611a82565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611ace57611ace611a96565b60405290565b604080519081016001600160401b0381118282101715611ace57611ace611a96565b604051601f8201601f191681016001600160401b0381118282101715611b1e57611b1e611a96565b604052919050565b60006001600160401b03821115611b3f57611b3f611a96565b5060051b60200190565b6001600160a01b038116811461031b57600080fd5b600082601f830112611b6f57600080fd5b81356020611b84611b7f83611b26565b611af6565b82815260059290921b84018101918181019086841115611ba357600080fd5b8286015b84811015611bc7578035611bba81611b49565b8352918301918301611ba7565b509695505050505050565b600060208284031215611be457600080fd5b81356001600160401b03811115611bfa57600080fd5b611c0684828501611b5e565b949350505050565b60006001600160401b03821115611c2757611c27611a96565b50601f01601f191660200190565b600082601f830112611c4657600080fd5b8135611c54611b7f82611c0e565b818152846020838601011115611c6957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611c9957600080fd5b8235611ca481611b49565b915060208301356001600160401b0380821115611cc057600080fd5b9084019060608287031215611cd457600080fd5b604051606081018181108382111715611cef57611cef611a96565b604052823582811115611d0157600080fd5b611d0d88828601611c35565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff8116811461031b57600080fd5b600060208284031215611d5557600080fd5b81356104f781611d31565b60008060408385031215611d7357600080fd5b8235915060208301356001600160401b03811115611d9057600080fd5b611d9c85828601611c35565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b81811015611dfc57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101611dc5565b5090979650505050505050565b6020815260006104f76020830184611da6565b600060208284031215611e2e57600080fd5b81356104f781611b49565b60008060408385031215611e4c57600080fd5b82356001600160401b0380821115611e6357600080fd5b818501915085601f830112611e7757600080fd5b81356020611e87611b7f83611b26565b82815260059290921b84018101918181019089841115611ea657600080fd5b8286015b84811015611ede57803586811115611ec25760008081fd5b611ed08c86838b0101611b5e565b845250918301918301611eaa565b5096505086013592505080821115611ef557600080fd5b50611d9c85828601611c35565b600060208284031215611f1457600080fd5b5035919050565b60008060408385031215611f2e57600080fd5b8235915060208301356001600160401b03811115611f4b57600080fd5b611d9c85828601611b5e565b60008060408385031215611f6a57600080fd5b8235611f7581611b49565b91506020830135611f8581611d31565b809150509250929050565b60006020808385031215611fa357600080fd5b611fab611aac565b915082356001600160401b03811115611fc357600080fd5b8301601f81018513611fd457600080fd5b8035611fe2611b7f82611b26565b81815260069190911b8201830190838101908783111561200157600080fd5b928401925b82841015612064576040848903121561201f5760008081fd5b612027611ad4565b843561203281611b49565b8152848601356001600160601b038116811461204e5760008081fd5b8187015282526040939093019290840190612006565b8552509295945050505050565b60008060006060848603121561208657600080fd5b833561209181611b49565b92506020840135915060408401356001600160401b038111156120b357600080fd5b6120bf86828701611f90565b9150509250925092565b600080604083850312156120dc57600080fd5b82356001600160401b03808211156120f357600080fd5b6120ff86838701611f90565b9350602085013591508082111561211557600080fd5b50611d9c85828601611b5e565b60005b8381101561213d578181015183820152602001612125565b8381111561087b5750506000910152565b600082601f83011261215f57600080fd5b8151602061216f611b7f83611b26565b82815260059290921b8401810191818101908684111561218e57600080fd5b8286015b84811015611bc75780516001600160401b038111156121b15760008081fd5b8701603f810189136121c35760008081fd5b8481015160406121d5611b7f83611c0e565b8281528b828486010111156121ea5760008081fd5b6121f983898301848701612122565b8652505050918301918301612192565b80516117a081611d31565b60008060006060848603121561222957600080fd5b83516001600160401b038082111561224057600080fd5b818601915086601f83011261225457600080fd5b81516020612264611b7f83611b26565b82815260059290921b8401810191818101908a84111561228357600080fd5b948201945b838610156122aa57855161229b81611b49565b82529482019490820190612288565b918901519197509093505050808211156122c357600080fd5b506122d08682870161214e565b9250506122df60408501612209565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612328576123286122fe565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561237d57855185168352948301949183019160010161235f565b509098975050505050505050565b6000602080838503121561239e57600080fd5b82516001600160401b038111156123b457600080fd5b8301601f810185136123c557600080fd5b80516123d3611b7f82611b26565b81815260059190911b820183019083810190878311156123f257600080fd5b928401925b82841015612410578351825292840192908401906123f7565b979650505050505050565b6000816000190483118215151615612435576124356122fe565b500290565b6000821982111561244d5761244d6122fe565b500190565b60008261246f57634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b0384900385131615612496576124966122fe565b600160ff1b83900384128116156124af576124af6122fe565b50500190565b600081518084526124cd816020860160208601612122565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261250b60a08401826124b5565b90506020840151606084015260408401516080840152809150509392505050565b60008282101561253e5761253e6122fe565b500390565b600081612552576125526122fe565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006125b86040830185611da6565b82810360208401526125ca8185611da6565b95945050505050565b60008083128015600160ff1b8501841216156125f1576125f16122fe565b6001600160ff1b038401831381161561260c5761260c6122fe565b50500390565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611c0660408301846124b5565b60008251612653818460208701612122565b9190910192915050565b60006020828403121561266f57600080fd5b81516001600160e01b0319811681146104f757600080fdfea2646970667358221220f12b4357f2f5bd267328b3d6e6d1ab7b08fba6f5e74846bc03175e24f701bb9564736f6c634300080c0033 /// ``` #[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", + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0'Q8\x03\x80b\0'Q\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&\xBDb\0\0\x94`\09`\0a\x06D\x01Ra&\xBD`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01AW`\x005`\xE0\x1C\x80cibU\xBE\x11a\0\xB8W\x80c\x98\xEC\x1A\xC9\x11a\0|W\x80c\x98\xEC\x1A\xC9\x14a\x02\x82W\x80c\xAB\x11\x89\x95\x14a\x02\x95W\x80c\xB93\xFAt\x14a\x02\xA8W\x80c\xDE\xC5\xD1\xF6\x14a\x02\xB0W\x80c\xEC\x7F\xBB1\x14a\x02\xC3W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xFFW`\0\x80\xFD[\x80cibU\xBE\x14a\x021W\x80cqP\x18\xA6\x14a\x02DW\x80c\x85}\xC1\x90\x14a\x02LW\x80c\x8D\xA5\xCB[\x14a\x02TW\x80c\x95_-\x90\x14a\x02oW`\0\x80\xFD[\x80c\x1EL\xD8^\x11a\x01\nW\x80c\x1EL\xD8^\x14a\x01\xD5W\x80c1O:I\x14a\x01\xE8W\x80c;$.J\x14a\x01\xF0W\x80c@\xBF/\xB7\x14a\x02\x03W\x80cQ@\xA5H\x14a\x02\x0BW\x80c^\xF53)\x14a\x02\x1EW`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x01FW\x80c\n`\x1A\x12\x14a\x01[W\x80c\r\xBA3\x94\x14a\x01nW\x80c\x16&\xBA~\x14a\x01\x94W\x80c\x17\x03\xA0\x18\x14a\x01\xC0W[`\0\x80\xFD[a\x01Ya\x01T6`\x04a\x1B\xD2V[a\x03\x12V[\0[a\x01Ya\x01i6`\x04a\x1C\x86V[a\x03\x1EV[a\x01\x81a\x01|6`\x04a\x1DCV[a\x03,V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\xA7a\x01\xA26`\x04a\x1D`V[a\x03HV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01\x8BV[a\x01\xC8a\x03\x86V[`@Qa\x01\x8B\x91\x90a\x1E\tV[a\x01\x81a\x01\xE36`\x04a\x1DCV[a\x04\x19V[a\x01\x81a\x04/V[a\x01\x81a\x01\xFE6`\x04a\x1E\x1CV[a\x04@V[`gTa\x01\x81V[a\x01Ya\x02\x196`\x04a\x1E9V[a\x04aV[a\x01Ya\x02,6`\x04a\x1F\x02V[a\x04\x84V[a\x01Ya\x02?6`\x04a\x1F\x1BV[a\x04\x95V[a\x01Ya\x04\xAFV[a\x01Ya\x04\xC3V[`3T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x8BV[a\x01\x81a\x02}6`\x04a\x1FWV[a\x04\xCCV[a\x01\x81a\x02\x906`\x04a\x1E\x1CV[a\x04\xFEV[a\x01Ya\x02\xA36`\x04a qV[a\x07eV[a\x01\x81a\x08\x81V[a\x01Ya\x02\xBE6`\x04a \xC9V[a\x08\x8DV[a\x02\xEFa\x02\xD16`\x04a\x1E\x1CV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\x8BV[a\x01Ya\x03\r6`\x04a\x1E\x1CV[a\x08\x9EV[a\x03\x1B\x81a\t\x14V[PV[a\x03(\x82\x82a\tkV[PPV[`\0a\x03B`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[\x92\x91PPV[`\0\x80`\0\x80\x84\x80` \x01\x90Q\x81\x01\x90a\x03b\x91\x90a\"\x14V[\x92P\x92P\x92Pa\x03t\x86\x84\x84\x84a\x0B\xA7V[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\x04\x0CW`\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\x03\xBDV[PPPP\x81RPP\x90P\x90V[`\0a\x03B`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[`\0a\x04;`ja\x0CXV[\x90P\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`l` R`@\x81 a\x03B\x90a\x0CXV[a\x03(\x82`\0\x81Q\x81\x10a\x04wWa\x04wa\"\xE8V[` \x02` \x01\x01Qa\x0C\xB4V[a\x04\x8Ca\x0C\xD7V[a\x03\x1B\x81a\r1V[a\x04\x9Da\x0C\xD7V[a\x04\xA6\x82a\rtV[a\x03(\x81a\t\x14V[a\x04\xB7a\x0C\xD7V[a\x04\xC1`\0a\r\xBAV[V[a\x04\xC13a\x0E\x0CV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`l` R`@\x81 a\x04\xF7\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[\x93\x92PPPV[`\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\x05uW`\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\x05&V[PPPP\x90P`\0\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x05\x97Wa\x05\x97a\x1A\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x06)W\x83\x81\x81Q\x81\x10a\x05\xE1Wa\x05\xE1a\"\xE8V[` \x02` \x01\x01Q`\0\x01Q\x82\x82\x81Q\x81\x10a\x05\xFFWa\x05\xFFa\"\xE8V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x06!\x81a#\x14V[\x91PPa\x05\xC6V[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\x06{\x90\x89\x90\x86\x90`\x04\x01a#/V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x98W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xC0\x91\x90\x81\x01\x90a#\x8BV[\x90P`\0[\x84Q\x81\x10\x15a\x077W\x84\x81\x81Q\x81\x10a\x06\xE0Wa\x06\xE0a\"\xE8V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\x07Wa\x07\x07a\"\xE8V[` \x02` \x01\x01Qa\x07\x19\x91\x90a$\x1BV[a\x07#\x90\x85a$:V[\x93P\x80a\x07/\x81a#\x14V[\x91PPa\x06\xC5V[Pa\x07Da'\x10\x84a$RV[\x92P`gT\x83\x10a\x07YWP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07\x85WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x9FWP0;\x15\x80\x15a\x07\x9FWP`\0T`\xFF\x16`\x01\x14[a\x08\x07W`@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*W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x085\x84\x84\x84a\x0F/V[\x80\x15a\x08{W`\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;`ka\x0CXV[a\x08\x95a\x0C\xD7V[a\x04\xA6\x82a\x0F\x90V[a\x08\xA6a\x0C\xD7V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\x0BW`@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\x07\xFEV[a\x03\x1B\x81a\r\xBAV[`\0\x80[\x82Q\x81\x10\x15a\taWa\tC\x83\x82\x81Q\x81\x10a\t6Wa\t6a\"\xE8V[` \x02` \x01\x01Qa\x10\xEFV[a\tM\x90\x83a$tV[\x91P\x80a\tY\x81a#\x14V[\x91PPa\t\x18V[Pa\x08{\x81a\x12\x12V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16\x15a\t\xA5W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\t\xB5\x83a#\x14V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\t\xE6\x83a\x10\xEFV[\x90Pa\t\xF1\x81a\x12\x12V[PP`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\n%\x90\x86\x90\x86\x90`\x04\x01a$\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\nSW=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x86\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\xA3PPPV[`\0C\x82\x10a\n\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCheckpoints: block not yet mined`D\x82\x01R`d\x01a\x07\xFEV[\x82T`\0[\x81\x81\x10\x15a\x0BNW`\0a\x0B\x02\x82\x84a\x12~V[\x90P\x84\x86`\0\x01\x82\x81T\x81\x10a\x0B\x1AWa\x0B\x1Aa\"\xE8V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x0B:W\x80\x92Pa\x0BHV[a\x0BE\x81`\x01a$:V[\x91P[Pa\n\xEEV[\x81\x15a\x0B\x92W\x84a\x0B``\x01\x84a%,V[\x81T\x81\x10a\x0BpWa\x0Bpa\"\xE8V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B\x95V[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80a\x0B\xBB\x83\x86Qa\x12\x99V[`\0[\x83\x81\x10\x15a\x0CDW`\0\x87\x82\x81Q\x81\x10a\x0B\xDAWa\x0B\xDAa\"\xE8V[` \x02` \x01\x01Q\x90Pa\x0B\xEE\x84\x82a\x12\xDAV[a\x0C\x12\x81\x8A\x89\x85\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a\"\xE8V[` \x02` \x01\x01Qa\x13\x0CV[\x80\x93P`\0a\x0C!\x82\x88a\x13=V[\x90Pa\x0C-\x81\x85a$:V[\x93PPP\x80\x80a\x0C<\x90a#\x14V[\x91PPa\x0B\xBEV[Pa\x0CO\x81\x85a\x13\xA0V[PPPPPPPV[\x80T`\0\x90\x80\x15a\x0C\xA1W\x82a\x0Co`\x01\x83a%,V[\x81T\x81\x10a\x0C\x7FWa\x0C\x7Fa\"\xE8V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C\xA4V[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`eT\x81Q\x14a\x03\x12W`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x04\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x07\xFEV[a\r<`k\x82a\x13\xFCV[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\x81\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16a\x0EEW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0EU\x83a%CV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x0E\x83\x82a\x10\xEFV[\x90Pa\x0E\x8E\x81a\x12\x12V[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\x0E\xD7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\xEBW=`\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\x17\"V[``\x91P[P\x91P\x91P\x81\x80\x15a\x175WP\x80Q` \x14[\x80\x15a\x17fWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x17Z\x90\x83\x01` \x90\x81\x01\x90\x84\x01a&]V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x17\x8CWa\x03B`ja\x0CXV[a\x03B`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[\x91\x90PV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x17\xBFWa\x03B`ka\x0CXV[a\x03B`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x18=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1A\x1FW`\0`\x01\x92P\x92PPa\x1A&V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1AL`\xFF\x86\x90\x1C`\x1Ba$:V[\x90Pa\x1AZ\x87\x82\x88\x85a\x19BV[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\x1B\x91\x90[\x80\x82\x11\x15a\x18Wa%>a\"\xFEV[P\x03\x90V[`\0\x81a%RWa%Ra\"\xFEV[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%\xB8`@\x83\x01\x85a\x1D\xA6V[\x82\x81\x03` \x84\x01Ra%\xCA\x81\x85a\x1D\xA6V[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%\xF1Wa%\xF1a\"\xFEV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a&\x0CWa&\x0Ca\"\xFEV[PP\x03\x90V[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x82\x81R`@` \x82\x01R`\0a\x1C\x06`@\x83\x01\x84a$\xB5V[`\0\x82Qa&S\x81\x84` \x87\x01a!\"V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a&oW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x04\xF7W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xF1+CW\xF2\xF5\xBD&s(\xB3\xD6\xE6\xD1\xAB{\x08\xFB\xA6\xF5\xE7HF\xBC\x03\x17^$\xF7\x01\xBB\x95dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063696255be116100de57806398ec1ac911610097578063cdcd358111610071578063cdcd358114610315578063dec5d1f614610328578063ec7fbb311461033b578063f2fde38b1461037757600080fd5b806398ec1ac9146102e7578063ab118995146102fa578063b933fa741461030d57600080fd5b8063696255be1461028d578063715018a6146102a0578063743c31f4146102a8578063857dc190146102bb5780638da5cb5b146102c3578063955f2d90146102d457600080fd5b80633b242e4a116101305780633b242e4a1461020e5780633d5611f61461022157806340bf2fb7146102345780635140a5481461023c5780635e1042e81461024f5780635ef533291461027a57600080fd5b8062cf2ab5146101775780630dba33941461018c5780631626ba7e146101b25780631703a018146101de5780631e4cd85e146101f3578063314f3a4914610206575b600080fd5b61018a610185366004611dee565b61038a565b005b61019f61019a366004611e3c565b610396565b6040519081526020015b60405180910390f35b6101c56101c0366004611ed1565b6103b2565b6040516001600160e01b031990911681526020016101a9565b6101e66103f0565b6040516101a99190611f7a565b61019f610201366004611e3c565b610483565b61019f610499565b61019f61021c366004611f8d565b6104aa565b61018a61022f366004611faa565b6104cb565b60675461019f565b61018a61024a366004612057565b6104da565b61026261025d366004612120565b6104fd565b6040516001600160a01b0390911681526020016101a9565b61018a61028836600461214c565b610526565b61018a61029b366004612165565b610537565b61018a610551565b61018a6102b6366004611f8d565b610565565b61018a61059f565b6033546001600160a01b0316610262565b61019f6102e23660046121a1565b6105a8565b61019f6102f5366004611f8d565b6105d3565b61018a6103083660046122b0565b61083a565b61019f610956565b610262610323366004611f8d565b610962565b61018a610336366004612308565b610983565b610367610349366004611f8d565b6001600160a01b03166000908152606e602052604090205460ff1690565b60405190151581526020016101a9565b61018a610385366004611f8d565b610994565b61039381610a0a565b50565b60006103ac606b63ffffffff80851690610a6116565b92915050565b600080600080848060200190518101906103cc9190612458565b9250925092506103de86848484610b70565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561047657600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610427565b5050505081525050905090565b60006103ac606c63ffffffff80851690610a6116565b60006104a5606b610c2f565b905090565b6001600160a01b0381166000908152606d602052604081206103ac90610c2f565b6104d6338383610c8b565b5050565b6104d6826000815181106104f0576104f061252c565b6020026020010151610dc3565b6001600160a01b0382166000908152606a6020526040812061051f9083610a61565b9392505050565b61052e610de6565b61039381610e40565b61053f610de6565b61054882610e83565b6104d681610a0a565b610559610de6565b6105636000610ec9565b565b336000908152606e602052604090205460ff16610595576040516325ec6c1f60e01b815260040160405180910390fd5b6103933382610f1b565b61056333610fce565b6001600160a01b0382166000908152606d6020526040812061051f9063ffffffff80851690610a6116565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561064a57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105fb565b50505050905060008082516001600160401b0381111561066c5761066c611cb2565b604051908082528060200260200182016040528015610695578160200160208202803683370190505b50905060005b83518110156106fe578381815181106106b6576106b661252c565b6020026020010151600001518282815181106106d4576106d461252c565b6001600160a01b0390921660209283029190910190910152806106f681612558565b91505061069b565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906107509089908690600401612573565b600060405180830381865afa15801561076d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079591908101906125cf565b905060005b845181101561080c578481815181106107b5576107b561252c565b6020026020010151602001516001600160601b03168282815181106107dc576107dc61252c565b60200260200101516107ee919061265f565b6107f8908561267e565b93508061080481612558565b91505061079a565b5061081961271084612696565b9250606754831061082e575090949350505050565b50600095945050505050565b600054610100900460ff161580801561085a5750600054600160ff909116105b806108745750303b158015610874575060005460ff166001145b6108dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108ff576000805461ff0019166101001790555b61090a8484846110f1565b8015610950576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104a5606c610c2f565b6001600160a01b0381166000908152606a602052604081206103ac90610c2f565b61098b610de6565b61054882611152565b61099c610de6565b6001600160a01b038116610a015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d3565b61039381610ec9565b6000805b8251811015610a5757610a39838281518110610a2c57610a2c61252c565b60200260200101516112b1565b610a4390836126b8565b915080610a4f81612558565b915050610a0e565b50610950816113d4565b6000438210610ab25760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108d3565b825460005b81811015610b17576000610acb8284611440565b905084866000018281548110610ae357610ae361252c565b60009182526020909120015463ffffffff161115610b0357809250610b11565b610b0e81600161267e565b91505b50610ab7565b8115610b5b5784610b296001846126f9565b81548110610b3957610b3961252c565b60009182526020909120015464010000000090046001600160e01b0316610b5e565b60005b6001600160e01b031695945050505050565b600083519050600080600080610b8785885161145b565b60005b85811015610c1957888181518110610ba457610ba461252c565b60200260200101519450610bb8858861149c565b9250610bc484866114ef565b610be8838b8a8481518110610bdb57610bdb61252c565b6020026020010151611521565b8493506000610bf78689611552565b9050610c03818461267e565b9250508080610c1190612558565b915050610b8a565b50610c2481876115a5565b505050505050505050565b80546000908015610c785782610c466001836126f9565b81548110610c5657610c5661252c565b60009182526020909120015464010000000090046001600160e01b0316610c7b565b60005b6001600160e01b03169392505050565b6001600160a01b0383166000908152606e602052604090205460ff1615610cc5576040516342ee68b560e01b815260040160405180910390fd5b60658054906000610cd583612558565b90915550506001600160a01b0383166000908152606e60205260408120805460ff19166001179055610d06846112b1565b9050610d11816113d4565b5050610d1d8483610f1b565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d90610d4f908790879060040161273c565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b60655481511461038a5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b031633146105635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d3565b610e4b606c82611601565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610f3c90610c2f565b9050806001600160a01b0316826001600160a01b03161415610f5d57505050565b6001600160a01b038381166000908152606a60205260409020610f81918416611601565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff16611007576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061101783612787565b90915550506001600160a01b0381166000908152606e60205260408120805460ff19169055611045826112b1565b9050611050816113d4565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561109957600080fd5b505af11580156110ad573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff166111185760405162461bcd60e51b81526004016108d39061279e565b606880546001600160a01b0319166001600160a01b03851617905561113c82610e40565b61114581611152565b61114d61172c565b505050565b61115b8161175b565b6111785760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156111eb57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161119c565b5050509152509091506066905060006112048282611c84565b505060005b82515181101561127f5782518051606691908390811061122b5761122b61252c565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061127781612558565b915050611209565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610ebd9291906127e9565b6001600160a01b0381166000908152606d602052604081208190819081906112d890610c2f565b6001600160a01b0386166000908152606e602052604090205490915060ff1661133d576113058184612817565b9250826113155750909392505050565b6001600160a01b0385166000908152606d6020526040812061133691611601565b5050611387565b611346856105d3565b91506113528183612817565b9250826113625750909392505050565b6001600160a01b0385166000908152606d602052604090206113849083611601565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b6000806113e1606b610c2f565b915060006113ef84846126b8565b91508190506113ff606b82611601565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061144f6002848418612696565b61051f9084841661267e565b80821461147e576040516001621398b960e31b0319815260040160405180910390fd5b816104d65760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff16106114c45760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a6020526040902061051f9063ffffffff80851690610a6116565b806001600160a01b0316826001600160a01b0316106104d65760405163ba50f91160e01b815260040160405180910390fd5b6115356001600160a01b038416838361182b565b61114d57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff161061157a5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d6020526040902061051f9063ffffffff80851690610a6116565b60006115b082611977565b9050808311156115d357604051634b05a0f760e11b815260040160405180910390fd5b60006115de836119b3565b9050838111156109505760405163e121632f60e01b815260040160405180910390fd5b815460009081908161161286610c2f565b90506000821180156116505750438661162c6001856126f9565b8154811061163c5761163c61252c565b60009182526020909120015463ffffffff16145b156116b05761165e856119ef565b8661166a6001856126f9565b8154811061167a5761167a61252c565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061171e565b8560000160405180604001604052806116c843611a5c565b63ffffffff1681526020016116dc886119ef565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166117535760405162461bcd60e51b81526004016108d39061279e565b610563611ac1565b8051600090818080805b8451811015611809578481815181106117805761178061252c565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106117c05760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106117d5576117d561252c565b6020026020010151602001516001600160601b0316826117f5919061267e565b91508061180181612558565b915050611765565b50612710811461181f5750600095945050505050565b50600195945050505050565b600080600061183a8585611af1565b9092509050600081600481111561185357611853612856565b1480156118715750856001600160a01b0316826001600160a01b0316145b156118815760019250505061051f565b600080876001600160a01b0316631626ba7e60e01b88886040516024016118a992919061286c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516118e79190612885565b600060405180830381855afa9150503d8060008114611922576040519150601f19603f3d011682016040523d82523d6000602084013e611927565b606091505b509150915081801561193a575080516020145b801561196b57508051630b135d3f60e11b9061195f90830160209081019084016128a1565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff161061199f5760405163e64f180f60e01b815260040160405180910390fd5b6103ac606b63ffffffff80851690610a6116565b6000438263ffffffff16106119db5760405163e64f180f60e01b815260040160405180910390fd5b6103ac606c63ffffffff80851690610a6116565b60006001600160e01b03821115611a585760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108d3565b5090565b600063ffffffff821115611a585760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108d3565b600054610100900460ff16611ae85760405162461bcd60e51b81526004016108d39061279e565b61056333610ec9565b600080825160411415611b285760208301516040840151606085015160001a611b1c87828585611b5e565b94509450505050611725565b825160401415611b525760208301516040840151611b47868383611c4b565b935093505050611725565b50600090506002611725565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b955750600090506003611c42565b8460ff16601b14158015611bad57508460ff16601c14155b15611bbe5750600090506004611c42565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c12573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c3b57600060019250925050611c42565b9150600090505b94509492505050565b6000806001600160ff1b03831681611c6860ff86901c601b61267e565b9050611c7687828885611b5e565b935093505050935093915050565b508054600082559060005260206000209081019061039391905b80821115611a585760008155600101611c9e565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611cea57611cea611cb2565b60405290565b604080519081016001600160401b0381118282101715611cea57611cea611cb2565b604051601f8201601f191681016001600160401b0381118282101715611d3a57611d3a611cb2565b604052919050565b60006001600160401b03821115611d5b57611d5b611cb2565b5060051b60200190565b6001600160a01b038116811461039357600080fd5b600082601f830112611d8b57600080fd5b81356020611da0611d9b83611d42565b611d12565b82815260059290921b84018101918181019086841115611dbf57600080fd5b8286015b84811015611de3578035611dd681611d65565b8352918301918301611dc3565b509695505050505050565b600060208284031215611e0057600080fd5b81356001600160401b03811115611e1657600080fd5b611e2284828501611d7a565b949350505050565b63ffffffff8116811461039357600080fd5b600060208284031215611e4e57600080fd5b813561051f81611e2a565b60006001600160401b03821115611e7257611e72611cb2565b50601f01601f191660200190565b600082601f830112611e9157600080fd5b8135611e9f611d9b82611e59565b818152846020838601011115611eb457600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ee457600080fd5b8235915060208301356001600160401b03811115611f0157600080fd5b611f0d85828601611e80565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b81811015611f6d57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101611f36565b5090979650505050505050565b60208152600061051f6020830184611f17565b600060208284031215611f9f57600080fd5b813561051f81611d65565b60008060408385031215611fbd57600080fd5b82356001600160401b0380821115611fd457600080fd5b9084019060608287031215611fe857600080fd5b60405160608101818110838211171561200357612003611cb2565b60405282358281111561201557600080fd5b61202188828601611e80565b8252506020830135602082015260408301356040820152809450505050602083013561204c81611d65565b809150509250929050565b6000806040838503121561206a57600080fd5b82356001600160401b038082111561208157600080fd5b818501915085601f83011261209557600080fd5b813560206120a5611d9b83611d42565b82815260059290921b840181019181810190898411156120c457600080fd5b8286015b848110156120fc578035868111156120e05760008081fd5b6120ee8c86838b0101611d7a565b8452509183019183016120c8565b509650508601359250508082111561211357600080fd5b50611f0d85828601611e80565b6000806040838503121561213357600080fd5b823561213e81611d65565b946020939093013593505050565b60006020828403121561215e57600080fd5b5035919050565b6000806040838503121561217857600080fd5b8235915060208301356001600160401b0381111561219557600080fd5b611f0d85828601611d7a565b600080604083850312156121b457600080fd5b82356121bf81611d65565b9150602083013561204c81611e2a565b600060208083850312156121e257600080fd5b6121ea611cc8565b915082356001600160401b0381111561220257600080fd5b8301601f8101851361221357600080fd5b8035612221611d9b82611d42565b81815260069190911b8201830190838101908783111561224057600080fd5b928401925b828410156122a3576040848903121561225e5760008081fd5b612266611cf0565b843561227181611d65565b8152848601356001600160601b038116811461228d5760008081fd5b8187015282526040939093019290840190612245565b8552509295945050505050565b6000806000606084860312156122c557600080fd5b83356122d081611d65565b92506020840135915060408401356001600160401b038111156122f257600080fd5b6122fe868287016121cf565b9150509250925092565b6000806040838503121561231b57600080fd5b82356001600160401b038082111561233257600080fd5b61233e868387016121cf565b9350602085013591508082111561235457600080fd5b50611f0d85828601611d7a565b60005b8381101561237c578181015183820152602001612364565b838111156109505750506000910152565b600082601f83011261239e57600080fd5b815160206123ae611d9b83611d42565b82815260059290921b840181019181810190868411156123cd57600080fd5b8286015b84811015611de35780516001600160401b038111156123f05760008081fd5b8701603f810189136124025760008081fd5b848101516040612414611d9b83611e59565b8281528b828486010111156124295760008081fd5b61243883898301848701612361565b86525050509183019183016123d1565b805161245381611e2a565b919050565b60008060006060848603121561246d57600080fd5b83516001600160401b038082111561248457600080fd5b818601915086601f83011261249857600080fd5b815160206124a8611d9b83611d42565b82815260059290921b8401810191818101908a8411156124c757600080fd5b948201945b838610156124ee5785516124df81611d65565b825294820194908201906124cc565b9189015191975090935050508082111561250757600080fd5b506125148682870161238d565b92505061252360408501612448565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561256c5761256c612542565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b818110156125c15785518516835294830194918301916001016125a3565b509098975050505050505050565b600060208083850312156125e257600080fd5b82516001600160401b038111156125f857600080fd5b8301601f8101851361260957600080fd5b8051612617611d9b82611d42565b81815260059190911b8201830190838101908783111561263657600080fd5b928401925b828410156126545783518252928401929084019061263b565b979650505050505050565b600081600019048311821515161561267957612679612542565b500290565b6000821982111561269157612691612542565b500190565b6000826126b357634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156126da576126da612542565b600160ff1b83900384128116156126f3576126f3612542565b50500190565b60008282101561270b5761270b612542565b500390565b60008151808452612728816020860160208601612361565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261276660a0840182612710565b90506020840151606084015260408401516080840152809150509392505050565b60008161279657612796612542565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006127fc6040830185611f17565b828103602084015261280e8185611f17565b95945050505050565b60008083128015600160ff1b85018412161561283557612835612542565b6001600160ff1b038401831381161561285057612850612542565b50500390565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e226040830184612710565b60008251612897818460208701612361565b9190910192915050565b6000602082840312156128b357600080fd5b81516001600160e01b03198116811461051f57600080fdfea264697066735822122041a1848da3a333d4821839e44ee9cccc30bf436bcb37f47a0d3f0d7c8247493364736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50600436106101415760003560e01c8063696255be116100b857806398ec1ac91161007c57806398ec1ac914610282578063ab11899514610295578063b933fa74146102a8578063dec5d1f6146102b0578063ec7fbb31146102c3578063f2fde38b146102ff57600080fd5b8063696255be14610231578063715018a614610244578063857dc1901461024c5780638da5cb5b14610254578063955f2d901461026f57600080fd5b80631e4cd85e1161010a5780631e4cd85e146101d5578063314f3a49146101e85780633b242e4a146101f057806340bf2fb7146102035780635140a5481461020b5780635ef533291461021e57600080fd5b8062cf2ab5146101465780630a601a121461015b5780630dba33941461016e5780631626ba7e146101945780631703a018146101c0575b600080fd5b610159610154366004611bd2565b610312565b005b610159610169366004611c86565b61031e565b61018161017c366004611d43565b61032c565b6040519081526020015b60405180910390f35b6101a76101a2366004611d60565b610348565b6040516001600160e01b0319909116815260200161018b565b6101c8610386565b60405161018b9190611e09565b6101816101e3366004611d43565b610419565b61018161042f565b6101816101fe366004611e1c565b610440565b606754610181565b610159610219366004611e39565b610461565b61015961022c366004611f02565b610484565b61015961023f366004611f1b565b610495565b6101596104af565b6101596104c3565b6033546040516001600160a01b03909116815260200161018b565b61018161027d366004611f57565b6104cc565b610181610290366004611e1c565b6104fe565b6101596102a3366004612071565b610765565b610181610881565b6101596102be3660046120c9565b61088d565b6102ef6102d1366004611e1c565b6001600160a01b03166000908152606d602052604090205460ff1690565b604051901515815260200161018b565b61015961030d366004611e1c565b61089e565b61031b81610914565b50565b610328828261096b565b5050565b6000610342606a63ffffffff80851690610a9816565b92915050565b600080600080848060200190518101906103629190612214565b92509250925061037486848484610ba7565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561040c57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016103bd565b5050505081525050905090565b6000610342606b63ffffffff80851690610a9816565b600061043b606a610c58565b905090565b6001600160a01b0381166000908152606c6020526040812061034290610c58565b61032882600081518110610477576104776122e8565b6020026020010151610cb4565b61048c610cd7565b61031b81610d31565b61049d610cd7565b6104a682610d74565b61032881610914565b6104b7610cd7565b6104c16000610dba565b565b6104c133610e0c565b6001600160a01b0382166000908152606c602052604081206104f79063ffffffff80851690610a9816565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561057557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610526565b50505050905060008082516001600160401b0381111561059757610597611a96565b6040519080825280602002602001820160405280156105c0578160200160208202803683370190505b50905060005b8351811015610629578381815181106105e1576105e16122e8565b6020026020010151600001518282815181106105ff576105ff6122e8565b6001600160a01b03909216602092830291909101909101528061062181612314565b9150506105c6565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061067b908990869060040161232f565b600060405180830381865afa158015610698573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106c0919081019061238b565b905060005b8451811015610737578481815181106106e0576106e06122e8565b6020026020010151602001516001600160601b0316828281518110610707576107076122e8565b6020026020010151610719919061241b565b610723908561243a565b93508061072f81612314565b9150506106c5565b5061074461271084612452565b92506067548310610759575090949350505050565b50600095945050505050565b600054610100900460ff16158080156107855750600054600160ff909116105b8061079f5750303b15801561079f575060005460ff166001145b6108075760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561082a576000805461ff0019166101001790555b610835848484610f2f565b801561087b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061043b606b610c58565b610895610cd7565b6104a682610f90565b6108a6610cd7565b6001600160a01b03811661090b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107fe565b61031b81610dba565b6000805b825181101561096157610943838281518110610936576109366122e8565b60200260200101516110ef565b61094d9083612474565b91508061095981612314565b915050610918565b5061087b81611212565b6001600160a01b0382166000908152606d602052604090205460ff16156109a5576040516342ee68b560e01b815260040160405180910390fd5b606580549060006109b583612314565b90915550506001600160a01b0382166000908152606d60205260408120805460ff191660011790556109e6836110ef565b90506109f181611212565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d90610a2590869086906004016124e1565b600060405180830381600087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b6000438210610ae95760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016107fe565b825460005b81811015610b4e576000610b02828461127e565b905084866000018281548110610b1a57610b1a6122e8565b60009182526020909120015463ffffffff161115610b3a57809250610b48565b610b4581600161243a565b91505b50610aee565b8115610b925784610b6060018461252c565b81548110610b7057610b706122e8565b60009182526020909120015464010000000090046001600160e01b0316610b95565b60005b6001600160e01b031695945050505050565b600083519050600080610bbb838651611299565b60005b83811015610c44576000878281518110610bda57610bda6122e8565b60200260200101519050610bee84826112da565b610c12818a898581518110610c0557610c056122e8565b602002602001015161130c565b8093506000610c21828861133d565b9050610c2d818561243a565b935050508080610c3c90612314565b915050610bbe565b50610c4f81856113a0565b50505050505050565b80546000908015610ca15782610c6f60018361252c565b81548110610c7f57610c7f6122e8565b60009182526020909120015464010000000090046001600160e01b0316610ca4565b60005b6001600160e01b03169392505050565b6065548151146103125760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b031633146104c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107fe565b610d3c606b826113fc565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610e45576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610e5583612543565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610e83826110ef565b9050610e8e81611212565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610f565760405162461bcd60e51b81526004016107fe9061255a565b606880546001600160a01b0319166001600160a01b038516179055610f7a82610d31565b610f8381610f90565b610f8b611527565b505050565b610f9981611556565b610fb65760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561102957600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610fda565b5050509152509091506066905060006110428282611a68565b505060005b8251518110156110bd57825180516066919083908110611069576110696122e8565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806110b581612314565b915050611047565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610dae9291906125a5565b6001600160a01b0381166000908152606c6020526040812081908190819061111690610c58565b6001600160a01b0386166000908152606d602052604090205490915060ff1661117b5761114381846125d3565b9250826111535750909392505050565b6001600160a01b0385166000908152606c60205260408120611174916113fc565b50506111c5565b611184856104fe565b915061119081836125d3565b9250826111a05750909392505050565b6001600160a01b0385166000908152606c602052604090206111c290836113fc565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b60008061121f606a610c58565b9150600061122d8484612474565b915081905061123d606a826113fc565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061128d6002848418612452565b6104f79084841661243a565b8082146112bc576040516001621398b960e31b0319815260040160405180910390fd5b816103285760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103285760405163ba50f91160e01b815260040160405180910390fd5b6113206001600160a01b0384168383611626565b610f8b57604051638baa579f60e01b815260040160405180910390fd5b600063ffffffff8281161415611375576001600160a01b0383166000908152606c6020526040902061136e90610c58565b9050610342565b6001600160a01b0383166000908152606c6020526040902061136e9063ffffffff80851690610a9816565b60006113ab82611772565b9050808311156113ce57604051634b05a0f760e11b815260040160405180910390fd5b60006113d9836117a5565b90508381111561087b5760405163e121632f60e01b815260040160405180910390fd5b815460009081908161140d86610c58565b905060008211801561144b5750438661142760018561252c565b81548110611437576114376122e8565b60009182526020909120015463ffffffff16145b156114ab57611459856117d3565b8661146560018561252c565b81548110611475576114756122e8565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611519565b8560000160405180604001604052806114c343611840565b63ffffffff1681526020016114d7886117d3565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff1661154e5760405162461bcd60e51b81526004016107fe9061255a565b6104c16118a5565b8051600090818080805b84518110156116045784818151811061157b5761157b6122e8565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106115bb5760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106115d0576115d06122e8565b6020026020010151602001516001600160601b0316826115f0919061243a565b9150806115fc81612314565b915050611560565b50612710811461161a5750600095945050505050565b50600195945050505050565b600080600061163585856118d5565b9092509050600081600481111561164e5761164e612612565b14801561166c5750856001600160a01b0316826001600160a01b0316145b1561167c576001925050506104f7565b600080876001600160a01b0316631626ba7e60e01b88886040516024016116a4929190612628565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116e29190612641565b600060405180830381855afa9150503d806000811461171d576040519150601f19603f3d011682016040523d82523d6000602084013e611722565b606091505b5091509150818015611735575080516020145b801561176657508051630b135d3f60e11b9061175a908301602090810190840161265d565b6001600160e01b031916145b98975050505050505050565b600063ffffffff828116141561178c57610342606a610c58565b610342606a63ffffffff80851690610a9816565b919050565b600063ffffffff82811614156117bf57610342606b610c58565b610342606b63ffffffff80851690610a9816565b60006001600160e01b0382111561183c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016107fe565b5090565b600063ffffffff82111561183c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016107fe565b600054610100900460ff166118cc5760405162461bcd60e51b81526004016107fe9061255a565b6104c133610dba565b60008082516041141561190c5760208301516040840151606085015160001a61190087828585611942565b94509450505050611520565b825160401415611936576020830151604084015161192b868383611a2f565b935093505050611520565b50600090506002611520565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156119795750600090506003611a26565b8460ff16601b1415801561199157508460ff16601c14155b156119a25750600090506004611a26565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156119f6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611a1f57600060019250925050611a26565b9150600090505b94509492505050565b6000806001600160ff1b03831681611a4c60ff86901c601b61243a565b9050611a5a87828885611942565b935093505050935093915050565b508054600082559060005260206000209081019061031b91905b8082111561183c5760008155600101611a82565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611ace57611ace611a96565b60405290565b604080519081016001600160401b0381118282101715611ace57611ace611a96565b604051601f8201601f191681016001600160401b0381118282101715611b1e57611b1e611a96565b604052919050565b60006001600160401b03821115611b3f57611b3f611a96565b5060051b60200190565b6001600160a01b038116811461031b57600080fd5b600082601f830112611b6f57600080fd5b81356020611b84611b7f83611b26565b611af6565b82815260059290921b84018101918181019086841115611ba357600080fd5b8286015b84811015611bc7578035611bba81611b49565b8352918301918301611ba7565b509695505050505050565b600060208284031215611be457600080fd5b81356001600160401b03811115611bfa57600080fd5b611c0684828501611b5e565b949350505050565b60006001600160401b03821115611c2757611c27611a96565b50601f01601f191660200190565b600082601f830112611c4657600080fd5b8135611c54611b7f82611c0e565b818152846020838601011115611c6957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611c9957600080fd5b8235611ca481611b49565b915060208301356001600160401b0380821115611cc057600080fd5b9084019060608287031215611cd457600080fd5b604051606081018181108382111715611cef57611cef611a96565b604052823582811115611d0157600080fd5b611d0d88828601611c35565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff8116811461031b57600080fd5b600060208284031215611d5557600080fd5b81356104f781611d31565b60008060408385031215611d7357600080fd5b8235915060208301356001600160401b03811115611d9057600080fd5b611d9c85828601611c35565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b81811015611dfc57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101611dc5565b5090979650505050505050565b6020815260006104f76020830184611da6565b600060208284031215611e2e57600080fd5b81356104f781611b49565b60008060408385031215611e4c57600080fd5b82356001600160401b0380821115611e6357600080fd5b818501915085601f830112611e7757600080fd5b81356020611e87611b7f83611b26565b82815260059290921b84018101918181019089841115611ea657600080fd5b8286015b84811015611ede57803586811115611ec25760008081fd5b611ed08c86838b0101611b5e565b845250918301918301611eaa565b5096505086013592505080821115611ef557600080fd5b50611d9c85828601611c35565b600060208284031215611f1457600080fd5b5035919050565b60008060408385031215611f2e57600080fd5b8235915060208301356001600160401b03811115611f4b57600080fd5b611d9c85828601611b5e565b60008060408385031215611f6a57600080fd5b8235611f7581611b49565b91506020830135611f8581611d31565b809150509250929050565b60006020808385031215611fa357600080fd5b611fab611aac565b915082356001600160401b03811115611fc357600080fd5b8301601f81018513611fd457600080fd5b8035611fe2611b7f82611b26565b81815260069190911b8201830190838101908783111561200157600080fd5b928401925b82841015612064576040848903121561201f5760008081fd5b612027611ad4565b843561203281611b49565b8152848601356001600160601b038116811461204e5760008081fd5b8187015282526040939093019290840190612006565b8552509295945050505050565b60008060006060848603121561208657600080fd5b833561209181611b49565b92506020840135915060408401356001600160401b038111156120b357600080fd5b6120bf86828701611f90565b9150509250925092565b600080604083850312156120dc57600080fd5b82356001600160401b03808211156120f357600080fd5b6120ff86838701611f90565b9350602085013591508082111561211557600080fd5b50611d9c85828601611b5e565b60005b8381101561213d578181015183820152602001612125565b8381111561087b5750506000910152565b600082601f83011261215f57600080fd5b8151602061216f611b7f83611b26565b82815260059290921b8401810191818101908684111561218e57600080fd5b8286015b84811015611bc75780516001600160401b038111156121b15760008081fd5b8701603f810189136121c35760008081fd5b8481015160406121d5611b7f83611c0e565b8281528b828486010111156121ea5760008081fd5b6121f983898301848701612122565b8652505050918301918301612192565b80516117a081611d31565b60008060006060848603121561222957600080fd5b83516001600160401b038082111561224057600080fd5b818601915086601f83011261225457600080fd5b81516020612264611b7f83611b26565b82815260059290921b8401810191818101908a84111561228357600080fd5b948201945b838610156122aa57855161229b81611b49565b82529482019490820190612288565b918901519197509093505050808211156122c357600080fd5b506122d08682870161214e565b9250506122df60408501612209565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612328576123286122fe565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561237d57855185168352948301949183019160010161235f565b509098975050505050505050565b6000602080838503121561239e57600080fd5b82516001600160401b038111156123b457600080fd5b8301601f810185136123c557600080fd5b80516123d3611b7f82611b26565b81815260059190911b820183019083810190878311156123f257600080fd5b928401925b82841015612410578351825292840192908401906123f7565b979650505050505050565b6000816000190483118215151615612435576124356122fe565b500290565b6000821982111561244d5761244d6122fe565b500190565b60008261246f57634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b0384900385131615612496576124966122fe565b600160ff1b83900384128116156124af576124af6122fe565b50500190565b600081518084526124cd816020860160208601612122565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261250b60a08401826124b5565b90506020840151606084015260408401516080840152809150509392505050565b60008282101561253e5761253e6122fe565b500390565b600081612552576125526122fe565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006125b86040830185611da6565b82810360208401526125ca8185611da6565b95945050505050565b60008083128015600160ff1b8501841216156125f1576125f16122fe565b6001600160ff1b038401831381161561260c5761260c6122fe565b50500390565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611c0660408301846124b5565b60008251612653818460208701612122565b9190910192915050565b60006020828403121561266f57600080fd5b81516001600160e01b0319811681146104f757600080fdfea2646970667358221220f12b4357f2f5bd267328b3d6e6d1ab7b08fba6f5e74846bc03175e24f701bb9564736f6c634300080c0033 /// ``` #[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", + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01AW`\x005`\xE0\x1C\x80cibU\xBE\x11a\0\xB8W\x80c\x98\xEC\x1A\xC9\x11a\0|W\x80c\x98\xEC\x1A\xC9\x14a\x02\x82W\x80c\xAB\x11\x89\x95\x14a\x02\x95W\x80c\xB93\xFAt\x14a\x02\xA8W\x80c\xDE\xC5\xD1\xF6\x14a\x02\xB0W\x80c\xEC\x7F\xBB1\x14a\x02\xC3W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xFFW`\0\x80\xFD[\x80cibU\xBE\x14a\x021W\x80cqP\x18\xA6\x14a\x02DW\x80c\x85}\xC1\x90\x14a\x02LW\x80c\x8D\xA5\xCB[\x14a\x02TW\x80c\x95_-\x90\x14a\x02oW`\0\x80\xFD[\x80c\x1EL\xD8^\x11a\x01\nW\x80c\x1EL\xD8^\x14a\x01\xD5W\x80c1O:I\x14a\x01\xE8W\x80c;$.J\x14a\x01\xF0W\x80c@\xBF/\xB7\x14a\x02\x03W\x80cQ@\xA5H\x14a\x02\x0BW\x80c^\xF53)\x14a\x02\x1EW`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x01FW\x80c\n`\x1A\x12\x14a\x01[W\x80c\r\xBA3\x94\x14a\x01nW\x80c\x16&\xBA~\x14a\x01\x94W\x80c\x17\x03\xA0\x18\x14a\x01\xC0W[`\0\x80\xFD[a\x01Ya\x01T6`\x04a\x1B\xD2V[a\x03\x12V[\0[a\x01Ya\x01i6`\x04a\x1C\x86V[a\x03\x1EV[a\x01\x81a\x01|6`\x04a\x1DCV[a\x03,V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\xA7a\x01\xA26`\x04a\x1D`V[a\x03HV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01\x8BV[a\x01\xC8a\x03\x86V[`@Qa\x01\x8B\x91\x90a\x1E\tV[a\x01\x81a\x01\xE36`\x04a\x1DCV[a\x04\x19V[a\x01\x81a\x04/V[a\x01\x81a\x01\xFE6`\x04a\x1E\x1CV[a\x04@V[`gTa\x01\x81V[a\x01Ya\x02\x196`\x04a\x1E9V[a\x04aV[a\x01Ya\x02,6`\x04a\x1F\x02V[a\x04\x84V[a\x01Ya\x02?6`\x04a\x1F\x1BV[a\x04\x95V[a\x01Ya\x04\xAFV[a\x01Ya\x04\xC3V[`3T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x8BV[a\x01\x81a\x02}6`\x04a\x1FWV[a\x04\xCCV[a\x01\x81a\x02\x906`\x04a\x1E\x1CV[a\x04\xFEV[a\x01Ya\x02\xA36`\x04a qV[a\x07eV[a\x01\x81a\x08\x81V[a\x01Ya\x02\xBE6`\x04a \xC9V[a\x08\x8DV[a\x02\xEFa\x02\xD16`\x04a\x1E\x1CV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\x8BV[a\x01Ya\x03\r6`\x04a\x1E\x1CV[a\x08\x9EV[a\x03\x1B\x81a\t\x14V[PV[a\x03(\x82\x82a\tkV[PPV[`\0a\x03B`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[\x92\x91PPV[`\0\x80`\0\x80\x84\x80` \x01\x90Q\x81\x01\x90a\x03b\x91\x90a\"\x14V[\x92P\x92P\x92Pa\x03t\x86\x84\x84\x84a\x0B\xA7V[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\x04\x0CW`\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\x03\xBDV[PPPP\x81RPP\x90P\x90V[`\0a\x03B`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[`\0a\x04;`ja\x0CXV[\x90P\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`l` R`@\x81 a\x03B\x90a\x0CXV[a\x03(\x82`\0\x81Q\x81\x10a\x04wWa\x04wa\"\xE8V[` \x02` \x01\x01Qa\x0C\xB4V[a\x04\x8Ca\x0C\xD7V[a\x03\x1B\x81a\r1V[a\x04\x9Da\x0C\xD7V[a\x04\xA6\x82a\rtV[a\x03(\x81a\t\x14V[a\x04\xB7a\x0C\xD7V[a\x04\xC1`\0a\r\xBAV[V[a\x04\xC13a\x0E\x0CV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`l` R`@\x81 a\x04\xF7\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[\x93\x92PPPV[`\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\x05uW`\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\x05&V[PPPP\x90P`\0\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x05\x97Wa\x05\x97a\x1A\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x06)W\x83\x81\x81Q\x81\x10a\x05\xE1Wa\x05\xE1a\"\xE8V[` \x02` \x01\x01Q`\0\x01Q\x82\x82\x81Q\x81\x10a\x05\xFFWa\x05\xFFa\"\xE8V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x06!\x81a#\x14V[\x91PPa\x05\xC6V[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\x06{\x90\x89\x90\x86\x90`\x04\x01a#/V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x98W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xC0\x91\x90\x81\x01\x90a#\x8BV[\x90P`\0[\x84Q\x81\x10\x15a\x077W\x84\x81\x81Q\x81\x10a\x06\xE0Wa\x06\xE0a\"\xE8V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\x07Wa\x07\x07a\"\xE8V[` \x02` \x01\x01Qa\x07\x19\x91\x90a$\x1BV[a\x07#\x90\x85a$:V[\x93P\x80a\x07/\x81a#\x14V[\x91PPa\x06\xC5V[Pa\x07Da'\x10\x84a$RV[\x92P`gT\x83\x10a\x07YWP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07\x85WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x9FWP0;\x15\x80\x15a\x07\x9FWP`\0T`\xFF\x16`\x01\x14[a\x08\x07W`@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*W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x085\x84\x84\x84a\x0F/V[\x80\x15a\x08{W`\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;`ka\x0CXV[a\x08\x95a\x0C\xD7V[a\x04\xA6\x82a\x0F\x90V[a\x08\xA6a\x0C\xD7V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\x0BW`@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\x07\xFEV[a\x03\x1B\x81a\r\xBAV[`\0\x80[\x82Q\x81\x10\x15a\taWa\tC\x83\x82\x81Q\x81\x10a\t6Wa\t6a\"\xE8V[` \x02` \x01\x01Qa\x10\xEFV[a\tM\x90\x83a$tV[\x91P\x80a\tY\x81a#\x14V[\x91PPa\t\x18V[Pa\x08{\x81a\x12\x12V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16\x15a\t\xA5W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\t\xB5\x83a#\x14V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\t\xE6\x83a\x10\xEFV[\x90Pa\t\xF1\x81a\x12\x12V[PP`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\n%\x90\x86\x90\x86\x90`\x04\x01a$\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\nSW=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x86\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\xA3PPPV[`\0C\x82\x10a\n\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCheckpoints: block not yet mined`D\x82\x01R`d\x01a\x07\xFEV[\x82T`\0[\x81\x81\x10\x15a\x0BNW`\0a\x0B\x02\x82\x84a\x12~V[\x90P\x84\x86`\0\x01\x82\x81T\x81\x10a\x0B\x1AWa\x0B\x1Aa\"\xE8V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x0B:W\x80\x92Pa\x0BHV[a\x0BE\x81`\x01a$:V[\x91P[Pa\n\xEEV[\x81\x15a\x0B\x92W\x84a\x0B``\x01\x84a%,V[\x81T\x81\x10a\x0BpWa\x0Bpa\"\xE8V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B\x95V[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80a\x0B\xBB\x83\x86Qa\x12\x99V[`\0[\x83\x81\x10\x15a\x0CDW`\0\x87\x82\x81Q\x81\x10a\x0B\xDAWa\x0B\xDAa\"\xE8V[` \x02` \x01\x01Q\x90Pa\x0B\xEE\x84\x82a\x12\xDAV[a\x0C\x12\x81\x8A\x89\x85\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a\"\xE8V[` \x02` \x01\x01Qa\x13\x0CV[\x80\x93P`\0a\x0C!\x82\x88a\x13=V[\x90Pa\x0C-\x81\x85a$:V[\x93PPP\x80\x80a\x0C<\x90a#\x14V[\x91PPa\x0B\xBEV[Pa\x0CO\x81\x85a\x13\xA0V[PPPPPPPV[\x80T`\0\x90\x80\x15a\x0C\xA1W\x82a\x0Co`\x01\x83a%,V[\x81T\x81\x10a\x0C\x7FWa\x0C\x7Fa\"\xE8V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C\xA4V[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`eT\x81Q\x14a\x03\x12W`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x04\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x07\xFEV[a\r<`k\x82a\x13\xFCV[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\x81\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16a\x0EEW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0EU\x83a%CV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x0E\x83\x82a\x10\xEFV[\x90Pa\x0E\x8E\x81a\x12\x12V[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\x0E\xD7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\xEBW=`\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\x17\"V[``\x91P[P\x91P\x91P\x81\x80\x15a\x175WP\x80Q` \x14[\x80\x15a\x17fWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x17Z\x90\x83\x01` \x90\x81\x01\x90\x84\x01a&]V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x17\x8CWa\x03B`ja\x0CXV[a\x03B`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[\x91\x90PV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x17\xBFWa\x03B`ka\x0CXV[a\x03B`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x98\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x18=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1A\x1FW`\0`\x01\x92P\x92PPa\x1A&V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1AL`\xFF\x86\x90\x1C`\x1Ba$:V[\x90Pa\x1AZ\x87\x82\x88\x85a\x19BV[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\x1B\x91\x90[\x80\x82\x11\x15a\x18Wa%>a\"\xFEV[P\x03\x90V[`\0\x81a%RWa%Ra\"\xFEV[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%\xB8`@\x83\x01\x85a\x1D\xA6V[\x82\x81\x03` \x84\x01Ra%\xCA\x81\x85a\x1D\xA6V[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%\xF1Wa%\xF1a\"\xFEV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a&\x0CWa&\x0Ca\"\xFEV[PP\x03\x90V[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x82\x81R`@` \x82\x01R`\0a\x1C\x06`@\x83\x01\x84a$\xB5V[`\0\x82Qa&S\x81\x84` \x87\x01a!\"V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a&oW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x04\xF7W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xF1+CW\xF2\xF5\xBD&s(\xB3\xD6\xE6\xD1\xAB{\x08\xFB\xA6\xF5\xE7HF\xBC\x03\x17^$\xF7\x01\xBB\x95dsolcC\0\x08\x0C\x003", ); /**```solidity struct Quorum { StrategyParams[] strategies; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct Quorum { pub strategies: alloy::sol_types::private::Vec<::RustType>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1441,13 +1364,18 @@ pub mod ECDSAStakeRegistry { /**```solidity struct StrategyParams { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1632,10 +1560,15 @@ pub mod ECDSAStakeRegistry { ```solidity error InsufficientSignedStake(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientSignedStake {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1687,10 +1620,15 @@ pub mod ECDSAStakeRegistry { ```solidity error InsufficientWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1742,10 +1680,15 @@ pub mod ECDSAStakeRegistry { ```solidity error InvalidLength(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidLength {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1797,10 +1740,15 @@ pub mod ECDSAStakeRegistry { ```solidity error InvalidQuorum(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidQuorum {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1848,69 +1796,19 @@ pub mod ECDSAStakeRegistry { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1962,10 +1860,15 @@ pub mod ECDSAStakeRegistry { ```solidity error InvalidSignedWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignedWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2017,10 +1920,15 @@ pub mod ECDSAStakeRegistry { ```solidity error InvalidThreshold(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidThreshold {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2072,10 +1980,15 @@ pub mod ECDSAStakeRegistry { ```solidity error LengthMismatch(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct LengthMismatch {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2127,10 +2040,15 @@ pub mod ECDSAStakeRegistry { ```solidity error MustUpdateAllOperators(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MustUpdateAllOperators {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2182,10 +2100,15 @@ pub mod ECDSAStakeRegistry { ```solidity error NotSorted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NotSorted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2237,10 +2160,15 @@ pub mod ECDSAStakeRegistry { ```solidity error OperatorAlreadyRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAlreadyRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2292,10 +2220,15 @@ pub mod ECDSAStakeRegistry { ```solidity error OperatorNotRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorNotRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2347,13 +2280,23 @@ pub mod ECDSAStakeRegistry { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2435,7 +2378,12 @@ pub mod ECDSAStakeRegistry { ```solidity event MinimumWeightUpdated(uint256 _old, uint256 _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinimumWeightUpdated { #[allow(missing_docs)] @@ -2443,7 +2391,12 @@ pub mod ECDSAStakeRegistry { #[allow(missing_docs)] pub _new: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2534,7 +2487,12 @@ pub mod ECDSAStakeRegistry { ```solidity event OperatorDeregistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDeregistered { #[allow(missing_docs)] @@ -2542,7 +2500,12 @@ pub mod ECDSAStakeRegistry { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2637,7 +2600,12 @@ pub mod ECDSAStakeRegistry { ```solidity event OperatorRegistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -2645,7 +2613,12 @@ pub mod ECDSAStakeRegistry { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2740,7 +2713,12 @@ pub mod ECDSAStakeRegistry { ```solidity event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorWeightUpdated { #[allow(missing_docs)] @@ -2750,7 +2728,12 @@ pub mod ECDSAStakeRegistry { #[allow(missing_docs)] pub newWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2848,7 +2831,12 @@ pub mod ECDSAStakeRegistry { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -2856,7 +2844,12 @@ pub mod ECDSAStakeRegistry { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2951,7 +2944,12 @@ pub mod ECDSAStakeRegistry { ```solidity event QuorumUpdated(Quorum _old, Quorum _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumUpdated { #[allow(missing_docs)] @@ -2959,7 +2957,12 @@ pub mod ECDSAStakeRegistry { #[allow(missing_docs)] pub _new: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3040,135 +3043,27 @@ pub mod ECDSAStakeRegistry { } } }; - /**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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3252,7 +3147,12 @@ pub mod ECDSAStakeRegistry { ```solidity event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct TotalWeightUpdated { #[allow(missing_docs)] @@ -3260,7 +3160,12 @@ pub mod ECDSAStakeRegistry { #[allow(missing_docs)] pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3351,7 +3256,12 @@ pub mod ECDSAStakeRegistry { ```solidity event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UpdateMinimumWeight { #[allow(missing_docs)] @@ -3359,7 +3269,12 @@ pub mod ECDSAStakeRegistry { #[allow(missing_docs)] pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3450,7 +3365,7 @@ pub mod ECDSAStakeRegistry { ```solidity constructor(address _delegationManager); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _delegationManager: alloy::sol_types::private::Address, @@ -3512,14 +3427,19 @@ pub mod ECDSAStakeRegistry { ```solidity function deregisterOperator() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorCall {} ///Container type for the return parameters of the [`deregisterOperator()`](deregisterOperatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3615,18 +3535,23 @@ pub mod ECDSAStakeRegistry { ```solidity function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointOperatorWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3726,16 +3651,21 @@ pub mod ECDSAStakeRegistry { ```solidity function getLastCheckpointThresholdWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightCall {} ///Container type for the return parameters of the [`getLastCheckpointThresholdWeight()`](getLastCheckpointThresholdWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3831,18 +3761,23 @@ pub mod ECDSAStakeRegistry { ```solidity function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightAtBlockReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3952,16 +3887,21 @@ pub mod ECDSAStakeRegistry { ```solidity function getLastCheckpointTotalWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointTotalWeightCall {} ///Container type for the return parameters of the [`getLastCheckpointTotalWeight()`](getLastCheckpointTotalWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointTotalWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4057,256 +3997,30 @@ pub mod ECDSAStakeRegistry { ```solidity function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getOperatorSigningKeyAtBlockReturn { - pub _0: alloy::sol_types::private::Address, + pub struct getLastCheckpointTotalWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Address, - alloy::sol_types::private::primitives::aliases::U256, - ); + type UnderlyingRustTuple<'a> = (u32,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -4318,27 +4032,26 @@ pub mod ECDSAStakeRegistry { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getOperatorSigningKeyAtBlockCall) -> Self { - (value._operator, value._blockNumber) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightAtBlockCall) -> Self { + (value._blockNumber,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getOperatorSigningKeyAtBlockCall { + impl ::core::convert::From> for getLastCheckpointTotalWeightAtBlockCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - _operator: tuple.0, - _blockNumber: tuple.1, + _blockNumber: tuple.0, } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + 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) { @@ -4350,31 +4063,28 @@ pub mod ECDSAStakeRegistry { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getOperatorSigningKeyAtBlockReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightAtBlockReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getOperatorSigningKeyAtBlockReturn { + impl ::core::convert::From> for getLastCheckpointTotalWeightAtBlockReturn { 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>, - ); + 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 = getOperatorSigningKeyAtBlockReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + 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 = "getOperatorSigningKeyAtBlock(address,uint256)"; - const SELECTOR: [u8; 4] = [94u8, 16u8, 66u8, 232u8]; + 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, @@ -4384,10 +4094,7 @@ pub mod ECDSAStakeRegistry { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self._operator, - ), - as alloy_sol_types::SolType>::tokenize( + as alloy_sol_types::SolType>::tokenize( &self._blockNumber, ), ) @@ -4408,18 +4115,23 @@ pub mod ECDSAStakeRegistry { ```solidity function getOperatorWeight(address _operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4519,19 +4231,24 @@ pub mod ECDSAStakeRegistry { ```solidity function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorWeightAtBlockReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4643,7 +4360,7 @@ pub mod ECDSAStakeRegistry { ```solidity function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeCall { pub _serviceManager: alloy::sol_types::private::Address, @@ -4651,10 +4368,15 @@ pub mod ECDSAStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4774,19 +4496,24 @@ pub mod ECDSAStakeRegistry { ```solidity function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isValidSignatureReturn { pub _0: alloy::sol_types::private::FixedBytes<4>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4901,16 +4628,21 @@ pub mod ECDSAStakeRegistry { ```solidity function minimumWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumWeightCall {} ///Container type for the return parameters of the [`minimumWeight()`](minimumWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5006,18 +4738,23 @@ pub mod ECDSAStakeRegistry { ```solidity function operatorRegistered(address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorRegisteredReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5117,16 +4854,21 @@ pub mod ECDSAStakeRegistry { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5222,16 +4964,21 @@ pub mod ECDSAStakeRegistry { ```solidity function quorum() external view returns (Quorum memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCall {} ///Container type for the return parameters of the [`quorum()`](quorumCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5323,34 +5070,39 @@ pub mod ECDSAStakeRegistry { } } }; - /**Function with signature `registerOperatorWithSignature((bytes,bytes32,uint256),address)` and selector `0x3d5611f6`. + /**Function with signature `registerOperatorWithSignature(address,(bytes,bytes32,uint256))` and selector `0x0a601a12`. ```solidity - function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + function registerOperatorWithSignature(address _operator, ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorWithSignatureCall { + pub _operator: alloy::sol_types::private::Address, 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)] + ///Container type for the return parameters of the [`registerOperatorWithSignature(address,(bytes,bytes32,uint256))`](registerOperatorWithSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorWithSignatureReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - ISignatureUtils::SignatureWithSaltAndExpiry, alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, alloy::sol_types::private::Address, + ::RustType, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -5365,7 +5117,7 @@ pub mod ECDSAStakeRegistry { #[doc(hidden)] impl ::core::convert::From for UnderlyingRustTuple<'_> { fn from(value: registerOperatorWithSignatureCall) -> Self { - (value._operatorSignature, value._signingKey) + (value._operator, value._operatorSignature) } } #[automatically_derived] @@ -5373,8 +5125,8 @@ pub mod ECDSAStakeRegistry { impl ::core::convert::From> for registerOperatorWithSignatureCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - _operatorSignature: tuple.0, - _signingKey: tuple.1, + _operator: tuple.0, + _operatorSignature: tuple.1, } } } @@ -5411,16 +5163,16 @@ pub mod ECDSAStakeRegistry { #[automatically_derived] impl alloy_sol_types::SolCall for registerOperatorWithSignatureCall { type Parameters<'a> = ( - ISignatureUtils::SignatureWithSaltAndExpiry, alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, ); 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]; + "registerOperatorWithSignature(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [10u8, 96u8, 26u8, 18u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -5430,12 +5182,12 @@ pub mod ECDSAStakeRegistry { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( + ::tokenize( + &self._operator, + ), ::tokenize( &self._operatorSignature, ), - ::tokenize( - &self._signingKey, - ), ) } #[inline] @@ -5454,14 +5206,19 @@ pub mod ECDSAStakeRegistry { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5557,16 +5314,21 @@ pub mod ECDSAStakeRegistry { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5666,17 +5428,22 @@ pub mod ECDSAStakeRegistry { ```solidity function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateMinimumWeightReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5787,131 +5554,25 @@ pub mod ECDSAStakeRegistry { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6016,7 +5677,7 @@ pub mod ECDSAStakeRegistry { ```solidity function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsForQuorumCall { pub operatorsPerQuorum: alloy::sol_types::private::Vec< @@ -6025,10 +5686,15 @@ pub mod ECDSAStakeRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsForQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6151,17 +5817,22 @@ pub mod ECDSAStakeRegistry { ```solidity function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateQuorumConfigReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6274,16 +5945,21 @@ pub mod ECDSAStakeRegistry { ```solidity function updateStakeThreshold(uint256 _thresholdWeight) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateStakeThresholdReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6389,8 +6065,6 @@ pub mod ECDSAStakeRegistry { getLastCheckpointThresholdWeightAtBlock(getLastCheckpointThresholdWeightAtBlockCall), getLastCheckpointTotalWeight(getLastCheckpointTotalWeightCall), getLastCheckpointTotalWeightAtBlock(getLastCheckpointTotalWeightAtBlockCall), - getLastestOperatorSigningKey(getLastestOperatorSigningKeyCall), - getOperatorSigningKeyAtBlock(getOperatorSigningKeyAtBlockCall), getOperatorWeight(getOperatorWeightCall), getOperatorWeightAtBlock(getOperatorWeightAtBlockCall), initialize(initializeCall), @@ -6403,7 +6077,6 @@ pub mod ECDSAStakeRegistry { renounceOwnership(renounceOwnershipCall), transferOwnership(transferOwnershipCall), updateMinimumWeight(updateMinimumWeightCall), - updateOperatorSigningKey(updateOperatorSigningKeyCall), updateOperators(updateOperatorsCall), updateOperatorsForQuorum(updateOperatorsForQuorumCall), updateQuorumConfig(updateQuorumConfigCall), @@ -6419,27 +6092,24 @@ pub mod ECDSAStakeRegistry { /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 4usize]] = &[ [0u8, 207u8, 42u8, 181u8], + [10u8, 96u8, 26u8, 18u8], [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], @@ -6449,7 +6119,7 @@ pub mod ECDSAStakeRegistry { impl alloy_sol_types::SolInterface for ECDSAStakeRegistryCalls { const NAME: &'static str = "ECDSAStakeRegistryCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 25usize; + const COUNT: usize = 22usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -6471,12 +6141,6 @@ pub mod ECDSAStakeRegistry { Self::getLastCheckpointTotalWeightAtBlock(_) => { ::SELECTOR } - Self::getLastestOperatorSigningKey(_) => { - ::SELECTOR - } - Self::getOperatorSigningKeyAtBlock(_) => { - ::SELECTOR - } Self::getOperatorWeight(_) => { ::SELECTOR } @@ -6509,9 +6173,6 @@ pub mod ECDSAStakeRegistry { Self::updateMinimumWeight(_) => { ::SELECTOR } - Self::updateOperatorSigningKey(_) => { - ::SELECTOR - } Self::updateOperators(_) => { ::SELECTOR } @@ -6558,6 +6219,19 @@ pub mod ECDSAStakeRegistry { } updateOperators }, + { + fn registerOperatorWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ECDSAStakeRegistryCalls::registerOperatorWithSignature) + } + registerOperatorWithSignature + }, { fn getLastCheckpointTotalWeightAtBlock( data: &[u8], @@ -6638,19 +6312,6 @@ pub mod ECDSAStakeRegistry { } getLastCheckpointOperatorWeight }, - { - fn registerOperatorWithSignature( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map(ECDSAStakeRegistryCalls::registerOperatorWithSignature) - } - registerOperatorWithSignature - }, { fn minimumWeight( data: &[u8], @@ -6675,19 +6336,6 @@ pub mod ECDSAStakeRegistry { } updateOperatorsForQuorum }, - { - fn getOperatorSigningKeyAtBlock( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map(ECDSAStakeRegistryCalls::getOperatorSigningKeyAtBlock) - } - getOperatorSigningKeyAtBlock - }, { fn updateStakeThreshold( data: &[u8], @@ -6724,18 +6372,6 @@ pub mod ECDSAStakeRegistry { } renounceOwnership }, - { - fn updateOperatorSigningKey( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAStakeRegistryCalls::updateOperatorSigningKey) - } - updateOperatorSigningKey - }, { fn deregisterOperator( data: &[u8], @@ -6807,19 +6443,6 @@ pub mod ECDSAStakeRegistry { } getLastCheckpointThresholdWeight }, - { - fn getLastestOperatorSigningKey( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, - validate, - ) - .map(ECDSAStakeRegistryCalls::getLastestOperatorSigningKey) - } - getLastestOperatorSigningKey - }, { fn updateQuorumConfig( data: &[u8], @@ -6898,16 +6521,6 @@ pub mod ECDSAStakeRegistry { inner, ) } - Self::getLastestOperatorSigningKey(inner) => { - ::abi_encoded_size( - inner, - ) - } - Self::getOperatorSigningKeyAtBlock(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::getOperatorWeight(inner) => { ::abi_encoded_size( inner, @@ -6962,11 +6575,6 @@ pub mod ECDSAStakeRegistry { inner, ) } - Self::updateOperatorSigningKey(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::updateOperators(inner) => { ::abi_encoded_size( inner, @@ -7028,18 +6636,6 @@ pub mod ECDSAStakeRegistry { out, ) } - Self::getLastestOperatorSigningKey(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } - Self::getOperatorSigningKeyAtBlock(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::getOperatorWeight(inner) => { ::abi_encode_raw( inner, @@ -7106,12 +6702,6 @@ pub mod ECDSAStakeRegistry { out, ) } - Self::updateOperatorSigningKey(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::updateOperators(inner) => { ::abi_encode_raw( inner, @@ -7145,7 +6735,6 @@ pub mod ECDSAStakeRegistry { InsufficientWeight(InsufficientWeight), InvalidLength(InvalidLength), InvalidQuorum(InvalidQuorum), - InvalidReferenceBlock(InvalidReferenceBlock), InvalidSignature(InvalidSignature), InvalidSignedWeight(InvalidSignedWeight), InvalidThreshold(InvalidThreshold), @@ -7175,7 +6764,6 @@ pub mod ECDSAStakeRegistry { [186u8, 80u8, 249u8, 17u8], [209u8, 115u8, 87u8, 121u8], [225u8, 33u8, 99u8, 47u8], - [230u8, 79u8, 24u8, 15u8], [255u8, 99u8, 58u8, 56u8], ]; } @@ -7183,7 +6771,7 @@ pub mod ECDSAStakeRegistry { impl alloy_sol_types::SolInterface for ECDSAStakeRegistryErrors { const NAME: &'static str = "ECDSAStakeRegistryErrors"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 13usize; + const COUNT: usize = 12usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -7195,9 +6783,6 @@ pub mod ECDSAStakeRegistry { } Self::InvalidLength(_) => ::SELECTOR, Self::InvalidQuorum(_) => ::SELECTOR, - Self::InvalidReferenceBlock(_) => { - ::SELECTOR - } Self::InvalidSignature(_) => { ::SELECTOR } @@ -7366,18 +6951,6 @@ pub mod ECDSAStakeRegistry { } InsufficientSignedStake }, - { - fn InvalidReferenceBlock( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAStakeRegistryErrors::InvalidReferenceBlock) - } - InvalidReferenceBlock - }, { fn LengthMismatch( data: &[u8], @@ -7414,9 +6987,6 @@ pub mod ECDSAStakeRegistry { Self::InvalidQuorum(inner) => { ::abi_encoded_size(inner) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encoded_size(inner) - } Self::InvalidSignature(inner) => { ::abi_encoded_size(inner) } @@ -7462,9 +7032,6 @@ pub mod ECDSAStakeRegistry { Self::InvalidQuorum(inner) => { ::abi_encode_raw(inner, out) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encode_raw(inner, out) - } Self::InvalidSignature(inner) => { ::abi_encode_raw(inner, out) } @@ -7505,7 +7072,6 @@ pub mod ECDSAStakeRegistry { OperatorWeightUpdated(OperatorWeightUpdated), OwnershipTransferred(OwnershipTransferred), QuorumUpdated(QuorumUpdated), - SigningKeyUpdate(SigningKeyUpdate), ThresholdWeightUpdated(ThresholdWeightUpdated), TotalWeightUpdated(TotalWeightUpdated), UpdateMinimumWeight(UpdateMinimumWeight), @@ -7569,17 +7135,12 @@ pub mod ECDSAStakeRegistry { 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; + const COUNT: usize = 10usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -7628,12 +7189,6 @@ pub mod ECDSAStakeRegistry { ) .map(Self::QuorumUpdated) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( - topics, data, validate, - ) - .map(Self::SigningKeyUpdate) - } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, @@ -7689,9 +7244,6 @@ pub mod ECDSAStakeRegistry { 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) } @@ -7726,9 +7278,6 @@ pub mod ECDSAStakeRegistry { 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) } @@ -7962,24 +7511,6 @@ pub mod ECDSAStakeRegistry { { 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, @@ -8044,12 +7575,12 @@ pub mod ECDSAStakeRegistry { ///Creates a new call builder for the [`registerOperatorWithSignature`] function. pub fn registerOperatorWithSignature( &self, + _operator: alloy::sol_types::private::Address, _operatorSignature: ::RustType, - _signingKey: alloy::sol_types::private::Address, ) -> alloy_contract::SolCallBuilder { self.call_builder(®isterOperatorWithSignatureCall { + _operator, _operatorSignature, - _signingKey, }) } ///Creates a new call builder for the [`renounceOwnership`] function. @@ -8076,13 +7607,6 @@ pub mod ECDSAStakeRegistry { _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, @@ -8177,10 +7701,6 @@ pub mod ECDSAStakeRegistry { 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, diff --git a/crates/utils/src/ecdsastakeregistryequalweight.rs b/crates/utils/src/middleware/ecdsastakeregistryequalweight.rs similarity index 71% rename from crates/utils/src/ecdsastakeregistryequalweight.rs rename to crates/utils/src/middleware/ecdsastakeregistryequalweight.rs index e99272a6..b2462d9c 100644 --- a/crates/utils/src/ecdsastakeregistryequalweight.rs +++ b/crates/utils/src/middleware/ecdsastakeregistryequalweight.rs @@ -6,21 +6,31 @@ library ISignatureUtils { struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -375,7 +385,6 @@ interface ECDSAStakeRegistryEqualWeight { error InsufficientWeight(); error InvalidLength(); error InvalidQuorum(); - error InvalidReferenceBlock(); error InvalidSignature(); error InvalidSignedWeight(); error InvalidThreshold(); @@ -397,7 +406,6 @@ interface ECDSAStakeRegistryEqualWeight { 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); @@ -412,8 +420,6 @@ interface ECDSAStakeRegistryEqualWeight { 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; @@ -423,12 +429,11 @@ interface ECDSAStakeRegistryEqualWeight { 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 registerOperatorWithSignature(address _operator, ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature) 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; @@ -572,49 +577,6 @@ interface ECDSAStakeRegistryEqualWeight { ], "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", @@ -818,6 +780,11 @@ interface ECDSAStakeRegistryEqualWeight { "type": "function", "name": "registerOperatorWithSignature", "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, { "name": "_operatorSignature", "type": "tuple", @@ -839,11 +806,6 @@ interface ECDSAStakeRegistryEqualWeight { "internalType": "uint256" } ] - }, - { - "name": "_signingKey", - "type": "address", - "internalType": "address" } ], "outputs": [], @@ -900,19 +862,6 @@ interface ECDSAStakeRegistryEqualWeight { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "updateOperatorSigningKey", - "inputs": [ - { - "name": "_newSigningKey", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, { "type": "function", "name": "updateOperators", @@ -1204,37 +1153,6 @@ interface ECDSAStakeRegistryEqualWeight { ], "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", @@ -1306,11 +1224,6 @@ interface ECDSAStakeRegistryEqualWeight { "name": "InvalidQuorum", "inputs": [] }, - { - "type": "error", - "name": "InvalidReferenceBlock", - "inputs": [] - }, { "type": "error", "name": "InvalidSignature", @@ -1363,40 +1276,50 @@ interface ECDSAStakeRegistryEqualWeight { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ECDSAStakeRegistryEqualWeight { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b5060405162002bf238038062002bf2833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051612b5e6200009460003960006107e20152612b5e6000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80636d5be92611610104578063ab118995116100a2578063e5d98f9411610071578063e5d98f94146103dd578063ec7fbb31146103f0578063f2fde38b1461041c578063fad8b32a1461042f57600080fd5b8063ab1189951461039c578063b933fa74146103af578063cdcd3581146103b7578063dec5d1f6146103ca57600080fd5b8063857dc190116100de578063857dc1901461035d5780638da5cb5b14610365578063955f2d901461037657806398ec1ac91461038957600080fd5b80636d5be9261461030f578063715018a614610342578063743c31f41461034a57600080fd5b80633d5611f61161017157806358c1eb171161014b57806358c1eb17146102ab5780635e1042e8146102be5780635ef53329146102e9578063696255be146102fc57600080fd5b80633d5611f61461027d57806340bf2fb7146102905780635140a5481461029857600080fd5b80631703a018116101ad5780631703a0181461023a5780631e4cd85e1461024f578063314f3a49146102625780633b242e4a1461026a57600080fd5b8062cf2ab5146101d35780630dba3394146101e85780631626ba7e1461020e575b600080fd5b6101e66101e136600461204b565b610442565b005b6101fb6101f6366004612099565b61044e565b6040519081526020015b60405180910390f35b61022161021c36600461212e565b61046a565b6040516001600160e01b03199091168152602001610205565b6102426104a8565b60405161020591906121d7565b6101fb61025d366004612099565b61053b565b6101fb610551565b6101fb6102783660046121ea565b610562565b6101e661028b366004612207565b610583565b6067546101fb565b6101e66102a63660046122b4565b610592565b6101e66102b93660046121ea565b6105b5565b6102d16102cc36600461237d565b6105c6565b6040516001600160a01b039091168152602001610205565b6101e66102f73660046123a9565b6105ef565b6101e661030a3660046123c2565b610600565b61033261031d3660046121ea565b60976020526000908152604090205460ff1681565b6040519015158152602001610205565b6101e661061a565b6101e66103583660046121ea565b61062e565b6101e6610668565b6033546001600160a01b03166102d1565b6101fb6103843660046123fe565b610671565b6101fb6103973660046121ea565b61069c565b6101e66103aa36600461250d565b610903565b6101fb610a1f565b6102d16103c53660046121ea565b610a2b565b6101e66103d8366004612565565b610a4c565b6101e66103eb3660046121ea565b610a5d565b6103326103fe3660046121ea565b6001600160a01b03166000908152606e602052604090205460ff1690565b6101e661042a3660046121ea565b610a6e565b6101e661043d3660046121ea565b610ae4565b61044b81610af5565b50565b6000610464606b63ffffffff80851690610b4c16565b92915050565b6000806000808480602001905181019061048491906126b5565b92509250925061049686848484610c5b565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561052e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016104df565b5050505081525050905090565b6000610464606c63ffffffff80851690610b4c16565b600061055d606b610d1a565b905090565b6001600160a01b0381166000908152606d6020526040812061046490610d1a565b61058e338383610d76565b5050565b61058e826000815181106105a8576105a8612789565b6020026020010151610dc4565b6105bd610de7565b61044b81610e41565b6001600160a01b0382166000908152606a602052604081206105e89083610b4c565b9392505050565b6105f7610de7565b61044b81610ec7565b610608610de7565b61061182610f0a565b61058e81610af5565b610622610de7565b61062c6000610f50565b565b336000908152606e602052604090205460ff1661065e576040516325ec6c1f60e01b815260040160405180910390fd5b61044b3382610fa2565b61062c33611055565b6001600160a01b0382166000908152606d602052604081206105e89063ffffffff80851690610b4c16565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561071357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016106c4565b50505050905060008082516001600160401b0381111561073557610735611f0f565b60405190808252806020026020018201604052801561075e578160200160208202803683370190505b50905060005b83518110156107c75783818151811061077f5761077f612789565b60200260200101516000015182828151811061079d5761079d612789565b6001600160a01b0390921660209283029190910190910152806107bf816127b5565b915050610764565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061081990899086906004016127d0565b600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085e919081019061282c565b905060005b84518110156108d55784818151811061087e5761087e612789565b6020026020010151602001516001600160601b03168282815181106108a5576108a5612789565b60200260200101516108b791906128bc565b6108c190856128db565b9350806108cd816127b5565b915050610863565b506108e2612710846128f3565b925060675483106108f7575090949350505050565b50600095945050505050565b600054610100900460ff16158080156109235750600054600160ff909116105b8061093d5750303b15801561093d575060005460ff166001145b6109a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109c8576000805461ff0019166101001790555b6109d3848484611178565b8015610a19576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061055d606c610d1a565b6001600160a01b0381166000908152606a6020526040812061046490610d1a565b610a54610de7565b610611826111d4565b610a65610de7565b61044b81611333565b610a76610de7565b6001600160a01b038116610adb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b61044b81610f50565b610aec610de7565b61044b81611373565b6000805b8251811015610b4257610b24838281518110610b1757610b17612789565b602002602001015161141c565b610b2e9083612915565b915080610b3a816127b5565b915050610af9565b50610a19816114f9565b6000438210610b9d5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564604482015260640161099c565b825460005b81811015610c02576000610bb68284611565565b905084866000018281548110610bce57610bce612789565b60009182526020909120015463ffffffff161115610bee57809250610bfc565b610bf98160016128db565b91505b50610ba2565b8115610c465784610c14600184612956565b81548110610c2457610c24612789565b60009182526020909120015464010000000090046001600160e01b0316610c49565b60005b6001600160e01b031695945050505050565b600083519050600080600080610c72858851611580565b60005b85811015610d0457888181518110610c8f57610c8f612789565b60200260200101519450610ca385886115c1565b9250610caf8486611614565b610cd3838b8a8481518110610cc657610cc6612789565b6020026020010151611646565b8493506000610ce28689611677565b9050610cee81846128db565b9250508080610cfc906127b5565b915050610c75565b50610d0f81876116ca565b505050505050505050565b80546000908015610d635782610d31600183612956565b81548110610d4157610d41612789565b60009182526020909120015464010000000090046001600160e01b0316610d66565b60005b6001600160e01b03169392505050565b6001600160a01b03831660009081526097602052604090205460ff161515600114610db45760405163380fa21360e11b815260040160405180910390fd5b610dbf838383611726565b505050565b6065548151146104425760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461062c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b6001600160a01b03811660009081526097602052604090205460ff1615610e7b576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610ed2606c8261185e565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610fc390610d1a565b9050806001600160a01b0316826001600160a01b03161415610fe457505050565b6001600160a01b038381166000908152606a6020526040902061100891841661185e565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff1661108e576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061109e8361296d565b90915550506001600160a01b0381166000908152606e60205260408120805460ff191690556110cc8261141c565b90506110d7816114f9565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff1661119f5760405162461bcd60e51b815260040161099c90612984565b606880546001600160a01b0319166001600160a01b0385161790556111c382610ec7565b6111cc816111d4565b610dbf611989565b6111dd816119b8565b6111fa5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561126d57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161121e565b5050509152509091506066905060006112868282611ee1565b505060005b825151811015611301578251805160669190839081106112ad576112ad612789565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806112f9816127b5565b91505061128b565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610f449291906129cf565b61133c81611055565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526097602052604090205460ff166113ac5760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606e602052604090205460ff161561044b5761044b81611333565b6001600160a01b0381166000908152606e602052604081205481908190819060ff161561147b576001600160a01b0385166000908152606d6020526040902061146690600161185e565b5092506114748360016129fd565b90506114ad565b6001600160a01b0385166000908152606d6020526040812061149c9161185e565b5092506114aa8360006129fd565b90505b60408051848152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a2949350505050565b600080611506606b610d1a565b915060006115148484612915565b9150819050611524606b8261185e565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061157460028484186128f3565b6105e8908484166128db565b8082146115a3576040516001621398b960e31b0319815260040160405180910390fd5b8161058e5760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff16106115e95760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a602052604090206105e89063ffffffff80851690610b4c16565b806001600160a01b0316826001600160a01b03161061058e5760405163ba50f91160e01b815260040160405180910390fd5b61165a6001600160a01b0384168383611a88565b610dbf57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff161061169f5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d602052604090206105e89063ffffffff80851690610b4c16565b60006116d582611bd4565b9050808311156116f857604051634b05a0f760e11b815260040160405180910390fd5b600061170383611c10565b905083811115610a195760405163e121632f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606e602052604090205460ff1615611760576040516342ee68b560e01b815260040160405180910390fd5b60658054906000611770836127b5565b90915550506001600160a01b0383166000908152606e60205260408120805460ff191660011790556117a18461141c565b90506117ac816114f9565b50506117b88483610fa2565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906117ea9087908790600401612a68565b600060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b815460009081908161186f86610d1a565b90506000821180156118ad57504386611889600185612956565b8154811061189957611899612789565b60009182526020909120015463ffffffff16145b1561190d576118bb85611c4c565b866118c7600185612956565b815481106118d7576118d7612789565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061197b565b85600001604051806040016040528061192543611cb9565b63ffffffff16815260200161193988611c4c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166119b05760405162461bcd60e51b815260040161099c90612984565b61062c611d1e565b8051600090818080805b8451811015611a66578481815181106119dd576119dd612789565b6020026020010151600001519250826001600160a01b0316846001600160a01b031610611a1d5760405163ba50f91160e01b815260040160405180910390fd5b829350848181518110611a3257611a32612789565b6020026020010151602001516001600160601b031682611a5291906128db565b915080611a5e816127b5565b9150506119c2565b506127108114611a7c5750600095945050505050565b50600195945050505050565b6000806000611a978585611d4e565b90925090506000816004811115611ab057611ab0612ab3565b148015611ace5750856001600160a01b0316826001600160a01b0316145b15611ade576001925050506105e8565b600080876001600160a01b0316631626ba7e60e01b8888604051602401611b06929190612ac9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611b449190612ae2565b600060405180830381855afa9150503d8060008114611b7f576040519150601f19603f3d011682016040523d82523d6000602084013e611b84565b606091505b5091509150818015611b97575080516020145b8015611bc857508051630b135d3f60e11b90611bbc9083016020908101908401612afe565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff1610611bfc5760405163e64f180f60e01b815260040160405180910390fd5b610464606b63ffffffff80851690610b4c16565b6000438263ffffffff1610611c385760405163e64f180f60e01b815260040160405180910390fd5b610464606c63ffffffff80851690610b4c16565b60006001600160e01b03821115611cb55760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161099c565b5090565b600063ffffffff821115611cb55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161099c565b600054610100900460ff16611d455760405162461bcd60e51b815260040161099c90612984565b61062c33610f50565b600080825160411415611d855760208301516040840151606085015160001a611d7987828585611dbb565b94509450505050611982565b825160401415611daf5760208301516040840151611da4868383611ea8565b935093505050611982565b50600090506002611982565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611df25750600090506003611e9f565b8460ff16601b14158015611e0a57508460ff16601c14155b15611e1b5750600090506004611e9f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e6f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611e9857600060019250925050611e9f565b9150600090505b94509492505050565b6000806001600160ff1b03831681611ec560ff86901c601b6128db565b9050611ed387828885611dbb565b935093505050935093915050565b508054600082559060005260206000209081019061044b91905b80821115611cb55760008155600101611efb565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611f4757611f47611f0f565b60405290565b604080519081016001600160401b0381118282101715611f4757611f47611f0f565b604051601f8201601f191681016001600160401b0381118282101715611f9757611f97611f0f565b604052919050565b60006001600160401b03821115611fb857611fb8611f0f565b5060051b60200190565b6001600160a01b038116811461044b57600080fd5b600082601f830112611fe857600080fd5b81356020611ffd611ff883611f9f565b611f6f565b82815260059290921b8401810191818101908684111561201c57600080fd5b8286015b8481101561204057803561203381611fc2565b8352918301918301612020565b509695505050505050565b60006020828403121561205d57600080fd5b81356001600160401b0381111561207357600080fd5b61207f84828501611fd7565b949350505050565b63ffffffff8116811461044b57600080fd5b6000602082840312156120ab57600080fd5b81356105e881612087565b60006001600160401b038211156120cf576120cf611f0f565b50601f01601f191660200190565b600082601f8301126120ee57600080fd5b81356120fc611ff8826120b6565b81815284602083860101111561211157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561214157600080fd5b8235915060208301356001600160401b0381111561215e57600080fd5b61216a858286016120dd565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b818110156121ca57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612193565b5090979650505050505050565b6020815260006105e86020830184612174565b6000602082840312156121fc57600080fd5b81356105e881611fc2565b6000806040838503121561221a57600080fd5b82356001600160401b038082111561223157600080fd5b908401906060828703121561224557600080fd5b60405160608101818110838211171561226057612260611f0f565b60405282358281111561227257600080fd5b61227e888286016120dd565b825250602083013560208201526040830135604082015280945050505060208301356122a981611fc2565b809150509250929050565b600080604083850312156122c757600080fd5b82356001600160401b03808211156122de57600080fd5b818501915085601f8301126122f257600080fd5b81356020612302611ff883611f9f565b82815260059290921b8401810191818101908984111561232157600080fd5b8286015b848110156123595780358681111561233d5760008081fd5b61234b8c86838b0101611fd7565b845250918301918301612325565b509650508601359250508082111561237057600080fd5b5061216a858286016120dd565b6000806040838503121561239057600080fd5b823561239b81611fc2565b946020939093013593505050565b6000602082840312156123bb57600080fd5b5035919050565b600080604083850312156123d557600080fd5b8235915060208301356001600160401b038111156123f257600080fd5b61216a85828601611fd7565b6000806040838503121561241157600080fd5b823561241c81611fc2565b915060208301356122a981612087565b6000602080838503121561243f57600080fd5b612447611f25565b915082356001600160401b0381111561245f57600080fd5b8301601f8101851361247057600080fd5b803561247e611ff882611f9f565b81815260069190911b8201830190838101908783111561249d57600080fd5b928401925b8284101561250057604084890312156124bb5760008081fd5b6124c3611f4d565b84356124ce81611fc2565b8152848601356001600160601b03811681146124ea5760008081fd5b81870152825260409390930192908401906124a2565b8552509295945050505050565b60008060006060848603121561252257600080fd5b833561252d81611fc2565b92506020840135915060408401356001600160401b0381111561254f57600080fd5b61255b8682870161242c565b9150509250925092565b6000806040838503121561257857600080fd5b82356001600160401b038082111561258f57600080fd5b61259b8683870161242c565b935060208501359150808211156125b157600080fd5b5061216a85828601611fd7565b60005b838110156125d95781810151838201526020016125c1565b83811115610a195750506000910152565b600082601f8301126125fb57600080fd5b8151602061260b611ff883611f9f565b82815260059290921b8401810191818101908684111561262a57600080fd5b8286015b848110156120405780516001600160401b0381111561264d5760008081fd5b8701603f8101891361265f5760008081fd5b848101516040612671611ff8836120b6565b8281528b828486010111156126865760008081fd5b612695838983018487016125be565b865250505091830191830161262e565b80516126b081612087565b919050565b6000806000606084860312156126ca57600080fd5b83516001600160401b03808211156126e157600080fd5b818601915086601f8301126126f557600080fd5b81516020612705611ff883611f9f565b82815260059290921b8401810191818101908a84111561272457600080fd5b948201945b8386101561274b57855161273c81611fc2565b82529482019490820190612729565b9189015191975090935050508082111561276457600080fd5b50612771868287016125ea565b925050612780604085016126a5565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127c9576127c961279f565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561281e578551851683529483019491830191600101612800565b509098975050505050505050565b6000602080838503121561283f57600080fd5b82516001600160401b0381111561285557600080fd5b8301601f8101851361286657600080fd5b8051612874611ff882611f9f565b81815260059190911b8201830190838101908783111561289357600080fd5b928401925b828410156128b157835182529284019290840190612898565b979650505050505050565b60008160001904831182151516156128d6576128d661279f565b500290565b600082198211156128ee576128ee61279f565b500190565b60008261291057634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156129375761293761279f565b600160ff1b83900384128116156129505761295061279f565b50500190565b6000828210156129685761296861279f565b500390565b60008161297c5761297c61279f565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006129e26040830185612174565b82810360208401526129f48185612174565b95945050505050565b60008083128015600160ff1b850184121615612a1b57612a1b61279f565b6001600160ff1b0384018313811615612a3657612a3661279f565b50500390565b60008151808452612a548160208601602086016125be565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152612a9260a0840182612a3c565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061207f6040830184612a3c565b60008251612af48184602087016125be565b9190910192915050565b600060208284031215612b1057600080fd5b81516001600160e01b0319811681146105e857600080fdfea2646970667358221220b95c53e7bdb08bad2c036a6f3b2e7420831a22990f595c81699a978669137b7f64736f6c634300080c0033 + ///0x60a06040523480156200001157600080fd5b506040516200299d3803806200299d833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516129096200009460003960006106fd01526129096000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80636d5be926116100de578063ab11899511610097578063e5d98f9411610071578063e5d98f9414610355578063ec7fbb3114610368578063f2fde38b14610394578063fad8b32a146103a757600080fd5b8063ab11899514610327578063b933fa741461033a578063dec5d1f61461034257600080fd5b80636d5be926146102a3578063715018a6146102d6578063857dc190146102de5780638da5cb5b146102e6578063955f2d901461030157806398ec1ac91461031457600080fd5b8063314f3a491161014b5780635140a548116101255780635140a5481461025757806358c1eb171461026a5780635ef533291461027d578063696255be1461029057600080fd5b8063314f3a49146102345780633b242e4a1461023c57806340bf2fb71461024f57600080fd5b8062cf2ab5146101925780630a601a12146101a75780630dba3394146101ba5780631626ba7e146101e05780631703a0181461020c5780631e4cd85e14610221575b600080fd5b6101a56101a0366004611e1e565b6103ba565b005b6101a56101b5366004611ed2565b6103c6565b6101cd6101c8366004611f8f565b6103d4565b6040519081526020015b60405180910390f35b6101f36101ee366004611fac565b6103f0565b6040516001600160e01b031990911681526020016101d7565b61021461042e565b6040516101d79190612055565b6101cd61022f366004611f8f565b6104c1565b6101cd6104d7565b6101cd61024a366004612068565b6104e8565b6067546101cd565b6101a5610265366004612085565b610509565b6101a5610278366004612068565b61052c565b6101a561028b36600461214e565b61053d565b6101a561029e366004612167565b61054e565b6102c66102b1366004612068565b60986020526000908152604090205460ff1681565b60405190151581526020016101d7565b6101a5610568565b6101a561057c565b6033546040516001600160a01b0390911681526020016101d7565b6101cd61030f3660046121a3565b610585565b6101cd610322366004612068565b6105b7565b6101a56103353660046122bd565b61081e565b6101cd61093a565b6101a5610350366004612315565b610946565b6101a5610363366004612068565b610957565b6102c6610376366004612068565b6001600160a01b03166000908152606d602052604090205460ff1690565b6101a56103a2366004612068565b610968565b6101a56103b5366004612068565b6109de565b6103c3816109ef565b50565b6103d08282610a46565b5050565b60006103ea606a63ffffffff80851690610a8e16565b92915050565b6000806000808480602001905181019061040a9190612460565b92509250925061041c86848484610b9d565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b828210156104b457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610465565b5050505081525050905090565b60006103ea606b63ffffffff80851690610a8e16565b60006104e3606a610c4e565b905090565b6001600160a01b0381166000908152606c602052604081206103ea90610c4e565b6103d08260008151811061051f5761051f612534565b6020026020010151610caa565b610534610ccd565b6103c381610d27565b610545610ccd565b6103c381610dad565b610556610ccd565b61055f82610df0565b6103d0816109ef565b610570610ccd565b61057a6000610e36565b565b61057a33610e88565b6001600160a01b0382166000908152606c602052604081206105b09063ffffffff80851690610a8e16565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561062e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105df565b50505050905060008082516001600160401b0381111561065057610650611ce2565b604051908082528060200260200182016040528015610679578160200160208202803683370190505b50905060005b83518110156106e25783818151811061069a5761069a612534565b6020026020010151600001518282815181106106b8576106b8612534565b6001600160a01b0390921660209283029190910190910152806106da81612560565b91505061067f565b50604051639004134760e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639004134790610734908990869060040161257b565b600060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077991908101906125d7565b905060005b84518110156107f05784818151811061079957610799612534565b6020026020010151602001516001600160601b03168282815181106107c0576107c0612534565b60200260200101516107d29190612667565b6107dc9085612686565b9350806107e881612560565b91505061077e565b506107fd6127108461269e565b92506067548310610812575090949350505050565b50600095945050505050565b600054610100900460ff161580801561083e5750600054600160ff909116105b806108585750303b158015610858575060005460ff166001145b6108c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108e3576000805461ff0019166101001790555b6108ee848484610fab565b8015610934576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104e3606b610c4e565b61094e610ccd565b61055f8261100c565b61095f610ccd565b6103c38161116b565b610970610ccd565b6001600160a01b0381166109d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b7565b6103c381610e36565b6109e6610ccd565b6103c3816111ab565b6000805b8251811015610a3c57610a1e838281518110610a1157610a11612534565b6020026020010151611254565b610a2890836126c0565b915080610a3481612560565b9150506109f3565b5061093481611331565b6001600160a01b03821660009081526098602052604090205460ff161515600114610a845760405163380fa21360e11b815260040160405180910390fd5b6103d0828261139d565b6000438210610adf5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108b7565b825460005b81811015610b44576000610af882846114ca565b905084866000018281548110610b1057610b10612534565b60009182526020909120015463ffffffff161115610b3057809250610b3e565b610b3b816001612686565b91505b50610ae4565b8115610b885784610b56600184612701565b81548110610b6657610b66612534565b60009182526020909120015464010000000090046001600160e01b0316610b8b565b60005b6001600160e01b031695945050505050565b600083519050600080610bb18386516114e5565b60005b83811015610c3a576000878281518110610bd057610bd0612534565b60200260200101519050610be48482611526565b610c08818a898581518110610bfb57610bfb612534565b6020026020010151611558565b8093506000610c178288611589565b9050610c238185612686565b935050508080610c3290612560565b915050610bb4565b50610c4581856115ec565b50505050505050565b80546000908015610c975782610c65600183612701565b81548110610c7557610c75612534565b60009182526020909120015464010000000090046001600160e01b0316610c9a565b60005b6001600160e01b03169392505050565b6065548151146103ba5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461057a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b7565b6001600160a01b03811660009081526098602052604090205460ff1615610d61576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610db8606b82611648565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610ec1576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610ed183612718565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610eff82611254565b9050610f0a81611331565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610f5357600080fd5b505af1158015610f67573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610fd25760405162461bcd60e51b81526004016108b79061272f565b606880546001600160a01b0319166001600160a01b038516179055610ff682610dad565b610fff8161100c565b611007611773565b505050565b611015816117a2565b6110325760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156110a557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611056565b5050509152509091506066905060006110be8282611cb4565b505060005b825151811015611139578251805160669190839081106110e5576110e5612534565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061113181612560565b9150506110c3565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610e2a92919061277a565b61117481610e88565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526098602052604090205460ff166111e45760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606d602052604090205460ff16156103c3576103c38161116b565b6001600160a01b0381166000908152606d602052604081205481908190819060ff16156112b3576001600160a01b0385166000908152606c6020526040902061129e906001611648565b5092506112ac8360016127a8565b90506112e5565b6001600160a01b0385166000908152606c602052604081206112d491611648565b5092506112e28360006127a8565b90505b60408051848152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a2949350505050565b60008061133e606a610c4e565b9150600061134c84846126c0565b915081905061135c606a82611648565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b6001600160a01b0382166000908152606d602052604090205460ff16156113d7576040516342ee68b560e01b815260040160405180910390fd5b606580549060006113e783612560565b90915550506001600160a01b0382166000908152606d60205260408120805460ff1916600117905561141883611254565b905061142381611331565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906114579086908690600401612813565b600060405180830381600087803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b60006114d9600284841861269e565b6105b090848416612686565b808214611508576040516001621398b960e31b0319815260040160405180910390fd5b816103d05760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103d05760405163ba50f91160e01b815260040160405180910390fd5b61156c6001600160a01b0384168383611872565b61100757604051638baa579f60e01b815260040160405180910390fd5b600063ffffffff82811614156115c1576001600160a01b0383166000908152606c602052604090206115ba90610c4e565b90506103ea565b6001600160a01b0383166000908152606c602052604090206115ba9063ffffffff80851690610a8e16565b60006115f7826119be565b90508083111561161a57604051634b05a0f760e11b815260040160405180910390fd5b6000611625836119f1565b9050838111156109345760405163e121632f60e01b815260040160405180910390fd5b815460009081908161165986610c4e565b905060008211801561169757504386611673600185612701565b8154811061168357611683612534565b60009182526020909120015463ffffffff16145b156116f7576116a585611a1f565b866116b1600185612701565b815481106116c1576116c1612534565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611765565b85600001604051806040016040528061170f43611a8c565b63ffffffff16815260200161172388611a1f565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff1661179a5760405162461bcd60e51b81526004016108b79061272f565b61057a611af1565b8051600090818080805b8451811015611850578481815181106117c7576117c7612534565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106118075760405163ba50f91160e01b815260040160405180910390fd5b82935084818151811061181c5761181c612534565b6020026020010151602001516001600160601b03168261183c9190612686565b91508061184881612560565b9150506117ac565b5061271081146118665750600095945050505050565b50600195945050505050565b60008060006118818585611b21565b9092509050600081600481111561189a5761189a61285e565b1480156118b85750856001600160a01b0316826001600160a01b0316145b156118c8576001925050506105b0565b600080876001600160a01b0316631626ba7e60e01b88886040516024016118f0929190612874565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161192e919061288d565b600060405180830381855afa9150503d8060008114611969576040519150601f19603f3d011682016040523d82523d6000602084013e61196e565b606091505b5091509150818015611981575080516020145b80156119b257508051630b135d3f60e11b906119a690830160209081019084016128a9565b6001600160e01b031916145b98975050505050505050565b600063ffffffff82811614156119d8576103ea606a610c4e565b6103ea606a63ffffffff80851690610a8e16565b919050565b600063ffffffff8281161415611a0b576103ea606b610c4e565b6103ea606b63ffffffff80851690610a8e16565b60006001600160e01b03821115611a885760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108b7565b5090565b600063ffffffff821115611a885760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108b7565b600054610100900460ff16611b185760405162461bcd60e51b81526004016108b79061272f565b61057a33610e36565b600080825160411415611b585760208301516040840151606085015160001a611b4c87828585611b8e565b9450945050505061176c565b825160401415611b825760208301516040840151611b77868383611c7b565b93509350505061176c565b5060009050600261176c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611bc55750600090506003611c72565b8460ff16601b14158015611bdd57508460ff16601c14155b15611bee5750600090506004611c72565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c6b57600060019250925050611c72565b9150600090505b94509492505050565b6000806001600160ff1b03831681611c9860ff86901c601b612686565b9050611ca687828885611b8e565b935093505050935093915050565b50805460008255906000526020600020908101906103c391905b80821115611a885760008155600101611cce565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611d1a57611d1a611ce2565b60405290565b604080519081016001600160401b0381118282101715611d1a57611d1a611ce2565b604051601f8201601f191681016001600160401b0381118282101715611d6a57611d6a611ce2565b604052919050565b60006001600160401b03821115611d8b57611d8b611ce2565b5060051b60200190565b6001600160a01b03811681146103c357600080fd5b600082601f830112611dbb57600080fd5b81356020611dd0611dcb83611d72565b611d42565b82815260059290921b84018101918181019086841115611def57600080fd5b8286015b84811015611e13578035611e0681611d95565b8352918301918301611df3565b509695505050505050565b600060208284031215611e3057600080fd5b81356001600160401b03811115611e4657600080fd5b611e5284828501611daa565b949350505050565b60006001600160401b03821115611e7357611e73611ce2565b50601f01601f191660200190565b600082601f830112611e9257600080fd5b8135611ea0611dcb82611e5a565b818152846020838601011115611eb557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ee557600080fd5b8235611ef081611d95565b915060208301356001600160401b0380821115611f0c57600080fd5b9084019060608287031215611f2057600080fd5b604051606081018181108382111715611f3b57611f3b611ce2565b604052823582811115611f4d57600080fd5b611f5988828601611e81565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff811681146103c357600080fd5b600060208284031215611fa157600080fd5b81356105b081611f7d565b60008060408385031215611fbf57600080fd5b8235915060208301356001600160401b03811115611fdc57600080fd5b611fe885828601611e81565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561204857835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612011565b5090979650505050505050565b6020815260006105b06020830184611ff2565b60006020828403121561207a57600080fd5b81356105b081611d95565b6000806040838503121561209857600080fd5b82356001600160401b03808211156120af57600080fd5b818501915085601f8301126120c357600080fd5b813560206120d3611dcb83611d72565b82815260059290921b840181019181810190898411156120f257600080fd5b8286015b8481101561212a5780358681111561210e5760008081fd5b61211c8c86838b0101611daa565b8452509183019183016120f6565b509650508601359250508082111561214157600080fd5b50611fe885828601611e81565b60006020828403121561216057600080fd5b5035919050565b6000806040838503121561217a57600080fd5b8235915060208301356001600160401b0381111561219757600080fd5b611fe885828601611daa565b600080604083850312156121b657600080fd5b82356121c181611d95565b915060208301356121d181611f7d565b809150509250929050565b600060208083850312156121ef57600080fd5b6121f7611cf8565b915082356001600160401b0381111561220f57600080fd5b8301601f8101851361222057600080fd5b803561222e611dcb82611d72565b81815260069190911b8201830190838101908783111561224d57600080fd5b928401925b828410156122b0576040848903121561226b5760008081fd5b612273611d20565b843561227e81611d95565b8152848601356001600160601b038116811461229a5760008081fd5b8187015282526040939093019290840190612252565b8552509295945050505050565b6000806000606084860312156122d257600080fd5b83356122dd81611d95565b92506020840135915060408401356001600160401b038111156122ff57600080fd5b61230b868287016121dc565b9150509250925092565b6000806040838503121561232857600080fd5b82356001600160401b038082111561233f57600080fd5b61234b868387016121dc565b9350602085013591508082111561236157600080fd5b50611fe885828601611daa565b60005b83811015612389578181015183820152602001612371565b838111156109345750506000910152565b600082601f8301126123ab57600080fd5b815160206123bb611dcb83611d72565b82815260059290921b840181019181810190868411156123da57600080fd5b8286015b84811015611e135780516001600160401b038111156123fd5760008081fd5b8701603f8101891361240f5760008081fd5b848101516040612421611dcb83611e5a565b8281528b828486010111156124365760008081fd5b6124458389830184870161236e565b86525050509183019183016123de565b80516119ec81611f7d565b60008060006060848603121561247557600080fd5b83516001600160401b038082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b815160206124b0611dcb83611d72565b82815260059290921b8401810191818101908a8411156124cf57600080fd5b948201945b838610156124f65785516124e781611d95565b825294820194908201906124d4565b9189015191975090935050508082111561250f57600080fd5b5061251c8682870161239a565b92505061252b60408501612455565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156125745761257461254a565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b818110156125c95785518516835294830194918301916001016125ab565b509098975050505050505050565b600060208083850312156125ea57600080fd5b82516001600160401b0381111561260057600080fd5b8301601f8101851361261157600080fd5b805161261f611dcb82611d72565b81815260059190911b8201830190838101908783111561263e57600080fd5b928401925b8284101561265c57835182529284019290840190612643565b979650505050505050565b60008160001904831182151516156126815761268161254a565b500290565b600082198211156126995761269961254a565b500190565b6000826126bb57634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156126e2576126e261254a565b600160ff1b83900384128116156126fb576126fb61254a565b50500190565b6000828210156127135761271361254a565b500390565b6000816127275761272761254a565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60408152600061278d6040830185611ff2565b828103602084015261279f8185611ff2565b95945050505050565b60008083128015600160ff1b8501841216156127c6576127c661254a565b6001600160ff1b03840183138116156127e1576127e161254a565b50500390565b600081518084526127ff81602086016020860161236e565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261283d60a08401826127e7565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e5260408301846127e7565b6000825161289f81846020870161236e565b9190910192915050565b6000602082840312156128bb57600080fd5b81516001600160e01b0319811681146105b057600080fdfea26469706673582212201b12ccb84dc133a9f910d479d0b076293d022c27386084146694193cf41f609b64736f6c634300080c0033 /// ``` #[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\x07y\x91\x90\x81\x01\x90a%\xD7V[\x90P`\0[\x84Q\x81\x10\x15a\x07\xF0W\x84\x81\x81Q\x81\x10a\x07\x99Wa\x07\x99a%4V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\xC0Wa\x07\xC0a%4V[` \x02` \x01\x01Qa\x07\xD2\x91\x90a&gV[a\x07\xDC\x90\x85a&\x86V[\x93P\x80a\x07\xE8\x81a%`V[\x91PPa\x07~V[Pa\x07\xFDa'\x10\x84a&\x9EV[\x92P`gT\x83\x10a\x08\x12WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08>WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08XWP0;\x15\x80\x15a\x08XWP`\0T`\xFF\x16`\x01\x14[a\x08\xC0W`@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\xE3W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xEE\x84\x84\x84a\x0F\xABV[\x80\x15a\t4W`\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\xE3`ka\x0CNV[a\tNa\x0C\xCDV[a\x05_\x82a\x10\x0CV[a\t_a\x0C\xCDV[a\x03\xC3\x81a\x11kV[a\tpa\x0C\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xD5W`@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\xB7V[a\x03\xC3\x81a\x0E6V[a\t\xE6a\x0C\xCDV[a\x03\xC3\x81a\x11\xABV[`\0\x80[\x82Q\x81\x10\x15a\nV[a\x0B;\x81`\x01a&\x86V[\x91P[Pa\n\xE4V[\x81\x15a\x0B\x88W\x84a\x0BV`\x01\x84a'\x01V[\x81T\x81\x10a\x0BfWa\x0Bfa%4V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B\x8BV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80a\x0B\xB1\x83\x86Qa\x14\xE5V[`\0[\x83\x81\x10\x15a\x0C:W`\0\x87\x82\x81Q\x81\x10a\x0B\xD0Wa\x0B\xD0a%4V[` \x02` \x01\x01Q\x90Pa\x0B\xE4\x84\x82a\x15&V[a\x0C\x08\x81\x8A\x89\x85\x81Q\x81\x10a\x0B\xFBWa\x0B\xFBa%4V[` \x02` \x01\x01Qa\x15XV[\x80\x93P`\0a\x0C\x17\x82\x88a\x15\x89V[\x90Pa\x0C#\x81\x85a&\x86V[\x93PPP\x80\x80a\x0C2\x90a%`V[\x91PPa\x0B\xB4V[Pa\x0CE\x81\x85a\x15\xECV[PPPPPPPV[\x80T`\0\x90\x80\x15a\x0C\x97W\x82a\x0Ce`\x01\x83a'\x01V[\x81T\x81\x10a\x0CuWa\x0Cua%4V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C\x9AV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`eT\x81Q\x14a\x03\xBAW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x05zW`@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\xB7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x98` R`@\x90 T`\xFF\x16\x15a\raW`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x98` 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\r\xB8`k\x82a\x16HV[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\x81\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16a\x0E\xC1W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0E\xD1\x83a'\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x0E\xFF\x82a\x12TV[\x90Pa\x0F\n\x81a\x131V[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\x0FSW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FgW=`\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`ja\x0CNV[\x91P`\0a\x13L\x84\x84a&\xC0V[\x91P\x81\x90Pa\x13\\`j\x82a\x16HV[PP`@\x80Q\x84\x81R` \x81\x01\x84\x90R\x7F\x86\xDC\xF8k\x12\xDF\xEE\xDE\xA7J\xE90\r\xBD\xAA\x19;\xCC\xE5\x80\x93i\xC8\x17~\xA2\xF4\xEA\xAAer\x9B\x91\x01`@Q\x80\x91\x03\x90\xA1P\x91P\x91V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16\x15a\x13\xD7W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x13\xE7\x83a%`V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x14\x18\x83a\x12TV[\x90Pa\x14#\x81a\x131V[PP`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\x14W\x90\x86\x90\x86\x90`\x04\x01a(\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x14qW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x14\x85W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x86\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\xA3PPPV[`\0a\x14\xD9`\x02\x84\x84\x18a&\x9EV[a\x05\xB0\x90\x84\x84\x16a&\x86V[\x80\x82\x14a\x15\x08W`@Q`\x01b\x13\x98\xB9`\xE3\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\x03\xD0W`@Qc%\x1FV\xA1`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x10a\x03\xD0W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15l`\x01`\x01`\xA0\x1B\x03\x84\x16\x83\x83a\x18rV[a\x10\x07W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x15\xC1W`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x15\xBA\x90a\x0CNV[\x90Pa\x03\xEAV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x15\xBA\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0a\x15\xF7\x82a\x19\xBEV[\x90P\x80\x83\x11\x15a\x16\x1AW`@QcK\x05\xA0\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x16%\x83a\x19\xF1V[\x90P\x83\x81\x11\x15a\t4W`@Qc\xE1!c/`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81T`\0\x90\x81\x90\x81a\x16Y\x86a\x0CNV[\x90P`\0\x82\x11\x80\x15a\x16\x97WPC\x86a\x16s`\x01\x85a'\x01V[\x81T\x81\x10a\x16\x83Wa\x16\x83a%4V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x16\xF7Wa\x16\xA5\x85a\x1A\x1FV[\x86a\x16\xB1`\x01\x85a'\x01V[\x81T\x81\x10a\x16\xC1Wa\x16\xC1a%4V[\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\x17eV[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x17\x0FCa\x1A\x8CV[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x17#\x88a\x1A\x1FV[`\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\x17\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'/V[a\x05za\x1A\xF1V[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x18PW\x84\x81\x81Q\x81\x10a\x17\xC7Wa\x17\xC7a%4V[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x18\x07W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x18\x1CWa\x18\x1Ca%4V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x18<\x91\x90a&\x86V[\x91P\x80a\x18H\x81a%`V[\x91PPa\x17\xACV[Pa'\x10\x81\x14a\x18fWP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x18\x81\x85\x85a\x1B!V[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x18\x9AWa\x18\x9Aa(^V[\x14\x80\x15a\x18\xB8WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x18\xC8W`\x01\x92PPPa\x05\xB0V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x18\xF0\x92\x91\x90a(tV[`@\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\x19.\x91\x90a(\x8DV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x19iW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x19nV[``\x91P[P\x91P\x91P\x81\x80\x15a\x19\x81WP\x80Q` \x14[\x80\x15a\x19\xB2WP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x19\xA6\x90\x83\x01` \x90\x81\x01\x90\x84\x01a(\xA9V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x19\xD8Wa\x03\xEA`ja\x0CNV[a\x03\xEA`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[\x91\x90PV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x1A\x0BWa\x03\xEA`ka\x0CNV[a\x03\xEA`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1A\x88W`@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\xB7V[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1A\x88W`@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\xB7V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1B\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'/V[a\x05z3a\x0E6V[`\0\x80\x82Q`A\x14\x15a\x1BXW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1BL\x87\x82\x85\x85a\x1B\x8EV[\x94P\x94PPPPa\x17lV[\x82Q`@\x14\x15a\x1B\x82W` \x83\x01Q`@\x84\x01Qa\x1Bw\x86\x83\x83a\x1C{V[\x93P\x93PPPa\x17lV[P`\0\x90P`\x02a\x17lV[`\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\xC5WP`\0\x90P`\x03a\x1CrV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1B\xDDWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1B\xEEWP`\0\x90P`\x04a\x1CrV[`@\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\x1CBW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1CkW`\0`\x01\x92P\x92PPa\x1CrV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1C\x98`\xFF\x86\x90\x1C`\x1Ba&\x86V[\x90Pa\x1C\xA6\x87\x82\x88\x85a\x1B\x8EV[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\xC3\x91\x90[\x80\x82\x11\x15a\x1A\x88W`\0\x81U`\x01\x01a\x1C\xCEV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x1AWa\x1D\x1Aa\x1C\xE2V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x1AWa\x1D\x1Aa\x1C\xE2V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1DjWa\x1Dja\x1C\xE2V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1D\x8BWa\x1D\x8Ba\x1C\xE2V[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1D\xBBW`\0\x80\xFD[\x815` a\x1D\xD0a\x1D\xCB\x83a\x1DrV[a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x1D\xEFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1E\x13W\x805a\x1E\x06\x81a\x1D\x95V[\x83R\x91\x83\x01\x91\x83\x01a\x1D\xF3V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x1E0W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EFW`\0\x80\xFD[a\x1ER\x84\x82\x85\x01a\x1D\xAAV[\x94\x93PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1EsWa\x1Esa\x1C\xE2V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x92W`\0\x80\xFD[\x815a\x1E\xA0a\x1D\xCB\x82a\x1EZV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1E\xB5W`\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\xE5W`\0\x80\xFD[\x825a\x1E\xF0\x81a\x1D\x95V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x1F\x0CW`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x1F W`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x1F;Wa\x1F;a\x1C\xE2V[`@R\x825\x82\x81\x11\x15a\x1FMW`\0\x80\xFD[a\x1FY\x88\x82\x86\x01a\x1E\x81V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1F\xA1W`\0\x80\xFD[\x815a\x05\xB0\x81a\x1F}V[`\0\x80`@\x83\x85\x03\x12\x15a\x1F\xBFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F\xDCW`\0\x80\xFD[a\x1F\xE8\x85\x82\x86\x01a\x1E\x81V[\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 HW\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 \x11V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xB0` \x83\x01\x84a\x1F\xF2V[`\0` \x82\x84\x03\x12\x15a zW`\0\x80\xFD[\x815a\x05\xB0\x81a\x1D\x95V[`\0\x80`@\x83\x85\x03\x12\x15a \x98W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a \xAFW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a \xC3W`\0\x80\xFD[\x815` a \xD3a\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a \xF2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a!*W\x805\x86\x81\x11\x15a!\x0EW`\0\x80\x81\xFD[a!\x1C\x8C\x86\x83\x8B\x01\x01a\x1D\xAAV[\x84RP\x91\x83\x01\x91\x83\x01a \xF6V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a!AW`\0\x80\xFD[Pa\x1F\xE8\x85\x82\x86\x01a\x1E\x81V[`\0` \x82\x84\x03\x12\x15a!`W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a!zW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!\x97W`\0\x80\xFD[a\x1F\xE8\x85\x82\x86\x01a\x1D\xAAV[`\0\x80`@\x83\x85\x03\x12\x15a!\xB6W`\0\x80\xFD[\x825a!\xC1\x81a\x1D\x95V[\x91P` \x83\x015a!\xD1\x81a\x1F}V[\x80\x91PP\x92P\x92\x90PV[`\0` \x80\x83\x85\x03\x12\x15a!\xEFW`\0\x80\xFD[a!\xF7a\x1C\xF8V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\x0FW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\" W`\0\x80\xFD[\x805a\".a\x1D\xCB\x82a\x1DrV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\"MW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\"\xB0W`@\x84\x89\x03\x12\x15a\"kW`\0\x80\x81\xFD[a\"sa\x1D V[\x845a\"~\x81a\x1D\x95V[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\"\x9AW`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a\"RV[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\"\xD2W`\0\x80\xFD[\x835a\"\xDD\x81a\x1D\x95V[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xFFW`\0\x80\xFD[a#\x0B\x86\x82\x87\x01a!\xDCV[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a#(W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#?W`\0\x80\xFD[a#K\x86\x83\x87\x01a!\xDCV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a#aW`\0\x80\xFD[Pa\x1F\xE8\x85\x82\x86\x01a\x1D\xAAV[`\0[\x83\x81\x10\x15a#\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a#qV[\x83\x81\x11\x15a\t4WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a#\xABW`\0\x80\xFD[\x81Q` a#\xBBa\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a#\xDAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1E\x13W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xFDW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a$\x0FW`\0\x80\x81\xFD[\x84\x81\x01Q`@a$!a\x1D\xCB\x83a\x1EZV[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a$6W`\0\x80\x81\xFD[a$E\x83\x89\x83\x01\x84\x87\x01a#nV[\x86RPPP\x91\x83\x01\x91\x83\x01a#\xDEV[\x80Qa\x19\xEC\x81a\x1F}V[`\0\x80`\0``\x84\x86\x03\x12\x15a$uW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a$\x8CW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a$\xA0W`\0\x80\xFD[\x81Q` a$\xB0a\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a$\xCFW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a$\xF6W\x85Qa$\xE7\x81a\x1D\x95V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a$\xD4V[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a%\x0FW`\0\x80\xFD[Pa%\x1C\x86\x82\x87\x01a#\x9AV[\x92PPa%+`@\x85\x01a$UV[\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%tWa%ta%JV[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%\xC9W\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a%\xABV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a%\xEAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\0W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a&\x11W`\0\x80\xFD[\x80Qa&\x1Fa\x1D\xCB\x82a\x1DrV[\x81\x81R`\x05\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&\\W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a&CV[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&\x81Wa&\x81a%JV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a&\x99Wa&\x99a%JV[P\x01\x90V[`\0\x82a&\xBBWcNH{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&\xE2Wa&\xE2a%JV[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a&\xFBWa&\xFBa%JV[PP\x01\x90V[`\0\x82\x82\x10\x15a'\x13Wa'\x13a%JV[P\x03\x90V[`\0\x81a''Wa''a%JV[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'\x8D`@\x83\x01\x85a\x1F\xF2V[\x82\x81\x03` \x84\x01Ra'\x9F\x81\x85a\x1F\xF2V[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a'\xC6Wa'\xC6a%JV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a'\xE1Wa'\xE1a%JV[PP\x03\x90V[`\0\x81Q\x80\x84Ra'\xFF\x81` \x86\x01` \x86\x01a#nV[`\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(=`\xA0\x84\x01\x82a'\xE7V[\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\x1ER`@\x83\x01\x84a'\xE7V[`\0\x82Qa(\x9F\x81\x84` \x87\x01a#nV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a(\xBBW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xB0W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x1B\x12\xCC\xB8M\xC13\xA9\xF9\x10\xD4y\xD0\xB0v)=\x02,'8`\x84\x14f\x94\x19<\xF4\x1F`\x9BdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106101ce5760003560e01c80636d5be92611610104578063ab118995116100a2578063e5d98f9411610071578063e5d98f94146103dd578063ec7fbb31146103f0578063f2fde38b1461041c578063fad8b32a1461042f57600080fd5b8063ab1189951461039c578063b933fa74146103af578063cdcd3581146103b7578063dec5d1f6146103ca57600080fd5b8063857dc190116100de578063857dc1901461035d5780638da5cb5b14610365578063955f2d901461037657806398ec1ac91461038957600080fd5b80636d5be9261461030f578063715018a614610342578063743c31f41461034a57600080fd5b80633d5611f61161017157806358c1eb171161014b57806358c1eb17146102ab5780635e1042e8146102be5780635ef53329146102e9578063696255be146102fc57600080fd5b80633d5611f61461027d57806340bf2fb7146102905780635140a5481461029857600080fd5b80631703a018116101ad5780631703a0181461023a5780631e4cd85e1461024f578063314f3a49146102625780633b242e4a1461026a57600080fd5b8062cf2ab5146101d35780630dba3394146101e85780631626ba7e1461020e575b600080fd5b6101e66101e136600461204b565b610442565b005b6101fb6101f6366004612099565b61044e565b6040519081526020015b60405180910390f35b61022161021c36600461212e565b61046a565b6040516001600160e01b03199091168152602001610205565b6102426104a8565b60405161020591906121d7565b6101fb61025d366004612099565b61053b565b6101fb610551565b6101fb6102783660046121ea565b610562565b6101e661028b366004612207565b610583565b6067546101fb565b6101e66102a63660046122b4565b610592565b6101e66102b93660046121ea565b6105b5565b6102d16102cc36600461237d565b6105c6565b6040516001600160a01b039091168152602001610205565b6101e66102f73660046123a9565b6105ef565b6101e661030a3660046123c2565b610600565b61033261031d3660046121ea565b60976020526000908152604090205460ff1681565b6040519015158152602001610205565b6101e661061a565b6101e66103583660046121ea565b61062e565b6101e6610668565b6033546001600160a01b03166102d1565b6101fb6103843660046123fe565b610671565b6101fb6103973660046121ea565b61069c565b6101e66103aa36600461250d565b610903565b6101fb610a1f565b6102d16103c53660046121ea565b610a2b565b6101e66103d8366004612565565b610a4c565b6101e66103eb3660046121ea565b610a5d565b6103326103fe3660046121ea565b6001600160a01b03166000908152606e602052604090205460ff1690565b6101e661042a3660046121ea565b610a6e565b6101e661043d3660046121ea565b610ae4565b61044b81610af5565b50565b6000610464606b63ffffffff80851690610b4c16565b92915050565b6000806000808480602001905181019061048491906126b5565b92509250925061049686848484610c5b565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561052e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016104df565b5050505081525050905090565b6000610464606c63ffffffff80851690610b4c16565b600061055d606b610d1a565b905090565b6001600160a01b0381166000908152606d6020526040812061046490610d1a565b61058e338383610d76565b5050565b61058e826000815181106105a8576105a8612789565b6020026020010151610dc4565b6105bd610de7565b61044b81610e41565b6001600160a01b0382166000908152606a602052604081206105e89083610b4c565b9392505050565b6105f7610de7565b61044b81610ec7565b610608610de7565b61061182610f0a565b61058e81610af5565b610622610de7565b61062c6000610f50565b565b336000908152606e602052604090205460ff1661065e576040516325ec6c1f60e01b815260040160405180910390fd5b61044b3382610fa2565b61062c33611055565b6001600160a01b0382166000908152606d602052604081206105e89063ffffffff80851690610b4c16565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561071357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016106c4565b50505050905060008082516001600160401b0381111561073557610735611f0f565b60405190808252806020026020018201604052801561075e578160200160208202803683370190505b50905060005b83518110156107c75783818151811061077f5761077f612789565b60200260200101516000015182828151811061079d5761079d612789565b6001600160a01b0390921660209283029190910190910152806107bf816127b5565b915050610764565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061081990899086906004016127d0565b600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085e919081019061282c565b905060005b84518110156108d55784818151811061087e5761087e612789565b6020026020010151602001516001600160601b03168282815181106108a5576108a5612789565b60200260200101516108b791906128bc565b6108c190856128db565b9350806108cd816127b5565b915050610863565b506108e2612710846128f3565b925060675483106108f7575090949350505050565b50600095945050505050565b600054610100900460ff16158080156109235750600054600160ff909116105b8061093d5750303b15801561093d575060005460ff166001145b6109a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109c8576000805461ff0019166101001790555b6109d3848484611178565b8015610a19576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061055d606c610d1a565b6001600160a01b0381166000908152606a6020526040812061046490610d1a565b610a54610de7565b610611826111d4565b610a65610de7565b61044b81611333565b610a76610de7565b6001600160a01b038116610adb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b61044b81610f50565b610aec610de7565b61044b81611373565b6000805b8251811015610b4257610b24838281518110610b1757610b17612789565b602002602001015161141c565b610b2e9083612915565b915080610b3a816127b5565b915050610af9565b50610a19816114f9565b6000438210610b9d5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564604482015260640161099c565b825460005b81811015610c02576000610bb68284611565565b905084866000018281548110610bce57610bce612789565b60009182526020909120015463ffffffff161115610bee57809250610bfc565b610bf98160016128db565b91505b50610ba2565b8115610c465784610c14600184612956565b81548110610c2457610c24612789565b60009182526020909120015464010000000090046001600160e01b0316610c49565b60005b6001600160e01b031695945050505050565b600083519050600080600080610c72858851611580565b60005b85811015610d0457888181518110610c8f57610c8f612789565b60200260200101519450610ca385886115c1565b9250610caf8486611614565b610cd3838b8a8481518110610cc657610cc6612789565b6020026020010151611646565b8493506000610ce28689611677565b9050610cee81846128db565b9250508080610cfc906127b5565b915050610c75565b50610d0f81876116ca565b505050505050505050565b80546000908015610d635782610d31600183612956565b81548110610d4157610d41612789565b60009182526020909120015464010000000090046001600160e01b0316610d66565b60005b6001600160e01b03169392505050565b6001600160a01b03831660009081526097602052604090205460ff161515600114610db45760405163380fa21360e11b815260040160405180910390fd5b610dbf838383611726565b505050565b6065548151146104425760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461062c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b6001600160a01b03811660009081526097602052604090205460ff1615610e7b576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610ed2606c8261185e565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610fc390610d1a565b9050806001600160a01b0316826001600160a01b03161415610fe457505050565b6001600160a01b038381166000908152606a6020526040902061100891841661185e565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff1661108e576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061109e8361296d565b90915550506001600160a01b0381166000908152606e60205260408120805460ff191690556110cc8261141c565b90506110d7816114f9565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff1661119f5760405162461bcd60e51b815260040161099c90612984565b606880546001600160a01b0319166001600160a01b0385161790556111c382610ec7565b6111cc816111d4565b610dbf611989565b6111dd816119b8565b6111fa5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561126d57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161121e565b5050509152509091506066905060006112868282611ee1565b505060005b825151811015611301578251805160669190839081106112ad576112ad612789565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806112f9816127b5565b91505061128b565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610f449291906129cf565b61133c81611055565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526097602052604090205460ff166113ac5760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606e602052604090205460ff161561044b5761044b81611333565b6001600160a01b0381166000908152606e602052604081205481908190819060ff161561147b576001600160a01b0385166000908152606d6020526040902061146690600161185e565b5092506114748360016129fd565b90506114ad565b6001600160a01b0385166000908152606d6020526040812061149c9161185e565b5092506114aa8360006129fd565b90505b60408051848152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a2949350505050565b600080611506606b610d1a565b915060006115148484612915565b9150819050611524606b8261185e565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061157460028484186128f3565b6105e8908484166128db565b8082146115a3576040516001621398b960e31b0319815260040160405180910390fd5b8161058e5760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff16106115e95760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a602052604090206105e89063ffffffff80851690610b4c16565b806001600160a01b0316826001600160a01b03161061058e5760405163ba50f91160e01b815260040160405180910390fd5b61165a6001600160a01b0384168383611a88565b610dbf57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff161061169f5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d602052604090206105e89063ffffffff80851690610b4c16565b60006116d582611bd4565b9050808311156116f857604051634b05a0f760e11b815260040160405180910390fd5b600061170383611c10565b905083811115610a195760405163e121632f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606e602052604090205460ff1615611760576040516342ee68b560e01b815260040160405180910390fd5b60658054906000611770836127b5565b90915550506001600160a01b0383166000908152606e60205260408120805460ff191660011790556117a18461141c565b90506117ac816114f9565b50506117b88483610fa2565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906117ea9087908790600401612a68565b600060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b815460009081908161186f86610d1a565b90506000821180156118ad57504386611889600185612956565b8154811061189957611899612789565b60009182526020909120015463ffffffff16145b1561190d576118bb85611c4c565b866118c7600185612956565b815481106118d7576118d7612789565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061197b565b85600001604051806040016040528061192543611cb9565b63ffffffff16815260200161193988611c4c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166119b05760405162461bcd60e51b815260040161099c90612984565b61062c611d1e565b8051600090818080805b8451811015611a66578481815181106119dd576119dd612789565b6020026020010151600001519250826001600160a01b0316846001600160a01b031610611a1d5760405163ba50f91160e01b815260040160405180910390fd5b829350848181518110611a3257611a32612789565b6020026020010151602001516001600160601b031682611a5291906128db565b915080611a5e816127b5565b9150506119c2565b506127108114611a7c5750600095945050505050565b50600195945050505050565b6000806000611a978585611d4e565b90925090506000816004811115611ab057611ab0612ab3565b148015611ace5750856001600160a01b0316826001600160a01b0316145b15611ade576001925050506105e8565b600080876001600160a01b0316631626ba7e60e01b8888604051602401611b06929190612ac9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611b449190612ae2565b600060405180830381855afa9150503d8060008114611b7f576040519150601f19603f3d011682016040523d82523d6000602084013e611b84565b606091505b5091509150818015611b97575080516020145b8015611bc857508051630b135d3f60e11b90611bbc9083016020908101908401612afe565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff1610611bfc5760405163e64f180f60e01b815260040160405180910390fd5b610464606b63ffffffff80851690610b4c16565b6000438263ffffffff1610611c385760405163e64f180f60e01b815260040160405180910390fd5b610464606c63ffffffff80851690610b4c16565b60006001600160e01b03821115611cb55760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161099c565b5090565b600063ffffffff821115611cb55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161099c565b600054610100900460ff16611d455760405162461bcd60e51b815260040161099c90612984565b61062c33610f50565b600080825160411415611d855760208301516040840151606085015160001a611d7987828585611dbb565b94509450505050611982565b825160401415611daf5760208301516040840151611da4868383611ea8565b935093505050611982565b50600090506002611982565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611df25750600090506003611e9f565b8460ff16601b14158015611e0a57508460ff16601c14155b15611e1b5750600090506004611e9f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e6f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611e9857600060019250925050611e9f565b9150600090505b94509492505050565b6000806001600160ff1b03831681611ec560ff86901c601b6128db565b9050611ed387828885611dbb565b935093505050935093915050565b508054600082559060005260206000209081019061044b91905b80821115611cb55760008155600101611efb565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611f4757611f47611f0f565b60405290565b604080519081016001600160401b0381118282101715611f4757611f47611f0f565b604051601f8201601f191681016001600160401b0381118282101715611f9757611f97611f0f565b604052919050565b60006001600160401b03821115611fb857611fb8611f0f565b5060051b60200190565b6001600160a01b038116811461044b57600080fd5b600082601f830112611fe857600080fd5b81356020611ffd611ff883611f9f565b611f6f565b82815260059290921b8401810191818101908684111561201c57600080fd5b8286015b8481101561204057803561203381611fc2565b8352918301918301612020565b509695505050505050565b60006020828403121561205d57600080fd5b81356001600160401b0381111561207357600080fd5b61207f84828501611fd7565b949350505050565b63ffffffff8116811461044b57600080fd5b6000602082840312156120ab57600080fd5b81356105e881612087565b60006001600160401b038211156120cf576120cf611f0f565b50601f01601f191660200190565b600082601f8301126120ee57600080fd5b81356120fc611ff8826120b6565b81815284602083860101111561211157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561214157600080fd5b8235915060208301356001600160401b0381111561215e57600080fd5b61216a858286016120dd565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b818110156121ca57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612193565b5090979650505050505050565b6020815260006105e86020830184612174565b6000602082840312156121fc57600080fd5b81356105e881611fc2565b6000806040838503121561221a57600080fd5b82356001600160401b038082111561223157600080fd5b908401906060828703121561224557600080fd5b60405160608101818110838211171561226057612260611f0f565b60405282358281111561227257600080fd5b61227e888286016120dd565b825250602083013560208201526040830135604082015280945050505060208301356122a981611fc2565b809150509250929050565b600080604083850312156122c757600080fd5b82356001600160401b03808211156122de57600080fd5b818501915085601f8301126122f257600080fd5b81356020612302611ff883611f9f565b82815260059290921b8401810191818101908984111561232157600080fd5b8286015b848110156123595780358681111561233d5760008081fd5b61234b8c86838b0101611fd7565b845250918301918301612325565b509650508601359250508082111561237057600080fd5b5061216a858286016120dd565b6000806040838503121561239057600080fd5b823561239b81611fc2565b946020939093013593505050565b6000602082840312156123bb57600080fd5b5035919050565b600080604083850312156123d557600080fd5b8235915060208301356001600160401b038111156123f257600080fd5b61216a85828601611fd7565b6000806040838503121561241157600080fd5b823561241c81611fc2565b915060208301356122a981612087565b6000602080838503121561243f57600080fd5b612447611f25565b915082356001600160401b0381111561245f57600080fd5b8301601f8101851361247057600080fd5b803561247e611ff882611f9f565b81815260069190911b8201830190838101908783111561249d57600080fd5b928401925b8284101561250057604084890312156124bb5760008081fd5b6124c3611f4d565b84356124ce81611fc2565b8152848601356001600160601b03811681146124ea5760008081fd5b81870152825260409390930192908401906124a2565b8552509295945050505050565b60008060006060848603121561252257600080fd5b833561252d81611fc2565b92506020840135915060408401356001600160401b0381111561254f57600080fd5b61255b8682870161242c565b9150509250925092565b6000806040838503121561257857600080fd5b82356001600160401b038082111561258f57600080fd5b61259b8683870161242c565b935060208501359150808211156125b157600080fd5b5061216a85828601611fd7565b60005b838110156125d95781810151838201526020016125c1565b83811115610a195750506000910152565b600082601f8301126125fb57600080fd5b8151602061260b611ff883611f9f565b82815260059290921b8401810191818101908684111561262a57600080fd5b8286015b848110156120405780516001600160401b0381111561264d5760008081fd5b8701603f8101891361265f5760008081fd5b848101516040612671611ff8836120b6565b8281528b828486010111156126865760008081fd5b612695838983018487016125be565b865250505091830191830161262e565b80516126b081612087565b919050565b6000806000606084860312156126ca57600080fd5b83516001600160401b03808211156126e157600080fd5b818601915086601f8301126126f557600080fd5b81516020612705611ff883611f9f565b82815260059290921b8401810191818101908a84111561272457600080fd5b948201945b8386101561274b57855161273c81611fc2565b82529482019490820190612729565b9189015191975090935050508082111561276457600080fd5b50612771868287016125ea565b925050612780604085016126a5565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127c9576127c961279f565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561281e578551851683529483019491830191600101612800565b509098975050505050505050565b6000602080838503121561283f57600080fd5b82516001600160401b0381111561285557600080fd5b8301601f8101851361286657600080fd5b8051612874611ff882611f9f565b81815260059190911b8201830190838101908783111561289357600080fd5b928401925b828410156128b157835182529284019290840190612898565b979650505050505050565b60008160001904831182151516156128d6576128d661279f565b500290565b600082198211156128ee576128ee61279f565b500190565b60008261291057634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156129375761293761279f565b600160ff1b83900384128116156129505761295061279f565b50500190565b6000828210156129685761296861279f565b500390565b60008161297c5761297c61279f565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006129e26040830185612174565b82810360208401526129f48185612174565b95945050505050565b60008083128015600160ff1b850184121615612a1b57612a1b61279f565b6001600160ff1b0384018313811615612a3657612a3661279f565b50500390565b60008151808452612a548160208601602086016125be565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152612a9260a0840182612a3c565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061207f6040830184612a3c565b60008251612af48184602087016125be565b9190910192915050565b600060208284031215612b1057600080fd5b81516001600160e01b0319811681146105e857600080fdfea2646970667358221220b95c53e7bdb08bad2c036a6f3b2e7420831a22990f595c81699a978669137b7f64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b506004361061018d5760003560e01c80636d5be926116100de578063ab11899511610097578063e5d98f9411610071578063e5d98f9414610355578063ec7fbb3114610368578063f2fde38b14610394578063fad8b32a146103a757600080fd5b8063ab11899514610327578063b933fa741461033a578063dec5d1f61461034257600080fd5b80636d5be926146102a3578063715018a6146102d6578063857dc190146102de5780638da5cb5b146102e6578063955f2d901461030157806398ec1ac91461031457600080fd5b8063314f3a491161014b5780635140a548116101255780635140a5481461025757806358c1eb171461026a5780635ef533291461027d578063696255be1461029057600080fd5b8063314f3a49146102345780633b242e4a1461023c57806340bf2fb71461024f57600080fd5b8062cf2ab5146101925780630a601a12146101a75780630dba3394146101ba5780631626ba7e146101e05780631703a0181461020c5780631e4cd85e14610221575b600080fd5b6101a56101a0366004611e1e565b6103ba565b005b6101a56101b5366004611ed2565b6103c6565b6101cd6101c8366004611f8f565b6103d4565b6040519081526020015b60405180910390f35b6101f36101ee366004611fac565b6103f0565b6040516001600160e01b031990911681526020016101d7565b61021461042e565b6040516101d79190612055565b6101cd61022f366004611f8f565b6104c1565b6101cd6104d7565b6101cd61024a366004612068565b6104e8565b6067546101cd565b6101a5610265366004612085565b610509565b6101a5610278366004612068565b61052c565b6101a561028b36600461214e565b61053d565b6101a561029e366004612167565b61054e565b6102c66102b1366004612068565b60986020526000908152604090205460ff1681565b60405190151581526020016101d7565b6101a5610568565b6101a561057c565b6033546040516001600160a01b0390911681526020016101d7565b6101cd61030f3660046121a3565b610585565b6101cd610322366004612068565b6105b7565b6101a56103353660046122bd565b61081e565b6101cd61093a565b6101a5610350366004612315565b610946565b6101a5610363366004612068565b610957565b6102c6610376366004612068565b6001600160a01b03166000908152606d602052604090205460ff1690565b6101a56103a2366004612068565b610968565b6101a56103b5366004612068565b6109de565b6103c3816109ef565b50565b6103d08282610a46565b5050565b60006103ea606a63ffffffff80851690610a8e16565b92915050565b6000806000808480602001905181019061040a9190612460565b92509250925061041c86848484610b9d565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b828210156104b457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610465565b5050505081525050905090565b60006103ea606b63ffffffff80851690610a8e16565b60006104e3606a610c4e565b905090565b6001600160a01b0381166000908152606c602052604081206103ea90610c4e565b6103d08260008151811061051f5761051f612534565b6020026020010151610caa565b610534610ccd565b6103c381610d27565b610545610ccd565b6103c381610dad565b610556610ccd565b61055f82610df0565b6103d0816109ef565b610570610ccd565b61057a6000610e36565b565b61057a33610e88565b6001600160a01b0382166000908152606c602052604081206105b09063ffffffff80851690610a8e16565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561062e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105df565b50505050905060008082516001600160401b0381111561065057610650611ce2565b604051908082528060200260200182016040528015610679578160200160208202803683370190505b50905060005b83518110156106e25783818151811061069a5761069a612534565b6020026020010151600001518282815181106106b8576106b8612534565b6001600160a01b0390921660209283029190910190910152806106da81612560565b91505061067f565b50604051639004134760e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639004134790610734908990869060040161257b565b600060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077991908101906125d7565b905060005b84518110156107f05784818151811061079957610799612534565b6020026020010151602001516001600160601b03168282815181106107c0576107c0612534565b60200260200101516107d29190612667565b6107dc9085612686565b9350806107e881612560565b91505061077e565b506107fd6127108461269e565b92506067548310610812575090949350505050565b50600095945050505050565b600054610100900460ff161580801561083e5750600054600160ff909116105b806108585750303b158015610858575060005460ff166001145b6108c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108e3576000805461ff0019166101001790555b6108ee848484610fab565b8015610934576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104e3606b610c4e565b61094e610ccd565b61055f8261100c565b61095f610ccd565b6103c38161116b565b610970610ccd565b6001600160a01b0381166109d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b7565b6103c381610e36565b6109e6610ccd565b6103c3816111ab565b6000805b8251811015610a3c57610a1e838281518110610a1157610a11612534565b6020026020010151611254565b610a2890836126c0565b915080610a3481612560565b9150506109f3565b5061093481611331565b6001600160a01b03821660009081526098602052604090205460ff161515600114610a845760405163380fa21360e11b815260040160405180910390fd5b6103d0828261139d565b6000438210610adf5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108b7565b825460005b81811015610b44576000610af882846114ca565b905084866000018281548110610b1057610b10612534565b60009182526020909120015463ffffffff161115610b3057809250610b3e565b610b3b816001612686565b91505b50610ae4565b8115610b885784610b56600184612701565b81548110610b6657610b66612534565b60009182526020909120015464010000000090046001600160e01b0316610b8b565b60005b6001600160e01b031695945050505050565b600083519050600080610bb18386516114e5565b60005b83811015610c3a576000878281518110610bd057610bd0612534565b60200260200101519050610be48482611526565b610c08818a898581518110610bfb57610bfb612534565b6020026020010151611558565b8093506000610c178288611589565b9050610c238185612686565b935050508080610c3290612560565b915050610bb4565b50610c4581856115ec565b50505050505050565b80546000908015610c975782610c65600183612701565b81548110610c7557610c75612534565b60009182526020909120015464010000000090046001600160e01b0316610c9a565b60005b6001600160e01b03169392505050565b6065548151146103ba5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461057a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b7565b6001600160a01b03811660009081526098602052604090205460ff1615610d61576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610db8606b82611648565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610ec1576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610ed183612718565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610eff82611254565b9050610f0a81611331565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610f5357600080fd5b505af1158015610f67573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610fd25760405162461bcd60e51b81526004016108b79061272f565b606880546001600160a01b0319166001600160a01b038516179055610ff682610dad565b610fff8161100c565b611007611773565b505050565b611015816117a2565b6110325760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156110a557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611056565b5050509152509091506066905060006110be8282611cb4565b505060005b825151811015611139578251805160669190839081106110e5576110e5612534565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061113181612560565b9150506110c3565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610e2a92919061277a565b61117481610e88565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526098602052604090205460ff166111e45760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606d602052604090205460ff16156103c3576103c38161116b565b6001600160a01b0381166000908152606d602052604081205481908190819060ff16156112b3576001600160a01b0385166000908152606c6020526040902061129e906001611648565b5092506112ac8360016127a8565b90506112e5565b6001600160a01b0385166000908152606c602052604081206112d491611648565b5092506112e28360006127a8565b90505b60408051848152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a2949350505050565b60008061133e606a610c4e565b9150600061134c84846126c0565b915081905061135c606a82611648565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b6001600160a01b0382166000908152606d602052604090205460ff16156113d7576040516342ee68b560e01b815260040160405180910390fd5b606580549060006113e783612560565b90915550506001600160a01b0382166000908152606d60205260408120805460ff1916600117905561141883611254565b905061142381611331565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906114579086908690600401612813565b600060405180830381600087803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b60006114d9600284841861269e565b6105b090848416612686565b808214611508576040516001621398b960e31b0319815260040160405180910390fd5b816103d05760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103d05760405163ba50f91160e01b815260040160405180910390fd5b61156c6001600160a01b0384168383611872565b61100757604051638baa579f60e01b815260040160405180910390fd5b600063ffffffff82811614156115c1576001600160a01b0383166000908152606c602052604090206115ba90610c4e565b90506103ea565b6001600160a01b0383166000908152606c602052604090206115ba9063ffffffff80851690610a8e16565b60006115f7826119be565b90508083111561161a57604051634b05a0f760e11b815260040160405180910390fd5b6000611625836119f1565b9050838111156109345760405163e121632f60e01b815260040160405180910390fd5b815460009081908161165986610c4e565b905060008211801561169757504386611673600185612701565b8154811061168357611683612534565b60009182526020909120015463ffffffff16145b156116f7576116a585611a1f565b866116b1600185612701565b815481106116c1576116c1612534565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611765565b85600001604051806040016040528061170f43611a8c565b63ffffffff16815260200161172388611a1f565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff1661179a5760405162461bcd60e51b81526004016108b79061272f565b61057a611af1565b8051600090818080805b8451811015611850578481815181106117c7576117c7612534565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106118075760405163ba50f91160e01b815260040160405180910390fd5b82935084818151811061181c5761181c612534565b6020026020010151602001516001600160601b03168261183c9190612686565b91508061184881612560565b9150506117ac565b5061271081146118665750600095945050505050565b50600195945050505050565b60008060006118818585611b21565b9092509050600081600481111561189a5761189a61285e565b1480156118b85750856001600160a01b0316826001600160a01b0316145b156118c8576001925050506105b0565b600080876001600160a01b0316631626ba7e60e01b88886040516024016118f0929190612874565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161192e919061288d565b600060405180830381855afa9150503d8060008114611969576040519150601f19603f3d011682016040523d82523d6000602084013e61196e565b606091505b5091509150818015611981575080516020145b80156119b257508051630b135d3f60e11b906119a690830160209081019084016128a9565b6001600160e01b031916145b98975050505050505050565b600063ffffffff82811614156119d8576103ea606a610c4e565b6103ea606a63ffffffff80851690610a8e16565b919050565b600063ffffffff8281161415611a0b576103ea606b610c4e565b6103ea606b63ffffffff80851690610a8e16565b60006001600160e01b03821115611a885760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108b7565b5090565b600063ffffffff821115611a885760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108b7565b600054610100900460ff16611b185760405162461bcd60e51b81526004016108b79061272f565b61057a33610e36565b600080825160411415611b585760208301516040840151606085015160001a611b4c87828585611b8e565b9450945050505061176c565b825160401415611b825760208301516040840151611b77868383611c7b565b93509350505061176c565b5060009050600261176c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611bc55750600090506003611c72565b8460ff16601b14158015611bdd57508460ff16601c14155b15611bee5750600090506004611c72565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c6b57600060019250925050611c72565b9150600090505b94509492505050565b6000806001600160ff1b03831681611c9860ff86901c601b612686565b9050611ca687828885611b8e565b935093505050935093915050565b50805460008255906000526020600020908101906103c391905b80821115611a885760008155600101611cce565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611d1a57611d1a611ce2565b60405290565b604080519081016001600160401b0381118282101715611d1a57611d1a611ce2565b604051601f8201601f191681016001600160401b0381118282101715611d6a57611d6a611ce2565b604052919050565b60006001600160401b03821115611d8b57611d8b611ce2565b5060051b60200190565b6001600160a01b03811681146103c357600080fd5b600082601f830112611dbb57600080fd5b81356020611dd0611dcb83611d72565b611d42565b82815260059290921b84018101918181019086841115611def57600080fd5b8286015b84811015611e13578035611e0681611d95565b8352918301918301611df3565b509695505050505050565b600060208284031215611e3057600080fd5b81356001600160401b03811115611e4657600080fd5b611e5284828501611daa565b949350505050565b60006001600160401b03821115611e7357611e73611ce2565b50601f01601f191660200190565b600082601f830112611e9257600080fd5b8135611ea0611dcb82611e5a565b818152846020838601011115611eb557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ee557600080fd5b8235611ef081611d95565b915060208301356001600160401b0380821115611f0c57600080fd5b9084019060608287031215611f2057600080fd5b604051606081018181108382111715611f3b57611f3b611ce2565b604052823582811115611f4d57600080fd5b611f5988828601611e81565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff811681146103c357600080fd5b600060208284031215611fa157600080fd5b81356105b081611f7d565b60008060408385031215611fbf57600080fd5b8235915060208301356001600160401b03811115611fdc57600080fd5b611fe885828601611e81565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561204857835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612011565b5090979650505050505050565b6020815260006105b06020830184611ff2565b60006020828403121561207a57600080fd5b81356105b081611d95565b6000806040838503121561209857600080fd5b82356001600160401b03808211156120af57600080fd5b818501915085601f8301126120c357600080fd5b813560206120d3611dcb83611d72565b82815260059290921b840181019181810190898411156120f257600080fd5b8286015b8481101561212a5780358681111561210e5760008081fd5b61211c8c86838b0101611daa565b8452509183019183016120f6565b509650508601359250508082111561214157600080fd5b50611fe885828601611e81565b60006020828403121561216057600080fd5b5035919050565b6000806040838503121561217a57600080fd5b8235915060208301356001600160401b0381111561219757600080fd5b611fe885828601611daa565b600080604083850312156121b657600080fd5b82356121c181611d95565b915060208301356121d181611f7d565b809150509250929050565b600060208083850312156121ef57600080fd5b6121f7611cf8565b915082356001600160401b0381111561220f57600080fd5b8301601f8101851361222057600080fd5b803561222e611dcb82611d72565b81815260069190911b8201830190838101908783111561224d57600080fd5b928401925b828410156122b0576040848903121561226b5760008081fd5b612273611d20565b843561227e81611d95565b8152848601356001600160601b038116811461229a5760008081fd5b8187015282526040939093019290840190612252565b8552509295945050505050565b6000806000606084860312156122d257600080fd5b83356122dd81611d95565b92506020840135915060408401356001600160401b038111156122ff57600080fd5b61230b868287016121dc565b9150509250925092565b6000806040838503121561232857600080fd5b82356001600160401b038082111561233f57600080fd5b61234b868387016121dc565b9350602085013591508082111561236157600080fd5b50611fe885828601611daa565b60005b83811015612389578181015183820152602001612371565b838111156109345750506000910152565b600082601f8301126123ab57600080fd5b815160206123bb611dcb83611d72565b82815260059290921b840181019181810190868411156123da57600080fd5b8286015b84811015611e135780516001600160401b038111156123fd5760008081fd5b8701603f8101891361240f5760008081fd5b848101516040612421611dcb83611e5a565b8281528b828486010111156124365760008081fd5b6124458389830184870161236e565b86525050509183019183016123de565b80516119ec81611f7d565b60008060006060848603121561247557600080fd5b83516001600160401b038082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b815160206124b0611dcb83611d72565b82815260059290921b8401810191818101908a8411156124cf57600080fd5b948201945b838610156124f65785516124e781611d95565b825294820194908201906124d4565b9189015191975090935050508082111561250f57600080fd5b5061251c8682870161239a565b92505061252b60408501612455565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156125745761257461254a565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b818110156125c95785518516835294830194918301916001016125ab565b509098975050505050505050565b600060208083850312156125ea57600080fd5b82516001600160401b0381111561260057600080fd5b8301601f8101851361261157600080fd5b805161261f611dcb82611d72565b81815260059190911b8201830190838101908783111561263e57600080fd5b928401925b8284101561265c57835182529284019290840190612643565b979650505050505050565b60008160001904831182151516156126815761268161254a565b500290565b600082198211156126995761269961254a565b500190565b6000826126bb57634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156126e2576126e261254a565b600160ff1b83900384128116156126fb576126fb61254a565b50500190565b6000828210156127135761271361254a565b500390565b6000816127275761272761254a565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60408152600061278d6040830185611ff2565b828103602084015261279f8185611ff2565b95945050505050565b60008083128015600160ff1b8501841216156127c6576127c661254a565b6001600160ff1b03840183138116156127e1576127e161254a565b50500390565b600081518084526127ff81602086016020860161236e565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261283d60a08401826127e7565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e5260408301846127e7565b6000825161289f81846020870161236e565b9190910192915050565b6000602082840312156128bb57600080fd5b81516001600160e01b0319811681146105b057600080fdfea26469706673582212201b12ccb84dc133a9f910d479d0b076293d022c27386084146694193cf41f609b64736f6c634300080c0033 /// ``` #[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 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\x07y\x91\x90\x81\x01\x90a%\xD7V[\x90P`\0[\x84Q\x81\x10\x15a\x07\xF0W\x84\x81\x81Q\x81\x10a\x07\x99Wa\x07\x99a%4V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\xC0Wa\x07\xC0a%4V[` \x02` \x01\x01Qa\x07\xD2\x91\x90a&gV[a\x07\xDC\x90\x85a&\x86V[\x93P\x80a\x07\xE8\x81a%`V[\x91PPa\x07~V[Pa\x07\xFDa'\x10\x84a&\x9EV[\x92P`gT\x83\x10a\x08\x12WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08>WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08XWP0;\x15\x80\x15a\x08XWP`\0T`\xFF\x16`\x01\x14[a\x08\xC0W`@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\xE3W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xEE\x84\x84\x84a\x0F\xABV[\x80\x15a\t4W`\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\xE3`ka\x0CNV[a\tNa\x0C\xCDV[a\x05_\x82a\x10\x0CV[a\t_a\x0C\xCDV[a\x03\xC3\x81a\x11kV[a\tpa\x0C\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xD5W`@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\xB7V[a\x03\xC3\x81a\x0E6V[a\t\xE6a\x0C\xCDV[a\x03\xC3\x81a\x11\xABV[`\0\x80[\x82Q\x81\x10\x15a\nV[a\x0B;\x81`\x01a&\x86V[\x91P[Pa\n\xE4V[\x81\x15a\x0B\x88W\x84a\x0BV`\x01\x84a'\x01V[\x81T\x81\x10a\x0BfWa\x0Bfa%4V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B\x8BV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80a\x0B\xB1\x83\x86Qa\x14\xE5V[`\0[\x83\x81\x10\x15a\x0C:W`\0\x87\x82\x81Q\x81\x10a\x0B\xD0Wa\x0B\xD0a%4V[` \x02` \x01\x01Q\x90Pa\x0B\xE4\x84\x82a\x15&V[a\x0C\x08\x81\x8A\x89\x85\x81Q\x81\x10a\x0B\xFBWa\x0B\xFBa%4V[` \x02` \x01\x01Qa\x15XV[\x80\x93P`\0a\x0C\x17\x82\x88a\x15\x89V[\x90Pa\x0C#\x81\x85a&\x86V[\x93PPP\x80\x80a\x0C2\x90a%`V[\x91PPa\x0B\xB4V[Pa\x0CE\x81\x85a\x15\xECV[PPPPPPPV[\x80T`\0\x90\x80\x15a\x0C\x97W\x82a\x0Ce`\x01\x83a'\x01V[\x81T\x81\x10a\x0CuWa\x0Cua%4V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C\x9AV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`eT\x81Q\x14a\x03\xBAW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x05zW`@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\xB7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x98` R`@\x90 T`\xFF\x16\x15a\raW`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x98` 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\r\xB8`k\x82a\x16HV[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\x81\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16a\x0E\xC1W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0E\xD1\x83a'\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x0E\xFF\x82a\x12TV[\x90Pa\x0F\n\x81a\x131V[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\x0FSW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FgW=`\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`ja\x0CNV[\x91P`\0a\x13L\x84\x84a&\xC0V[\x91P\x81\x90Pa\x13\\`j\x82a\x16HV[PP`@\x80Q\x84\x81R` \x81\x01\x84\x90R\x7F\x86\xDC\xF8k\x12\xDF\xEE\xDE\xA7J\xE90\r\xBD\xAA\x19;\xCC\xE5\x80\x93i\xC8\x17~\xA2\xF4\xEA\xAAer\x9B\x91\x01`@Q\x80\x91\x03\x90\xA1P\x91P\x91V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16\x15a\x13\xD7W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x13\xE7\x83a%`V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x14\x18\x83a\x12TV[\x90Pa\x14#\x81a\x131V[PP`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\x14W\x90\x86\x90\x86\x90`\x04\x01a(\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x14qW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x14\x85W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x86\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\xA3PPPV[`\0a\x14\xD9`\x02\x84\x84\x18a&\x9EV[a\x05\xB0\x90\x84\x84\x16a&\x86V[\x80\x82\x14a\x15\x08W`@Q`\x01b\x13\x98\xB9`\xE3\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\x03\xD0W`@Qc%\x1FV\xA1`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x10a\x03\xD0W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15l`\x01`\x01`\xA0\x1B\x03\x84\x16\x83\x83a\x18rV[a\x10\x07W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x15\xC1W`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x15\xBA\x90a\x0CNV[\x90Pa\x03\xEAV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x15\xBA\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0a\x15\xF7\x82a\x19\xBEV[\x90P\x80\x83\x11\x15a\x16\x1AW`@QcK\x05\xA0\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x16%\x83a\x19\xF1V[\x90P\x83\x81\x11\x15a\t4W`@Qc\xE1!c/`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81T`\0\x90\x81\x90\x81a\x16Y\x86a\x0CNV[\x90P`\0\x82\x11\x80\x15a\x16\x97WPC\x86a\x16s`\x01\x85a'\x01V[\x81T\x81\x10a\x16\x83Wa\x16\x83a%4V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x16\xF7Wa\x16\xA5\x85a\x1A\x1FV[\x86a\x16\xB1`\x01\x85a'\x01V[\x81T\x81\x10a\x16\xC1Wa\x16\xC1a%4V[\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\x17eV[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x17\x0FCa\x1A\x8CV[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x17#\x88a\x1A\x1FV[`\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\x17\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'/V[a\x05za\x1A\xF1V[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x18PW\x84\x81\x81Q\x81\x10a\x17\xC7Wa\x17\xC7a%4V[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x18\x07W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x18\x1CWa\x18\x1Ca%4V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x18<\x91\x90a&\x86V[\x91P\x80a\x18H\x81a%`V[\x91PPa\x17\xACV[Pa'\x10\x81\x14a\x18fWP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x18\x81\x85\x85a\x1B!V[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x18\x9AWa\x18\x9Aa(^V[\x14\x80\x15a\x18\xB8WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x18\xC8W`\x01\x92PPPa\x05\xB0V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x18\xF0\x92\x91\x90a(tV[`@\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\x19.\x91\x90a(\x8DV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x19iW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x19nV[``\x91P[P\x91P\x91P\x81\x80\x15a\x19\x81WP\x80Q` \x14[\x80\x15a\x19\xB2WP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x19\xA6\x90\x83\x01` \x90\x81\x01\x90\x84\x01a(\xA9V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x19\xD8Wa\x03\xEA`ja\x0CNV[a\x03\xEA`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[\x91\x90PV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x1A\x0BWa\x03\xEA`ka\x0CNV[a\x03\xEA`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1A\x88W`@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\xB7V[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1A\x88W`@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\xB7V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1B\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'/V[a\x05z3a\x0E6V[`\0\x80\x82Q`A\x14\x15a\x1BXW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1BL\x87\x82\x85\x85a\x1B\x8EV[\x94P\x94PPPPa\x17lV[\x82Q`@\x14\x15a\x1B\x82W` \x83\x01Q`@\x84\x01Qa\x1Bw\x86\x83\x83a\x1C{V[\x93P\x93PPPa\x17lV[P`\0\x90P`\x02a\x17lV[`\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\xC5WP`\0\x90P`\x03a\x1CrV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1B\xDDWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1B\xEEWP`\0\x90P`\x04a\x1CrV[`@\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\x1CBW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1CkW`\0`\x01\x92P\x92PPa\x1CrV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1C\x98`\xFF\x86\x90\x1C`\x1Ba&\x86V[\x90Pa\x1C\xA6\x87\x82\x88\x85a\x1B\x8EV[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\xC3\x91\x90[\x80\x82\x11\x15a\x1A\x88W`\0\x81U`\x01\x01a\x1C\xCEV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x1AWa\x1D\x1Aa\x1C\xE2V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x1AWa\x1D\x1Aa\x1C\xE2V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1DjWa\x1Dja\x1C\xE2V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1D\x8BWa\x1D\x8Ba\x1C\xE2V[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1D\xBBW`\0\x80\xFD[\x815` a\x1D\xD0a\x1D\xCB\x83a\x1DrV[a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x1D\xEFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1E\x13W\x805a\x1E\x06\x81a\x1D\x95V[\x83R\x91\x83\x01\x91\x83\x01a\x1D\xF3V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x1E0W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EFW`\0\x80\xFD[a\x1ER\x84\x82\x85\x01a\x1D\xAAV[\x94\x93PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1EsWa\x1Esa\x1C\xE2V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x92W`\0\x80\xFD[\x815a\x1E\xA0a\x1D\xCB\x82a\x1EZV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1E\xB5W`\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\xE5W`\0\x80\xFD[\x825a\x1E\xF0\x81a\x1D\x95V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x1F\x0CW`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x1F W`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x1F;Wa\x1F;a\x1C\xE2V[`@R\x825\x82\x81\x11\x15a\x1FMW`\0\x80\xFD[a\x1FY\x88\x82\x86\x01a\x1E\x81V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1F\xA1W`\0\x80\xFD[\x815a\x05\xB0\x81a\x1F}V[`\0\x80`@\x83\x85\x03\x12\x15a\x1F\xBFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F\xDCW`\0\x80\xFD[a\x1F\xE8\x85\x82\x86\x01a\x1E\x81V[\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 HW\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 \x11V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xB0` \x83\x01\x84a\x1F\xF2V[`\0` \x82\x84\x03\x12\x15a zW`\0\x80\xFD[\x815a\x05\xB0\x81a\x1D\x95V[`\0\x80`@\x83\x85\x03\x12\x15a \x98W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a \xAFW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a \xC3W`\0\x80\xFD[\x815` a \xD3a\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a \xF2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a!*W\x805\x86\x81\x11\x15a!\x0EW`\0\x80\x81\xFD[a!\x1C\x8C\x86\x83\x8B\x01\x01a\x1D\xAAV[\x84RP\x91\x83\x01\x91\x83\x01a \xF6V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a!AW`\0\x80\xFD[Pa\x1F\xE8\x85\x82\x86\x01a\x1E\x81V[`\0` \x82\x84\x03\x12\x15a!`W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a!zW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!\x97W`\0\x80\xFD[a\x1F\xE8\x85\x82\x86\x01a\x1D\xAAV[`\0\x80`@\x83\x85\x03\x12\x15a!\xB6W`\0\x80\xFD[\x825a!\xC1\x81a\x1D\x95V[\x91P` \x83\x015a!\xD1\x81a\x1F}V[\x80\x91PP\x92P\x92\x90PV[`\0` \x80\x83\x85\x03\x12\x15a!\xEFW`\0\x80\xFD[a!\xF7a\x1C\xF8V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\x0FW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\" W`\0\x80\xFD[\x805a\".a\x1D\xCB\x82a\x1DrV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\"MW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\"\xB0W`@\x84\x89\x03\x12\x15a\"kW`\0\x80\x81\xFD[a\"sa\x1D V[\x845a\"~\x81a\x1D\x95V[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\"\x9AW`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a\"RV[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\"\xD2W`\0\x80\xFD[\x835a\"\xDD\x81a\x1D\x95V[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xFFW`\0\x80\xFD[a#\x0B\x86\x82\x87\x01a!\xDCV[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a#(W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#?W`\0\x80\xFD[a#K\x86\x83\x87\x01a!\xDCV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a#aW`\0\x80\xFD[Pa\x1F\xE8\x85\x82\x86\x01a\x1D\xAAV[`\0[\x83\x81\x10\x15a#\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a#qV[\x83\x81\x11\x15a\t4WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a#\xABW`\0\x80\xFD[\x81Q` a#\xBBa\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a#\xDAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1E\x13W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xFDW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a$\x0FW`\0\x80\x81\xFD[\x84\x81\x01Q`@a$!a\x1D\xCB\x83a\x1EZV[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a$6W`\0\x80\x81\xFD[a$E\x83\x89\x83\x01\x84\x87\x01a#nV[\x86RPPP\x91\x83\x01\x91\x83\x01a#\xDEV[\x80Qa\x19\xEC\x81a\x1F}V[`\0\x80`\0``\x84\x86\x03\x12\x15a$uW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a$\x8CW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a$\xA0W`\0\x80\xFD[\x81Q` a$\xB0a\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a$\xCFW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a$\xF6W\x85Qa$\xE7\x81a\x1D\x95V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a$\xD4V[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a%\x0FW`\0\x80\xFD[Pa%\x1C\x86\x82\x87\x01a#\x9AV[\x92PPa%+`@\x85\x01a$UV[\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%tWa%ta%JV[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%\xC9W\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a%\xABV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a%\xEAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\0W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a&\x11W`\0\x80\xFD[\x80Qa&\x1Fa\x1D\xCB\x82a\x1DrV[\x81\x81R`\x05\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&\\W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a&CV[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&\x81Wa&\x81a%JV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a&\x99Wa&\x99a%JV[P\x01\x90V[`\0\x82a&\xBBWcNH{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&\xE2Wa&\xE2a%JV[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a&\xFBWa&\xFBa%JV[PP\x01\x90V[`\0\x82\x82\x10\x15a'\x13Wa'\x13a%JV[P\x03\x90V[`\0\x81a''Wa''a%JV[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'\x8D`@\x83\x01\x85a\x1F\xF2V[\x82\x81\x03` \x84\x01Ra'\x9F\x81\x85a\x1F\xF2V[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a'\xC6Wa'\xC6a%JV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a'\xE1Wa'\xE1a%JV[PP\x03\x90V[`\0\x81Q\x80\x84Ra'\xFF\x81` \x86\x01` \x86\x01a#nV[`\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(=`\xA0\x84\x01\x82a'\xE7V[\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\x1ER`@\x83\x01\x84a'\xE7V[`\0\x82Qa(\x9F\x81\x84` \x87\x01a#nV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a(\xBBW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xB0W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x1B\x12\xCC\xB8M\xC13\xA9\xF9\x10\xD4y\xD0\xB0v)=\x02,'8`\x84\x14f\x94\x19<\xF4\x1F`\x9BdsolcC\0\x08\x0C\x003", ); /**```solidity struct Quorum { StrategyParams[] strategies; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct Quorum { pub strategies: alloy::sol_types::private::Vec<::RustType>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1557,13 +1480,18 @@ pub mod ECDSAStakeRegistryEqualWeight { /**```solidity struct StrategyParams { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1748,10 +1676,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error InsufficientSignedStake(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientSignedStake {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1803,10 +1736,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error InsufficientWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1858,10 +1796,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error InvalidLength(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidLength {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1913,10 +1856,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error InvalidQuorum(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidQuorum {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1964,69 +1912,19 @@ pub mod ECDSAStakeRegistryEqualWeight { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2078,10 +1976,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error InvalidSignedWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignedWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2133,10 +2036,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error InvalidThreshold(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidThreshold {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2188,10 +2096,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error LengthMismatch(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct LengthMismatch {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2243,10 +2156,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error MustUpdateAllOperators(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MustUpdateAllOperators {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2298,10 +2216,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error NotSorted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NotSorted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2353,10 +2276,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error OperatorAlreadyAllowlisted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAlreadyAllowlisted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2408,10 +2336,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error OperatorAlreadyRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAlreadyRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2463,10 +2396,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error OperatorNotAllowlisted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorNotAllowlisted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2518,10 +2456,15 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity error OperatorNotRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorNotRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2573,13 +2516,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2661,7 +2614,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event MinimumWeightUpdated(uint256 _old, uint256 _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinimumWeightUpdated { #[allow(missing_docs)] @@ -2669,7 +2627,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[allow(missing_docs)] pub _new: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2760,7 +2723,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event OperatorDeregistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDeregistered { #[allow(missing_docs)] @@ -2768,7 +2736,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2863,13 +2836,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event OperatorEjected(address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2953,13 +2936,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event OperatorPermitted(address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3043,7 +3036,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event OperatorRegistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -3051,7 +3049,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3146,13 +3149,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event OperatorRevoked(address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3236,7 +3249,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorWeightUpdated { #[allow(missing_docs)] @@ -3246,7 +3264,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[allow(missing_docs)] pub newWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3344,7 +3367,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -3352,7 +3380,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3447,7 +3480,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event QuorumUpdated(Quorum _old, Quorum _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumUpdated { #[allow(missing_docs)] @@ -3455,7 +3493,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[allow(missing_docs)] pub _new: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3536,135 +3579,27 @@ pub mod ECDSAStakeRegistryEqualWeight { } } }; - /**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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3748,7 +3683,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct TotalWeightUpdated { #[allow(missing_docs)] @@ -3756,7 +3696,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[allow(missing_docs)] pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3847,7 +3792,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UpdateMinimumWeight { #[allow(missing_docs)] @@ -3855,7 +3805,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[allow(missing_docs)] pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3946,7 +3901,7 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity constructor(address _delegationManager); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _delegationManager: alloy::sol_types::private::Address, @@ -4008,18 +3963,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function allowlistedOperators(address) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowlistedOperatorsReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4119,14 +4079,19 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function deregisterOperator() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorCall {} ///Container type for the return parameters of the [`deregisterOperator()`](deregisterOperatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4222,16 +4187,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function ejectOperator(address _operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4331,18 +4301,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointOperatorWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4442,16 +4417,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function getLastCheckpointThresholdWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightCall {} ///Container type for the return parameters of the [`getLastCheckpointThresholdWeight()`](getLastCheckpointThresholdWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4547,18 +4527,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightAtBlockReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4668,16 +4653,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function getLastCheckpointTotalWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointTotalWeightCall {} ///Container type for the return parameters of the [`getLastCheckpointTotalWeight()`](getLastCheckpointTotalWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointTotalWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4773,18 +4763,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointTotalWeightAtBlockReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4882,22 +4877,27 @@ pub mod ECDSAStakeRegistryEqualWeight { } } }; - /**Function with signature `getLastestOperatorSigningKey(address)` and selector `0xcdcd3581`. + /**Function with signature `getOperatorWeight(address)` and selector `0x98ec1ac9`. ```solidity - function getLastestOperatorSigningKey(address _operator) external view returns (address); + function getOperatorWeight(address _operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getLastestOperatorSigningKeyCall { + pub struct getOperatorWeightCall { 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)] + ///Container type for the return parameters of the [`getOperatorWeight(address)`](getOperatorWeightCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getLastestOperatorSigningKeyReturn { - pub _0: alloy::sol_types::private::Address, + pub struct getOperatorWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4916,14 +4916,14 @@ pub mod ECDSAStakeRegistryEqualWeight { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getLastestOperatorSigningKeyCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightCall) -> Self { (value._operator,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getLastestOperatorSigningKeyCall { + impl ::core::convert::From> for getOperatorWeightCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _operator: tuple.0 } } @@ -4931,9 +4931,9 @@ pub mod ECDSAStakeRegistryEqualWeight { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + 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) { @@ -4945,28 +4945,28 @@ pub mod ECDSAStakeRegistryEqualWeight { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getLastestOperatorSigningKeyReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getLastestOperatorSigningKeyReturn { + impl ::core::convert::From> for getOperatorWeightReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for getLastestOperatorSigningKeyCall { + 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 = getLastestOperatorSigningKeyReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + 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 = "getLastestOperatorSigningKey(address)"; - const SELECTOR: [u8; 4] = [205u8, 205u8, 53u8, 129u8]; + 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, @@ -4993,261 +4993,28 @@ pub mod ECDSAStakeRegistryEqualWeight { } } }; - /**Function with signature `getOperatorSigningKeyAtBlock(address,uint256)` and selector `0x5e1042e8`. + /**Function with signature `getOperatorWeightAtBlock(address,uint32)` and selector `0x955f2d90`. ```solidity - function getOperatorSigningKeyAtBlock(address _operator, uint256 _blockNumber) external view returns (address); + function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getOperatorSigningKeyAtBlockCall { + pub struct getOperatorWeightAtBlockCall { pub _operator: alloy::sol_types::private::Address, - pub _blockNumber: alloy::sol_types::private::primitives::aliases::U256, + pub _blockNumber: u32, } - ///Container type for the return parameters of the [`getOperatorSigningKeyAtBlock(address,uint256)`](getOperatorSigningKeyAtBlockCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`getOperatorWeightAtBlock(address,uint32)`](getOperatorWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getOperatorSigningKeyAtBlockReturn { - pub _0: alloy::sol_types::private::Address, + 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<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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5359,7 +5126,7 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeCall { pub _serviceManager: alloy::sol_types::private::Address, @@ -5367,10 +5134,15 @@ pub mod ECDSAStakeRegistryEqualWeight { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5490,19 +5262,24 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isValidSignatureReturn { pub _0: alloy::sol_types::private::FixedBytes<4>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5617,16 +5394,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function minimumWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumWeightCall {} ///Container type for the return parameters of the [`minimumWeight()`](minimumWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5722,18 +5504,23 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function operatorRegistered(address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorRegisteredReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5833,16 +5620,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5938,16 +5730,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function permitOperator(address _operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6047,16 +5844,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function quorum() external view returns (Quorum memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCall {} ///Container type for the return parameters of the [`quorum()`](quorumCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6148,34 +5950,39 @@ pub mod ECDSAStakeRegistryEqualWeight { } } }; - /**Function with signature `registerOperatorWithSignature((bytes,bytes32,uint256),address)` and selector `0x3d5611f6`. + /**Function with signature `registerOperatorWithSignature(address,(bytes,bytes32,uint256))` and selector `0x0a601a12`. ```solidity - function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + function registerOperatorWithSignature(address _operator, ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorWithSignatureCall { + pub _operator: alloy::sol_types::private::Address, 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)] + ///Container type for the return parameters of the [`registerOperatorWithSignature(address,(bytes,bytes32,uint256))`](registerOperatorWithSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorWithSignatureReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - ISignatureUtils::SignatureWithSaltAndExpiry, alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, alloy::sol_types::private::Address, + ::RustType, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -6190,7 +5997,7 @@ pub mod ECDSAStakeRegistryEqualWeight { #[doc(hidden)] impl ::core::convert::From for UnderlyingRustTuple<'_> { fn from(value: registerOperatorWithSignatureCall) -> Self { - (value._operatorSignature, value._signingKey) + (value._operator, value._operatorSignature) } } #[automatically_derived] @@ -6198,8 +6005,8 @@ pub mod ECDSAStakeRegistryEqualWeight { impl ::core::convert::From> for registerOperatorWithSignatureCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - _operatorSignature: tuple.0, - _signingKey: tuple.1, + _operator: tuple.0, + _operatorSignature: tuple.1, } } } @@ -6236,16 +6043,16 @@ pub mod ECDSAStakeRegistryEqualWeight { #[automatically_derived] impl alloy_sol_types::SolCall for registerOperatorWithSignatureCall { type Parameters<'a> = ( - ISignatureUtils::SignatureWithSaltAndExpiry, alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, ); 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]; + "registerOperatorWithSignature(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [10u8, 96u8, 26u8, 18u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -6255,12 +6062,12 @@ pub mod ECDSAStakeRegistryEqualWeight { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( + ::tokenize( + &self._operator, + ), ::tokenize( &self._operatorSignature, ), - ::tokenize( - &self._signingKey, - ), ) } #[inline] @@ -6279,14 +6086,19 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6382,16 +6194,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function revokeOperator(address _operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct revokeOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6491,16 +6308,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6600,17 +6422,22 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateMinimumWeightReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6721,131 +6548,25 @@ pub mod ECDSAStakeRegistryEqualWeight { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6950,7 +6671,7 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsForQuorumCall { pub operatorsPerQuorum: alloy::sol_types::private::Vec< @@ -6959,10 +6680,15 @@ pub mod ECDSAStakeRegistryEqualWeight { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsForQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7085,17 +6811,22 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateQuorumConfigReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7208,16 +6939,21 @@ pub mod ECDSAStakeRegistryEqualWeight { ```solidity function updateStakeThreshold(uint256 _thresholdWeight) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateStakeThresholdReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7325,8 +7061,6 @@ pub mod ECDSAStakeRegistryEqualWeight { getLastCheckpointThresholdWeightAtBlock(getLastCheckpointThresholdWeightAtBlockCall), getLastCheckpointTotalWeight(getLastCheckpointTotalWeightCall), getLastCheckpointTotalWeightAtBlock(getLastCheckpointTotalWeightAtBlockCall), - getLastestOperatorSigningKey(getLastestOperatorSigningKeyCall), - getOperatorSigningKeyAtBlock(getOperatorSigningKeyAtBlockCall), getOperatorWeight(getOperatorWeightCall), getOperatorWeightAtBlock(getOperatorWeightAtBlockCall), initialize(initializeCall), @@ -7341,7 +7075,6 @@ pub mod ECDSAStakeRegistryEqualWeight { revokeOperator(revokeOperatorCall), transferOwnership(transferOwnershipCall), updateMinimumWeight(updateMinimumWeightCall), - updateOperatorSigningKey(updateOperatorSigningKeyCall), updateOperators(updateOperatorsCall), updateOperatorsForQuorum(updateOperatorsForQuorumCall), updateQuorumConfig(updateQuorumConfigCall), @@ -7357,29 +7090,26 @@ pub mod ECDSAStakeRegistryEqualWeight { /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 4usize]] = &[ [0u8, 207u8, 42u8, 181u8], + [10u8, 96u8, 26u8, 18u8], [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], @@ -7391,7 +7121,7 @@ pub mod ECDSAStakeRegistryEqualWeight { impl alloy_sol_types::SolInterface for ECDSAStakeRegistryEqualWeightCalls { const NAME: &'static str = "ECDSAStakeRegistryEqualWeightCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 29usize; + const COUNT: usize = 26usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -7419,12 +7149,6 @@ pub mod ECDSAStakeRegistryEqualWeight { Self::getLastCheckpointTotalWeightAtBlock(_) => { ::SELECTOR } - Self::getLastestOperatorSigningKey(_) => { - ::SELECTOR - } - Self::getOperatorSigningKeyAtBlock(_) => { - ::SELECTOR - } Self::getOperatorWeight(_) => { ::SELECTOR } @@ -7463,9 +7187,6 @@ pub mod ECDSAStakeRegistryEqualWeight { Self::updateMinimumWeight(_) => { ::SELECTOR } - Self::updateOperatorSigningKey(_) => { - ::SELECTOR - } Self::updateOperators(_) => { ::SELECTOR } @@ -7514,6 +7235,22 @@ pub mod ECDSAStakeRegistryEqualWeight { } updateOperators }, + { + fn registerOperatorWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::registerOperatorWithSignature, + ) + } + registerOperatorWithSignature + }, { fn getLastCheckpointTotalWeightAtBlock( data: &[u8], @@ -7602,22 +7339,6 @@ pub mod ECDSAStakeRegistryEqualWeight { } getLastCheckpointOperatorWeight }, - { - fn registerOperatorWithSignature( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, - validate, - ) - .map( - ECDSAStakeRegistryEqualWeightCalls::registerOperatorWithSignature, - ) - } - registerOperatorWithSignature - }, { fn minimumWeight( data: &[u8], @@ -7657,22 +7378,6 @@ pub mod ECDSAStakeRegistryEqualWeight { } permitOperator }, - { - fn getOperatorSigningKeyAtBlock( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, - validate, - ) - .map( - ECDSAStakeRegistryEqualWeightCalls::getOperatorSigningKeyAtBlock, - ) - } - getOperatorSigningKeyAtBlock - }, { fn updateStakeThreshold( data: &[u8], @@ -7725,19 +7430,6 @@ pub mod ECDSAStakeRegistryEqualWeight { } renounceOwnership }, - { - fn updateOperatorSigningKey( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAStakeRegistryEqualWeightCalls::updateOperatorSigningKey) - } - updateOperatorSigningKey - }, { fn deregisterOperator( data: &[u8], @@ -7815,22 +7507,6 @@ pub mod ECDSAStakeRegistryEqualWeight { } getLastCheckpointThresholdWeight }, - { - fn getLastestOperatorSigningKey( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, - validate, - ) - .map( - ECDSAStakeRegistryEqualWeightCalls::getLastestOperatorSigningKey, - ) - } - getLastestOperatorSigningKey - }, { fn updateQuorumConfig( data: &[u8], @@ -7948,16 +7624,6 @@ pub mod ECDSAStakeRegistryEqualWeight { inner, ) } - Self::getLastestOperatorSigningKey(inner) => { - ::abi_encoded_size( - inner, - ) - } - Self::getOperatorSigningKeyAtBlock(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::getOperatorWeight(inner) => { ::abi_encoded_size( inner, @@ -8022,11 +7688,6 @@ pub mod ECDSAStakeRegistryEqualWeight { inner, ) } - Self::updateOperatorSigningKey(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::updateOperators(inner) => { ::abi_encoded_size( inner, @@ -8100,18 +7761,6 @@ pub mod ECDSAStakeRegistryEqualWeight { out, ) } - Self::getLastestOperatorSigningKey(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } - Self::getOperatorSigningKeyAtBlock(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::getOperatorWeight(inner) => { ::abi_encode_raw( inner, @@ -8190,12 +7839,6 @@ pub mod ECDSAStakeRegistryEqualWeight { out, ) } - Self::updateOperatorSigningKey(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::updateOperators(inner) => { ::abi_encode_raw( inner, @@ -8229,7 +7872,6 @@ pub mod ECDSAStakeRegistryEqualWeight { InsufficientWeight(InsufficientWeight), InvalidLength(InvalidLength), InvalidQuorum(InvalidQuorum), - InvalidReferenceBlock(InvalidReferenceBlock), InvalidSignature(InvalidSignature), InvalidSignedWeight(InvalidSignedWeight), InvalidThreshold(InvalidThreshold), @@ -8262,7 +7904,6 @@ pub mod ECDSAStakeRegistryEqualWeight { [186u8, 80u8, 249u8, 17u8], [209u8, 115u8, 87u8, 121u8], [225u8, 33u8, 99u8, 47u8], - [230u8, 79u8, 24u8, 15u8], [241u8, 235u8, 220u8, 194u8], [255u8, 99u8, 58u8, 56u8], ]; @@ -8271,7 +7912,7 @@ pub mod ECDSAStakeRegistryEqualWeight { impl alloy_sol_types::SolInterface for ECDSAStakeRegistryEqualWeightErrors { const NAME: &'static str = "ECDSAStakeRegistryEqualWeightErrors"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 15usize; + const COUNT: usize = 14usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -8283,9 +7924,6 @@ pub mod ECDSAStakeRegistryEqualWeight { } Self::InvalidLength(_) => ::SELECTOR, Self::InvalidQuorum(_) => ::SELECTOR, - Self::InvalidReferenceBlock(_) => { - ::SELECTOR - } Self::InvalidSignature(_) => { ::SELECTOR } @@ -8485,19 +8123,6 @@ pub mod ECDSAStakeRegistryEqualWeight { } InsufficientSignedStake }, - { - fn InvalidReferenceBlock( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAStakeRegistryEqualWeightErrors::InvalidReferenceBlock) - } - InvalidReferenceBlock - }, { fn OperatorAlreadyAllowlisted( data: &[u8], @@ -8548,9 +8173,6 @@ pub mod ECDSAStakeRegistryEqualWeight { Self::InvalidQuorum(inner) => { ::abi_encoded_size(inner) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encoded_size(inner) - } Self::InvalidSignature(inner) => { ::abi_encoded_size(inner) } @@ -8604,9 +8226,6 @@ pub mod ECDSAStakeRegistryEqualWeight { Self::InvalidQuorum(inner) => { ::abi_encode_raw(inner, out) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encode_raw(inner, out) - } Self::InvalidSignature(inner) => { ::abi_encode_raw(inner, out) } @@ -8660,7 +8279,6 @@ pub mod ECDSAStakeRegistryEqualWeight { OperatorWeightUpdated(OperatorWeightUpdated), OwnershipTransferred(OwnershipTransferred), QuorumUpdated(QuorumUpdated), - SigningKeyUpdate(SigningKeyUpdate), ThresholdWeightUpdated(ThresholdWeightUpdated), TotalWeightUpdated(TotalWeightUpdated), UpdateMinimumWeight(UpdateMinimumWeight), @@ -8734,11 +8352,6 @@ pub mod ECDSAStakeRegistryEqualWeight { 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, @@ -8749,7 +8362,7 @@ pub mod ECDSAStakeRegistryEqualWeight { #[automatically_derived] impl alloy_sol_types::SolEventInterface for ECDSAStakeRegistryEqualWeightEvents { const NAME: &'static str = "ECDSAStakeRegistryEqualWeightEvents"; - const COUNT: usize = 14usize; + const COUNT: usize = 13usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -8816,12 +8429,6 @@ pub mod ECDSAStakeRegistryEqualWeight { ) .map(Self::QuorumUpdated) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( - topics, data, validate, - ) - .map(Self::SigningKeyUpdate) - } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, @@ -8886,9 +8493,6 @@ pub mod ECDSAStakeRegistryEqualWeight { 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) } @@ -8932,9 +8536,6 @@ pub mod ECDSAStakeRegistryEqualWeight { 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) } @@ -9186,24 +8787,6 @@ pub mod ECDSAStakeRegistryEqualWeight { { 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, @@ -9275,12 +8858,12 @@ pub mod ECDSAStakeRegistryEqualWeight { ///Creates a new call builder for the [`registerOperatorWithSignature`] function. pub fn registerOperatorWithSignature( &self, + _operator: alloy::sol_types::private::Address, _operatorSignature: ::RustType, - _signingKey: alloy::sol_types::private::Address, ) -> alloy_contract::SolCallBuilder { self.call_builder(®isterOperatorWithSignatureCall { + _operator, _operatorSignature, - _signingKey, }) } ///Creates a new call builder for the [`renounceOwnership`] function. @@ -9314,13 +8897,6 @@ pub mod ECDSAStakeRegistryEqualWeight { _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, @@ -9429,10 +9005,6 @@ pub mod ECDSAStakeRegistryEqualWeight { 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, diff --git a/crates/utils/src/ecdsastakeregistryeventsanderrors.rs b/crates/utils/src/middleware/ecdsastakeregistryeventsanderrors.rs similarity index 89% rename from crates/utils/src/ecdsastakeregistryeventsanderrors.rs rename to crates/utils/src/middleware/ecdsastakeregistryeventsanderrors.rs index d9e8ff3e..f24a3b97 100644 --- a/crates/utils/src/ecdsastakeregistryeventsanderrors.rs +++ b/crates/utils/src/middleware/ecdsastakeregistryeventsanderrors.rs @@ -15,7 +15,6 @@ interface ECDSAStakeRegistryEventsAndErrors { error InsufficientWeight(); error InvalidLength(); error InvalidQuorum(); - error InvalidReferenceBlock(); error InvalidSignature(); error InvalidSignedWeight(); error InvalidThreshold(); @@ -30,7 +29,6 @@ interface ECDSAStakeRegistryEventsAndErrors { 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); @@ -179,37 +177,6 @@ interface ECDSAStakeRegistryEventsAndErrors { ], "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", @@ -281,11 +248,6 @@ interface ECDSAStakeRegistryEventsAndErrors { "name": "InvalidQuorum", "inputs": [] }, - { - "type": "error", - "name": "InvalidReferenceBlock", - "inputs": [] - }, { "type": "error", "name": "InvalidSignature", @@ -328,7 +290,12 @@ interface ECDSAStakeRegistryEventsAndErrors { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ECDSAStakeRegistryEventsAndErrors { use super::*; use alloy::sol_types as alloy_sol_types; @@ -355,13 +322,18 @@ pub mod ECDSAStakeRegistryEventsAndErrors { /**```solidity struct Quorum { StrategyParams[] strategies; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct Quorum { pub strategies: alloy::sol_types::private::Vec<::RustType>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -522,13 +494,18 @@ pub mod ECDSAStakeRegistryEventsAndErrors { /**```solidity struct StrategyParams { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -713,10 +690,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error InsufficientSignedStake(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientSignedStake {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -768,10 +750,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error InsufficientWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -823,10 +810,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error InvalidLength(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidLength {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -878,10 +870,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error InvalidQuorum(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidQuorum {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -929,69 +926,19 @@ pub mod ECDSAStakeRegistryEventsAndErrors { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1043,10 +990,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error InvalidSignedWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignedWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1098,10 +1050,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error InvalidThreshold(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidThreshold {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1153,10 +1110,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error LengthMismatch(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct LengthMismatch {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1208,10 +1170,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error MustUpdateAllOperators(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MustUpdateAllOperators {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1263,10 +1230,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error NotSorted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NotSorted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1318,10 +1290,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error OperatorAlreadyRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAlreadyRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1373,10 +1350,15 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity error OperatorNotRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorNotRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1428,7 +1410,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity event MinimumWeightUpdated(uint256 _old, uint256 _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinimumWeightUpdated { #[allow(missing_docs)] @@ -1436,7 +1423,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { #[allow(missing_docs)] pub _new: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1527,7 +1519,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity event OperatorDeregistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDeregistered { #[allow(missing_docs)] @@ -1535,7 +1532,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1630,7 +1632,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity event OperatorRegistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -1638,7 +1645,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1733,7 +1745,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorWeightUpdated { #[allow(missing_docs)] @@ -1743,7 +1760,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { #[allow(missing_docs)] pub newWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1841,7 +1863,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity event QuorumUpdated(Quorum _old, Quorum _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumUpdated { #[allow(missing_docs)] @@ -1849,7 +1876,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { #[allow(missing_docs)] pub _new: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1930,135 +1962,27 @@ pub mod ECDSAStakeRegistryEventsAndErrors { } } }; - /**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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2142,7 +2066,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct TotalWeightUpdated { #[allow(missing_docs)] @@ -2150,7 +2079,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { #[allow(missing_docs)] pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2241,7 +2175,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ```solidity event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UpdateMinimumWeight { #[allow(missing_docs)] @@ -2249,7 +2188,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { #[allow(missing_docs)] pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2342,7 +2286,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { InsufficientWeight(InsufficientWeight), InvalidLength(InvalidLength), InvalidQuorum(InvalidQuorum), - InvalidReferenceBlock(InvalidReferenceBlock), InvalidSignature(InvalidSignature), InvalidSignedWeight(InvalidSignedWeight), InvalidThreshold(InvalidThreshold), @@ -2372,7 +2315,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { [186u8, 80u8, 249u8, 17u8], [209u8, 115u8, 87u8, 121u8], [225u8, 33u8, 99u8, 47u8], - [230u8, 79u8, 24u8, 15u8], [255u8, 99u8, 58u8, 56u8], ]; } @@ -2380,7 +2322,7 @@ pub mod ECDSAStakeRegistryEventsAndErrors { impl alloy_sol_types::SolInterface for ECDSAStakeRegistryEventsAndErrorsErrors { const NAME: &'static str = "ECDSAStakeRegistryEventsAndErrorsErrors"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 13usize; + const COUNT: usize = 12usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -2392,9 +2334,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { } Self::InvalidLength(_) => ::SELECTOR, Self::InvalidQuorum(_) => ::SELECTOR, - Self::InvalidReferenceBlock(_) => { - ::SELECTOR - } Self::InvalidSignature(_) => { ::SELECTOR } @@ -2575,19 +2514,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { } InsufficientSignedStake }, - { - fn InvalidReferenceBlock( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAStakeRegistryEventsAndErrorsErrors::InvalidReferenceBlock) - } - InvalidReferenceBlock - }, { fn LengthMismatch( data: &[u8], @@ -2625,9 +2551,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { Self::InvalidQuorum(inner) => { ::abi_encoded_size(inner) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encoded_size(inner) - } Self::InvalidSignature(inner) => { ::abi_encoded_size(inner) } @@ -2673,9 +2596,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { Self::InvalidQuorum(inner) => { ::abi_encode_raw(inner, out) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encode_raw(inner, out) - } Self::InvalidSignature(inner) => { ::abi_encode_raw(inner, out) } @@ -2714,7 +2634,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { OperatorRegistered(OperatorRegistered), OperatorWeightUpdated(OperatorWeightUpdated), QuorumUpdated(QuorumUpdated), - SigningKeyUpdate(SigningKeyUpdate), ThresholdWeightUpdated(ThresholdWeightUpdated), TotalWeightUpdated(TotalWeightUpdated), UpdateMinimumWeight(UpdateMinimumWeight), @@ -2768,17 +2687,12 @@ pub mod ECDSAStakeRegistryEventsAndErrors { 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; + const COUNT: usize = 8usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -2815,12 +2729,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { ) .map(Self::QuorumUpdated) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( - topics, data, validate, - ) - .map(Self::SigningKeyUpdate) - } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, @@ -2870,9 +2778,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { 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) } @@ -2901,9 +2806,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { 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) } @@ -3133,10 +3035,6 @@ pub mod ECDSAStakeRegistryEventsAndErrors { 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, diff --git a/crates/utils/src/ecdsastakeregistrypermissioned.rs b/crates/utils/src/middleware/ecdsastakeregistrypermissioned.rs similarity index 71% rename from crates/utils/src/ecdsastakeregistrypermissioned.rs rename to crates/utils/src/middleware/ecdsastakeregistrypermissioned.rs index 13e6ee5e..f621b5bc 100644 --- a/crates/utils/src/ecdsastakeregistrypermissioned.rs +++ b/crates/utils/src/middleware/ecdsastakeregistrypermissioned.rs @@ -6,21 +6,31 @@ library ISignatureUtils { struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -375,7 +385,6 @@ interface ECDSAStakeRegistryPermissioned { error InsufficientWeight(); error InvalidLength(); error InvalidQuorum(); - error InvalidReferenceBlock(); error InvalidSignature(); error InvalidSignedWeight(); error InvalidThreshold(); @@ -397,7 +406,6 @@ interface ECDSAStakeRegistryPermissioned { 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); @@ -412,8 +420,6 @@ interface ECDSAStakeRegistryPermissioned { 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; @@ -423,12 +429,11 @@ interface ECDSAStakeRegistryPermissioned { 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 registerOperatorWithSignature(address _operator, ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature) 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; @@ -572,49 +577,6 @@ interface ECDSAStakeRegistryPermissioned { ], "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", @@ -818,6 +780,11 @@ interface ECDSAStakeRegistryPermissioned { "type": "function", "name": "registerOperatorWithSignature", "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, { "name": "_operatorSignature", "type": "tuple", @@ -839,11 +806,6 @@ interface ECDSAStakeRegistryPermissioned { "internalType": "uint256" } ] - }, - { - "name": "_signingKey", - "type": "address", - "internalType": "address" } ], "outputs": [], @@ -900,19 +862,6 @@ interface ECDSAStakeRegistryPermissioned { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "updateOperatorSigningKey", - "inputs": [ - { - "name": "_newSigningKey", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, { "type": "function", "name": "updateOperators", @@ -1204,37 +1153,6 @@ interface ECDSAStakeRegistryPermissioned { ], "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", @@ -1306,11 +1224,6 @@ interface ECDSAStakeRegistryPermissioned { "name": "InvalidQuorum", "inputs": [] }, - { - "type": "error", - "name": "InvalidReferenceBlock", - "inputs": [] - }, { "type": "error", "name": "InvalidSignature", @@ -1363,40 +1276,50 @@ interface ECDSAStakeRegistryPermissioned { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ECDSAStakeRegistryPermissioned { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b5060405162002c3838038062002c38833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051612ba46200009460003960006107e20152612ba46000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80636d5be92611610104578063ab118995116100a2578063e5d98f9411610071578063e5d98f94146103dd578063ec7fbb31146103f0578063f2fde38b1461041c578063fad8b32a1461042f57600080fd5b8063ab1189951461039c578063b933fa74146103af578063cdcd3581146103b7578063dec5d1f6146103ca57600080fd5b8063857dc190116100de578063857dc1901461035d5780638da5cb5b14610365578063955f2d901461037657806398ec1ac91461038957600080fd5b80636d5be9261461030f578063715018a614610342578063743c31f41461034a57600080fd5b80633d5611f61161017157806358c1eb171161014b57806358c1eb17146102ab5780635e1042e8146102be5780635ef53329146102e9578063696255be146102fc57600080fd5b80633d5611f61461027d57806340bf2fb7146102905780635140a5481461029857600080fd5b80631703a018116101ad5780631703a0181461023a5780631e4cd85e1461024f578063314f3a49146102625780633b242e4a1461026a57600080fd5b8062cf2ab5146101d35780630dba3394146101e85780631626ba7e1461020e575b600080fd5b6101e66101e1366004612091565b610442565b005b6101fb6101f63660046120df565b61044e565b6040519081526020015b60405180910390f35b61022161021c366004612174565b61046a565b6040516001600160e01b03199091168152602001610205565b6102426104a8565b604051610205919061221d565b6101fb61025d3660046120df565b61053b565b6101fb610551565b6101fb610278366004612230565b610562565b6101e661028b36600461224d565b610583565b6067546101fb565b6101e66102a63660046122fa565b610592565b6101e66102b9366004612230565b6105b5565b6102d16102cc3660046123c3565b6105c6565b6040516001600160a01b039091168152602001610205565b6101e66102f73660046123ef565b6105ef565b6101e661030a366004612408565b610600565b61033261031d366004612230565b60976020526000908152604090205460ff1681565b6040519015158152602001610205565b6101e661061a565b6101e6610358366004612230565b61062e565b6101e6610668565b6033546001600160a01b03166102d1565b6101fb610384366004612444565b610671565b6101fb610397366004612230565b61069c565b6101e66103aa366004612553565b610903565b6101fb610a1f565b6102d16103c5366004612230565b610a2b565b6101e66103d83660046125ab565b610a4c565b6101e66103eb366004612230565b610a5d565b6103326103fe366004612230565b6001600160a01b03166000908152606e602052604090205460ff1690565b6101e661042a366004612230565b610a6e565b6101e661043d366004612230565b610ae4565b61044b81610af5565b50565b6000610464606b63ffffffff80851690610b4c16565b92915050565b6000806000808480602001905181019061048491906126fb565b92509250925061049686848484610c5b565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561052e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016104df565b5050505081525050905090565b6000610464606c63ffffffff80851690610b4c16565b600061055d606b610d1a565b905090565b6001600160a01b0381166000908152606d6020526040812061046490610d1a565b61058e338383610d76565b5050565b61058e826000815181106105a8576105a86127cf565b6020026020010151610dc4565b6105bd610de7565b61044b81610e41565b6001600160a01b0382166000908152606a602052604081206105e89083610b4c565b9392505050565b6105f7610de7565b61044b81610ec7565b610608610de7565b61061182610f0a565b61058e81610af5565b610622610de7565b61062c6000610f50565b565b336000908152606e602052604090205460ff1661065e576040516325ec6c1f60e01b815260040160405180910390fd5b61044b3382610fa2565b61062c33611055565b6001600160a01b0382166000908152606d602052604081206105e89063ffffffff80851690610b4c16565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561071357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016106c4565b50505050905060008082516001600160401b0381111561073557610735611f55565b60405190808252806020026020018201604052801561075e578160200160208202803683370190505b50905060005b83518110156107c75783818151811061077f5761077f6127cf565b60200260200101516000015182828151811061079d5761079d6127cf565b6001600160a01b0390921660209283029190910190910152806107bf816127fb565b915050610764565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906108199089908690600401612816565b600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085e9190810190612872565b905060005b84518110156108d55784818151811061087e5761087e6127cf565b6020026020010151602001516001600160601b03168282815181106108a5576108a56127cf565b60200260200101516108b79190612902565b6108c19085612921565b9350806108cd816127fb565b915050610863565b506108e261271084612939565b925060675483106108f7575090949350505050565b50600095945050505050565b600054610100900460ff16158080156109235750600054600160ff909116105b8061093d5750303b15801561093d575060005460ff166001145b6109a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109c8576000805461ff0019166101001790555b6109d3848484611178565b8015610a19576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061055d606c610d1a565b6001600160a01b0381166000908152606a6020526040812061046490610d1a565b610a54610de7565b610611826111d4565b610a65610de7565b61044b81611333565b610a76610de7565b6001600160a01b038116610adb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b61044b81610f50565b610aec610de7565b61044b81611373565b6000805b8251811015610b4257610b24838281518110610b1757610b176127cf565b602002602001015161141c565b610b2e908361295b565b915080610b3a816127fb565b915050610af9565b50610a198161153f565b6000438210610b9d5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564604482015260640161099c565b825460005b81811015610c02576000610bb682846115ab565b905084866000018281548110610bce57610bce6127cf565b60009182526020909120015463ffffffff161115610bee57809250610bfc565b610bf9816001612921565b91505b50610ba2565b8115610c465784610c1460018461299c565b81548110610c2457610c246127cf565b60009182526020909120015464010000000090046001600160e01b0316610c49565b60005b6001600160e01b031695945050505050565b600083519050600080600080610c728588516115c6565b60005b85811015610d0457888181518110610c8f57610c8f6127cf565b60200260200101519450610ca38588611607565b9250610caf848661165a565b610cd3838b8a8481518110610cc657610cc66127cf565b602002602001015161168c565b8493506000610ce286896116bd565b9050610cee8184612921565b9250508080610cfc906127fb565b915050610c75565b50610d0f8187611710565b505050505050505050565b80546000908015610d635782610d3160018361299c565b81548110610d4157610d416127cf565b60009182526020909120015464010000000090046001600160e01b0316610d66565b60005b6001600160e01b03169392505050565b6001600160a01b03831660009081526097602052604090205460ff161515600114610db45760405163380fa21360e11b815260040160405180910390fd5b610dbf83838361176c565b505050565b6065548151146104425760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461062c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b6001600160a01b03811660009081526097602052604090205460ff1615610e7b576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610ed2606c826118a4565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610fc390610d1a565b9050806001600160a01b0316826001600160a01b03161415610fe457505050565b6001600160a01b038381166000908152606a602052604090206110089184166118a4565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff1661108e576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061109e836129b3565b90915550506001600160a01b0381166000908152606e60205260408120805460ff191690556110cc8261141c565b90506110d78161153f565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff1661119f5760405162461bcd60e51b815260040161099c906129ca565b606880546001600160a01b0319166001600160a01b0385161790556111c382610ec7565b6111cc816111d4565b610dbf6119cf565b6111dd816119fe565b6111fa5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561126d57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161121e565b5050509152509091506066905060006112868282611f27565b505060005b825151811015611301578251805160669190839081106112ad576112ad6127cf565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806112f9816127fb565b91505061128b565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610f44929190612a15565b61133c81611055565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526097602052604090205460ff166113ac5760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606e602052604090205460ff161561044b5761044b81611333565b6001600160a01b0381166000908152606d6020526040812081908190819061144390610d1a565b6001600160a01b0386166000908152606e602052604090205490915060ff166114a8576114708184612a43565b9250826114805750909392505050565b6001600160a01b0385166000908152606d602052604081206114a1916118a4565b50506114f2565b6114b18561069c565b91506114bd8183612a43565b9250826114cd5750909392505050565b6001600160a01b0385166000908152606d602052604090206114ef90836118a4565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b60008061154c606b610d1a565b9150600061155a848461295b565b915081905061156a606b826118a4565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b60006115ba6002848418612939565b6105e890848416612921565b8082146115e9576040516001621398b960e31b0319815260040160405180910390fd5b8161058e5760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff161061162f5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a602052604090206105e89063ffffffff80851690610b4c16565b806001600160a01b0316826001600160a01b03161061058e5760405163ba50f91160e01b815260040160405180910390fd5b6116a06001600160a01b0384168383611ace565b610dbf57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff16106116e55760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d602052604090206105e89063ffffffff80851690610b4c16565b600061171b82611c1a565b90508083111561173e57604051634b05a0f760e11b815260040160405180910390fd5b600061174983611c56565b905083811115610a195760405163e121632f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606e602052604090205460ff16156117a6576040516342ee68b560e01b815260040160405180910390fd5b606580549060006117b6836127fb565b90915550506001600160a01b0383166000908152606e60205260408120805460ff191660011790556117e78461141c565b90506117f28161153f565b50506117fe8483610fa2565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906118309087908790600401612aae565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b81546000908190816118b586610d1a565b90506000821180156118f3575043866118cf60018561299c565b815481106118df576118df6127cf565b60009182526020909120015463ffffffff16145b156119535761190185611c92565b8661190d60018561299c565b8154811061191d5761191d6127cf565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506119c1565b85600001604051806040016040528061196b43611cff565b63ffffffff16815260200161197f88611c92565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166119f65760405162461bcd60e51b815260040161099c906129ca565b61062c611d64565b8051600090818080805b8451811015611aac57848181518110611a2357611a236127cf565b6020026020010151600001519250826001600160a01b0316846001600160a01b031610611a635760405163ba50f91160e01b815260040160405180910390fd5b829350848181518110611a7857611a786127cf565b6020026020010151602001516001600160601b031682611a989190612921565b915080611aa4816127fb565b915050611a08565b506127108114611ac25750600095945050505050565b50600195945050505050565b6000806000611add8585611d94565b90925090506000816004811115611af657611af6612af9565b148015611b145750856001600160a01b0316826001600160a01b0316145b15611b24576001925050506105e8565b600080876001600160a01b0316631626ba7e60e01b8888604051602401611b4c929190612b0f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611b8a9190612b28565b600060405180830381855afa9150503d8060008114611bc5576040519150601f19603f3d011682016040523d82523d6000602084013e611bca565b606091505b5091509150818015611bdd575080516020145b8015611c0e57508051630b135d3f60e11b90611c029083016020908101908401612b44565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff1610611c425760405163e64f180f60e01b815260040160405180910390fd5b610464606b63ffffffff80851690610b4c16565b6000438263ffffffff1610611c7e5760405163e64f180f60e01b815260040160405180910390fd5b610464606c63ffffffff80851690610b4c16565b60006001600160e01b03821115611cfb5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161099c565b5090565b600063ffffffff821115611cfb5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161099c565b600054610100900460ff16611d8b5760405162461bcd60e51b815260040161099c906129ca565b61062c33610f50565b600080825160411415611dcb5760208301516040840151606085015160001a611dbf87828585611e01565b945094505050506119c8565b825160401415611df55760208301516040840151611dea868383611eee565b9350935050506119c8565b506000905060026119c8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611e385750600090506003611ee5565b8460ff16601b14158015611e5057508460ff16601c14155b15611e615750600090506004611ee5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611eb5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ede57600060019250925050611ee5565b9150600090505b94509492505050565b6000806001600160ff1b03831681611f0b60ff86901c601b612921565b9050611f1987828885611e01565b935093505050935093915050565b508054600082559060005260206000209081019061044b91905b80821115611cfb5760008155600101611f41565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611f8d57611f8d611f55565b60405290565b604080519081016001600160401b0381118282101715611f8d57611f8d611f55565b604051601f8201601f191681016001600160401b0381118282101715611fdd57611fdd611f55565b604052919050565b60006001600160401b03821115611ffe57611ffe611f55565b5060051b60200190565b6001600160a01b038116811461044b57600080fd5b600082601f83011261202e57600080fd5b8135602061204361203e83611fe5565b611fb5565b82815260059290921b8401810191818101908684111561206257600080fd5b8286015b8481101561208657803561207981612008565b8352918301918301612066565b509695505050505050565b6000602082840312156120a357600080fd5b81356001600160401b038111156120b957600080fd5b6120c58482850161201d565b949350505050565b63ffffffff8116811461044b57600080fd5b6000602082840312156120f157600080fd5b81356105e8816120cd565b60006001600160401b0382111561211557612115611f55565b50601f01601f191660200190565b600082601f83011261213457600080fd5b813561214261203e826120fc565b81815284602083860101111561215757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561218757600080fd5b8235915060208301356001600160401b038111156121a457600080fd5b6121b085828601612123565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561221057835180516001600160a01b031684528601516001600160601b03168684015292850192918401916001016121d9565b5090979650505050505050565b6020815260006105e860208301846121ba565b60006020828403121561224257600080fd5b81356105e881612008565b6000806040838503121561226057600080fd5b82356001600160401b038082111561227757600080fd5b908401906060828703121561228b57600080fd5b6040516060810181811083821117156122a6576122a6611f55565b6040528235828111156122b857600080fd5b6122c488828601612123565b825250602083013560208201526040830135604082015280945050505060208301356122ef81612008565b809150509250929050565b6000806040838503121561230d57600080fd5b82356001600160401b038082111561232457600080fd5b818501915085601f83011261233857600080fd5b8135602061234861203e83611fe5565b82815260059290921b8401810191818101908984111561236757600080fd5b8286015b8481101561239f578035868111156123835760008081fd5b6123918c86838b010161201d565b84525091830191830161236b565b50965050860135925050808211156123b657600080fd5b506121b085828601612123565b600080604083850312156123d657600080fd5b82356123e181612008565b946020939093013593505050565b60006020828403121561240157600080fd5b5035919050565b6000806040838503121561241b57600080fd5b8235915060208301356001600160401b0381111561243857600080fd5b6121b08582860161201d565b6000806040838503121561245757600080fd5b823561246281612008565b915060208301356122ef816120cd565b6000602080838503121561248557600080fd5b61248d611f6b565b915082356001600160401b038111156124a557600080fd5b8301601f810185136124b657600080fd5b80356124c461203e82611fe5565b81815260069190911b820183019083810190878311156124e357600080fd5b928401925b8284101561254657604084890312156125015760008081fd5b612509611f93565b843561251481612008565b8152848601356001600160601b03811681146125305760008081fd5b81870152825260409390930192908401906124e8565b8552509295945050505050565b60008060006060848603121561256857600080fd5b833561257381612008565b92506020840135915060408401356001600160401b0381111561259557600080fd5b6125a186828701612472565b9150509250925092565b600080604083850312156125be57600080fd5b82356001600160401b03808211156125d557600080fd5b6125e186838701612472565b935060208501359150808211156125f757600080fd5b506121b08582860161201d565b60005b8381101561261f578181015183820152602001612607565b83811115610a195750506000910152565b600082601f83011261264157600080fd5b8151602061265161203e83611fe5565b82815260059290921b8401810191818101908684111561267057600080fd5b8286015b848110156120865780516001600160401b038111156126935760008081fd5b8701603f810189136126a55760008081fd5b8481015160406126b761203e836120fc565b8281528b828486010111156126cc5760008081fd5b6126db83898301848701612604565b8652505050918301918301612674565b80516126f6816120cd565b919050565b60008060006060848603121561271057600080fd5b83516001600160401b038082111561272757600080fd5b818601915086601f83011261273b57600080fd5b8151602061274b61203e83611fe5565b82815260059290921b8401810191818101908a84111561276a57600080fd5b948201945b8386101561279157855161278281612008565b8252948201949082019061276f565b918901519197509093505050808211156127aa57600080fd5b506127b786828701612630565b9250506127c6604085016126eb565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561280f5761280f6127e5565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612864578551851683529483019491830191600101612846565b509098975050505050505050565b6000602080838503121561288557600080fd5b82516001600160401b0381111561289b57600080fd5b8301601f810185136128ac57600080fd5b80516128ba61203e82611fe5565b81815260059190911b820183019083810190878311156128d957600080fd5b928401925b828410156128f7578351825292840192908401906128de565b979650505050505050565b600081600019048311821515161561291c5761291c6127e5565b500290565b60008219821115612934576129346127e5565b500190565b60008261295657634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b038490038513161561297d5761297d6127e5565b600160ff1b8390038412811615612996576129966127e5565b50500190565b6000828210156129ae576129ae6127e5565b500390565b6000816129c2576129c26127e5565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604081526000612a2860408301856121ba565b8281036020840152612a3a81856121ba565b95945050505050565b60008083128015600160ff1b850184121615612a6157612a616127e5565b6001600160ff1b0384018313811615612a7c57612a7c6127e5565b50500390565b60008151808452612a9a816020860160208601612604565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152612ad860a0840182612a82565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006120c56040830184612a82565b60008251612b3a818460208701612604565b9190910192915050565b600060208284031215612b5657600080fd5b81516001600160e01b0319811681146105e857600080fdfea2646970667358221220fb651b57e776142777e9aae7db2e48d2fc0d78d97fb6470ad55e40786970e05264736f6c634300080c0033 + ///0x60a06040523480156200001157600080fd5b50604051620029e3380380620029e3833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161294f6200009460003960006106fd015261294f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80636d5be926116100de578063ab11899511610097578063e5d98f9411610071578063e5d98f9414610355578063ec7fbb3114610368578063f2fde38b14610394578063fad8b32a146103a757600080fd5b8063ab11899514610327578063b933fa741461033a578063dec5d1f61461034257600080fd5b80636d5be926146102a3578063715018a6146102d6578063857dc190146102de5780638da5cb5b146102e6578063955f2d901461030157806398ec1ac91461031457600080fd5b8063314f3a491161014b5780635140a548116101255780635140a5481461025757806358c1eb171461026a5780635ef533291461027d578063696255be1461029057600080fd5b8063314f3a49146102345780633b242e4a1461023c57806340bf2fb71461024f57600080fd5b8062cf2ab5146101925780630a601a12146101a75780630dba3394146101ba5780631626ba7e146101e05780631703a0181461020c5780631e4cd85e14610221575b600080fd5b6101a56101a0366004611e64565b6103ba565b005b6101a56101b5366004611f18565b6103c6565b6101cd6101c8366004611fd5565b6103d4565b6040519081526020015b60405180910390f35b6101f36101ee366004611ff2565b6103f0565b6040516001600160e01b031990911681526020016101d7565b61021461042e565b6040516101d7919061209b565b6101cd61022f366004611fd5565b6104c1565b6101cd6104d7565b6101cd61024a3660046120ae565b6104e8565b6067546101cd565b6101a56102653660046120cb565b610509565b6101a56102783660046120ae565b61052c565b6101a561028b366004612194565b61053d565b6101a561029e3660046121ad565b61054e565b6102c66102b13660046120ae565b60986020526000908152604090205460ff1681565b60405190151581526020016101d7565b6101a5610568565b6101a561057c565b6033546040516001600160a01b0390911681526020016101d7565b6101cd61030f3660046121e9565b610585565b6101cd6103223660046120ae565b6105b7565b6101a5610335366004612303565b61081e565b6101cd61093a565b6101a561035036600461235b565b610946565b6101a56103633660046120ae565b610957565b6102c66103763660046120ae565b6001600160a01b03166000908152606d602052604090205460ff1690565b6101a56103a23660046120ae565b610968565b6101a56103b53660046120ae565b6109de565b6103c3816109ef565b50565b6103d08282610a46565b5050565b60006103ea606a63ffffffff80851690610a8e16565b92915050565b6000806000808480602001905181019061040a91906124a6565b92509250925061041c86848484610b9d565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b828210156104b457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610465565b5050505081525050905090565b60006103ea606b63ffffffff80851690610a8e16565b60006104e3606a610c4e565b905090565b6001600160a01b0381166000908152606c602052604081206103ea90610c4e565b6103d08260008151811061051f5761051f61257a565b6020026020010151610caa565b610534610ccd565b6103c381610d27565b610545610ccd565b6103c381610dad565b610556610ccd565b61055f82610df0565b6103d0816109ef565b610570610ccd565b61057a6000610e36565b565b61057a33610e88565b6001600160a01b0382166000908152606c602052604081206105b09063ffffffff80851690610a8e16565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561062e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105df565b50505050905060008082516001600160401b0381111561065057610650611d28565b604051908082528060200260200182016040528015610679578160200160208202803683370190505b50905060005b83518110156106e25783818151811061069a5761069a61257a565b6020026020010151600001518282815181106106b8576106b861257a565b6001600160a01b0390921660209283029190910190910152806106da816125a6565b91505061067f565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061073490899086906004016125c1565b600060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610779919081019061261d565b905060005b84518110156107f0578481815181106107995761079961257a565b6020026020010151602001516001600160601b03168282815181106107c0576107c061257a565b60200260200101516107d291906126ad565b6107dc90856126cc565b9350806107e8816125a6565b91505061077e565b506107fd612710846126e4565b92506067548310610812575090949350505050565b50600095945050505050565b600054610100900460ff161580801561083e5750600054600160ff909116105b806108585750303b158015610858575060005460ff166001145b6108c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108e3576000805461ff0019166101001790555b6108ee848484610fab565b8015610934576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104e3606b610c4e565b61094e610ccd565b61055f8261100c565b61095f610ccd565b6103c38161116b565b610970610ccd565b6001600160a01b0381166109d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b7565b6103c381610e36565b6109e6610ccd565b6103c3816111ab565b6000805b8251811015610a3c57610a1e838281518110610a1157610a1161257a565b6020026020010151611254565b610a289083612706565b915080610a34816125a6565b9150506109f3565b5061093481611377565b6001600160a01b03821660009081526098602052604090205460ff161515600114610a845760405163380fa21360e11b815260040160405180910390fd5b6103d082826113e3565b6000438210610adf5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108b7565b825460005b81811015610b44576000610af88284611510565b905084866000018281548110610b1057610b1061257a565b60009182526020909120015463ffffffff161115610b3057809250610b3e565b610b3b8160016126cc565b91505b50610ae4565b8115610b885784610b56600184612747565b81548110610b6657610b6661257a565b60009182526020909120015464010000000090046001600160e01b0316610b8b565b60005b6001600160e01b031695945050505050565b600083519050600080610bb183865161152b565b60005b83811015610c3a576000878281518110610bd057610bd061257a565b60200260200101519050610be4848261156c565b610c08818a898581518110610bfb57610bfb61257a565b602002602001015161159e565b8093506000610c1782886115cf565b9050610c2381856126cc565b935050508080610c32906125a6565b915050610bb4565b50610c458185611632565b50505050505050565b80546000908015610c975782610c65600183612747565b81548110610c7557610c7561257a565b60009182526020909120015464010000000090046001600160e01b0316610c9a565b60005b6001600160e01b03169392505050565b6065548151146103ba5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461057a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b7565b6001600160a01b03811660009081526098602052604090205460ff1615610d61576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610db8606b8261168e565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610ec1576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610ed18361275e565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610eff82611254565b9050610f0a81611377565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610f5357600080fd5b505af1158015610f67573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610fd25760405162461bcd60e51b81526004016108b790612775565b606880546001600160a01b0319166001600160a01b038516179055610ff682610dad565b610fff8161100c565b6110076117b9565b505050565b611015816117e8565b6110325760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156110a557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611056565b5050509152509091506066905060006110be8282611cfa565b505060005b825151811015611139578251805160669190839081106110e5576110e561257a565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b039091161791015580611131816125a6565b9150506110c3565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610e2a9291906127c0565b61117481610e88565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526098602052604090205460ff166111e45760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606d602052604090205460ff16156103c3576103c38161116b565b6001600160a01b0381166000908152606c6020526040812081908190819061127b90610c4e565b6001600160a01b0386166000908152606d602052604090205490915060ff166112e0576112a881846127ee565b9250826112b85750909392505050565b6001600160a01b0385166000908152606c602052604081206112d99161168e565b505061132a565b6112e9856105b7565b91506112f581836127ee565b9250826113055750909392505050565b6001600160a01b0385166000908152606c60205260409020611327908361168e565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b600080611384606a610c4e565b915060006113928484612706565b91508190506113a2606a8261168e565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b6001600160a01b0382166000908152606d602052604090205460ff161561141d576040516342ee68b560e01b815260040160405180910390fd5b6065805490600061142d836125a6565b90915550506001600160a01b0382166000908152606d60205260408120805460ff1916600117905561145e83611254565b905061146981611377565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d9061149d9086908690600401612859565b600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b600061151f60028484186126e4565b6105b0908484166126cc565b80821461154e576040516001621398b960e31b0319815260040160405180910390fd5b816103d05760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103d05760405163ba50f91160e01b815260040160405180910390fd5b6115b26001600160a01b03841683836118b8565b61100757604051638baa579f60e01b815260040160405180910390fd5b600063ffffffff8281161415611607576001600160a01b0383166000908152606c6020526040902061160090610c4e565b90506103ea565b6001600160a01b0383166000908152606c602052604090206116009063ffffffff80851690610a8e16565b600061163d82611a04565b90508083111561166057604051634b05a0f760e11b815260040160405180910390fd5b600061166b83611a37565b9050838111156109345760405163e121632f60e01b815260040160405180910390fd5b815460009081908161169f86610c4e565b90506000821180156116dd575043866116b9600185612747565b815481106116c9576116c961257a565b60009182526020909120015463ffffffff16145b1561173d576116eb85611a65565b866116f7600185612747565b815481106117075761170761257a565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506117ab565b85600001604051806040016040528061175543611ad2565b63ffffffff16815260200161176988611a65565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166117e05760405162461bcd60e51b81526004016108b790612775565b61057a611b37565b8051600090818080805b84518110156118965784818151811061180d5761180d61257a565b6020026020010151600001519250826001600160a01b0316846001600160a01b03161061184d5760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106118625761186261257a565b6020026020010151602001516001600160601b03168261188291906126cc565b91508061188e816125a6565b9150506117f2565b5061271081146118ac5750600095945050505050565b50600195945050505050565b60008060006118c78585611b67565b909250905060008160048111156118e0576118e06128a4565b1480156118fe5750856001600160a01b0316826001600160a01b0316145b1561190e576001925050506105b0565b600080876001600160a01b0316631626ba7e60e01b88886040516024016119369291906128ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161197491906128d3565b600060405180830381855afa9150503d80600081146119af576040519150601f19603f3d011682016040523d82523d6000602084013e6119b4565b606091505b50915091508180156119c7575080516020145b80156119f857508051630b135d3f60e11b906119ec90830160209081019084016128ef565b6001600160e01b031916145b98975050505050505050565b600063ffffffff8281161415611a1e576103ea606a610c4e565b6103ea606a63ffffffff80851690610a8e16565b919050565b600063ffffffff8281161415611a51576103ea606b610c4e565b6103ea606b63ffffffff80851690610a8e16565b60006001600160e01b03821115611ace5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108b7565b5090565b600063ffffffff821115611ace5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108b7565b600054610100900460ff16611b5e5760405162461bcd60e51b81526004016108b790612775565b61057a33610e36565b600080825160411415611b9e5760208301516040840151606085015160001a611b9287828585611bd4565b945094505050506117b2565b825160401415611bc85760208301516040840151611bbd868383611cc1565b9350935050506117b2565b506000905060026117b2565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611c0b5750600090506003611cb8565b8460ff16601b14158015611c2357508460ff16601c14155b15611c345750600090506004611cb8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c88573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611cb157600060019250925050611cb8565b9150600090505b94509492505050565b6000806001600160ff1b03831681611cde60ff86901c601b6126cc565b9050611cec87828885611bd4565b935093505050935093915050565b50805460008255906000526020600020908101906103c391905b80821115611ace5760008155600101611d14565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611d6057611d60611d28565b60405290565b604080519081016001600160401b0381118282101715611d6057611d60611d28565b604051601f8201601f191681016001600160401b0381118282101715611db057611db0611d28565b604052919050565b60006001600160401b03821115611dd157611dd1611d28565b5060051b60200190565b6001600160a01b03811681146103c357600080fd5b600082601f830112611e0157600080fd5b81356020611e16611e1183611db8565b611d88565b82815260059290921b84018101918181019086841115611e3557600080fd5b8286015b84811015611e59578035611e4c81611ddb565b8352918301918301611e39565b509695505050505050565b600060208284031215611e7657600080fd5b81356001600160401b03811115611e8c57600080fd5b611e9884828501611df0565b949350505050565b60006001600160401b03821115611eb957611eb9611d28565b50601f01601f191660200190565b600082601f830112611ed857600080fd5b8135611ee6611e1182611ea0565b818152846020838601011115611efb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611f2b57600080fd5b8235611f3681611ddb565b915060208301356001600160401b0380821115611f5257600080fd5b9084019060608287031215611f6657600080fd5b604051606081018181108382111715611f8157611f81611d28565b604052823582811115611f9357600080fd5b611f9f88828601611ec7565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff811681146103c357600080fd5b600060208284031215611fe757600080fd5b81356105b081611fc3565b6000806040838503121561200557600080fd5b8235915060208301356001600160401b0381111561202257600080fd5b61202e85828601611ec7565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561208e57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612057565b5090979650505050505050565b6020815260006105b06020830184612038565b6000602082840312156120c057600080fd5b81356105b081611ddb565b600080604083850312156120de57600080fd5b82356001600160401b03808211156120f557600080fd5b818501915085601f83011261210957600080fd5b81356020612119611e1183611db8565b82815260059290921b8401810191818101908984111561213857600080fd5b8286015b84811015612170578035868111156121545760008081fd5b6121628c86838b0101611df0565b84525091830191830161213c565b509650508601359250508082111561218757600080fd5b5061202e85828601611ec7565b6000602082840312156121a657600080fd5b5035919050565b600080604083850312156121c057600080fd5b8235915060208301356001600160401b038111156121dd57600080fd5b61202e85828601611df0565b600080604083850312156121fc57600080fd5b823561220781611ddb565b9150602083013561221781611fc3565b809150509250929050565b6000602080838503121561223557600080fd5b61223d611d3e565b915082356001600160401b0381111561225557600080fd5b8301601f8101851361226657600080fd5b8035612274611e1182611db8565b81815260069190911b8201830190838101908783111561229357600080fd5b928401925b828410156122f657604084890312156122b15760008081fd5b6122b9611d66565b84356122c481611ddb565b8152848601356001600160601b03811681146122e05760008081fd5b8187015282526040939093019290840190612298565b8552509295945050505050565b60008060006060848603121561231857600080fd5b833561232381611ddb565b92506020840135915060408401356001600160401b0381111561234557600080fd5b61235186828701612222565b9150509250925092565b6000806040838503121561236e57600080fd5b82356001600160401b038082111561238557600080fd5b61239186838701612222565b935060208501359150808211156123a757600080fd5b5061202e85828601611df0565b60005b838110156123cf5781810151838201526020016123b7565b838111156109345750506000910152565b600082601f8301126123f157600080fd5b81516020612401611e1183611db8565b82815260059290921b8401810191818101908684111561242057600080fd5b8286015b84811015611e595780516001600160401b038111156124435760008081fd5b8701603f810189136124555760008081fd5b848101516040612467611e1183611ea0565b8281528b8284860101111561247c5760008081fd5b61248b838983018487016123b4565b8652505050918301918301612424565b8051611a3281611fc3565b6000806000606084860312156124bb57600080fd5b83516001600160401b03808211156124d257600080fd5b818601915086601f8301126124e657600080fd5b815160206124f6611e1183611db8565b82815260059290921b8401810191818101908a84111561251557600080fd5b948201945b8386101561253c57855161252d81611ddb565b8252948201949082019061251a565b9189015191975090935050508082111561255557600080fd5b50612562868287016123e0565b9250506125716040850161249b565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156125ba576125ba612590565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561260f5785518516835294830194918301916001016125f1565b509098975050505050505050565b6000602080838503121561263057600080fd5b82516001600160401b0381111561264657600080fd5b8301601f8101851361265757600080fd5b8051612665611e1182611db8565b81815260059190911b8201830190838101908783111561268457600080fd5b928401925b828410156126a257835182529284019290840190612689565b979650505050505050565b60008160001904831182151516156126c7576126c7612590565b500290565b600082198211156126df576126df612590565b500190565b60008261270157634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b038490038513161561272857612728612590565b600160ff1b839003841281161561274157612741612590565b50500190565b60008282101561275957612759612590565b500390565b60008161276d5761276d612590565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006127d36040830185612038565b82810360208401526127e58185612038565b95945050505050565b60008083128015600160ff1b85018412161561280c5761280c612590565b6001600160ff1b038401831381161561282757612827612590565b50500390565b600081518084526128458160208601602086016123b4565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261288360a084018261282d565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e98604083018461282d565b600082516128e58184602087016123b4565b9190910192915050565b60006020828403121561290157600080fd5b81516001600160e01b0319811681146105b057600080fdfea264697066735822122025563f4c25b537b2e8cfa2e98ad6525f5bbf0594d4557f3e6997b43509161e9f64736f6c634300080c0033 /// ``` #[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", + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0)\xE38\x03\x80b\0)\xE3\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)Ob\0\0\x94`\09`\0a\x06\xFD\x01Ra)O`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x8DW`\x005`\xE0\x1C\x80cm[\xE9&\x11a\0\xDEW\x80c\xAB\x11\x89\x95\x11a\0\x97W\x80c\xE5\xD9\x8F\x94\x11a\0qW\x80c\xE5\xD9\x8F\x94\x14a\x03UW\x80c\xEC\x7F\xBB1\x14a\x03hW\x80c\xF2\xFD\xE3\x8B\x14a\x03\x94W\x80c\xFA\xD8\xB3*\x14a\x03\xA7W`\0\x80\xFD[\x80c\xAB\x11\x89\x95\x14a\x03'W\x80c\xB93\xFAt\x14a\x03:W\x80c\xDE\xC5\xD1\xF6\x14a\x03BW`\0\x80\xFD[\x80cm[\xE9&\x14a\x02\xA3W\x80cqP\x18\xA6\x14a\x02\xD6W\x80c\x85}\xC1\x90\x14a\x02\xDEW\x80c\x8D\xA5\xCB[\x14a\x02\xE6W\x80c\x95_-\x90\x14a\x03\x01W\x80c\x98\xEC\x1A\xC9\x14a\x03\x14W`\0\x80\xFD[\x80c1O:I\x11a\x01KW\x80cQ@\xA5H\x11a\x01%W\x80cQ@\xA5H\x14a\x02WW\x80cX\xC1\xEB\x17\x14a\x02jW\x80c^\xF53)\x14a\x02}W\x80cibU\xBE\x14a\x02\x90W`\0\x80\xFD[\x80c1O:I\x14a\x024W\x80c;$.J\x14a\x02=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07y\x91\x90\x81\x01\x90a&\x1DV[\x90P`\0[\x84Q\x81\x10\x15a\x07\xF0W\x84\x81\x81Q\x81\x10a\x07\x99Wa\x07\x99a%zV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\xC0Wa\x07\xC0a%zV[` \x02` \x01\x01Qa\x07\xD2\x91\x90a&\xADV[a\x07\xDC\x90\x85a&\xCCV[\x93P\x80a\x07\xE8\x81a%\xA6V[\x91PPa\x07~V[Pa\x07\xFDa'\x10\x84a&\xE4V[\x92P`gT\x83\x10a\x08\x12WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08>WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08XWP0;\x15\x80\x15a\x08XWP`\0T`\xFF\x16`\x01\x14[a\x08\xC0W`@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\xE3W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xEE\x84\x84\x84a\x0F\xABV[\x80\x15a\t4W`\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\xE3`ka\x0CNV[a\tNa\x0C\xCDV[a\x05_\x82a\x10\x0CV[a\t_a\x0C\xCDV[a\x03\xC3\x81a\x11kV[a\tpa\x0C\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xD5W`@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\xB7V[a\x03\xC3\x81a\x0E6V[a\t\xE6a\x0C\xCDV[a\x03\xC3\x81a\x11\xABV[`\0\x80[\x82Q\x81\x10\x15a\nV[a\x0B;\x81`\x01a&\xCCV[\x91P[Pa\n\xE4V[\x81\x15a\x0B\x88W\x84a\x0BV`\x01\x84a'GV[\x81T\x81\x10a\x0BfWa\x0Bfa%zV[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B\x8BV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80a\x0B\xB1\x83\x86Qa\x15+V[`\0[\x83\x81\x10\x15a\x0C:W`\0\x87\x82\x81Q\x81\x10a\x0B\xD0Wa\x0B\xD0a%zV[` \x02` \x01\x01Q\x90Pa\x0B\xE4\x84\x82a\x15lV[a\x0C\x08\x81\x8A\x89\x85\x81Q\x81\x10a\x0B\xFBWa\x0B\xFBa%zV[` \x02` \x01\x01Qa\x15\x9EV[\x80\x93P`\0a\x0C\x17\x82\x88a\x15\xCFV[\x90Pa\x0C#\x81\x85a&\xCCV[\x93PPP\x80\x80a\x0C2\x90a%\xA6V[\x91PPa\x0B\xB4V[Pa\x0CE\x81\x85a\x162V[PPPPPPPV[\x80T`\0\x90\x80\x15a\x0C\x97W\x82a\x0Ce`\x01\x83a'GV[\x81T\x81\x10a\x0CuWa\x0Cua%zV[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C\x9AV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`eT\x81Q\x14a\x03\xBAW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x05zW`@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\xB7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x98` R`@\x90 T`\xFF\x16\x15a\raW`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x98` 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\r\xB8`k\x82a\x16\x8EV[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\x81\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16a\x0E\xC1W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0E\xD1\x83a'^V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x0E\xFF\x82a\x12TV[\x90Pa\x0F\n\x81a\x13wV[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\x0FSW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FgW=`\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\x86\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\xA3PPPV[`\0a\x15\x1F`\x02\x84\x84\x18a&\xE4V[a\x05\xB0\x90\x84\x84\x16a&\xCCV[\x80\x82\x14a\x15NW`@Q`\x01b\x13\x98\xB9`\xE3\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\x03\xD0W`@Qc%\x1FV\xA1`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x10a\x03\xD0W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\xB2`\x01`\x01`\xA0\x1B\x03\x84\x16\x83\x83a\x18\xB8V[a\x10\x07W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x16\x07W`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x16\0\x90a\x0CNV[\x90Pa\x03\xEAV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x16\0\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0a\x16=\x82a\x1A\x04V[\x90P\x80\x83\x11\x15a\x16`W`@QcK\x05\xA0\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x16k\x83a\x1A7V[\x90P\x83\x81\x11\x15a\t4W`@Qc\xE1!c/`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81T`\0\x90\x81\x90\x81a\x16\x9F\x86a\x0CNV[\x90P`\0\x82\x11\x80\x15a\x16\xDDWPC\x86a\x16\xB9`\x01\x85a'GV[\x81T\x81\x10a\x16\xC9Wa\x16\xC9a%zV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x17=Wa\x16\xEB\x85a\x1AeV[\x86a\x16\xF7`\x01\x85a'GV[\x81T\x81\x10a\x17\x07Wa\x17\x07a%zV[\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\x17\xABV[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x17UCa\x1A\xD2V[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x17i\x88a\x1AeV[`\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\x17\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'uV[a\x05za\x1B7V[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x18\x96W\x84\x81\x81Q\x81\x10a\x18\rWa\x18\ra%zV[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x18MW`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x18bWa\x18ba%zV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x18\x82\x91\x90a&\xCCV[\x91P\x80a\x18\x8E\x81a%\xA6V[\x91PPa\x17\xF2V[Pa'\x10\x81\x14a\x18\xACWP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x18\xC7\x85\x85a\x1BgV[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x18\xE0Wa\x18\xE0a(\xA4V[\x14\x80\x15a\x18\xFEWP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x19\x0EW`\x01\x92PPPa\x05\xB0V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x196\x92\x91\x90a(\xBAV[`@\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\x19t\x91\x90a(\xD3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x19\xAFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x19\xB4V[``\x91P[P\x91P\x91P\x81\x80\x15a\x19\xC7WP\x80Q` \x14[\x80\x15a\x19\xF8WP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x19\xEC\x90\x83\x01` \x90\x81\x01\x90\x84\x01a(\xEFV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x1A\x1EWa\x03\xEA`ja\x0CNV[a\x03\xEA`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[\x91\x90PV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x1AQWa\x03\xEA`ka\x0CNV[a\x03\xEA`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1A\xCEW`@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\xB7V[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1A\xCEW`@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\xB7V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1B^W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'uV[a\x05z3a\x0E6V[`\0\x80\x82Q`A\x14\x15a\x1B\x9EW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1B\x92\x87\x82\x85\x85a\x1B\xD4V[\x94P\x94PPPPa\x17\xB2V[\x82Q`@\x14\x15a\x1B\xC8W` \x83\x01Q`@\x84\x01Qa\x1B\xBD\x86\x83\x83a\x1C\xC1V[\x93P\x93PPPa\x17\xB2V[P`\0\x90P`\x02a\x17\xB2V[`\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\x1C\x0BWP`\0\x90P`\x03a\x1C\xB8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1C#WP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1C4WP`\0\x90P`\x04a\x1C\xB8V[`@\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\x88W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\xB1W`\0`\x01\x92P\x92PPa\x1C\xB8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1C\xDE`\xFF\x86\x90\x1C`\x1Ba&\xCCV[\x90Pa\x1C\xEC\x87\x82\x88\x85a\x1B\xD4V[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\xC3\x91\x90[\x80\x82\x11\x15a\x1A\xCEW`\0\x81U`\x01\x01a\x1D\x14V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D`Wa\x1D`a\x1D(V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D`Wa\x1D`a\x1D(V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\xB0Wa\x1D\xB0a\x1D(V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1D\xD1Wa\x1D\xD1a\x1D(V[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1E\x01W`\0\x80\xFD[\x815` a\x1E\x16a\x1E\x11\x83a\x1D\xB8V[a\x1D\x88V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x1E5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1EYW\x805a\x1EL\x81a\x1D\xDBV[\x83R\x91\x83\x01\x91\x83\x01a\x1E9V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x1EvW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x8CW`\0\x80\xFD[a\x1E\x98\x84\x82\x85\x01a\x1D\xF0V[\x94\x93PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1E\xB9Wa\x1E\xB9a\x1D(V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\xD8W`\0\x80\xFD[\x815a\x1E\xE6a\x1E\x11\x82a\x1E\xA0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1E\xFBW`\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\x1F+W`\0\x80\xFD[\x825a\x1F6\x81a\x1D\xDBV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x1FRW`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x1FfW`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x1F\x81Wa\x1F\x81a\x1D(V[`@R\x825\x82\x81\x11\x15a\x1F\x93W`\0\x80\xFD[a\x1F\x9F\x88\x82\x86\x01a\x1E\xC7V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1F\xE7W`\0\x80\xFD[\x815a\x05\xB0\x81a\x1F\xC3V[`\0\x80`@\x83\x85\x03\x12\x15a \x05W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a \"W`\0\x80\xFD[a .\x85\x82\x86\x01a\x1E\xC7V[\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 \x8EW\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 WV[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xB0` \x83\x01\x84a 8V[`\0` \x82\x84\x03\x12\x15a \xC0W`\0\x80\xFD[\x815a\x05\xB0\x81a\x1D\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a \xDEW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a \xF5W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a!\tW`\0\x80\xFD[\x815` a!\x19a\x1E\x11\x83a\x1D\xB8V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a!8W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a!pW\x805\x86\x81\x11\x15a!TW`\0\x80\x81\xFD[a!b\x8C\x86\x83\x8B\x01\x01a\x1D\xF0V[\x84RP\x91\x83\x01\x91\x83\x01a!V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\"UW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\"fW`\0\x80\xFD[\x805a\"ta\x1E\x11\x82a\x1D\xB8V[\x81\x81R`\x06\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\"\xF6W`@\x84\x89\x03\x12\x15a\"\xB1W`\0\x80\x81\xFD[a\"\xB9a\x1DfV[\x845a\"\xC4\x81a\x1D\xDBV[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\"\xE0W`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a\"\x98V[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a#\x18W`\0\x80\xFD[\x835a##\x81a\x1D\xDBV[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a#EW`\0\x80\xFD[a#Q\x86\x82\x87\x01a\"\"V[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a#nW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x86\x83\x87\x01a\"\"V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa .\x85\x82\x86\x01a\x1D\xF0V[`\0[\x83\x81\x10\x15a#\xCFW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xB7V[\x83\x81\x11\x15a\t4WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a#\xF1W`\0\x80\xFD[\x81Q` a$\x01a\x1E\x11\x83a\x1D\xB8V[\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\x1EYW\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a$CW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a$UW`\0\x80\x81\xFD[\x84\x81\x01Q`@a$ga\x1E\x11\x83a\x1E\xA0V[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a$|W`\0\x80\x81\xFD[a$\x8B\x83\x89\x83\x01\x84\x87\x01a#\xB4V[\x86RPPP\x91\x83\x01\x91\x83\x01a$$V[\x80Qa\x1A2\x81a\x1F\xC3V[`\0\x80`\0``\x84\x86\x03\x12\x15a$\xBBW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a$\xD2W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a$\xE6W`\0\x80\xFD[\x81Q` a$\xF6a\x1E\x11\x83a\x1D\xB8V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a%\x15W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a%i\x97\xB45\t\x16\x1E\x9FdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106101ce5760003560e01c80636d5be92611610104578063ab118995116100a2578063e5d98f9411610071578063e5d98f94146103dd578063ec7fbb31146103f0578063f2fde38b1461041c578063fad8b32a1461042f57600080fd5b8063ab1189951461039c578063b933fa74146103af578063cdcd3581146103b7578063dec5d1f6146103ca57600080fd5b8063857dc190116100de578063857dc1901461035d5780638da5cb5b14610365578063955f2d901461037657806398ec1ac91461038957600080fd5b80636d5be9261461030f578063715018a614610342578063743c31f41461034a57600080fd5b80633d5611f61161017157806358c1eb171161014b57806358c1eb17146102ab5780635e1042e8146102be5780635ef53329146102e9578063696255be146102fc57600080fd5b80633d5611f61461027d57806340bf2fb7146102905780635140a5481461029857600080fd5b80631703a018116101ad5780631703a0181461023a5780631e4cd85e1461024f578063314f3a49146102625780633b242e4a1461026a57600080fd5b8062cf2ab5146101d35780630dba3394146101e85780631626ba7e1461020e575b600080fd5b6101e66101e1366004612091565b610442565b005b6101fb6101f63660046120df565b61044e565b6040519081526020015b60405180910390f35b61022161021c366004612174565b61046a565b6040516001600160e01b03199091168152602001610205565b6102426104a8565b604051610205919061221d565b6101fb61025d3660046120df565b61053b565b6101fb610551565b6101fb610278366004612230565b610562565b6101e661028b36600461224d565b610583565b6067546101fb565b6101e66102a63660046122fa565b610592565b6101e66102b9366004612230565b6105b5565b6102d16102cc3660046123c3565b6105c6565b6040516001600160a01b039091168152602001610205565b6101e66102f73660046123ef565b6105ef565b6101e661030a366004612408565b610600565b61033261031d366004612230565b60976020526000908152604090205460ff1681565b6040519015158152602001610205565b6101e661061a565b6101e6610358366004612230565b61062e565b6101e6610668565b6033546001600160a01b03166102d1565b6101fb610384366004612444565b610671565b6101fb610397366004612230565b61069c565b6101e66103aa366004612553565b610903565b6101fb610a1f565b6102d16103c5366004612230565b610a2b565b6101e66103d83660046125ab565b610a4c565b6101e66103eb366004612230565b610a5d565b6103326103fe366004612230565b6001600160a01b03166000908152606e602052604090205460ff1690565b6101e661042a366004612230565b610a6e565b6101e661043d366004612230565b610ae4565b61044b81610af5565b50565b6000610464606b63ffffffff80851690610b4c16565b92915050565b6000806000808480602001905181019061048491906126fb565b92509250925061049686848484610c5b565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561052e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016104df565b5050505081525050905090565b6000610464606c63ffffffff80851690610b4c16565b600061055d606b610d1a565b905090565b6001600160a01b0381166000908152606d6020526040812061046490610d1a565b61058e338383610d76565b5050565b61058e826000815181106105a8576105a86127cf565b6020026020010151610dc4565b6105bd610de7565b61044b81610e41565b6001600160a01b0382166000908152606a602052604081206105e89083610b4c565b9392505050565b6105f7610de7565b61044b81610ec7565b610608610de7565b61061182610f0a565b61058e81610af5565b610622610de7565b61062c6000610f50565b565b336000908152606e602052604090205460ff1661065e576040516325ec6c1f60e01b815260040160405180910390fd5b61044b3382610fa2565b61062c33611055565b6001600160a01b0382166000908152606d602052604081206105e89063ffffffff80851690610b4c16565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561071357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016106c4565b50505050905060008082516001600160401b0381111561073557610735611f55565b60405190808252806020026020018201604052801561075e578160200160208202803683370190505b50905060005b83518110156107c75783818151811061077f5761077f6127cf565b60200260200101516000015182828151811061079d5761079d6127cf565b6001600160a01b0390921660209283029190910190910152806107bf816127fb565b915050610764565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906108199089908690600401612816565b600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085e9190810190612872565b905060005b84518110156108d55784818151811061087e5761087e6127cf565b6020026020010151602001516001600160601b03168282815181106108a5576108a56127cf565b60200260200101516108b79190612902565b6108c19085612921565b9350806108cd816127fb565b915050610863565b506108e261271084612939565b925060675483106108f7575090949350505050565b50600095945050505050565b600054610100900460ff16158080156109235750600054600160ff909116105b8061093d5750303b15801561093d575060005460ff166001145b6109a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109c8576000805461ff0019166101001790555b6109d3848484611178565b8015610a19576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061055d606c610d1a565b6001600160a01b0381166000908152606a6020526040812061046490610d1a565b610a54610de7565b610611826111d4565b610a65610de7565b61044b81611333565b610a76610de7565b6001600160a01b038116610adb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b61044b81610f50565b610aec610de7565b61044b81611373565b6000805b8251811015610b4257610b24838281518110610b1757610b176127cf565b602002602001015161141c565b610b2e908361295b565b915080610b3a816127fb565b915050610af9565b50610a198161153f565b6000438210610b9d5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564604482015260640161099c565b825460005b81811015610c02576000610bb682846115ab565b905084866000018281548110610bce57610bce6127cf565b60009182526020909120015463ffffffff161115610bee57809250610bfc565b610bf9816001612921565b91505b50610ba2565b8115610c465784610c1460018461299c565b81548110610c2457610c246127cf565b60009182526020909120015464010000000090046001600160e01b0316610c49565b60005b6001600160e01b031695945050505050565b600083519050600080600080610c728588516115c6565b60005b85811015610d0457888181518110610c8f57610c8f6127cf565b60200260200101519450610ca38588611607565b9250610caf848661165a565b610cd3838b8a8481518110610cc657610cc66127cf565b602002602001015161168c565b8493506000610ce286896116bd565b9050610cee8184612921565b9250508080610cfc906127fb565b915050610c75565b50610d0f8187611710565b505050505050505050565b80546000908015610d635782610d3160018361299c565b81548110610d4157610d416127cf565b60009182526020909120015464010000000090046001600160e01b0316610d66565b60005b6001600160e01b03169392505050565b6001600160a01b03831660009081526097602052604090205460ff161515600114610db45760405163380fa21360e11b815260040160405180910390fd5b610dbf83838361176c565b505050565b6065548151146104425760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461062c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b6001600160a01b03811660009081526097602052604090205460ff1615610e7b576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610ed2606c826118a4565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610fc390610d1a565b9050806001600160a01b0316826001600160a01b03161415610fe457505050565b6001600160a01b038381166000908152606a602052604090206110089184166118a4565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff1661108e576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061109e836129b3565b90915550506001600160a01b0381166000908152606e60205260408120805460ff191690556110cc8261141c565b90506110d78161153f565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff1661119f5760405162461bcd60e51b815260040161099c906129ca565b606880546001600160a01b0319166001600160a01b0385161790556111c382610ec7565b6111cc816111d4565b610dbf6119cf565b6111dd816119fe565b6111fa5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561126d57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161121e565b5050509152509091506066905060006112868282611f27565b505060005b825151811015611301578251805160669190839081106112ad576112ad6127cf565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806112f9816127fb565b91505061128b565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610f44929190612a15565b61133c81611055565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526097602052604090205460ff166113ac5760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606e602052604090205460ff161561044b5761044b81611333565b6001600160a01b0381166000908152606d6020526040812081908190819061144390610d1a565b6001600160a01b0386166000908152606e602052604090205490915060ff166114a8576114708184612a43565b9250826114805750909392505050565b6001600160a01b0385166000908152606d602052604081206114a1916118a4565b50506114f2565b6114b18561069c565b91506114bd8183612a43565b9250826114cd5750909392505050565b6001600160a01b0385166000908152606d602052604090206114ef90836118a4565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b60008061154c606b610d1a565b9150600061155a848461295b565b915081905061156a606b826118a4565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b60006115ba6002848418612939565b6105e890848416612921565b8082146115e9576040516001621398b960e31b0319815260040160405180910390fd5b8161058e5760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff161061162f5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a602052604090206105e89063ffffffff80851690610b4c16565b806001600160a01b0316826001600160a01b03161061058e5760405163ba50f91160e01b815260040160405180910390fd5b6116a06001600160a01b0384168383611ace565b610dbf57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff16106116e55760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d602052604090206105e89063ffffffff80851690610b4c16565b600061171b82611c1a565b90508083111561173e57604051634b05a0f760e11b815260040160405180910390fd5b600061174983611c56565b905083811115610a195760405163e121632f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606e602052604090205460ff16156117a6576040516342ee68b560e01b815260040160405180910390fd5b606580549060006117b6836127fb565b90915550506001600160a01b0383166000908152606e60205260408120805460ff191660011790556117e78461141c565b90506117f28161153f565b50506117fe8483610fa2565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906118309087908790600401612aae565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b81546000908190816118b586610d1a565b90506000821180156118f3575043866118cf60018561299c565b815481106118df576118df6127cf565b60009182526020909120015463ffffffff16145b156119535761190185611c92565b8661190d60018561299c565b8154811061191d5761191d6127cf565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506119c1565b85600001604051806040016040528061196b43611cff565b63ffffffff16815260200161197f88611c92565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166119f65760405162461bcd60e51b815260040161099c906129ca565b61062c611d64565b8051600090818080805b8451811015611aac57848181518110611a2357611a236127cf565b6020026020010151600001519250826001600160a01b0316846001600160a01b031610611a635760405163ba50f91160e01b815260040160405180910390fd5b829350848181518110611a7857611a786127cf565b6020026020010151602001516001600160601b031682611a989190612921565b915080611aa4816127fb565b915050611a08565b506127108114611ac25750600095945050505050565b50600195945050505050565b6000806000611add8585611d94565b90925090506000816004811115611af657611af6612af9565b148015611b145750856001600160a01b0316826001600160a01b0316145b15611b24576001925050506105e8565b600080876001600160a01b0316631626ba7e60e01b8888604051602401611b4c929190612b0f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611b8a9190612b28565b600060405180830381855afa9150503d8060008114611bc5576040519150601f19603f3d011682016040523d82523d6000602084013e611bca565b606091505b5091509150818015611bdd575080516020145b8015611c0e57508051630b135d3f60e11b90611c029083016020908101908401612b44565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff1610611c425760405163e64f180f60e01b815260040160405180910390fd5b610464606b63ffffffff80851690610b4c16565b6000438263ffffffff1610611c7e5760405163e64f180f60e01b815260040160405180910390fd5b610464606c63ffffffff80851690610b4c16565b60006001600160e01b03821115611cfb5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161099c565b5090565b600063ffffffff821115611cfb5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161099c565b600054610100900460ff16611d8b5760405162461bcd60e51b815260040161099c906129ca565b61062c33610f50565b600080825160411415611dcb5760208301516040840151606085015160001a611dbf87828585611e01565b945094505050506119c8565b825160401415611df55760208301516040840151611dea868383611eee565b9350935050506119c8565b506000905060026119c8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611e385750600090506003611ee5565b8460ff16601b14158015611e5057508460ff16601c14155b15611e615750600090506004611ee5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611eb5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ede57600060019250925050611ee5565b9150600090505b94509492505050565b6000806001600160ff1b03831681611f0b60ff86901c601b612921565b9050611f1987828885611e01565b935093505050935093915050565b508054600082559060005260206000209081019061044b91905b80821115611cfb5760008155600101611f41565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611f8d57611f8d611f55565b60405290565b604080519081016001600160401b0381118282101715611f8d57611f8d611f55565b604051601f8201601f191681016001600160401b0381118282101715611fdd57611fdd611f55565b604052919050565b60006001600160401b03821115611ffe57611ffe611f55565b5060051b60200190565b6001600160a01b038116811461044b57600080fd5b600082601f83011261202e57600080fd5b8135602061204361203e83611fe5565b611fb5565b82815260059290921b8401810191818101908684111561206257600080fd5b8286015b8481101561208657803561207981612008565b8352918301918301612066565b509695505050505050565b6000602082840312156120a357600080fd5b81356001600160401b038111156120b957600080fd5b6120c58482850161201d565b949350505050565b63ffffffff8116811461044b57600080fd5b6000602082840312156120f157600080fd5b81356105e8816120cd565b60006001600160401b0382111561211557612115611f55565b50601f01601f191660200190565b600082601f83011261213457600080fd5b813561214261203e826120fc565b81815284602083860101111561215757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561218757600080fd5b8235915060208301356001600160401b038111156121a457600080fd5b6121b085828601612123565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561221057835180516001600160a01b031684528601516001600160601b03168684015292850192918401916001016121d9565b5090979650505050505050565b6020815260006105e860208301846121ba565b60006020828403121561224257600080fd5b81356105e881612008565b6000806040838503121561226057600080fd5b82356001600160401b038082111561227757600080fd5b908401906060828703121561228b57600080fd5b6040516060810181811083821117156122a6576122a6611f55565b6040528235828111156122b857600080fd5b6122c488828601612123565b825250602083013560208201526040830135604082015280945050505060208301356122ef81612008565b809150509250929050565b6000806040838503121561230d57600080fd5b82356001600160401b038082111561232457600080fd5b818501915085601f83011261233857600080fd5b8135602061234861203e83611fe5565b82815260059290921b8401810191818101908984111561236757600080fd5b8286015b8481101561239f578035868111156123835760008081fd5b6123918c86838b010161201d565b84525091830191830161236b565b50965050860135925050808211156123b657600080fd5b506121b085828601612123565b600080604083850312156123d657600080fd5b82356123e181612008565b946020939093013593505050565b60006020828403121561240157600080fd5b5035919050565b6000806040838503121561241b57600080fd5b8235915060208301356001600160401b0381111561243857600080fd5b6121b08582860161201d565b6000806040838503121561245757600080fd5b823561246281612008565b915060208301356122ef816120cd565b6000602080838503121561248557600080fd5b61248d611f6b565b915082356001600160401b038111156124a557600080fd5b8301601f810185136124b657600080fd5b80356124c461203e82611fe5565b81815260069190911b820183019083810190878311156124e357600080fd5b928401925b8284101561254657604084890312156125015760008081fd5b612509611f93565b843561251481612008565b8152848601356001600160601b03811681146125305760008081fd5b81870152825260409390930192908401906124e8565b8552509295945050505050565b60008060006060848603121561256857600080fd5b833561257381612008565b92506020840135915060408401356001600160401b0381111561259557600080fd5b6125a186828701612472565b9150509250925092565b600080604083850312156125be57600080fd5b82356001600160401b03808211156125d557600080fd5b6125e186838701612472565b935060208501359150808211156125f757600080fd5b506121b08582860161201d565b60005b8381101561261f578181015183820152602001612607565b83811115610a195750506000910152565b600082601f83011261264157600080fd5b8151602061265161203e83611fe5565b82815260059290921b8401810191818101908684111561267057600080fd5b8286015b848110156120865780516001600160401b038111156126935760008081fd5b8701603f810189136126a55760008081fd5b8481015160406126b761203e836120fc565b8281528b828486010111156126cc5760008081fd5b6126db83898301848701612604565b8652505050918301918301612674565b80516126f6816120cd565b919050565b60008060006060848603121561271057600080fd5b83516001600160401b038082111561272757600080fd5b818601915086601f83011261273b57600080fd5b8151602061274b61203e83611fe5565b82815260059290921b8401810191818101908a84111561276a57600080fd5b948201945b8386101561279157855161278281612008565b8252948201949082019061276f565b918901519197509093505050808211156127aa57600080fd5b506127b786828701612630565b9250506127c6604085016126eb565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561280f5761280f6127e5565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612864578551851683529483019491830191600101612846565b509098975050505050505050565b6000602080838503121561288557600080fd5b82516001600160401b0381111561289b57600080fd5b8301601f810185136128ac57600080fd5b80516128ba61203e82611fe5565b81815260059190911b820183019083810190878311156128d957600080fd5b928401925b828410156128f7578351825292840192908401906128de565b979650505050505050565b600081600019048311821515161561291c5761291c6127e5565b500290565b60008219821115612934576129346127e5565b500190565b60008261295657634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b038490038513161561297d5761297d6127e5565b600160ff1b8390038412811615612996576129966127e5565b50500190565b6000828210156129ae576129ae6127e5565b500390565b6000816129c2576129c26127e5565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604081526000612a2860408301856121ba565b8281036020840152612a3a81856121ba565b95945050505050565b60008083128015600160ff1b850184121615612a6157612a616127e5565b6001600160ff1b0384018313811615612a7c57612a7c6127e5565b50500390565b60008151808452612a9a816020860160208601612604565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152612ad860a0840182612a82565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006120c56040830184612a82565b60008251612b3a818460208701612604565b9190910192915050565b600060208284031215612b5657600080fd5b81516001600160e01b0319811681146105e857600080fdfea2646970667358221220fb651b57e776142777e9aae7db2e48d2fc0d78d97fb6470ad55e40786970e05264736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b506004361061018d5760003560e01c80636d5be926116100de578063ab11899511610097578063e5d98f9411610071578063e5d98f9414610355578063ec7fbb3114610368578063f2fde38b14610394578063fad8b32a146103a757600080fd5b8063ab11899514610327578063b933fa741461033a578063dec5d1f61461034257600080fd5b80636d5be926146102a3578063715018a6146102d6578063857dc190146102de5780638da5cb5b146102e6578063955f2d901461030157806398ec1ac91461031457600080fd5b8063314f3a491161014b5780635140a548116101255780635140a5481461025757806358c1eb171461026a5780635ef533291461027d578063696255be1461029057600080fd5b8063314f3a49146102345780633b242e4a1461023c57806340bf2fb71461024f57600080fd5b8062cf2ab5146101925780630a601a12146101a75780630dba3394146101ba5780631626ba7e146101e05780631703a0181461020c5780631e4cd85e14610221575b600080fd5b6101a56101a0366004611e64565b6103ba565b005b6101a56101b5366004611f18565b6103c6565b6101cd6101c8366004611fd5565b6103d4565b6040519081526020015b60405180910390f35b6101f36101ee366004611ff2565b6103f0565b6040516001600160e01b031990911681526020016101d7565b61021461042e565b6040516101d7919061209b565b6101cd61022f366004611fd5565b6104c1565b6101cd6104d7565b6101cd61024a3660046120ae565b6104e8565b6067546101cd565b6101a56102653660046120cb565b610509565b6101a56102783660046120ae565b61052c565b6101a561028b366004612194565b61053d565b6101a561029e3660046121ad565b61054e565b6102c66102b13660046120ae565b60986020526000908152604090205460ff1681565b60405190151581526020016101d7565b6101a5610568565b6101a561057c565b6033546040516001600160a01b0390911681526020016101d7565b6101cd61030f3660046121e9565b610585565b6101cd6103223660046120ae565b6105b7565b6101a5610335366004612303565b61081e565b6101cd61093a565b6101a561035036600461235b565b610946565b6101a56103633660046120ae565b610957565b6102c66103763660046120ae565b6001600160a01b03166000908152606d602052604090205460ff1690565b6101a56103a23660046120ae565b610968565b6101a56103b53660046120ae565b6109de565b6103c3816109ef565b50565b6103d08282610a46565b5050565b60006103ea606a63ffffffff80851690610a8e16565b92915050565b6000806000808480602001905181019061040a91906124a6565b92509250925061041c86848484610b9d565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b828210156104b457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610465565b5050505081525050905090565b60006103ea606b63ffffffff80851690610a8e16565b60006104e3606a610c4e565b905090565b6001600160a01b0381166000908152606c602052604081206103ea90610c4e565b6103d08260008151811061051f5761051f61257a565b6020026020010151610caa565b610534610ccd565b6103c381610d27565b610545610ccd565b6103c381610dad565b610556610ccd565b61055f82610df0565b6103d0816109ef565b610570610ccd565b61057a6000610e36565b565b61057a33610e88565b6001600160a01b0382166000908152606c602052604081206105b09063ffffffff80851690610a8e16565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561062e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105df565b50505050905060008082516001600160401b0381111561065057610650611d28565b604051908082528060200260200182016040528015610679578160200160208202803683370190505b50905060005b83518110156106e25783818151811061069a5761069a61257a565b6020026020010151600001518282815181106106b8576106b861257a565b6001600160a01b0390921660209283029190910190910152806106da816125a6565b91505061067f565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061073490899086906004016125c1565b600060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610779919081019061261d565b905060005b84518110156107f0578481815181106107995761079961257a565b6020026020010151602001516001600160601b03168282815181106107c0576107c061257a565b60200260200101516107d291906126ad565b6107dc90856126cc565b9350806107e8816125a6565b91505061077e565b506107fd612710846126e4565b92506067548310610812575090949350505050565b50600095945050505050565b600054610100900460ff161580801561083e5750600054600160ff909116105b806108585750303b158015610858575060005460ff166001145b6108c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108e3576000805461ff0019166101001790555b6108ee848484610fab565b8015610934576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104e3606b610c4e565b61094e610ccd565b61055f8261100c565b61095f610ccd565b6103c38161116b565b610970610ccd565b6001600160a01b0381166109d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b7565b6103c381610e36565b6109e6610ccd565b6103c3816111ab565b6000805b8251811015610a3c57610a1e838281518110610a1157610a1161257a565b6020026020010151611254565b610a289083612706565b915080610a34816125a6565b9150506109f3565b5061093481611377565b6001600160a01b03821660009081526098602052604090205460ff161515600114610a845760405163380fa21360e11b815260040160405180910390fd5b6103d082826113e3565b6000438210610adf5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108b7565b825460005b81811015610b44576000610af88284611510565b905084866000018281548110610b1057610b1061257a565b60009182526020909120015463ffffffff161115610b3057809250610b3e565b610b3b8160016126cc565b91505b50610ae4565b8115610b885784610b56600184612747565b81548110610b6657610b6661257a565b60009182526020909120015464010000000090046001600160e01b0316610b8b565b60005b6001600160e01b031695945050505050565b600083519050600080610bb183865161152b565b60005b83811015610c3a576000878281518110610bd057610bd061257a565b60200260200101519050610be4848261156c565b610c08818a898581518110610bfb57610bfb61257a565b602002602001015161159e565b8093506000610c1782886115cf565b9050610c2381856126cc565b935050508080610c32906125a6565b915050610bb4565b50610c458185611632565b50505050505050565b80546000908015610c975782610c65600183612747565b81548110610c7557610c7561257a565b60009182526020909120015464010000000090046001600160e01b0316610c9a565b60005b6001600160e01b03169392505050565b6065548151146103ba5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461057a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b7565b6001600160a01b03811660009081526098602052604090205460ff1615610d61576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610db8606b8261168e565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610ec1576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610ed18361275e565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610eff82611254565b9050610f0a81611377565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610f5357600080fd5b505af1158015610f67573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610fd25760405162461bcd60e51b81526004016108b790612775565b606880546001600160a01b0319166001600160a01b038516179055610ff682610dad565b610fff8161100c565b6110076117b9565b505050565b611015816117e8565b6110325760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156110a557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611056565b5050509152509091506066905060006110be8282611cfa565b505060005b825151811015611139578251805160669190839081106110e5576110e561257a565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b039091161791015580611131816125a6565b9150506110c3565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610e2a9291906127c0565b61117481610e88565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526098602052604090205460ff166111e45760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606d602052604090205460ff16156103c3576103c38161116b565b6001600160a01b0381166000908152606c6020526040812081908190819061127b90610c4e565b6001600160a01b0386166000908152606d602052604090205490915060ff166112e0576112a881846127ee565b9250826112b85750909392505050565b6001600160a01b0385166000908152606c602052604081206112d99161168e565b505061132a565b6112e9856105b7565b91506112f581836127ee565b9250826113055750909392505050565b6001600160a01b0385166000908152606c60205260409020611327908361168e565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b600080611384606a610c4e565b915060006113928484612706565b91508190506113a2606a8261168e565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b6001600160a01b0382166000908152606d602052604090205460ff161561141d576040516342ee68b560e01b815260040160405180910390fd5b6065805490600061142d836125a6565b90915550506001600160a01b0382166000908152606d60205260408120805460ff1916600117905561145e83611254565b905061146981611377565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d9061149d9086908690600401612859565b600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b600061151f60028484186126e4565b6105b0908484166126cc565b80821461154e576040516001621398b960e31b0319815260040160405180910390fd5b816103d05760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103d05760405163ba50f91160e01b815260040160405180910390fd5b6115b26001600160a01b03841683836118b8565b61100757604051638baa579f60e01b815260040160405180910390fd5b600063ffffffff8281161415611607576001600160a01b0383166000908152606c6020526040902061160090610c4e565b90506103ea565b6001600160a01b0383166000908152606c602052604090206116009063ffffffff80851690610a8e16565b600061163d82611a04565b90508083111561166057604051634b05a0f760e11b815260040160405180910390fd5b600061166b83611a37565b9050838111156109345760405163e121632f60e01b815260040160405180910390fd5b815460009081908161169f86610c4e565b90506000821180156116dd575043866116b9600185612747565b815481106116c9576116c961257a565b60009182526020909120015463ffffffff16145b1561173d576116eb85611a65565b866116f7600185612747565b815481106117075761170761257a565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506117ab565b85600001604051806040016040528061175543611ad2565b63ffffffff16815260200161176988611a65565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166117e05760405162461bcd60e51b81526004016108b790612775565b61057a611b37565b8051600090818080805b84518110156118965784818151811061180d5761180d61257a565b6020026020010151600001519250826001600160a01b0316846001600160a01b03161061184d5760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106118625761186261257a565b6020026020010151602001516001600160601b03168261188291906126cc565b91508061188e816125a6565b9150506117f2565b5061271081146118ac5750600095945050505050565b50600195945050505050565b60008060006118c78585611b67565b909250905060008160048111156118e0576118e06128a4565b1480156118fe5750856001600160a01b0316826001600160a01b0316145b1561190e576001925050506105b0565b600080876001600160a01b0316631626ba7e60e01b88886040516024016119369291906128ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161197491906128d3565b600060405180830381855afa9150503d80600081146119af576040519150601f19603f3d011682016040523d82523d6000602084013e6119b4565b606091505b50915091508180156119c7575080516020145b80156119f857508051630b135d3f60e11b906119ec90830160209081019084016128ef565b6001600160e01b031916145b98975050505050505050565b600063ffffffff8281161415611a1e576103ea606a610c4e565b6103ea606a63ffffffff80851690610a8e16565b919050565b600063ffffffff8281161415611a51576103ea606b610c4e565b6103ea606b63ffffffff80851690610a8e16565b60006001600160e01b03821115611ace5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108b7565b5090565b600063ffffffff821115611ace5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108b7565b600054610100900460ff16611b5e5760405162461bcd60e51b81526004016108b790612775565b61057a33610e36565b600080825160411415611b9e5760208301516040840151606085015160001a611b9287828585611bd4565b945094505050506117b2565b825160401415611bc85760208301516040840151611bbd868383611cc1565b9350935050506117b2565b506000905060026117b2565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611c0b5750600090506003611cb8565b8460ff16601b14158015611c2357508460ff16601c14155b15611c345750600090506004611cb8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c88573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611cb157600060019250925050611cb8565b9150600090505b94509492505050565b6000806001600160ff1b03831681611cde60ff86901c601b6126cc565b9050611cec87828885611bd4565b935093505050935093915050565b50805460008255906000526020600020908101906103c391905b80821115611ace5760008155600101611d14565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611d6057611d60611d28565b60405290565b604080519081016001600160401b0381118282101715611d6057611d60611d28565b604051601f8201601f191681016001600160401b0381118282101715611db057611db0611d28565b604052919050565b60006001600160401b03821115611dd157611dd1611d28565b5060051b60200190565b6001600160a01b03811681146103c357600080fd5b600082601f830112611e0157600080fd5b81356020611e16611e1183611db8565b611d88565b82815260059290921b84018101918181019086841115611e3557600080fd5b8286015b84811015611e59578035611e4c81611ddb565b8352918301918301611e39565b509695505050505050565b600060208284031215611e7657600080fd5b81356001600160401b03811115611e8c57600080fd5b611e9884828501611df0565b949350505050565b60006001600160401b03821115611eb957611eb9611d28565b50601f01601f191660200190565b600082601f830112611ed857600080fd5b8135611ee6611e1182611ea0565b818152846020838601011115611efb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611f2b57600080fd5b8235611f3681611ddb565b915060208301356001600160401b0380821115611f5257600080fd5b9084019060608287031215611f6657600080fd5b604051606081018181108382111715611f8157611f81611d28565b604052823582811115611f9357600080fd5b611f9f88828601611ec7565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff811681146103c357600080fd5b600060208284031215611fe757600080fd5b81356105b081611fc3565b6000806040838503121561200557600080fd5b8235915060208301356001600160401b0381111561202257600080fd5b61202e85828601611ec7565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561208e57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612057565b5090979650505050505050565b6020815260006105b06020830184612038565b6000602082840312156120c057600080fd5b81356105b081611ddb565b600080604083850312156120de57600080fd5b82356001600160401b03808211156120f557600080fd5b818501915085601f83011261210957600080fd5b81356020612119611e1183611db8565b82815260059290921b8401810191818101908984111561213857600080fd5b8286015b84811015612170578035868111156121545760008081fd5b6121628c86838b0101611df0565b84525091830191830161213c565b509650508601359250508082111561218757600080fd5b5061202e85828601611ec7565b6000602082840312156121a657600080fd5b5035919050565b600080604083850312156121c057600080fd5b8235915060208301356001600160401b038111156121dd57600080fd5b61202e85828601611df0565b600080604083850312156121fc57600080fd5b823561220781611ddb565b9150602083013561221781611fc3565b809150509250929050565b6000602080838503121561223557600080fd5b61223d611d3e565b915082356001600160401b0381111561225557600080fd5b8301601f8101851361226657600080fd5b8035612274611e1182611db8565b81815260069190911b8201830190838101908783111561229357600080fd5b928401925b828410156122f657604084890312156122b15760008081fd5b6122b9611d66565b84356122c481611ddb565b8152848601356001600160601b03811681146122e05760008081fd5b8187015282526040939093019290840190612298565b8552509295945050505050565b60008060006060848603121561231857600080fd5b833561232381611ddb565b92506020840135915060408401356001600160401b0381111561234557600080fd5b61235186828701612222565b9150509250925092565b6000806040838503121561236e57600080fd5b82356001600160401b038082111561238557600080fd5b61239186838701612222565b935060208501359150808211156123a757600080fd5b5061202e85828601611df0565b60005b838110156123cf5781810151838201526020016123b7565b838111156109345750506000910152565b600082601f8301126123f157600080fd5b81516020612401611e1183611db8565b82815260059290921b8401810191818101908684111561242057600080fd5b8286015b84811015611e595780516001600160401b038111156124435760008081fd5b8701603f810189136124555760008081fd5b848101516040612467611e1183611ea0565b8281528b8284860101111561247c5760008081fd5b61248b838983018487016123b4565b8652505050918301918301612424565b8051611a3281611fc3565b6000806000606084860312156124bb57600080fd5b83516001600160401b03808211156124d257600080fd5b818601915086601f8301126124e657600080fd5b815160206124f6611e1183611db8565b82815260059290921b8401810191818101908a84111561251557600080fd5b948201945b8386101561253c57855161252d81611ddb565b8252948201949082019061251a565b9189015191975090935050508082111561255557600080fd5b50612562868287016123e0565b9250506125716040850161249b565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156125ba576125ba612590565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561260f5785518516835294830194918301916001016125f1565b509098975050505050505050565b6000602080838503121561263057600080fd5b82516001600160401b0381111561264657600080fd5b8301601f8101851361265757600080fd5b8051612665611e1182611db8565b81815260059190911b8201830190838101908783111561268457600080fd5b928401925b828410156126a257835182529284019290840190612689565b979650505050505050565b60008160001904831182151516156126c7576126c7612590565b500290565b600082198211156126df576126df612590565b500190565b60008261270157634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b038490038513161561272857612728612590565b600160ff1b839003841281161561274157612741612590565b50500190565b60008282101561275957612759612590565b500390565b60008161276d5761276d612590565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006127d36040830185612038565b82810360208401526127e58185612038565b95945050505050565b60008083128015600160ff1b85018412161561280c5761280c612590565b6001600160ff1b038401831381161561282757612827612590565b50500390565b600081518084526128458160208601602086016123b4565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261288360a084018261282d565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e98604083018461282d565b600082516128e58184602087016123b4565b9190910192915050565b60006020828403121561290157600080fd5b81516001600160e01b0319811681146105b057600080fdfea264697066735822122025563f4c25b537b2e8cfa2e98ad6525f5bbf0594d4557f3e6997b43509161e9f64736f6c634300080c0033 /// ``` #[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", + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x8DW`\x005`\xE0\x1C\x80cm[\xE9&\x11a\0\xDEW\x80c\xAB\x11\x89\x95\x11a\0\x97W\x80c\xE5\xD9\x8F\x94\x11a\0qW\x80c\xE5\xD9\x8F\x94\x14a\x03UW\x80c\xEC\x7F\xBB1\x14a\x03hW\x80c\xF2\xFD\xE3\x8B\x14a\x03\x94W\x80c\xFA\xD8\xB3*\x14a\x03\xA7W`\0\x80\xFD[\x80c\xAB\x11\x89\x95\x14a\x03'W\x80c\xB93\xFAt\x14a\x03:W\x80c\xDE\xC5\xD1\xF6\x14a\x03BW`\0\x80\xFD[\x80cm[\xE9&\x14a\x02\xA3W\x80cqP\x18\xA6\x14a\x02\xD6W\x80c\x85}\xC1\x90\x14a\x02\xDEW\x80c\x8D\xA5\xCB[\x14a\x02\xE6W\x80c\x95_-\x90\x14a\x03\x01W\x80c\x98\xEC\x1A\xC9\x14a\x03\x14W`\0\x80\xFD[\x80c1O:I\x11a\x01KW\x80cQ@\xA5H\x11a\x01%W\x80cQ@\xA5H\x14a\x02WW\x80cX\xC1\xEB\x17\x14a\x02jW\x80c^\xF53)\x14a\x02}W\x80cibU\xBE\x14a\x02\x90W`\0\x80\xFD[\x80c1O:I\x14a\x024W\x80c;$.J\x14a\x02=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07y\x91\x90\x81\x01\x90a&\x1DV[\x90P`\0[\x84Q\x81\x10\x15a\x07\xF0W\x84\x81\x81Q\x81\x10a\x07\x99Wa\x07\x99a%zV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\xC0Wa\x07\xC0a%zV[` \x02` \x01\x01Qa\x07\xD2\x91\x90a&\xADV[a\x07\xDC\x90\x85a&\xCCV[\x93P\x80a\x07\xE8\x81a%\xA6V[\x91PPa\x07~V[Pa\x07\xFDa'\x10\x84a&\xE4V[\x92P`gT\x83\x10a\x08\x12WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08>WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08XWP0;\x15\x80\x15a\x08XWP`\0T`\xFF\x16`\x01\x14[a\x08\xC0W`@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\xE3W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xEE\x84\x84\x84a\x0F\xABV[\x80\x15a\t4W`\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\xE3`ka\x0CNV[a\tNa\x0C\xCDV[a\x05_\x82a\x10\x0CV[a\t_a\x0C\xCDV[a\x03\xC3\x81a\x11kV[a\tpa\x0C\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xD5W`@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\xB7V[a\x03\xC3\x81a\x0E6V[a\t\xE6a\x0C\xCDV[a\x03\xC3\x81a\x11\xABV[`\0\x80[\x82Q\x81\x10\x15a\nV[a\x0B;\x81`\x01a&\xCCV[\x91P[Pa\n\xE4V[\x81\x15a\x0B\x88W\x84a\x0BV`\x01\x84a'GV[\x81T\x81\x10a\x0BfWa\x0Bfa%zV[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B\x8BV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80a\x0B\xB1\x83\x86Qa\x15+V[`\0[\x83\x81\x10\x15a\x0C:W`\0\x87\x82\x81Q\x81\x10a\x0B\xD0Wa\x0B\xD0a%zV[` \x02` \x01\x01Q\x90Pa\x0B\xE4\x84\x82a\x15lV[a\x0C\x08\x81\x8A\x89\x85\x81Q\x81\x10a\x0B\xFBWa\x0B\xFBa%zV[` \x02` \x01\x01Qa\x15\x9EV[\x80\x93P`\0a\x0C\x17\x82\x88a\x15\xCFV[\x90Pa\x0C#\x81\x85a&\xCCV[\x93PPP\x80\x80a\x0C2\x90a%\xA6V[\x91PPa\x0B\xB4V[Pa\x0CE\x81\x85a\x162V[PPPPPPPV[\x80T`\0\x90\x80\x15a\x0C\x97W\x82a\x0Ce`\x01\x83a'GV[\x81T\x81\x10a\x0CuWa\x0Cua%zV[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C\x9AV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`eT\x81Q\x14a\x03\xBAW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x05zW`@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\xB7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x98` R`@\x90 T`\xFF\x16\x15a\raW`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x98` 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\r\xB8`k\x82a\x16\x8EV[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\x81\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16a\x0E\xC1W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0E\xD1\x83a'^V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x0E\xFF\x82a\x12TV[\x90Pa\x0F\n\x81a\x13wV[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\x0FSW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FgW=`\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\x86\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\xA3PPPV[`\0a\x15\x1F`\x02\x84\x84\x18a&\xE4V[a\x05\xB0\x90\x84\x84\x16a&\xCCV[\x80\x82\x14a\x15NW`@Q`\x01b\x13\x98\xB9`\xE3\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\x03\xD0W`@Qc%\x1FV\xA1`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x10a\x03\xD0W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\xB2`\x01`\x01`\xA0\x1B\x03\x84\x16\x83\x83a\x18\xB8V[a\x10\x07W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x16\x07W`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x16\0\x90a\x0CNV[\x90Pa\x03\xEAV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x16\0\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0a\x16=\x82a\x1A\x04V[\x90P\x80\x83\x11\x15a\x16`W`@QcK\x05\xA0\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x16k\x83a\x1A7V[\x90P\x83\x81\x11\x15a\t4W`@Qc\xE1!c/`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81T`\0\x90\x81\x90\x81a\x16\x9F\x86a\x0CNV[\x90P`\0\x82\x11\x80\x15a\x16\xDDWPC\x86a\x16\xB9`\x01\x85a'GV[\x81T\x81\x10a\x16\xC9Wa\x16\xC9a%zV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x17=Wa\x16\xEB\x85a\x1AeV[\x86a\x16\xF7`\x01\x85a'GV[\x81T\x81\x10a\x17\x07Wa\x17\x07a%zV[\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\x17\xABV[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x17UCa\x1A\xD2V[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x17i\x88a\x1AeV[`\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\x17\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'uV[a\x05za\x1B7V[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x18\x96W\x84\x81\x81Q\x81\x10a\x18\rWa\x18\ra%zV[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x18MW`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x18bWa\x18ba%zV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x18\x82\x91\x90a&\xCCV[\x91P\x80a\x18\x8E\x81a%\xA6V[\x91PPa\x17\xF2V[Pa'\x10\x81\x14a\x18\xACWP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x18\xC7\x85\x85a\x1BgV[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x18\xE0Wa\x18\xE0a(\xA4V[\x14\x80\x15a\x18\xFEWP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x19\x0EW`\x01\x92PPPa\x05\xB0V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x196\x92\x91\x90a(\xBAV[`@\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\x19t\x91\x90a(\xD3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x19\xAFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x19\xB4V[``\x91P[P\x91P\x91P\x81\x80\x15a\x19\xC7WP\x80Q` \x14[\x80\x15a\x19\xF8WP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x19\xEC\x90\x83\x01` \x90\x81\x01\x90\x84\x01a(\xEFV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x1A\x1EWa\x03\xEA`ja\x0CNV[a\x03\xEA`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[\x91\x90PV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x1AQWa\x03\xEA`ka\x0CNV[a\x03\xEA`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1A\xCEW`@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\xB7V[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1A\xCEW`@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\xB7V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1B^W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'uV[a\x05z3a\x0E6V[`\0\x80\x82Q`A\x14\x15a\x1B\x9EW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1B\x92\x87\x82\x85\x85a\x1B\xD4V[\x94P\x94PPPPa\x17\xB2V[\x82Q`@\x14\x15a\x1B\xC8W` \x83\x01Q`@\x84\x01Qa\x1B\xBD\x86\x83\x83a\x1C\xC1V[\x93P\x93PPPa\x17\xB2V[P`\0\x90P`\x02a\x17\xB2V[`\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\x1C\x0BWP`\0\x90P`\x03a\x1C\xB8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1C#WP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1C4WP`\0\x90P`\x04a\x1C\xB8V[`@\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\x88W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\xB1W`\0`\x01\x92P\x92PPa\x1C\xB8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1C\xDE`\xFF\x86\x90\x1C`\x1Ba&\xCCV[\x90Pa\x1C\xEC\x87\x82\x88\x85a\x1B\xD4V[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\xC3\x91\x90[\x80\x82\x11\x15a\x1A\xCEW`\0\x81U`\x01\x01a\x1D\x14V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D`Wa\x1D`a\x1D(V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D`Wa\x1D`a\x1D(V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\xB0Wa\x1D\xB0a\x1D(V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1D\xD1Wa\x1D\xD1a\x1D(V[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1E\x01W`\0\x80\xFD[\x815` a\x1E\x16a\x1E\x11\x83a\x1D\xB8V[a\x1D\x88V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x1E5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1EYW\x805a\x1EL\x81a\x1D\xDBV[\x83R\x91\x83\x01\x91\x83\x01a\x1E9V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x1EvW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x8CW`\0\x80\xFD[a\x1E\x98\x84\x82\x85\x01a\x1D\xF0V[\x94\x93PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1E\xB9Wa\x1E\xB9a\x1D(V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\xD8W`\0\x80\xFD[\x815a\x1E\xE6a\x1E\x11\x82a\x1E\xA0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1E\xFBW`\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\x1F+W`\0\x80\xFD[\x825a\x1F6\x81a\x1D\xDBV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x1FRW`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x1FfW`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x1F\x81Wa\x1F\x81a\x1D(V[`@R\x825\x82\x81\x11\x15a\x1F\x93W`\0\x80\xFD[a\x1F\x9F\x88\x82\x86\x01a\x1E\xC7V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1F\xE7W`\0\x80\xFD[\x815a\x05\xB0\x81a\x1F\xC3V[`\0\x80`@\x83\x85\x03\x12\x15a \x05W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a \"W`\0\x80\xFD[a .\x85\x82\x86\x01a\x1E\xC7V[\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 \x8EW\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 WV[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xB0` \x83\x01\x84a 8V[`\0` \x82\x84\x03\x12\x15a \xC0W`\0\x80\xFD[\x815a\x05\xB0\x81a\x1D\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a \xDEW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a \xF5W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a!\tW`\0\x80\xFD[\x815` a!\x19a\x1E\x11\x83a\x1D\xB8V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a!8W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a!pW\x805\x86\x81\x11\x15a!TW`\0\x80\x81\xFD[a!b\x8C\x86\x83\x8B\x01\x01a\x1D\xF0V[\x84RP\x91\x83\x01\x91\x83\x01a!V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\"UW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\"fW`\0\x80\xFD[\x805a\"ta\x1E\x11\x82a\x1D\xB8V[\x81\x81R`\x06\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\"\xF6W`@\x84\x89\x03\x12\x15a\"\xB1W`\0\x80\x81\xFD[a\"\xB9a\x1DfV[\x845a\"\xC4\x81a\x1D\xDBV[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\"\xE0W`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a\"\x98V[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a#\x18W`\0\x80\xFD[\x835a##\x81a\x1D\xDBV[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a#EW`\0\x80\xFD[a#Q\x86\x82\x87\x01a\"\"V[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a#nW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x86\x83\x87\x01a\"\"V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa .\x85\x82\x86\x01a\x1D\xF0V[`\0[\x83\x81\x10\x15a#\xCFW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xB7V[\x83\x81\x11\x15a\t4WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a#\xF1W`\0\x80\xFD[\x81Q` a$\x01a\x1E\x11\x83a\x1D\xB8V[\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\x1EYW\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a$CW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a$UW`\0\x80\x81\xFD[\x84\x81\x01Q`@a$ga\x1E\x11\x83a\x1E\xA0V[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a$|W`\0\x80\x81\xFD[a$\x8B\x83\x89\x83\x01\x84\x87\x01a#\xB4V[\x86RPPP\x91\x83\x01\x91\x83\x01a$$V[\x80Qa\x1A2\x81a\x1F\xC3V[`\0\x80`\0``\x84\x86\x03\x12\x15a$\xBBW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a$\xD2W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a$\xE6W`\0\x80\xFD[\x81Q` a$\xF6a\x1E\x11\x83a\x1D\xB8V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a%\x15W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a%i\x97\xB45\t\x16\x1E\x9FdsolcC\0\x08\x0C\x003", ); /**```solidity struct Quorum { StrategyParams[] strategies; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct Quorum { pub strategies: alloy::sol_types::private::Vec<::RustType>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1557,13 +1480,18 @@ pub mod ECDSAStakeRegistryPermissioned { /**```solidity struct StrategyParams { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1748,10 +1676,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error InsufficientSignedStake(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientSignedStake {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1803,10 +1736,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error InsufficientWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1858,10 +1796,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error InvalidLength(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidLength {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1913,10 +1856,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error InvalidQuorum(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidQuorum {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1964,69 +1912,19 @@ pub mod ECDSAStakeRegistryPermissioned { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2078,10 +1976,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error InvalidSignedWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignedWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2133,10 +2036,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error InvalidThreshold(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidThreshold {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2188,10 +2096,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error LengthMismatch(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct LengthMismatch {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2243,10 +2156,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error MustUpdateAllOperators(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MustUpdateAllOperators {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2298,10 +2216,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error NotSorted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NotSorted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2353,10 +2276,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error OperatorAlreadyAllowlisted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAlreadyAllowlisted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2408,10 +2336,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error OperatorAlreadyRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAlreadyRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2463,10 +2396,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error OperatorNotAllowlisted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorNotAllowlisted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2518,10 +2456,15 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity error OperatorNotRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorNotRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2573,13 +2516,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2661,7 +2614,12 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event MinimumWeightUpdated(uint256 _old, uint256 _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinimumWeightUpdated { #[allow(missing_docs)] @@ -2669,7 +2627,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[allow(missing_docs)] pub _new: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2760,7 +2723,12 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event OperatorDeregistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDeregistered { #[allow(missing_docs)] @@ -2768,7 +2736,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2863,13 +2836,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event OperatorEjected(address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2953,13 +2936,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event OperatorPermitted(address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3043,7 +3036,12 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event OperatorRegistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -3051,7 +3049,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3146,13 +3149,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event OperatorRevoked(address indexed operator); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3236,7 +3249,12 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorWeightUpdated { #[allow(missing_docs)] @@ -3246,7 +3264,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[allow(missing_docs)] pub newWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3344,7 +3367,12 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -3352,7 +3380,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3447,7 +3480,12 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event QuorumUpdated(Quorum _old, Quorum _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumUpdated { #[allow(missing_docs)] @@ -3455,7 +3493,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[allow(missing_docs)] pub _new: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3536,135 +3579,27 @@ pub mod ECDSAStakeRegistryPermissioned { } } }; - /**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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3748,7 +3683,12 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct TotalWeightUpdated { #[allow(missing_docs)] @@ -3756,7 +3696,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[allow(missing_docs)] pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3847,7 +3792,12 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UpdateMinimumWeight { #[allow(missing_docs)] @@ -3855,7 +3805,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[allow(missing_docs)] pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3946,7 +3901,7 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity constructor(address _delegationManager); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _delegationManager: alloy::sol_types::private::Address, @@ -4008,18 +3963,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function allowlistedOperators(address) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowlistedOperatorsReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4119,14 +4079,19 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function deregisterOperator() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorCall {} ///Container type for the return parameters of the [`deregisterOperator()`](deregisterOperatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4222,16 +4187,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function ejectOperator(address _operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4331,18 +4301,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointOperatorWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4442,16 +4417,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function getLastCheckpointThresholdWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightCall {} ///Container type for the return parameters of the [`getLastCheckpointThresholdWeight()`](getLastCheckpointThresholdWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4547,18 +4527,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointThresholdWeightAtBlockReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4668,16 +4653,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function getLastCheckpointTotalWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointTotalWeightCall {} ///Container type for the return parameters of the [`getLastCheckpointTotalWeight()`](getLastCheckpointTotalWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointTotalWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4773,18 +4763,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLastCheckpointTotalWeightAtBlockReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4882,22 +4877,27 @@ pub mod ECDSAStakeRegistryPermissioned { } } }; - /**Function with signature `getLastestOperatorSigningKey(address)` and selector `0xcdcd3581`. + /**Function with signature `getOperatorWeight(address)` and selector `0x98ec1ac9`. ```solidity - function getLastestOperatorSigningKey(address _operator) external view returns (address); + function getOperatorWeight(address _operator) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getLastestOperatorSigningKeyCall { + pub struct getOperatorWeightCall { 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)] + ///Container type for the return parameters of the [`getOperatorWeight(address)`](getOperatorWeightCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getLastestOperatorSigningKeyReturn { - pub _0: alloy::sol_types::private::Address, + pub struct getOperatorWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4916,14 +4916,14 @@ pub mod ECDSAStakeRegistryPermissioned { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getLastestOperatorSigningKeyCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightCall) -> Self { (value._operator,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getLastestOperatorSigningKeyCall { + impl ::core::convert::From> for getOperatorWeightCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _operator: tuple.0 } } @@ -4931,9 +4931,9 @@ pub mod ECDSAStakeRegistryPermissioned { } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + 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) { @@ -4945,28 +4945,28 @@ pub mod ECDSAStakeRegistryPermissioned { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getLastestOperatorSigningKeyReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getLastestOperatorSigningKeyReturn { + impl ::core::convert::From> for getOperatorWeightReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for getLastestOperatorSigningKeyCall { + 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 = getLastestOperatorSigningKeyReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + 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 = "getLastestOperatorSigningKey(address)"; - const SELECTOR: [u8; 4] = [205u8, 205u8, 53u8, 129u8]; + 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, @@ -4993,261 +4993,28 @@ pub mod ECDSAStakeRegistryPermissioned { } } }; - /**Function with signature `getOperatorSigningKeyAtBlock(address,uint256)` and selector `0x5e1042e8`. + /**Function with signature `getOperatorWeightAtBlock(address,uint32)` and selector `0x955f2d90`. ```solidity - function getOperatorSigningKeyAtBlock(address _operator, uint256 _blockNumber) external view returns (address); + function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getOperatorSigningKeyAtBlockCall { + pub struct getOperatorWeightAtBlockCall { pub _operator: alloy::sol_types::private::Address, - pub _blockNumber: alloy::sol_types::private::primitives::aliases::U256, + pub _blockNumber: u32, } - ///Container type for the return parameters of the [`getOperatorSigningKeyAtBlock(address,uint256)`](getOperatorSigningKeyAtBlockCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`getOperatorWeightAtBlock(address,uint32)`](getOperatorWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getOperatorSigningKeyAtBlockReturn { - pub _0: alloy::sol_types::private::Address, + 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<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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5359,7 +5126,7 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeCall { pub _serviceManager: alloy::sol_types::private::Address, @@ -5367,10 +5134,15 @@ pub mod ECDSAStakeRegistryPermissioned { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5490,19 +5262,24 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isValidSignatureReturn { pub _0: alloy::sol_types::private::FixedBytes<4>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5617,16 +5394,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function minimumWeight() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumWeightCall {} ///Container type for the return parameters of the [`minimumWeight()`](minimumWeightCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct minimumWeightReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5722,18 +5504,23 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function operatorRegistered(address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct operatorRegisteredReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5833,16 +5620,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5938,16 +5730,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function permitOperator(address _operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6047,16 +5844,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function quorum() external view returns (Quorum memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCall {} ///Container type for the return parameters of the [`quorum()`](quorumCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6148,34 +5950,39 @@ pub mod ECDSAStakeRegistryPermissioned { } } }; - /**Function with signature `registerOperatorWithSignature((bytes,bytes32,uint256),address)` and selector `0x3d5611f6`. + /**Function with signature `registerOperatorWithSignature(address,(bytes,bytes32,uint256))` and selector `0x0a601a12`. ```solidity - function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + function registerOperatorWithSignature(address _operator, ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorWithSignatureCall { + pub _operator: alloy::sol_types::private::Address, 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)] + ///Container type for the return parameters of the [`registerOperatorWithSignature(address,(bytes,bytes32,uint256))`](registerOperatorWithSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorWithSignatureReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - ISignatureUtils::SignatureWithSaltAndExpiry, alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, alloy::sol_types::private::Address, + ::RustType, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -6190,7 +5997,7 @@ pub mod ECDSAStakeRegistryPermissioned { #[doc(hidden)] impl ::core::convert::From for UnderlyingRustTuple<'_> { fn from(value: registerOperatorWithSignatureCall) -> Self { - (value._operatorSignature, value._signingKey) + (value._operator, value._operatorSignature) } } #[automatically_derived] @@ -6198,8 +6005,8 @@ pub mod ECDSAStakeRegistryPermissioned { impl ::core::convert::From> for registerOperatorWithSignatureCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - _operatorSignature: tuple.0, - _signingKey: tuple.1, + _operator: tuple.0, + _operatorSignature: tuple.1, } } } @@ -6236,16 +6043,16 @@ pub mod ECDSAStakeRegistryPermissioned { #[automatically_derived] impl alloy_sol_types::SolCall for registerOperatorWithSignatureCall { type Parameters<'a> = ( - ISignatureUtils::SignatureWithSaltAndExpiry, alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, ); 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]; + "registerOperatorWithSignature(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [10u8, 96u8, 26u8, 18u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -6255,12 +6062,12 @@ pub mod ECDSAStakeRegistryPermissioned { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( + ::tokenize( + &self._operator, + ), ::tokenize( &self._operatorSignature, ), - ::tokenize( - &self._signingKey, - ), ) } #[inline] @@ -6279,14 +6086,19 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6382,16 +6194,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function revokeOperator(address _operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct revokeOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6491,16 +6308,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6600,17 +6422,22 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateMinimumWeightReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6721,131 +6548,25 @@ pub mod ECDSAStakeRegistryPermissioned { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6950,7 +6671,7 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsForQuorumCall { pub operatorsPerQuorum: alloy::sol_types::private::Vec< @@ -6959,10 +6680,15 @@ pub mod ECDSAStakeRegistryPermissioned { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsForQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7085,17 +6811,22 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateQuorumConfigReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7208,16 +6939,21 @@ pub mod ECDSAStakeRegistryPermissioned { ```solidity function updateStakeThreshold(uint256 _thresholdWeight) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateStakeThresholdReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7325,8 +7061,6 @@ pub mod ECDSAStakeRegistryPermissioned { getLastCheckpointThresholdWeightAtBlock(getLastCheckpointThresholdWeightAtBlockCall), getLastCheckpointTotalWeight(getLastCheckpointTotalWeightCall), getLastCheckpointTotalWeightAtBlock(getLastCheckpointTotalWeightAtBlockCall), - getLastestOperatorSigningKey(getLastestOperatorSigningKeyCall), - getOperatorSigningKeyAtBlock(getOperatorSigningKeyAtBlockCall), getOperatorWeight(getOperatorWeightCall), getOperatorWeightAtBlock(getOperatorWeightAtBlockCall), initialize(initializeCall), @@ -7341,7 +7075,6 @@ pub mod ECDSAStakeRegistryPermissioned { revokeOperator(revokeOperatorCall), transferOwnership(transferOwnershipCall), updateMinimumWeight(updateMinimumWeightCall), - updateOperatorSigningKey(updateOperatorSigningKeyCall), updateOperators(updateOperatorsCall), updateOperatorsForQuorum(updateOperatorsForQuorumCall), updateQuorumConfig(updateQuorumConfigCall), @@ -7357,29 +7090,26 @@ pub mod ECDSAStakeRegistryPermissioned { /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 4usize]] = &[ [0u8, 207u8, 42u8, 181u8], + [10u8, 96u8, 26u8, 18u8], [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], @@ -7391,7 +7121,7 @@ pub mod ECDSAStakeRegistryPermissioned { impl alloy_sol_types::SolInterface for ECDSAStakeRegistryPermissionedCalls { const NAME: &'static str = "ECDSAStakeRegistryPermissionedCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 29usize; + const COUNT: usize = 26usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -7419,12 +7149,6 @@ pub mod ECDSAStakeRegistryPermissioned { Self::getLastCheckpointTotalWeightAtBlock(_) => { ::SELECTOR } - Self::getLastestOperatorSigningKey(_) => { - ::SELECTOR - } - Self::getOperatorSigningKeyAtBlock(_) => { - ::SELECTOR - } Self::getOperatorWeight(_) => { ::SELECTOR } @@ -7463,9 +7187,6 @@ pub mod ECDSAStakeRegistryPermissioned { Self::updateMinimumWeight(_) => { ::SELECTOR } - Self::updateOperatorSigningKey(_) => { - ::SELECTOR - } Self::updateOperators(_) => { ::SELECTOR } @@ -7514,6 +7235,22 @@ pub mod ECDSAStakeRegistryPermissioned { } updateOperators }, + { + fn registerOperatorWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::registerOperatorWithSignature, + ) + } + registerOperatorWithSignature + }, { fn getLastCheckpointTotalWeightAtBlock( data: &[u8], @@ -7602,22 +7339,6 @@ pub mod ECDSAStakeRegistryPermissioned { } getLastCheckpointOperatorWeight }, - { - fn registerOperatorWithSignature( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, - validate, - ) - .map( - ECDSAStakeRegistryPermissionedCalls::registerOperatorWithSignature, - ) - } - registerOperatorWithSignature - }, { fn minimumWeight( data: &[u8], @@ -7657,22 +7378,6 @@ pub mod ECDSAStakeRegistryPermissioned { } permitOperator }, - { - fn getOperatorSigningKeyAtBlock( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, - validate, - ) - .map( - ECDSAStakeRegistryPermissionedCalls::getOperatorSigningKeyAtBlock, - ) - } - getOperatorSigningKeyAtBlock - }, { fn updateStakeThreshold( data: &[u8], @@ -7725,19 +7430,6 @@ pub mod ECDSAStakeRegistryPermissioned { } renounceOwnership }, - { - fn updateOperatorSigningKey( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAStakeRegistryPermissionedCalls::updateOperatorSigningKey) - } - updateOperatorSigningKey - }, { fn deregisterOperator( data: &[u8], @@ -7815,22 +7507,6 @@ pub mod ECDSAStakeRegistryPermissioned { } getLastCheckpointThresholdWeight }, - { - fn getLastestOperatorSigningKey( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, - validate, - ) - .map( - ECDSAStakeRegistryPermissionedCalls::getLastestOperatorSigningKey, - ) - } - getLastestOperatorSigningKey - }, { fn updateQuorumConfig( data: &[u8], @@ -7948,16 +7624,6 @@ pub mod ECDSAStakeRegistryPermissioned { inner, ) } - Self::getLastestOperatorSigningKey(inner) => { - ::abi_encoded_size( - inner, - ) - } - Self::getOperatorSigningKeyAtBlock(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::getOperatorWeight(inner) => { ::abi_encoded_size( inner, @@ -8022,11 +7688,6 @@ pub mod ECDSAStakeRegistryPermissioned { inner, ) } - Self::updateOperatorSigningKey(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::updateOperators(inner) => { ::abi_encoded_size( inner, @@ -8100,18 +7761,6 @@ pub mod ECDSAStakeRegistryPermissioned { out, ) } - Self::getLastestOperatorSigningKey(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } - Self::getOperatorSigningKeyAtBlock(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::getOperatorWeight(inner) => { ::abi_encode_raw( inner, @@ -8190,12 +7839,6 @@ pub mod ECDSAStakeRegistryPermissioned { out, ) } - Self::updateOperatorSigningKey(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::updateOperators(inner) => { ::abi_encode_raw( inner, @@ -8229,7 +7872,6 @@ pub mod ECDSAStakeRegistryPermissioned { InsufficientWeight(InsufficientWeight), InvalidLength(InvalidLength), InvalidQuorum(InvalidQuorum), - InvalidReferenceBlock(InvalidReferenceBlock), InvalidSignature(InvalidSignature), InvalidSignedWeight(InvalidSignedWeight), InvalidThreshold(InvalidThreshold), @@ -8262,7 +7904,6 @@ pub mod ECDSAStakeRegistryPermissioned { [186u8, 80u8, 249u8, 17u8], [209u8, 115u8, 87u8, 121u8], [225u8, 33u8, 99u8, 47u8], - [230u8, 79u8, 24u8, 15u8], [241u8, 235u8, 220u8, 194u8], [255u8, 99u8, 58u8, 56u8], ]; @@ -8271,7 +7912,7 @@ pub mod ECDSAStakeRegistryPermissioned { impl alloy_sol_types::SolInterface for ECDSAStakeRegistryPermissionedErrors { const NAME: &'static str = "ECDSAStakeRegistryPermissionedErrors"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 15usize; + const COUNT: usize = 14usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -8283,9 +7924,6 @@ pub mod ECDSAStakeRegistryPermissioned { } Self::InvalidLength(_) => ::SELECTOR, Self::InvalidQuorum(_) => ::SELECTOR, - Self::InvalidReferenceBlock(_) => { - ::SELECTOR - } Self::InvalidSignature(_) => { ::SELECTOR } @@ -8485,19 +8123,6 @@ pub mod ECDSAStakeRegistryPermissioned { } InsufficientSignedStake }, - { - fn InvalidReferenceBlock( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAStakeRegistryPermissionedErrors::InvalidReferenceBlock) - } - InvalidReferenceBlock - }, { fn OperatorAlreadyAllowlisted( data: &[u8], @@ -8548,9 +8173,6 @@ pub mod ECDSAStakeRegistryPermissioned { Self::InvalidQuorum(inner) => { ::abi_encoded_size(inner) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encoded_size(inner) - } Self::InvalidSignature(inner) => { ::abi_encoded_size(inner) } @@ -8604,9 +8226,6 @@ pub mod ECDSAStakeRegistryPermissioned { Self::InvalidQuorum(inner) => { ::abi_encode_raw(inner, out) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encode_raw(inner, out) - } Self::InvalidSignature(inner) => { ::abi_encode_raw(inner, out) } @@ -8660,7 +8279,6 @@ pub mod ECDSAStakeRegistryPermissioned { OperatorWeightUpdated(OperatorWeightUpdated), OwnershipTransferred(OwnershipTransferred), QuorumUpdated(QuorumUpdated), - SigningKeyUpdate(SigningKeyUpdate), ThresholdWeightUpdated(ThresholdWeightUpdated), TotalWeightUpdated(TotalWeightUpdated), UpdateMinimumWeight(UpdateMinimumWeight), @@ -8734,11 +8352,6 @@ pub mod ECDSAStakeRegistryPermissioned { 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, @@ -8749,7 +8362,7 @@ pub mod ECDSAStakeRegistryPermissioned { #[automatically_derived] impl alloy_sol_types::SolEventInterface for ECDSAStakeRegistryPermissionedEvents { const NAME: &'static str = "ECDSAStakeRegistryPermissionedEvents"; - const COUNT: usize = 14usize; + const COUNT: usize = 13usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -8816,12 +8429,6 @@ pub mod ECDSAStakeRegistryPermissioned { ) .map(Self::QuorumUpdated) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( - topics, data, validate, - ) - .map(Self::SigningKeyUpdate) - } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, @@ -8886,9 +8493,6 @@ pub mod ECDSAStakeRegistryPermissioned { 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) } @@ -8932,9 +8536,6 @@ pub mod ECDSAStakeRegistryPermissioned { 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) } @@ -9186,24 +8787,6 @@ pub mod ECDSAStakeRegistryPermissioned { { 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, @@ -9275,12 +8858,12 @@ pub mod ECDSAStakeRegistryPermissioned { ///Creates a new call builder for the [`registerOperatorWithSignature`] function. pub fn registerOperatorWithSignature( &self, + _operator: alloy::sol_types::private::Address, _operatorSignature: ::RustType, - _signingKey: alloy::sol_types::private::Address, ) -> alloy_contract::SolCallBuilder { self.call_builder(®isterOperatorWithSignatureCall { + _operator, _operatorSignature, - _signingKey, }) } ///Creates a new call builder for the [`renounceOwnership`] function. @@ -9314,13 +8897,6 @@ pub mod ECDSAStakeRegistryPermissioned { _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, @@ -9429,10 +9005,6 @@ pub mod ECDSAStakeRegistryPermissioned { 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, diff --git a/crates/utils/src/middleware/ecdsastakeregistrysetup.rs b/crates/utils/src/middleware/ecdsastakeregistrysetup.rs new file mode 100644 index 00000000..22879395 --- /dev/null +++ b/crates/utils/src/middleware/ecdsastakeregistrysetup.rs @@ -0,0 +1,9034 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface ECDSAStakeRegistrySetup { + struct Quorum { + StrategyParams[] strategies; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } + + error InsufficientSignedStake(); + error InsufficientWeight(); + error InvalidLength(); + error InvalidQuorum(); + 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 ThresholdWeightUpdated(uint256 _thresholdWeight); + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mockDelegationManager() external view returns (address); + function mockServiceManager() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mockDelegationManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract MockDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mockServiceManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract MockServiceManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "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": "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": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "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": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod ECDSAStakeRegistrySetup { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260078054600160ff199182168117909255600b8054909116909117905534801561002d57600080fd5b506114cc8061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386777e061161008c578063b5508aa911610066578063b5508aa9146101ac578063ba414fa6146101b4578063e20c9f71146101cc578063fa7626d4146101d457600080fd5b806386777e0614610166578063916a17c614610191578063b52d472a1461019957600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c57806385226c811461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101e1565b005b610101610311565b60405161010e9190610b9e565b60405180910390f35b61011f610373565b60405161010e9190610c47565b6101016104b5565b610101610515565b610144610575565b60405161010e9190610d07565b61015961065b565b60405161010e9190610dba565b601d54610179906001600160a01b031681565b6040516001600160a01b03909116815260200161010e565b61014461072b565b601c54610179906001600160a01b031681565b610159610811565b6101bc6108e1565b604051901515815260200161010e565b610101610a0e565b6007546101bc9060ff1681565b61020a604051806040016040528060088152602001675369676e6572203160c01b815250610a6e565b6020908155601e80546001600160a01b0319166001600160a01b03939093169290921790915560408051808201909152600881526729b4b3b732b9101960c11b9181019190915261025a90610a6e565b602155601f80546001600160a01b0319166001600160a01b039290921691909117905560405161028990610b84565b604051809103906000f0801580156102a5573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169190911790556040516102d290610b91565b604051809103906000f0801580156102ee573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6060601480548060200260200160405190810160405280929190818152602001828054801561036957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161034b575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156104ac57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561049557838290600052602060002001805461040890610e1c565b80601f016020809104026020016040519081016040528092919081815260200182805461043490610e1c565b80156104815780601f1061045657610100808354040283529160200191610481565b820191906000526020600020905b81548152906001019060200180831161046457829003601f168201915b5050505050815260200190600101906103e9565b505050508152505081526020019060010190610397565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610369576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161034b575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610369576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161034b575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156104ac5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561064357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116106055790505b50505050508152505081526020019060010190610599565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156104ac57838290600052602060002001805461069e90610e1c565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90610e1c565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050508152602001906001019061067f565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156104ac5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156107f957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107bb5790505b5050505050815250508152602001906001019061074f565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156104ac57838290600052602060002001805461085490610e1c565b80601f016020809104026020016040519081016040528092919081815260200182805461088090610e1c565b80156108cd5780601f106108a2576101008083540402835291602001916108cd565b820191906000526020600020905b8154815290600101906020018083116108b057829003601f168201915b505050505081526020019060010190610835565b600754600090610100900460ff16156109035750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610a095760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610991917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001610e57565b60408051601f19818403018152908290526109ab91610e88565b6000604051808303816000865af19150503d80600081146109e8576040519150601f19603f3d011682016040523d82523d6000602084013e6109ed565b606091505b5091505080806020019051810190610a059190610ea4565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015610369576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161034b575050505050905090565b60008082604051602001610a829190610e88565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190610ecd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890610b4d9085908790600401610ef6565b600060405180830381600087803b158015610b6757600080fd5b505af1158015610b7b573d6000803e3d6000fd5b50505050915091565b61032b80610f2383390190565b6102498061124e83390190565b6020808252825182820181905260009190848201906040850190845b81811015610bdf5783516001600160a01b031683529284019291840191600101610bba565b50909695505050505050565b60005b83811015610c06578181015183820152602001610bee565b83811115610c15576000848401525b50505050565b60008151808452610c33816020860160208601610beb565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610cf757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610ce157605f19898503018352610ccf848651610c1b565b948e01949350918d0191600101610cb3565b505050978a019794505091880191600101610c6e565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610dab57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610d965783516001600160e01b0319168252928b019260019290920191908b0190610d6c565b50978a01979550505091870191600101610d2f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610e0f57603f19888603018452610dfd858351610c1b565b94509285019290850190600101610de1565b5092979650505050505050565b600181811c90821680610e3057607f821691505b60208210811415610e5157634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090610e7a816004850160208701610beb565b919091016004019392505050565b60008251610e9a818460208701610beb565b9190910192915050565b600060208284031215610eb657600080fd5b81518015158114610ec657600080fd5b9392505050565b600060208284031215610edf57600080fd5b81516001600160a01b0381168114610ec657600080fd5b6001600160a01b0383168152604060208201819052600090610f1a90830184610c1b565b94935050505056fe608060405234801561001057600080fd5b5061030b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063778e55f31461003b5780639004134714610065575b600080fd5b610052610049366004610131565b6103e892915050565b6040519081526020015b60405180910390f35b61007861007336600461017a565b610085565b60405161005c9190610252565b60606000825167ffffffffffffffff8111156100a3576100a3610164565b6040519080825280602002602001820160405280156100cc578160200160208202803683370190505b50905060005b835181101561010d576103e88282815181106100f0576100f0610296565b602090810291909101015280610105816102ac565b9150506100d2565b509392505050565b80356001600160a01b038116811461012c57600080fd5b919050565b6000806040838503121561014457600080fd5b61014d83610115565b915061015b60208401610115565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561018d57600080fd5b61019683610115565b915060208084013567ffffffffffffffff808211156101b457600080fd5b818601915086601f8301126101c857600080fd5b8135818111156101da576101da610164565b8060051b604051601f19603f830116810181811085821117156101ff576101ff610164565b60405291825284820192508381018501918983111561021d57600080fd5b938501935b828510156102425761023385610115565b84529385019392850192610222565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561028a5783518352928401929184019160010161026e565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156102ce57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220044609968e4209af57558f74bde90d5690cc68a4d97bf9dc5f705209c70b0d9064736f6c634300080c0033608060405234801561001057600080fd5b50610229806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639926ee7d1461003b578063a364f4da1461004f575b600080fd5b61004d6100493660046100ec565b5050565b005b61004d61005d3660046101d1565b50565b80356001600160a01b038116811461007757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156100b5576100b561007c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156100e4576100e461007c565b604052919050565b600080604083850312156100ff57600080fd5b61010883610060565b915060208084013567ffffffffffffffff8082111561012657600080fd5b908501906060828803121561013a57600080fd5b610142610092565b82358281111561015157600080fd5b8301601f8101891361016257600080fd5b8035838111156101745761017461007c565b610186601f8201601f191687016100bb565b9350808452898682840101111561019c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b6000602082840312156101e357600080fd5b6101ec82610060565b939250505056fea26469706673582212206943cdf3fa94350d7917a12c2d4b4a05065ffd77579c5291937d46934ca9fabd64736f6c634300080c0033a264697066735822122065f062b5a7700f2f7cbfd6b516631a42798b126de699392a69ecfb170ba741b764736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15a\0-W`\0\x80\xFD[Pa\x14\xCC\x80a\0=`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x86w~\x06\x11a\0\x8CW\x80c\xB5P\x8A\xA9\x11a\0fW\x80c\xB5P\x8A\xA9\x14a\x01\xACW\x80c\xBAAO\xA6\x14a\x01\xB4W\x80c\xE2\x0C\x9Fq\x14a\x01\xCCW\x80c\xFAv&\xD4\x14a\x01\xD4W`\0\x80\xFD[\x80c\x86w~\x06\x14a\x01fW\x80c\x91j\x17\xC6\x14a\x01\x91W\x80c\xB5-G*\x14a\x01\x99W`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x01,W\x80c?r\x86\xF4\x14a\x014W\x80cf\xD9\xA9\xA0\x14a\x01=`\0\xFD[P`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qa\x02\xD2\x90a\x0B\x91V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x02\xEEW=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03iW` \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\x03KW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x04\x95W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x04\x08\x90a\x0E\x1CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x044\x90a\x0E\x1CV[\x80\x15a\x04\x81W\x80`\x1F\x10a\x04VWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04\x81V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04dW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xE9V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\x97V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03iW` \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\x03KWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03iW` \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\x03KWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06CW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x05W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x99V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06\x9E\x90a\x0E\x1CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xCA\x90a\x0E\x1CV[\x80\x15a\x07\x17W\x80`\x1F\x10a\x06\xECWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x17V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xFAW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\x7FV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xF9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\xBBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07OV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08T\x90a\x0E\x1CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\x80\x90a\x0E\x1CV[\x80\x15a\x08\xCDW\x80`\x1F\x10a\x08\xA2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\xCDV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08\xB0W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x085V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\t\x03WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\n\tW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\t\x91\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x0EWV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\t\xAB\x91a\x0E\x88V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xE8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xEDV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\x05\x91\x90a\x0E\xA4V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03iW` \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\x03KWPPPPP\x90P\x90V[`\0\x80\x82`@Q` \x01a\n\x82\x91\x90a\x0E\x88V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90R\x80Q` \x90\x91\x01 `\x01b^y\xB7`\xE0\x1B\x03\x19\x82R`\x04\x82\x01\x81\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xFF\xA1\x86I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x11\x91\x90a\x0E\xCDV[`@Qc\x18\xCA\xF8\xE3`\xE3\x1B\x81R\x90\x92Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC6W\xC7\x18\x90a\x0BM\x90\x85\x90\x87\x90`\x04\x01a\x0E\xF6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0BgW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B{W=`\0\x80>=`\0\xFD[PPPP\x91P\x91V[a\x03+\x80a\x0F#\x839\x01\x90V[a\x02I\x80a\x12N\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B\xDFW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0B\xBAV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x0C\x06W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0B\xEEV[\x83\x81\x11\x15a\x0C\x15W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\x0C3\x81` \x86\x01` \x86\x01a\x0B\xEBV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0C\xF7W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0C\xE1W`_\x19\x89\x85\x03\x01\x83Ra\x0C\xCF\x84\x86Qa\x0C\x1BV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0C\xB3V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x0CnV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\r\xABW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\r\x96W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\rlV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r/V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0E\x0FW`?\x19\x88\x86\x03\x01\x84Ra\r\xFD\x85\x83Qa\x0C\x1BV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\r\xE1V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E0W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0EQWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x0Ez\x81`\x04\x85\x01` \x87\x01a\x0B\xEBV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x0E\x9A\x81\x84` \x87\x01a\x0B\xEBV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0E\xB6W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC6W`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0E\xDFW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0E\xC6W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a\x0F\x1A\x90\x83\x01\x84a\x0C\x1BV[\x94\x93PPPPV\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\x0B\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cw\x8EU\xF3\x14a\0;W\x80c\x90\x04\x13G\x14a\0eW[`\0\x80\xFD[a\0Ra\0I6`\x04a\x011V[a\x03\xE8\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0xa\0s6`\x04a\x01zV[a\0\x85V[`@Qa\0\\\x91\x90a\x02RV[```\0\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xA3Wa\0\xA3a\x01dV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\0\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x01\rWa\x03\xE8\x82\x82\x81Q\x81\x10a\0\xF0Wa\0\xF0a\x02\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x01\x05\x81a\x02\xACV[\x91PPa\0\xD2V[P\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01,W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01DW`\0\x80\xFD[a\x01M\x83a\x01\x15V[\x91Pa\x01[` \x84\x01a\x01\x15V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x01\x8DW`\0\x80\xFD[a\x01\x96\x83a\x01\x15V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xB4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x01\xC8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\xDAWa\x01\xDAa\x01dV[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x01\xFFWa\x01\xFFa\x01dV[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x89\x83\x11\x15a\x02\x1DW`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x02BWa\x023\x85a\x01\x15V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\"V[\x80\x96PPPPPPP\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\x8AW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02nV[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x02\xCEWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x04F\t\x96\x8EB\t\xAFWU\x8Ft\xBD\xE9\rV\x90\xCCh\xA4\xD9{\xF9\xDC_pR\t\xC7\x0B\r\x90dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02)\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x99&\xEE}\x14a\0;W\x80c\xA3d\xF4\xDA\x14a\0OW[`\0\x80\xFD[a\0Ma\0I6`\x04a\0\xECV[PPV[\0[a\0Ma\0]6`\x04a\x01\xD1V[PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0wW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\0\xB5Wa\0\xB5a\0|V[`@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\0\xE4Wa\0\xE4a\0|V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xFFW`\0\x80\xFD[a\x01\x08\x83a\0`V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01&W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x01:W`\0\x80\xFD[a\x01Ba\0\x92V[\x825\x82\x81\x11\x15a\x01QW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x01bW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x01tWa\x01ta\0|V[a\x01\x86`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\0\xBBV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x01\x9CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xE3W`\0\x80\xFD[a\x01\xEC\x82a\0`V[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 iC\xCD\xF3\xFA\x945\ry\x17\xA1,-KJ\x05\x06_\xFDwW\x9CR\x91\x93}F\x93L\xA9\xFA\xBDdsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 e\xF0b\xB5\xA7p\x0F/|\xBF\xD6\xB5\x16c\x1ABy\x8B\x12m\xE6\x999*i\xEC\xFB\x17\x0B\xA7A\xB7dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386777e061161008c578063b5508aa911610066578063b5508aa9146101ac578063ba414fa6146101b4578063e20c9f71146101cc578063fa7626d4146101d457600080fd5b806386777e0614610166578063916a17c614610191578063b52d472a1461019957600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c57806385226c811461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101e1565b005b610101610311565b60405161010e9190610b9e565b60405180910390f35b61011f610373565b60405161010e9190610c47565b6101016104b5565b610101610515565b610144610575565b60405161010e9190610d07565b61015961065b565b60405161010e9190610dba565b601d54610179906001600160a01b031681565b6040516001600160a01b03909116815260200161010e565b61014461072b565b601c54610179906001600160a01b031681565b610159610811565b6101bc6108e1565b604051901515815260200161010e565b610101610a0e565b6007546101bc9060ff1681565b61020a604051806040016040528060088152602001675369676e6572203160c01b815250610a6e565b6020908155601e80546001600160a01b0319166001600160a01b03939093169290921790915560408051808201909152600881526729b4b3b732b9101960c11b9181019190915261025a90610a6e565b602155601f80546001600160a01b0319166001600160a01b039290921691909117905560405161028990610b84565b604051809103906000f0801580156102a5573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169190911790556040516102d290610b91565b604051809103906000f0801580156102ee573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6060601480548060200260200160405190810160405280929190818152602001828054801561036957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161034b575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156104ac57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561049557838290600052602060002001805461040890610e1c565b80601f016020809104026020016040519081016040528092919081815260200182805461043490610e1c565b80156104815780601f1061045657610100808354040283529160200191610481565b820191906000526020600020905b81548152906001019060200180831161046457829003601f168201915b5050505050815260200190600101906103e9565b505050508152505081526020019060010190610397565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610369576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161034b575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610369576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161034b575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156104ac5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561064357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116106055790505b50505050508152505081526020019060010190610599565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156104ac57838290600052602060002001805461069e90610e1c565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90610e1c565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050508152602001906001019061067f565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156104ac5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156107f957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107bb5790505b5050505050815250508152602001906001019061074f565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156104ac57838290600052602060002001805461085490610e1c565b80601f016020809104026020016040519081016040528092919081815260200182805461088090610e1c565b80156108cd5780601f106108a2576101008083540402835291602001916108cd565b820191906000526020600020905b8154815290600101906020018083116108b057829003601f168201915b505050505081526020019060010190610835565b600754600090610100900460ff16156109035750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610a095760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610991917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001610e57565b60408051601f19818403018152908290526109ab91610e88565b6000604051808303816000865af19150503d80600081146109e8576040519150601f19603f3d011682016040523d82523d6000602084013e6109ed565b606091505b5091505080806020019051810190610a059190610ea4565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015610369576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161034b575050505050905090565b60008082604051602001610a829190610e88565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190610ecd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890610b4d9085908790600401610ef6565b600060405180830381600087803b158015610b6757600080fd5b505af1158015610b7b573d6000803e3d6000fd5b50505050915091565b61032b80610f2383390190565b6102498061124e83390190565b6020808252825182820181905260009190848201906040850190845b81811015610bdf5783516001600160a01b031683529284019291840191600101610bba565b50909695505050505050565b60005b83811015610c06578181015183820152602001610bee565b83811115610c15576000848401525b50505050565b60008151808452610c33816020860160208601610beb565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610cf757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610ce157605f19898503018352610ccf848651610c1b565b948e01949350918d0191600101610cb3565b505050978a019794505091880191600101610c6e565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610dab57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610d965783516001600160e01b0319168252928b019260019290920191908b0190610d6c565b50978a01979550505091870191600101610d2f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610e0f57603f19888603018452610dfd858351610c1b565b94509285019290850190600101610de1565b5092979650505050505050565b600181811c90821680610e3057607f821691505b60208210811415610e5157634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090610e7a816004850160208701610beb565b919091016004019392505050565b60008251610e9a818460208701610beb565b9190910192915050565b600060208284031215610eb657600080fd5b81518015158114610ec657600080fd5b9392505050565b600060208284031215610edf57600080fd5b81516001600160a01b0381168114610ec657600080fd5b6001600160a01b0383168152604060208201819052600090610f1a90830184610c1b565b94935050505056fe608060405234801561001057600080fd5b5061030b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063778e55f31461003b5780639004134714610065575b600080fd5b610052610049366004610131565b6103e892915050565b6040519081526020015b60405180910390f35b61007861007336600461017a565b610085565b60405161005c9190610252565b60606000825167ffffffffffffffff8111156100a3576100a3610164565b6040519080825280602002602001820160405280156100cc578160200160208202803683370190505b50905060005b835181101561010d576103e88282815181106100f0576100f0610296565b602090810291909101015280610105816102ac565b9150506100d2565b509392505050565b80356001600160a01b038116811461012c57600080fd5b919050565b6000806040838503121561014457600080fd5b61014d83610115565b915061015b60208401610115565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561018d57600080fd5b61019683610115565b915060208084013567ffffffffffffffff808211156101b457600080fd5b818601915086601f8301126101c857600080fd5b8135818111156101da576101da610164565b8060051b604051601f19603f830116810181811085821117156101ff576101ff610164565b60405291825284820192508381018501918983111561021d57600080fd5b938501935b828510156102425761023385610115565b84529385019392850192610222565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561028a5783518352928401929184019160010161026e565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156102ce57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220044609968e4209af57558f74bde90d5690cc68a4d97bf9dc5f705209c70b0d9064736f6c634300080c0033608060405234801561001057600080fd5b50610229806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639926ee7d1461003b578063a364f4da1461004f575b600080fd5b61004d6100493660046100ec565b5050565b005b61004d61005d3660046101d1565b50565b80356001600160a01b038116811461007757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156100b5576100b561007c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156100e4576100e461007c565b604052919050565b600080604083850312156100ff57600080fd5b61010883610060565b915060208084013567ffffffffffffffff8082111561012657600080fd5b908501906060828803121561013a57600080fd5b610142610092565b82358281111561015157600080fd5b8301601f8101891361016257600080fd5b8035838111156101745761017461007c565b610186601f8201601f191687016100bb565b9350808452898682840101111561019c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b6000602082840312156101e357600080fd5b6101ec82610060565b939250505056fea26469706673582212206943cdf3fa94350d7917a12c2d4b4a05065ffd77579c5291937d46934ca9fabd64736f6c634300080c0033a264697066735822122065f062b5a7700f2f7cbfd6b516631a42798b126de699392a69ecfb170ba741b764736f6c634300080c0033 + /// ``` + #[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\xEAW`\x005`\xE0\x1C\x80c\x86w~\x06\x11a\0\x8CW\x80c\xB5P\x8A\xA9\x11a\0fW\x80c\xB5P\x8A\xA9\x14a\x01\xACW\x80c\xBAAO\xA6\x14a\x01\xB4W\x80c\xE2\x0C\x9Fq\x14a\x01\xCCW\x80c\xFAv&\xD4\x14a\x01\xD4W`\0\x80\xFD[\x80c\x86w~\x06\x14a\x01fW\x80c\x91j\x17\xC6\x14a\x01\x91W\x80c\xB5-G*\x14a\x01\x99W`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x01,W\x80c?r\x86\xF4\x14a\x014W\x80cf\xD9\xA9\xA0\x14a\x01=`\0\xFD[P`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qa\x02\xD2\x90a\x0B\x91V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x02\xEEW=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03iW` \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\x03KW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x04\x95W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x04\x08\x90a\x0E\x1CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x044\x90a\x0E\x1CV[\x80\x15a\x04\x81W\x80`\x1F\x10a\x04VWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04\x81V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04dW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xE9V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\x97V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03iW` \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\x03KWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03iW` \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\x03KWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06CW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x05W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x99V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06\x9E\x90a\x0E\x1CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xCA\x90a\x0E\x1CV[\x80\x15a\x07\x17W\x80`\x1F\x10a\x06\xECWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x17V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xFAW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\x7FV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xF9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\xBBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07OV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\xACW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08T\x90a\x0E\x1CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\x80\x90a\x0E\x1CV[\x80\x15a\x08\xCDW\x80`\x1F\x10a\x08\xA2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\xCDV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08\xB0W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x085V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\t\x03WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\n\tW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\t\x91\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x0EWV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\t\xAB\x91a\x0E\x88V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xE8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xEDV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\x05\x91\x90a\x0E\xA4V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03iW` \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\x03KWPPPPP\x90P\x90V[`\0\x80\x82`@Q` \x01a\n\x82\x91\x90a\x0E\x88V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90R\x80Q` \x90\x91\x01 `\x01b^y\xB7`\xE0\x1B\x03\x19\x82R`\x04\x82\x01\x81\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xFF\xA1\x86I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x11\x91\x90a\x0E\xCDV[`@Qc\x18\xCA\xF8\xE3`\xE3\x1B\x81R\x90\x92Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC6W\xC7\x18\x90a\x0BM\x90\x85\x90\x87\x90`\x04\x01a\x0E\xF6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0BgW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B{W=`\0\x80>=`\0\xFD[PPPP\x91P\x91V[a\x03+\x80a\x0F#\x839\x01\x90V[a\x02I\x80a\x12N\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B\xDFW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0B\xBAV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x0C\x06W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0B\xEEV[\x83\x81\x11\x15a\x0C\x15W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\x0C3\x81` \x86\x01` \x86\x01a\x0B\xEBV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0C\xF7W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0C\xE1W`_\x19\x89\x85\x03\x01\x83Ra\x0C\xCF\x84\x86Qa\x0C\x1BV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0C\xB3V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x0CnV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\r\xABW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\r\x96W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\rlV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r/V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0E\x0FW`?\x19\x88\x86\x03\x01\x84Ra\r\xFD\x85\x83Qa\x0C\x1BV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\r\xE1V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E0W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0EQWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x0Ez\x81`\x04\x85\x01` \x87\x01a\x0B\xEBV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x0E\x9A\x81\x84` \x87\x01a\x0B\xEBV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0E\xB6W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC6W`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0E\xDFW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0E\xC6W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a\x0F\x1A\x90\x83\x01\x84a\x0C\x1BV[\x94\x93PPPPV\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\x0B\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cw\x8EU\xF3\x14a\0;W\x80c\x90\x04\x13G\x14a\0eW[`\0\x80\xFD[a\0Ra\0I6`\x04a\x011V[a\x03\xE8\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0xa\0s6`\x04a\x01zV[a\0\x85V[`@Qa\0\\\x91\x90a\x02RV[```\0\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xA3Wa\0\xA3a\x01dV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\0\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x01\rWa\x03\xE8\x82\x82\x81Q\x81\x10a\0\xF0Wa\0\xF0a\x02\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x01\x05\x81a\x02\xACV[\x91PPa\0\xD2V[P\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01,W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01DW`\0\x80\xFD[a\x01M\x83a\x01\x15V[\x91Pa\x01[` \x84\x01a\x01\x15V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x01\x8DW`\0\x80\xFD[a\x01\x96\x83a\x01\x15V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xB4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x01\xC8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\xDAWa\x01\xDAa\x01dV[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x01\xFFWa\x01\xFFa\x01dV[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x89\x83\x11\x15a\x02\x1DW`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x02BWa\x023\x85a\x01\x15V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\"V[\x80\x96PPPPPPP\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\x8AW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02nV[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x02\xCEWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x04F\t\x96\x8EB\t\xAFWU\x8Ft\xBD\xE9\rV\x90\xCCh\xA4\xD9{\xF9\xDC_pR\t\xC7\x0B\r\x90dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02)\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x99&\xEE}\x14a\0;W\x80c\xA3d\xF4\xDA\x14a\0OW[`\0\x80\xFD[a\0Ma\0I6`\x04a\0\xECV[PPV[\0[a\0Ma\0]6`\x04a\x01\xD1V[PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0wW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\0\xB5Wa\0\xB5a\0|V[`@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\0\xE4Wa\0\xE4a\0|V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xFFW`\0\x80\xFD[a\x01\x08\x83a\0`V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01&W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x01:W`\0\x80\xFD[a\x01Ba\0\x92V[\x825\x82\x81\x11\x15a\x01QW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x01bW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x01tWa\x01ta\0|V[a\x01\x86`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\0\xBBV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x01\x9CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xE3W`\0\x80\xFD[a\x01\xEC\x82a\0`V[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 iC\xCD\xF3\xFA\x945\ry\x17\xA1,-KJ\x05\x06_\xFDwW\x9CR\x91\x93}F\x93L\xA9\xFA\xBDdsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 e\xF0b\xB5\xA7p\x0F/|\xBF\xD6\xB5\x16c\x1ABy\x8B\x12m\xE6\x999*i\xEC\xFB\x17\x0B\xA7A\xB7dsolcC\0\x08\x0C\x003", + ); + /**```solidity + struct Quorum { StrategyParams[] strategies; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Quorum { + pub strategies: + alloy::sol_types::private::Vec<::RustType>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InsufficientSignedStake {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InsufficientWeight {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidLength {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidQuorum {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `InvalidSignature()` and selector `0x8baa579f`. + ```solidity + error InvalidSignature(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidSignature {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidSignedWeight {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidThreshold {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MustUpdateAllOperators {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NotSorted {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorAlreadyRegistered {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorNotRegistered {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `ThresholdWeightUpdated(uint256)` and selector `0x9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b`. + ```solidity + event ThresholdWeightUpdated(uint256 _thresholdWeight); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mockDelegationManager()` and selector `0xb52d472a`. + ```solidity + function mockDelegationManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockDelegationManagerCall {} + ///Container type for the return parameters of the [`mockDelegationManager()`](mockDelegationManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockDelegationManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockDelegationManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockDelegationManagerCall { + 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: mockDelegationManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockDelegationManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockDelegationManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockDelegationManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockDelegationManager()"; + const SELECTOR: [u8; 4] = [181u8, 45u8, 71u8, 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 `mockServiceManager()` and selector `0x86777e06`. + ```solidity + function mockServiceManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockServiceManagerCall {} + ///Container type for the return parameters of the [`mockServiceManager()`](mockServiceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockServiceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockServiceManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockServiceManagerCall { + 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: mockServiceManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockServiceManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockServiceManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockServiceManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockServiceManager()"; + const SELECTOR: [u8; 4] = [134u8, 119u8, 126u8, 6u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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) + } + } + }; + ///Container for all the [`ECDSAStakeRegistrySetup`](self) function calls. + pub enum ECDSAStakeRegistrySetupCalls { + IS_TEST(IS_TESTCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mockDelegationManager(mockDelegationManagerCall), + mockServiceManager(mockServiceManagerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + } + #[automatically_derived] + impl ECDSAStakeRegistrySetupCalls { + /// 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], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [133u8, 34u8, 108u8, 129u8], + [134u8, 119u8, 126u8, 6u8], + [145u8, 106u8, 23u8, 198u8], + [181u8, 45u8, 71u8, 42u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistrySetupCalls { + const NAME: &'static str = "ECDSAStakeRegistrySetupCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 14usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mockDelegationManager(_) => { + ::SELECTOR + } + Self::mockServiceManager(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::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(ECDSAStakeRegistrySetupCalls::setUp) + } + setUp + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn mockServiceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::mockServiceManager) + } + mockServiceManager + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::targetSelectors) + } + targetSelectors + }, + { + fn mockDelegationManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::mockDelegationManager) + } + mockDelegationManager + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistrySetupCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistrySetupCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mockDelegationManager(inner) => { + ::abi_encoded_size(inner) + } + Self::mockServiceManager(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mockDelegationManager(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::mockServiceManager(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistrySetup`](self) custom errors. + pub enum ECDSAStakeRegistrySetupErrors { + InsufficientSignedStake(InsufficientSignedStake), + InsufficientWeight(InsufficientWeight), + InvalidLength(InvalidLength), + InvalidQuorum(InvalidQuorum), + InvalidSignature(InvalidSignature), + InvalidSignedWeight(InvalidSignedWeight), + InvalidThreshold(InvalidThreshold), + LengthMismatch(LengthMismatch), + MustUpdateAllOperators(MustUpdateAllOperators), + NotSorted(NotSorted), + OperatorAlreadyRegistered(OperatorAlreadyRegistered), + OperatorNotRegistered(OperatorNotRegistered), + } + #[automatically_derived] + impl ECDSAStakeRegistrySetupErrors { + /// 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], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistrySetupErrors { + const NAME: &'static str = "ECDSAStakeRegistrySetupErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InsufficientSignedStake(_) => { + ::SELECTOR + } + Self::InsufficientWeight(_) => { + ::SELECTOR + } + Self::InvalidLength(_) => ::SELECTOR, + Self::InvalidQuorum(_) => ::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(ECDSAStakeRegistrySetupErrors::OperatorNotRegistered) + } + OperatorNotRegistered + }, + { + fn MustUpdateAllOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupErrors::MustUpdateAllOperators) + } + MustUpdateAllOperators + }, + { + fn OperatorAlreadyRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupErrors::OperatorAlreadyRegistered) + } + OperatorAlreadyRegistered + }, + { + fn InvalidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupErrors::InvalidSignature) + } + InvalidSignature + }, + { + fn InvalidLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistrySetupErrors::InvalidLength) + } + InvalidLength + }, + { + fn InvalidSignedWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupErrors::InvalidSignedWeight) + } + InvalidSignedWeight + }, + { + fn InsufficientWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupErrors::InsufficientWeight) + } + InsufficientWeight + }, + { + fn InvalidThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupErrors::InvalidThreshold) + } + InvalidThreshold + }, + { + fn NotSorted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistrySetupErrors::NotSorted) + } + NotSorted + }, + { + fn InvalidQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistrySetupErrors::InvalidQuorum) + } + InvalidQuorum + }, + { + fn InsufficientSignedStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupErrors::InsufficientSignedStake) + } + InsufficientSignedStake + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistrySetupErrors::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::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::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 [`ECDSAStakeRegistrySetup`](self) events. + pub enum ECDSAStakeRegistrySetupEvents { + MinimumWeightUpdated(MinimumWeightUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorWeightUpdated(OperatorWeightUpdated), + QuorumUpdated(QuorumUpdated), + ThresholdWeightUpdated(ThresholdWeightUpdated), + TotalWeightUpdated(TotalWeightUpdated), + UpdateMinimumWeight(UpdateMinimumWeight), + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl ECDSAStakeRegistrySetupEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 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, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 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, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 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, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 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, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 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, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 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, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ECDSAStakeRegistrySetupEvents { + const NAME: &'static str = "ECDSAStakeRegistrySetupEvents"; + const COUNT: usize = 30usize; + 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::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) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 ECDSAStakeRegistrySetupEvents { + 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::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) + } + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(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::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) + } + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistrySetup`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistrySetupInstance`) 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, + ) -> ECDSAStakeRegistrySetupInstance { + ECDSAStakeRegistrySetupInstance::::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>, + > { + ECDSAStakeRegistrySetupInstance::::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 { + ECDSAStakeRegistrySetupInstance::::deploy_builder(provider) + } + /**A [`ECDSAStakeRegistrySetup`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSAStakeRegistrySetup`](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 ECDSAStakeRegistrySetupInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAStakeRegistrySetupInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAStakeRegistrySetupInstance") + .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, + > ECDSAStakeRegistrySetupInstance + { + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistrySetup`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistrySetupInstance`) 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 ECDSAStakeRegistrySetupInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAStakeRegistrySetupInstance { + ECDSAStakeRegistrySetupInstance { + 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, + > ECDSAStakeRegistrySetupInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mockDelegationManager`] function. + pub fn mockDelegationManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockDelegationManagerCall {}) + } + ///Creates a new call builder for the [`mockServiceManager`] function. + pub fn mockServiceManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockServiceManagerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistrySetupInstance + { + /// 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 [`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::() + } + ///Creates a new event filter for the [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ecdsastakeregistrystorage.rs b/crates/utils/src/middleware/ecdsastakeregistrystorage.rs similarity index 89% rename from crates/utils/src/ecdsastakeregistrystorage.rs rename to crates/utils/src/middleware/ecdsastakeregistrystorage.rs index ea900ad8..4eb58df8 100644 --- a/crates/utils/src/ecdsastakeregistrystorage.rs +++ b/crates/utils/src/middleware/ecdsastakeregistrystorage.rs @@ -15,7 +15,6 @@ interface ECDSAStakeRegistryStorage { error InsufficientWeight(); error InvalidLength(); error InvalidQuorum(); - error InvalidReferenceBlock(); error InvalidSignature(); error InvalidSignedWeight(); error InvalidThreshold(); @@ -30,7 +29,6 @@ interface ECDSAStakeRegistryStorage { 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); @@ -179,37 +177,6 @@ interface ECDSAStakeRegistryStorage { ], "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", @@ -281,11 +248,6 @@ interface ECDSAStakeRegistryStorage { "name": "InvalidQuorum", "inputs": [] }, - { - "type": "error", - "name": "InvalidReferenceBlock", - "inputs": [] - }, { "type": "error", "name": "InvalidSignature", @@ -328,7 +290,12 @@ interface ECDSAStakeRegistryStorage { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ECDSAStakeRegistryStorage { use super::*; use alloy::sol_types as alloy_sol_types; @@ -355,13 +322,18 @@ pub mod ECDSAStakeRegistryStorage { /**```solidity struct Quorum { StrategyParams[] strategies; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct Quorum { pub strategies: alloy::sol_types::private::Vec<::RustType>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -522,13 +494,18 @@ pub mod ECDSAStakeRegistryStorage { /**```solidity struct StrategyParams { address strategy; uint96 multiplier; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -713,10 +690,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error InsufficientSignedStake(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientSignedStake {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -768,10 +750,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error InsufficientWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -823,10 +810,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error InvalidLength(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidLength {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -878,10 +870,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error InvalidQuorum(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidQuorum {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -929,69 +926,19 @@ pub mod ECDSAStakeRegistryStorage { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1043,10 +990,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error InvalidSignedWeight(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidSignedWeight {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1098,10 +1050,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error InvalidThreshold(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidThreshold {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1153,10 +1110,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error LengthMismatch(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct LengthMismatch {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1208,10 +1170,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error MustUpdateAllOperators(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MustUpdateAllOperators {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1263,10 +1230,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error NotSorted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NotSorted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1318,10 +1290,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error OperatorAlreadyRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorAlreadyRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1373,10 +1350,15 @@ pub mod ECDSAStakeRegistryStorage { ```solidity error OperatorNotRegistered(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorNotRegistered {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1428,7 +1410,12 @@ pub mod ECDSAStakeRegistryStorage { ```solidity event MinimumWeightUpdated(uint256 _old, uint256 _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct MinimumWeightUpdated { #[allow(missing_docs)] @@ -1436,7 +1423,12 @@ pub mod ECDSAStakeRegistryStorage { #[allow(missing_docs)] pub _new: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1527,7 +1519,12 @@ pub mod ECDSAStakeRegistryStorage { ```solidity event OperatorDeregistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDeregistered { #[allow(missing_docs)] @@ -1535,7 +1532,12 @@ pub mod ECDSAStakeRegistryStorage { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1630,7 +1632,12 @@ pub mod ECDSAStakeRegistryStorage { ```solidity event OperatorRegistered(address indexed _operator, address indexed _avs); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -1638,7 +1645,12 @@ pub mod ECDSAStakeRegistryStorage { #[allow(missing_docs)] pub _avs: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1733,7 +1745,12 @@ pub mod ECDSAStakeRegistryStorage { ```solidity event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorWeightUpdated { #[allow(missing_docs)] @@ -1743,7 +1760,12 @@ pub mod ECDSAStakeRegistryStorage { #[allow(missing_docs)] pub newWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1841,7 +1863,12 @@ pub mod ECDSAStakeRegistryStorage { ```solidity event QuorumUpdated(Quorum _old, Quorum _new); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumUpdated { #[allow(missing_docs)] @@ -1849,7 +1876,12 @@ pub mod ECDSAStakeRegistryStorage { #[allow(missing_docs)] pub _new: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1930,135 +1962,27 @@ pub mod ECDSAStakeRegistryStorage { } } }; - /**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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2142,7 +2066,12 @@ pub mod ECDSAStakeRegistryStorage { ```solidity event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct TotalWeightUpdated { #[allow(missing_docs)] @@ -2150,7 +2079,12 @@ pub mod ECDSAStakeRegistryStorage { #[allow(missing_docs)] pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2241,7 +2175,12 @@ pub mod ECDSAStakeRegistryStorage { ```solidity event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UpdateMinimumWeight { #[allow(missing_docs)] @@ -2249,7 +2188,12 @@ pub mod ECDSAStakeRegistryStorage { #[allow(missing_docs)] pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2342,7 +2286,6 @@ pub mod ECDSAStakeRegistryStorage { InsufficientWeight(InsufficientWeight), InvalidLength(InvalidLength), InvalidQuorum(InvalidQuorum), - InvalidReferenceBlock(InvalidReferenceBlock), InvalidSignature(InvalidSignature), InvalidSignedWeight(InvalidSignedWeight), InvalidThreshold(InvalidThreshold), @@ -2372,7 +2315,6 @@ pub mod ECDSAStakeRegistryStorage { [186u8, 80u8, 249u8, 17u8], [209u8, 115u8, 87u8, 121u8], [225u8, 33u8, 99u8, 47u8], - [230u8, 79u8, 24u8, 15u8], [255u8, 99u8, 58u8, 56u8], ]; } @@ -2380,7 +2322,7 @@ pub mod ECDSAStakeRegistryStorage { impl alloy_sol_types::SolInterface for ECDSAStakeRegistryStorageErrors { const NAME: &'static str = "ECDSAStakeRegistryStorageErrors"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 13usize; + const COUNT: usize = 12usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -2392,9 +2334,6 @@ pub mod ECDSAStakeRegistryStorage { } Self::InvalidLength(_) => ::SELECTOR, Self::InvalidQuorum(_) => ::SELECTOR, - Self::InvalidReferenceBlock(_) => { - ::SELECTOR - } Self::InvalidSignature(_) => { ::SELECTOR } @@ -2575,19 +2514,6 @@ pub mod ECDSAStakeRegistryStorage { } InsufficientSignedStake }, - { - fn InvalidReferenceBlock( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result - { - ::abi_decode_raw( - data, validate, - ) - .map(ECDSAStakeRegistryStorageErrors::InvalidReferenceBlock) - } - InvalidReferenceBlock - }, { fn LengthMismatch( data: &[u8], @@ -2625,9 +2551,6 @@ pub mod ECDSAStakeRegistryStorage { Self::InvalidQuorum(inner) => { ::abi_encoded_size(inner) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encoded_size(inner) - } Self::InvalidSignature(inner) => { ::abi_encoded_size(inner) } @@ -2673,9 +2596,6 @@ pub mod ECDSAStakeRegistryStorage { Self::InvalidQuorum(inner) => { ::abi_encode_raw(inner, out) } - Self::InvalidReferenceBlock(inner) => { - ::abi_encode_raw(inner, out) - } Self::InvalidSignature(inner) => { ::abi_encode_raw(inner, out) } @@ -2714,7 +2634,6 @@ pub mod ECDSAStakeRegistryStorage { OperatorRegistered(OperatorRegistered), OperatorWeightUpdated(OperatorWeightUpdated), QuorumUpdated(QuorumUpdated), - SigningKeyUpdate(SigningKeyUpdate), ThresholdWeightUpdated(ThresholdWeightUpdated), TotalWeightUpdated(TotalWeightUpdated), UpdateMinimumWeight(UpdateMinimumWeight), @@ -2768,17 +2687,12 @@ pub mod ECDSAStakeRegistryStorage { 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; + const COUNT: usize = 8usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -2815,12 +2729,6 @@ pub mod ECDSAStakeRegistryStorage { ) .map(Self::QuorumUpdated) } - Some(::SIGNATURE_HASH) => { - ::decode_raw_log( - topics, data, validate, - ) - .map(Self::SigningKeyUpdate) - } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, @@ -2870,9 +2778,6 @@ pub mod ECDSAStakeRegistryStorage { 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) } @@ -2901,9 +2806,6 @@ pub mod ECDSAStakeRegistryStorage { 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) } @@ -3129,10 +3031,6 @@ pub mod ECDSAStakeRegistryStorage { 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, diff --git a/crates/utils/src/ecdsaupgradeable.rs b/crates/utils/src/middleware/ecdsaupgradeable.rs similarity index 93% rename from crates/utils/src/ecdsaupgradeable.rs rename to crates/utils/src/middleware/ecdsaupgradeable.rs index 2bb4ec3e..d61bf5c9 100644 --- a/crates/utils/src/ecdsaupgradeable.rs +++ b/crates/utils/src/middleware/ecdsaupgradeable.rs @@ -9,29 +9,34 @@ interface ECDSAUpgradeable {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ECDSAUpgradeable { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4834c367ffdb2039413b7e9d48672fd43f57e42d5671901dad059c3f5ae85f264736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c13cffea709e4fa993a49bb9b0cd01c331e918403ba59687963350ea73f47d764736f6c634300080c0033 /// ``` #[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", + 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 \x1C\x13\xCF\xFE\xA7\t\xE4\xFA\x99:I\xBB\x9B\x0C\xD0\x1C3\x1E\x91\x84\x03\xBAYhyc5\x0E\xA7?G\xD7dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4834c367ffdb2039413b7e9d48672fd43f57e42d5671901dad059c3f5ae85f264736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c13cffea709e4fa993a49bb9b0cd01c331e918403ba59687963350ea73f47d764736f6c634300080c0033 /// ``` #[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", + 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 \x1C\x13\xCF\xFE\xA7\t\xE4\xFA\x99:I\xBB\x9B\x0C\xD0\x1C3\x1E\x91\x84\x03\xBAYhyc5\x0E\xA7?G\xD7dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`ECDSAUpgradeable`](self) contract instance. diff --git a/crates/utils/src/middleware/eigenpod.rs b/crates/utils/src/middleware/eigenpod.rs new file mode 100644 index 00000000..a22977ad --- /dev/null +++ b/crates/utils/src/middleware/eigenpod.rs @@ -0,0 +1,8380 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BeaconChainProofs { + struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; } + struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; } + struct StateRootProof { bytes32 beaconStateRoot; bytes proof; } + struct ValidatorProof { bytes32[] validatorFields; bytes proof; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BeaconChainProofs { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BalanceContainerProof { + pub balanceContainerRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: BalanceContainerProof) -> Self { + (value.balanceContainerRoot, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for BalanceContainerProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + balanceContainerRoot: tuple.0, + proof: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for BalanceContainerProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for BalanceContainerProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.balanceContainerRoot), + ::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 BalanceContainerProof { + 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 BalanceContainerProof { + const NAME: &'static str = "BalanceContainerProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "BalanceContainerProof(bytes32 balanceContainerRoot,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.balanceContainerRoot, + ) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for BalanceContainerProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceContainerRoot, + ) + + ::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.balanceContainerRoot, + 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 BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BalanceProof { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + pub balanceRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + 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: BalanceProof) -> Self { + (value.pubkeyHash, value.balanceRoot, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for BalanceProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: tuple.0, + balanceRoot: tuple.1, + proof: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for BalanceProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for BalanceProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + as alloy_sol_types::SolType>::tokenize(&self.balanceRoot), + ::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 BalanceProof { + 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 BalanceProof { + const NAME: &'static str = "BalanceProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "BalanceProof(bytes32 pubkeyHash,bytes32 balanceRoot,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.pubkeyHash) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.balanceRoot) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for BalanceProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.pubkeyHash, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceRoot, + ) + + ::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.pubkeyHash, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.balanceRoot, + 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 StateRootProof { bytes32 beaconStateRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 ValidatorProof { bytes32[] validatorFields; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ValidatorProof { + pub validatorFields: + alloy::sol_types::private::Vec>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + 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: ValidatorProof) -> Self { + (value.validatorFields, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ValidatorProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorFields: tuple.0, + proof: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ValidatorProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ValidatorProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), + ::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 ValidatorProof { + 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 ValidatorProof { + const NAME: &'static str = "ValidatorProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ValidatorProof(bytes32[] validatorFields,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.validatorFields, + ) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ValidatorProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.validatorFields, + ) + + ::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.validatorFields, + 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)) + } + } + }; + 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) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IEigenPod { + type VALIDATOR_STATUS is uint8; + struct Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int128 balanceDeltasGwei; } + struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IEigenPod { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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 Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int128 balanceDeltasGwei; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Checkpoint { + pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>, + pub proofsRemaining: alloy::sol_types::private::primitives::aliases::U24, + pub podBalanceGwei: u64, + pub balanceDeltasGwei: i128, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<24>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Int<128>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U24, + u64, + i128, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Checkpoint) -> Self { + ( + value.beaconBlockRoot, + value.proofsRemaining, + value.podBalanceGwei, + value.balanceDeltasGwei, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Checkpoint { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconBlockRoot: tuple.0, + proofsRemaining: tuple.1, + podBalanceGwei: tuple.2, + balanceDeltasGwei: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Checkpoint { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Checkpoint { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.beaconBlockRoot), + as alloy_sol_types::SolType>::tokenize(&self.proofsRemaining), + as alloy_sol_types::SolType>::tokenize(&self.podBalanceGwei), + as alloy_sol_types::SolType>::tokenize(&self.balanceDeltasGwei), + ) + } + #[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 Checkpoint { + 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 Checkpoint { + const NAME: &'static str = "Checkpoint"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Checkpoint(bytes32 beaconBlockRoot,uint24 proofsRemaining,uint64 podBalanceGwei,int128 balanceDeltasGwei)", + ) + } + #[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.beaconBlockRoot, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.proofsRemaining, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.podBalanceGwei, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.balanceDeltasGwei, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Checkpoint { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.beaconBlockRoot, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.proofsRemaining, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.podBalanceGwei, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceDeltasGwei, + ) + } + #[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.beaconBlockRoot, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.proofsRemaining, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.podBalanceGwei, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.balanceDeltasGwei, + 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 ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ValidatorInfo { + pub validatorIndex: u64, + pub restakedBalanceGwei: u64, + pub lastCheckpointedAt: u64, + pub status: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.lastCheckpointedAt, + value.status, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ValidatorInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorIndex: tuple.0, + restakedBalanceGwei: tuple.1, + lastCheckpointedAt: 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.lastCheckpointedAt, + ), + ::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 lastCheckpointedAt,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.lastCheckpointedAt, + ) + .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.lastCheckpointedAt, + ) + + ::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.lastCheckpointedAt, + 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)) + } + } + }; + 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) + } + /**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, + } + } + /// 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) + } + } + /// 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) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BeaconChainProofs { + struct BalanceContainerProof { + bytes32 balanceContainerRoot; + bytes proof; + } + struct BalanceProof { + bytes32 pubkeyHash; + bytes32 balanceRoot; + bytes proof; + } + struct StateRootProof { + bytes32 beaconStateRoot; + bytes proof; + } + struct ValidatorProof { + bytes32[] validatorFields; + bytes proof; + } +} + +library IEigenPod { + type VALIDATOR_STATUS is uint8; + struct Checkpoint { + bytes32 beaconBlockRoot; + uint24 proofsRemaining; + uint64 podBalanceGwei; + int128 balanceDeltasGwei; + } + struct ValidatorInfo { + uint64 validatorIndex; + uint64 restakedBalanceGwei; + uint64 lastCheckpointedAt; + VALIDATOR_STATUS status; + } +} + +interface EigenPod { + event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount); + event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei); + event EigenPodStaked(bytes pubkey); + event Initialized(uint8 version); + event NonBeaconChainETHReceived(uint256 amountReceived); + event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter); + event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount); + event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei); + event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + event ValidatorRestaked(uint40 validatorIndex); + event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + + constructor(address _ethPOS, address _eigenPodManager, uint64 _GENESIS_TIME); + + receive() external payable; + + function GENESIS_TIME() external view returns (uint64); + function activeValidatorCount() external view returns (uint256); + function checkpointBalanceExitedGwei(uint64) external view returns (uint64); + function currentCheckpoint() external view returns (IEigenPod.Checkpoint memory); + function currentCheckpointTimestamp() external view returns (uint64); + function eigenPodManager() external view returns (address); + function ethPOS() external view returns (address); + function getParentBlockRoot(uint64 timestamp) external view returns (bytes32); + function initialize(address _podOwner) external; + function lastCheckpointTimestamp() external view returns (uint64); + function podOwner() external view returns (address); + function proofSubmitter() external view returns (address); + function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external; + function setProofSubmitter(address newProofSubmitter) external; + function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + function startCheckpoint(bool revertIfNoBalance) external; + function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (IEigenPod.ValidatorInfo memory); + function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (IEigenPod.ValidatorInfo memory); + function validatorStatus(bytes memory validatorPubkey) external view returns (IEigenPod.VALIDATOR_STATUS); + function validatorStatus(bytes32 pubkeyHash) external view returns (IEigenPod.VALIDATOR_STATUS); + function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external; + function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external; + function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; + function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) external; + function withdrawableRestakedExecutionLayerGwei() external view returns (uint64); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_ethPOS", + "type": "address", + "internalType": "contract IETHPOSDeposit" + }, + { + "name": "_eigenPodManager", + "type": "address", + "internalType": "contract IEigenPodManager" + }, + { + "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": "activeValidatorCount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "checkpointBalanceExitedGwei", + "inputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentCheckpoint", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.Checkpoint", + "components": [ + { + "name": "beaconBlockRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proofsRemaining", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "podBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "balanceDeltasGwei", + "type": "int128", + "internalType": "int128" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentCheckpointTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "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": "getParentBlockRoot", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_podOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "lastCheckpointTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "podOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proofSubmitter", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "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": "setProofSubmitter", + "inputs": [ + { + "name": "newProofSubmitter", + "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": "startCheckpoint", + "inputs": [ + { + "name": "revertIfNoBalance", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "lastCheckpointedAt", + "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": "lastCheckpointedAt", + "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": "verifyCheckpointProofs", + "inputs": [ + { + "name": "balanceContainerProof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.BalanceContainerProof", + "components": [ + { + "name": "balanceContainerRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "proofs", + "type": "tuple[]", + "internalType": "struct BeaconChainProofs.BalanceProof[]", + "components": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "balanceRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyStaleBalance", + "inputs": [ + { + "name": "beaconTimestamp", + "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": "proof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.ValidatorProof", + "components": [ + { + "name": "validatorFields", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyWithdrawalCredentials", + "inputs": [ + { + "name": "beaconTimestamp", + "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": "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": "CheckpointCreated", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "beaconBlockRoot", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "validatorCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "CheckpointFinalized", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "totalShareDeltaWei", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EigenPodStaked", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "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": "ProofSubmitterUpdated", + "inputs": [ + { + "name": "prevProofSubmitter", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newProofSubmitter", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "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": "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": "ValidatorCheckpointed", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "validatorIndex", + "type": "uint40", + "indexed": true, + "internalType": "uint40" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorRestaked", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorWithdrawn", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "validatorIndex", + "type": "uint40", + "indexed": true, + "internalType": "uint40" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod EigenPod { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033 + /// ``` + #[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\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `CheckpointCreated(uint64,bytes32,uint256)` and selector `0x575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076`. + ```solidity + event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct CheckpointCreated { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub validatorCount: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for CheckpointCreated { + 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<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "CheckpointCreated(uint64,bytes32,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8, 164u8, + 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8, 244u8, 183u8, + 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + beaconBlockRoot: topics.2, + validatorCount: 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.validatorCount, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.clone(), + self.beaconBlockRoot.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.beaconBlockRoot); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for CheckpointCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&CheckpointCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &CheckpointCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `CheckpointFinalized(uint64,int256)` and selector `0x525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44`. + ```solidity + event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct CheckpointFinalized { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub totalShareDeltaWei: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for CheckpointFinalized { + 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::Uint<64>, + ); + const SIGNATURE: &'static str = "CheckpointFinalized(uint64,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8, 111u8, + 100u8, 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8, 59u8, 207u8, + 220u8, 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + totalShareDeltaWei: 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.totalShareDeltaWei, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.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.checkpointTimestamp, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for CheckpointFinalized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&CheckpointFinalized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &CheckpointFinalized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `EigenPodStaked(bytes)` and selector `0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23`. + ```solidity + event EigenPodStaked(bytes pubkey); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `NonBeaconChainETHReceived(uint256)` and selector `0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49`. + ```solidity + event NonBeaconChainETHReceived(uint256 amountReceived); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `ProofSubmitterUpdated(address,address)` and selector `0xfb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac`. + ```solidity + event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ProofSubmitterUpdated { + #[allow(missing_docs)] + pub prevProofSubmitter: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newProofSubmitter: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProofSubmitterUpdated { + 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 = "ProofSubmitterUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8, 186u8, + 37u8, 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8, 99u8, 205u8, + 202u8, 74u8, 150u8, 154u8, 209u8, 154u8, 94u8, 172u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevProofSubmitter: data.0, + newProofSubmitter: 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.prevProofSubmitter, + ), + ::tokenize( + &self.newProofSubmitter, + ), + ) + } + #[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 ProofSubmitterUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProofSubmitterUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ProofSubmitterUpdated) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `ValidatorCheckpointed(uint64,uint40)` and selector `0xa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f`. + ```solidity + event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ValidatorCheckpointed { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ValidatorCheckpointed { + 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<64>, + alloy::sol_types::sol_data::Uint<40>, + ); + const SIGNATURE: &'static str = "ValidatorCheckpointed(uint64,uint40)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8, 172u8, + 236u8, 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8, 245u8, 244u8, + 202u8, 227u8, 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + validatorIndex: 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.checkpointTimestamp.clone(), + self.validatorIndex.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ValidatorCheckpointed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ValidatorCheckpointed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ValidatorCheckpointed) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**Event with signature `ValidatorWithdrawn(uint64,uint40)` and selector `0x2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a`. + ```solidity + event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ValidatorWithdrawn { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ValidatorWithdrawn { + 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<64>, + alloy::sol_types::sol_data::Uint<40>, + ); + const SIGNATURE: &'static str = "ValidatorWithdrawn(uint64,uint40)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8, 44u8, + 35u8, 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8, 230u8, 86u8, + 62u8, 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + validatorIndex: 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.checkpointTimestamp.clone(), + self.validatorIndex.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ValidatorWithdrawn { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ValidatorWithdrawn> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ValidatorWithdrawn) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _ethPOS, address _eigenPodManager, uint64 _GENESIS_TIME); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub _ethPOS: alloy::sol_types::private::Address, + pub _eigenPodManager: alloy::sol_types::private::Address, + pub _GENESIS_TIME: u64, + } + 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<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + 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: constructorCall) -> Self { + (value._ethPOS, value._eigenPodManager, value._GENESIS_TIME) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _ethPOS: tuple.0, + _eigenPodManager: tuple.1, + _GENESIS_TIME: 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::Uint<64>, + ); + 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._ethPOS, + ), + ::tokenize( + &self._eigenPodManager, + ), + as alloy_sol_types::SolType>::tokenize( + &self._GENESIS_TIME, + ), + ) + } + } + }; + /**Function with signature `GENESIS_TIME()` and selector `0xf2882461`. + ```solidity + function GENESIS_TIME() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct GENESIS_TIMECall {} + ///Container type for the return parameters of the [`GENESIS_TIME()`](GENESIS_TIMECall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct GENESIS_TIMEReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TIMECall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for GENESIS_TIMECall { + 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: GENESIS_TIMEReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for GENESIS_TIMEReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for GENESIS_TIMECall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = GENESIS_TIMEReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "GENESIS_TIME()"; + const SELECTOR: [u8; 4] = [242u8, 136u8, 36u8, 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 `activeValidatorCount()` and selector `0x2340e8d3`. + ```solidity + function activeValidatorCount() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct activeValidatorCountCall {} + ///Container type for the return parameters of the [`activeValidatorCount()`](activeValidatorCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct activeValidatorCountReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: activeValidatorCountCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activeValidatorCountCall { + 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: activeValidatorCountReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activeValidatorCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for activeValidatorCountCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = activeValidatorCountReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "activeValidatorCount()"; + const SELECTOR: [u8; 4] = [35u8, 64u8, 232u8, 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 `checkpointBalanceExitedGwei(uint64)` and selector `0x52396a59`. + ```solidity + function checkpointBalanceExitedGwei(uint64) external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkpointBalanceExitedGweiCall { + pub _0: u64, + } + ///Container type for the return parameters of the [`checkpointBalanceExitedGwei(uint64)`](checkpointBalanceExitedGweiCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkpointBalanceExitedGweiReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: checkpointBalanceExitedGweiCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkpointBalanceExitedGweiCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[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: checkpointBalanceExitedGweiReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkpointBalanceExitedGweiReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for checkpointBalanceExitedGweiCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = checkpointBalanceExitedGweiReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "checkpointBalanceExitedGwei(uint64)"; + const SELECTOR: [u8; 4] = [82u8, 57u8, 106u8, 89u8]; + #[inline] + fn new<'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 `currentCheckpoint()` and selector `0x47d28372`. + ```solidity + function currentCheckpoint() external view returns (IEigenPod.Checkpoint memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointCall {} + ///Container type for the return parameters of the [`currentCheckpoint()`](currentCheckpointCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IEigenPod::Checkpoint,); + #[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: currentCheckpointReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentCheckpointCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentCheckpointReturn; + type ReturnTuple<'a> = (IEigenPod::Checkpoint,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentCheckpoint()"; + const SELECTOR: [u8; 4] = [71u8, 210u8, 131u8, 114u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `currentCheckpointTimestamp()` and selector `0x42ecff2a`. + ```solidity + function currentCheckpointTimestamp() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointTimestampCall {} + ///Container type for the return parameters of the [`currentCheckpointTimestamp()`](currentCheckpointTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointTimestampReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointTimestampCall { + 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: currentCheckpointTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentCheckpointTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentCheckpointTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentCheckpointTimestamp()"; + const SELECTOR: [u8; 4] = [66u8, 236u8, 255u8, 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 `eigenPodManager()` and selector `0x4665bcda`. + ```solidity + function eigenPodManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `ethPOS()` and selector `0x74cdd798`. + ```solidity + function ethPOS() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSCall {} + ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `getParentBlockRoot(uint64)` and selector `0x6c0d2d5a`. + ```solidity + function getParentBlockRoot(uint64 timestamp) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getParentBlockRootCall { + pub timestamp: u64, + } + ///Container type for the return parameters of the [`getParentBlockRoot(uint64)`](getParentBlockRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getParentBlockRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getParentBlockRootCall) -> Self { + (value.timestamp,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getParentBlockRootCall { + 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: getParentBlockRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getParentBlockRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getParentBlockRootCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getParentBlockRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getParentBlockRoot(uint64)"; + const SELECTOR: [u8; 4] = [108u8, 13u8, 45u8, 90u8]; + #[inline] + fn new<'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 `initialize(address)` and selector `0xc4d66de8`. + ```solidity + function initialize(address _podOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + pub _podOwner: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._podOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _podOwner: 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._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 `lastCheckpointTimestamp()` and selector `0xee94d67c`. + ```solidity + function lastCheckpointTimestamp() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct lastCheckpointTimestampCall {} + ///Container type for the return parameters of the [`lastCheckpointTimestamp()`](lastCheckpointTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct lastCheckpointTimestampReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastCheckpointTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastCheckpointTimestampCall { + 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: lastCheckpointTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastCheckpointTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for lastCheckpointTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = lastCheckpointTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "lastCheckpointTimestamp()"; + const SELECTOR: [u8; 4] = [238u8, 148u8, 214u8, 124u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerCall {} + ///Container type for the return parameters of the [`podOwner()`](podOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `proofSubmitter()` and selector `0x58753357`. + ```solidity + function proofSubmitter() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proofSubmitterCall {} + ///Container type for the return parameters of the [`proofSubmitter()`](proofSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proofSubmitterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proofSubmitterCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proofSubmitterCall { + 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: proofSubmitterReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proofSubmitterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for proofSubmitterCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = proofSubmitterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "proofSubmitter()"; + const SELECTOR: [u8; 4] = [88u8, 117u8, 51u8, 87u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recoverTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setProofSubmitter(address)` and selector `0xd06d5587`. + ```solidity + function setProofSubmitter(address newProofSubmitter) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setProofSubmitterCall { + pub newProofSubmitter: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProofSubmitter(address)`](setProofSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setProofSubmitterReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setProofSubmitterCall) -> Self { + (value.newProofSubmitter,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setProofSubmitterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newProofSubmitter: 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: setProofSubmitterReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setProofSubmitterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProofSubmitterCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProofSubmitterReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProofSubmitter(address)"; + const SELECTOR: [u8; 4] = [208u8, 109u8, 85u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newProofSubmitter, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `startCheckpoint(bool)` and selector `0x88676cad`. + ```solidity + function startCheckpoint(bool revertIfNoBalance) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct startCheckpointCall { + pub revertIfNoBalance: bool, + } + ///Container type for the return parameters of the [`startCheckpoint(bool)`](startCheckpointCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct startCheckpointReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: startCheckpointCall) -> Self { + (value.revertIfNoBalance,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for startCheckpointCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + revertIfNoBalance: 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: startCheckpointReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for startCheckpointReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for startCheckpointCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bool,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = startCheckpointReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "startCheckpoint(bool)"; + const SELECTOR: [u8; 4] = [136u8, 103u8, 108u8, 173u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.revertIfNoBalance, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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 (IEigenPod.ValidatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorPubkeyHashToInfoReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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> = (IEigenPod::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> = (IEigenPod::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 (IEigenPod.ValidatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorPubkeyToInfoReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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> = (IEigenPod::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> = (IEigenPod::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 (IEigenPod.VALIDATOR_STATUS); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorStatus_0Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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> = (IEigenPod::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> = (IEigenPod::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 (IEigenPod.VALIDATOR_STATUS); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorStatus_1Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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> = (IEigenPod::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> = (IEigenPod::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 `verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])` and selector `0xf074ba62`. + ```solidity + function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyCheckpointProofsCall { + pub balanceContainerProof: + ::RustType, + pub proofs: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])`](verifyCheckpointProofsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyCheckpointProofsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + BeaconChainProofs::BalanceContainerProof, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + 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: verifyCheckpointProofsCall) -> Self { + (value.balanceContainerProof, value.proofs) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyCheckpointProofsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + balanceContainerProof: tuple.0, + proofs: 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: verifyCheckpointProofsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyCheckpointProofsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyCheckpointProofsCall { + type Parameters<'a> = ( + BeaconChainProofs::BalanceContainerProof, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyCheckpointProofsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])"; + const SELECTOR: [u8; 4] = [240u8, 116u8, 186u8, 98u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.balanceContainerProof, + ), + as alloy_sol_types::SolType>::tokenize(&self.proofs), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))` and selector `0x039157d2`. + ```solidity + function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyStaleBalanceCall { + pub beaconTimestamp: u64, + pub stateRootProof: + ::RustType, + pub proof: ::RustType, + } + ///Container type for the return parameters of the [`verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))`](verifyStaleBalanceCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyStaleBalanceReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + BeaconChainProofs::ValidatorProof, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + ::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: verifyStaleBalanceCall) -> Self { + (value.beaconTimestamp, value.stateRootProof, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyStaleBalanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconTimestamp: tuple.0, + stateRootProof: tuple.1, + proof: 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: verifyStaleBalanceReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyStaleBalanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyStaleBalanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + BeaconChainProofs::ValidatorProof, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyStaleBalanceReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))"; + const SELECTOR: [u8; 4] = [3u8, 145u8, 87u8, 210u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.beaconTimestamp, + ), + ::tokenize( + &self.stateRootProof, + ), + ::tokenize( + &self.proof, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyWithdrawalCredentialsCall { + pub beaconTimestamp: u64, + pub stateRootProof: + ::RustType, + pub validatorIndices: + alloy::sol_types::private::Vec, + 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 [`verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])`](verifyWithdrawalCredentialsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyWithdrawalCredentialsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.beaconTimestamp, + value.stateRootProof, + value.validatorIndices, + value.validatorFieldsProofs, + value.validatorFields, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyWithdrawalCredentialsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconTimestamp: tuple.0, + stateRootProof: tuple.1, + validatorIndices: 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: 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.beaconTimestamp), + ::tokenize( + &self.stateRootProof, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorIndices), + 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 `withdrawRestakedBeaconChainETH(address,uint256)` and selector `0xc4907442`. + ```solidity + function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawRestakedBeaconChainETHCall { + pub recipient: alloy::sol_types::private::Address, + pub amountWei: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawRestakedBeaconChainETHReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.amountWei) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawRestakedBeaconChainETHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + recipient: tuple.0, + amountWei: 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.amountWei, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawableRestakedExecutionLayerGweiCall {} + ///Container type for the return parameters of the [`withdrawableRestakedExecutionLayerGwei()`](withdrawableRestakedExecutionLayerGweiCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawableRestakedExecutionLayerGweiReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 [`EigenPod`](self) function calls. + pub enum EigenPodCalls { + GENESIS_TIME(GENESIS_TIMECall), + activeValidatorCount(activeValidatorCountCall), + checkpointBalanceExitedGwei(checkpointBalanceExitedGweiCall), + currentCheckpoint(currentCheckpointCall), + currentCheckpointTimestamp(currentCheckpointTimestampCall), + eigenPodManager(eigenPodManagerCall), + ethPOS(ethPOSCall), + getParentBlockRoot(getParentBlockRootCall), + initialize(initializeCall), + lastCheckpointTimestamp(lastCheckpointTimestampCall), + podOwner(podOwnerCall), + proofSubmitter(proofSubmitterCall), + recoverTokens(recoverTokensCall), + setProofSubmitter(setProofSubmitterCall), + stake(stakeCall), + startCheckpoint(startCheckpointCall), + validatorPubkeyHashToInfo(validatorPubkeyHashToInfoCall), + validatorPubkeyToInfo(validatorPubkeyToInfoCall), + validatorStatus_0(validatorStatus_0Call), + validatorStatus_1(validatorStatus_1Call), + verifyCheckpointProofs(verifyCheckpointProofsCall), + verifyStaleBalance(verifyStaleBalanceCall), + verifyWithdrawalCredentials(verifyWithdrawalCredentialsCall), + withdrawRestakedBeaconChainETH(withdrawRestakedBeaconChainETHCall), + withdrawableRestakedExecutionLayerGwei(withdrawableRestakedExecutionLayerGweiCall), + } + #[automatically_derived] + impl EigenPodCalls { + /// 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, 145u8, 87u8, 210u8], + [11u8, 24u8, 255u8, 102u8], + [35u8, 64u8, 232u8, 211u8], + [52u8, 116u8, 170u8, 22u8], + [63u8, 101u8, 207u8, 25u8], + [66u8, 236u8, 255u8, 42u8], + [70u8, 101u8, 188u8, 218u8], + [71u8, 210u8, 131u8, 114u8], + [82u8, 57u8, 106u8, 89u8], + [88u8, 117u8, 51u8, 87u8], + [88u8, 234u8, 238u8, 121u8], + [108u8, 13u8, 45u8, 90u8], + [111u8, 205u8, 14u8, 83u8], + [116u8, 57u8, 132u8, 31u8], + [116u8, 205u8, 215u8, 152u8], + [136u8, 103u8, 108u8, 173u8], + [155u8, 78u8, 70u8, 52u8], + [181u8, 34u8, 83u8, 138u8], + [196u8, 144u8, 116u8, 66u8], + [196u8, 214u8, 109u8, 232u8], + [208u8, 109u8, 85u8, 135u8], + [221u8, 163u8, 52u8, 108u8], + [238u8, 148u8, 214u8, 124u8], + [240u8, 116u8, 186u8, 98u8], + [242u8, 136u8, 36u8, 97u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EigenPodCalls { + const NAME: &'static str = "EigenPodCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 25usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::GENESIS_TIME(_) => { + ::SELECTOR + } + Self::activeValidatorCount(_) => { + ::SELECTOR + } + Self::checkpointBalanceExitedGwei(_) => { + ::SELECTOR + } + Self::currentCheckpoint(_) => { + ::SELECTOR + } + Self::currentCheckpointTimestamp(_) => { + ::SELECTOR + } + Self::eigenPodManager(_) => { + ::SELECTOR + } + Self::ethPOS(_) => ::SELECTOR, + Self::getParentBlockRoot(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::lastCheckpointTimestamp(_) => { + ::SELECTOR + } + Self::podOwner(_) => ::SELECTOR, + Self::proofSubmitter(_) => { + ::SELECTOR + } + Self::recoverTokens(_) => { + ::SELECTOR + } + Self::setProofSubmitter(_) => { + ::SELECTOR + } + Self::stake(_) => ::SELECTOR, + Self::startCheckpoint(_) => { + ::SELECTOR + } + Self::validatorPubkeyHashToInfo(_) => { + ::SELECTOR + } + Self::validatorPubkeyToInfo(_) => { + ::SELECTOR + } + Self::validatorStatus_0(_) => { + ::SELECTOR + } + Self::validatorStatus_1(_) => { + ::SELECTOR + } + Self::verifyCheckpointProofs(_) => { + ::SELECTOR + } + Self::verifyStaleBalance(_) => { + ::SELECTOR + } + Self::verifyWithdrawalCredentials(_) => { + ::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 verifyStaleBalance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::verifyStaleBalance) + } + verifyStaleBalance + }, + { + fn podOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodCalls::podOwner) + } + podOwner + }, + { + fn activeValidatorCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::activeValidatorCount) + } + activeValidatorCount + }, + { + fn withdrawableRestakedExecutionLayerGwei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodCalls::withdrawableRestakedExecutionLayerGwei) + } + withdrawableRestakedExecutionLayerGwei + }, + { + fn verifyWithdrawalCredentials( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodCalls::verifyWithdrawalCredentials) + } + verifyWithdrawalCredentials + }, + { + fn currentCheckpointTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodCalls::currentCheckpointTimestamp) + } + currentCheckpointTimestamp + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn currentCheckpoint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::currentCheckpoint) + } + currentCheckpoint + }, + { + fn checkpointBalanceExitedGwei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodCalls::checkpointBalanceExitedGwei) + } + checkpointBalanceExitedGwei + }, + { + fn proofSubmitter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::proofSubmitter) + } + proofSubmitter + }, + { + fn validatorStatus_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::validatorStatus_0) + } + validatorStatus_0 + }, + { + fn getParentBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::getParentBlockRoot) + } + getParentBlockRoot + }, + { + fn validatorPubkeyHashToInfo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::validatorPubkeyHashToInfo) + } + validatorPubkeyHashToInfo + }, + { + fn validatorStatus_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::validatorStatus_1) + } + validatorStatus_1 + }, + { + fn ethPOS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodCalls::ethPOS) + } + ethPOS + }, + { + fn startCheckpoint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::startCheckpoint) + } + startCheckpoint + }, + { + fn stake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodCalls::stake) + } + stake + }, + { + fn validatorPubkeyToInfo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::validatorPubkeyToInfo) + } + validatorPubkeyToInfo + }, + { + fn withdrawRestakedBeaconChainETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodCalls::withdrawRestakedBeaconChainETH) + } + withdrawRestakedBeaconChainETH + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodCalls::initialize) + } + initialize + }, + { + fn setProofSubmitter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::setProofSubmitter) + } + setProofSubmitter + }, + { + fn recoverTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::recoverTokens) + } + recoverTokens + }, + { + fn lastCheckpointTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::lastCheckpointTimestamp) + } + lastCheckpointTimestamp + }, + { + fn verifyCheckpointProofs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::verifyCheckpointProofs) + } + verifyCheckpointProofs + }, + { + fn GENESIS_TIME( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodCalls::GENESIS_TIME) + } + GENESIS_TIME + }, + ]; + 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::GENESIS_TIME(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::activeValidatorCount(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::checkpointBalanceExitedGwei(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentCheckpoint(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentCheckpointTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ethPOS(inner) => { + ::abi_encoded_size(inner) + } + Self::getParentBlockRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::lastCheckpointTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::podOwner(inner) => { + ::abi_encoded_size(inner) + } + Self::proofSubmitter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recoverTokens(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setProofSubmitter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stake(inner) => { + ::abi_encoded_size(inner) + } + Self::startCheckpoint(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::verifyCheckpointProofs(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyStaleBalance(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyWithdrawalCredentials(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::GENESIS_TIME(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::activeValidatorCount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::checkpointBalanceExitedGwei(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currentCheckpoint(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currentCheckpointTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ethPOS(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getParentBlockRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::lastCheckpointTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::podOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::proofSubmitter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recoverTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setProofSubmitter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stake(inner) => { + ::abi_encode_raw(inner, out) + } + Self::startCheckpoint(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::verifyCheckpointProofs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyStaleBalance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyWithdrawalCredentials(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 [`EigenPod`](self) events. + pub enum EigenPodEvents { + CheckpointCreated(CheckpointCreated), + CheckpointFinalized(CheckpointFinalized), + EigenPodStaked(EigenPodStaked), + Initialized(Initialized), + NonBeaconChainETHReceived(NonBeaconChainETHReceived), + ProofSubmitterUpdated(ProofSubmitterUpdated), + RestakedBeaconChainETHWithdrawn(RestakedBeaconChainETHWithdrawn), + ValidatorBalanceUpdated(ValidatorBalanceUpdated), + ValidatorCheckpointed(ValidatorCheckpointed), + ValidatorRestaked(ValidatorRestaked), + ValidatorWithdrawn(ValidatorWithdrawn), + } + #[automatically_derived] + impl EigenPodEvents { + /// 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, + ], + [ + 42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8, 44u8, 35u8, + 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8, 230u8, 86u8, 62u8, + 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8, + ], + [ + 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, + ], + [ + 82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8, 111u8, 100u8, + 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8, 59u8, 207u8, 220u8, + 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8, + ], + [ + 87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8, 164u8, + 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8, 244u8, 183u8, + 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8, + ], + [ + 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, + ], + [ + 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, + ], + [ + 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, + ], + [ + 169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8, 172u8, 236u8, + 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8, 245u8, 244u8, 202u8, 227u8, + 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8, + ], + [ + 251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8, 186u8, 37u8, + 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8, 99u8, 205u8, 202u8, 74u8, + 150u8, 154u8, 209u8, 154u8, 94u8, 172u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for EigenPodEvents { + const NAME: &'static str = "EigenPodEvents"; + 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::CheckpointCreated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::CheckpointFinalized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EigenPodStaked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::NonBeaconChainETHReceived) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ProofSubmitterUpdated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RestakedBeaconChainETHWithdrawn) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorBalanceUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorCheckpointed) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorRestaked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorWithdrawn) + } + _ => 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 EigenPodEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::CheckpointCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::CheckpointFinalized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::EigenPodStaked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NonBeaconChainETHReceived(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProofSubmitterUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RestakedBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorBalanceUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorCheckpointed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorRestaked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::CheckpointCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::CheckpointFinalized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::EigenPodStaked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NonBeaconChainETHReceived(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProofSubmitterUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RestakedBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorBalanceUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorCheckpointed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorRestaked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EigenPod`](self) contract instance. + + See the [wrapper's documentation](`EigenPodInstance`) 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, + ) -> EigenPodInstance { + EigenPodInstance::::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, + _ethPOS: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _GENESIS_TIME: u64, + ) -> impl ::core::future::Future>> + { + EigenPodInstance::::deploy(provider, _ethPOS, _eigenPodManager, _GENESIS_TIME) + } + /**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, + _ethPOS: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _GENESIS_TIME: u64, + ) -> alloy_contract::RawCallBuilder { + EigenPodInstance::::deploy_builder( + provider, + _ethPOS, + _eigenPodManager, + _GENESIS_TIME, + ) + } + /**A [`EigenPod`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EigenPod`](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 EigenPodInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EigenPodInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EigenPodInstance") + .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, + > EigenPodInstance + { + /**Creates a new wrapper around an on-chain [`EigenPod`](self) contract instance. + + See the [wrapper's documentation](`EigenPodInstance`) 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, + _ethPOS: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _GENESIS_TIME: u64, + ) -> alloy_contract::Result> { + let call_builder = + Self::deploy_builder(provider, _ethPOS, _eigenPodManager, _GENESIS_TIME); + 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, + _ethPOS: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _GENESIS_TIME: u64, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _ethPOS, + _eigenPodManager, + _GENESIS_TIME, + })[..], + ] + .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 EigenPodInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EigenPodInstance { + EigenPodInstance { + 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, + > EigenPodInstance + { + /// 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 [`GENESIS_TIME`] function. + pub fn GENESIS_TIME(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&GENESIS_TIMECall {}) + } + ///Creates a new call builder for the [`activeValidatorCount`] function. + pub fn activeValidatorCount( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&activeValidatorCountCall {}) + } + ///Creates a new call builder for the [`checkpointBalanceExitedGwei`] function. + pub fn checkpointBalanceExitedGwei( + &self, + _0: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&checkpointBalanceExitedGweiCall { _0 }) + } + ///Creates a new call builder for the [`currentCheckpoint`] function. + pub fn currentCheckpoint( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tCheckpointCall {}) + } + ///Creates a new call builder for the [`currentCheckpointTimestamp`] function. + pub fn currentCheckpointTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tCheckpointTimestampCall {}) + } + ///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 [`ethPOS`] function. + pub fn ethPOS(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(ðPOSCall {}) + } + ///Creates a new call builder for the [`getParentBlockRoot`] function. + pub fn getParentBlockRoot( + &self, + timestamp: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getParentBlockRootCall { timestamp }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _podOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { _podOwner }) + } + ///Creates a new call builder for the [`lastCheckpointTimestamp`] function. + pub fn lastCheckpointTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&lastCheckpointTimestampCall {}) + } + ///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 [`proofSubmitter`] function. + pub fn proofSubmitter( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&proofSubmitterCall {}) + } + ///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 [`setProofSubmitter`] function. + pub fn setProofSubmitter( + &self, + newProofSubmitter: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setProofSubmitterCall { newProofSubmitter }) + } + ///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 [`startCheckpoint`] function. + pub fn startCheckpoint( + &self, + revertIfNoBalance: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&startCheckpointCall { revertIfNoBalance }) + } + ///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 [`verifyCheckpointProofs`] function. + pub fn verifyCheckpointProofs( + &self, + balanceContainerProof: ::RustType, + proofs: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyCheckpointProofsCall { + balanceContainerProof, + proofs, + }) + } + ///Creates a new call builder for the [`verifyStaleBalance`] function. + pub fn verifyStaleBalance( + &self, + beaconTimestamp: u64, + stateRootProof: ::RustType, + proof: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyStaleBalanceCall { + beaconTimestamp, + stateRootProof, + proof, + }) + } + ///Creates a new call builder for the [`verifyWithdrawalCredentials`] function. + pub fn verifyWithdrawalCredentials( + &self, + beaconTimestamp: u64, + stateRootProof: ::RustType, + validatorIndices: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U40, + >, + validatorFieldsProofs: alloy::sol_types::private::Vec, + validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyWithdrawalCredentialsCall { + beaconTimestamp, + stateRootProof, + validatorIndices, + validatorFieldsProofs, + validatorFields, + }) + } + ///Creates a new call builder for the [`withdrawRestakedBeaconChainETH`] function. + pub fn withdrawRestakedBeaconChainETH( + &self, + recipient: alloy::sol_types::private::Address, + amountWei: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawRestakedBeaconChainETHCall { + recipient, + amountWei, + }) + } + ///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, + > EigenPodInstance + { + /// 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 [`CheckpointCreated`] event. + pub fn CheckpointCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`CheckpointFinalized`] event. + pub fn CheckpointFinalized_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///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 [`Initialized`] event. + pub fn Initialized_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 [`ProofSubmitterUpdated`] event. + pub fn ProofSubmitterUpdated_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 [`ValidatorBalanceUpdated`] event. + pub fn ValidatorBalanceUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ValidatorCheckpointed`] event. + pub fn ValidatorCheckpointed_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::() + } + ///Creates a new event filter for the [`ValidatorWithdrawn`] event. + pub fn ValidatorWithdrawn_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/eigenpodmanager.rs b/crates/utils/src/middleware/eigenpodmanager.rs new file mode 100644 index 00000000..ee015ee2 --- /dev/null +++ b/crates/utils/src/middleware/eigenpodmanager.rs @@ -0,0 +1,6714 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface EigenPodManager { + event BeaconChainETHDeposited(address indexed podOwner, uint256 amount); + event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot); + event Initialized(uint8 version); + event NewTotalShares(address indexed podOwner, int256 newTotalShares); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + 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); + + constructor(address _ethPOS, address _eigenPodBeacon, address _strategyManager, address _slasher, address _delegationManager); + + function addShares(address podOwner, uint256 shares) external returns (uint256); + function beaconChainETHStrategy() external view returns (address); + function createPod() external returns (address); + function delegationManager() external view returns (address); + function eigenPodBeacon() external view returns (address); + function ethPOS() external view returns (address); + function getPod(address podOwner) external view returns (address); + function hasPod(address podOwner) external view returns (bool); + function initialize(address initialOwner, address _pauserRegistry, uint256 _initPausedStatus) external; + function numPods() external view returns (uint256); + function owner() external view returns (address); + function ownerToPod(address) 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) external view returns (int256); + function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) external; + function removeShares(address podOwner, uint256 shares) external; + function renounceOwnership() 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 transferOwnership(address newOwner) external; + function unpause(uint256 newPausedStatus) external; + function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "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": "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": "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": "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": "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": "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": "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": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NewTotalShares", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newTotalShares", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "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 + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod EigenPodManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c0033 + /// ``` + #[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\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003", + ); + /**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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `NewTotalShares(address,int256)` and selector `0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098`. + ```solidity + event NewTotalShares(address indexed podOwner, int256 newTotalShares); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct NewTotalShares { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newTotalShares: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NewTotalShares { + 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 = "NewTotalShares(address,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, + 154u8, 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, + 67u8, 46u8, 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + podOwner: topics.1, + newTotalShares: 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.newTotalShares, + ), + ) + } + #[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 NewTotalShares { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NewTotalShares> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NewTotalShares) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 _ethPOS, address _eigenPodBeacon, address _strategyManager, address _slasher, address _delegationManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub _ethPOS: alloy::sol_types::private::Address, + pub _eigenPodBeacon: alloy::sol_types::private::Address, + pub _strategyManager: alloy::sol_types::private::Address, + pub _slasher: 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, + 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, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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._ethPOS, + value._eigenPodBeacon, + value._strategyManager, + value._slasher, + value._delegationManager, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _ethPOS: tuple.0, + _eigenPodBeacon: tuple.1, + _strategyManager: tuple.2, + _slasher: tuple.3, + _delegationManager: tuple.4, + } + } + } + } + #[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, + 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._ethPOS, + ), + ::tokenize( + &self._eigenPodBeacon, + ), + ::tokenize( + &self._strategyManager, + ), + ::tokenize( + &self._slasher, + ), + ::tokenize( + &self._delegationManager, + ), + ) + } + } + }; + /**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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `createPod()` and selector `0x84d81062`. + ```solidity + function createPod() external returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createPodCall {} + ///Container type for the return parameters of the [`createPod()`](createPodCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `delegationManager()` and selector `0xea4d3c9b`. + ```solidity + function delegationManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationManagerCall {} + ///Container type for the return parameters of the [`delegationManager()`](delegationManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationManagerCall { + 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: delegationManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegationManager()"; + const SELECTOR: [u8; 4] = [234u8, 77u8, 60u8, 155u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodBeaconCall {} + ///Container type for the return parameters of the [`eigenPodBeacon()`](eigenPodBeaconCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodBeaconReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSCall {} + ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `getPod(address)` and selector `0xa38406a3`. + ```solidity + function getPod(address podOwner) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasPodReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `initialize(address,address,uint256)` and selector `0x1794bb3c`. + ```solidity + function initialize(address initialOwner, address _pauserRegistry, uint256 _initPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + pub initialOwner: alloy::sol_types::private::Address, + pub _pauserRegistry: alloy::sol_types::private::Address, + pub _initPausedStatus: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._initPausedStatus, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + initialOwner: tuple.0, + _pauserRegistry: tuple.1, + _initPausedStatus: 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._initPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numPodsCall {} + ///Container type for the return parameters of the [`numPods()`](numPodsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numPodsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `ownerToPod(address)` and selector `0x9ba06275`. + ```solidity + function ownerToPod(address) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerToPodCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerToPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerToPodCall { + 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: 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._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 `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) external view returns (int256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerSharesCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for podOwnerSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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 `recordBeaconChainETHBalanceUpdate(address,int256)` and selector `0xc2c51c40`. + ```solidity + function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)` and selector `0x387b1300`. + ```solidity + function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`EigenPodManager`](self) function calls. + pub enum EigenPodManagerCalls { + addShares(addSharesCall), + beaconChainETHStrategy(beaconChainETHStrategyCall), + createPod(createPodCall), + delegationManager(delegationManagerCall), + eigenPodBeacon(eigenPodBeaconCall), + ethPOS(ethPOSCall), + getPod(getPodCall), + hasPod(hasPodCall), + initialize(initializeCall), + numPods(numPodsCall), + owner(ownerCall), + ownerToPod(ownerToPodCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + podOwnerShares(podOwnerSharesCall), + recordBeaconChainETHBalanceUpdate(recordBeaconChainETHBalanceUpdateCall), + removeShares(removeSharesCall), + renounceOwnership(renounceOwnershipCall), + setPauserRegistry(setPauserRegistryCall), + slasher(slasherCall), + stake(stakeCall), + strategyManager(strategyManagerCall), + transferOwnership(transferOwnershipCall), + unpause(unpauseCall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl EigenPodManagerCalls { + /// 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], + [23u8, 148u8, 187u8, 60u8], + [41u8, 43u8, 123u8, 43u8], + [56u8, 123u8, 19u8, 0u8], + [57u8, 183u8, 14u8, 56u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [96u8, 244u8, 6u8, 43u8], + [113u8, 80u8, 24u8, 166u8], + [116u8, 205u8, 215u8, 152u8], + [132u8, 216u8, 16u8, 98u8], + [136u8, 111u8, 17u8, 149u8], + [141u8, 165u8, 203u8, 91u8], + [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], + [194u8, 197u8, 28u8, 64u8], + [234u8, 77u8, 60u8, 155u8], + [242u8, 253u8, 227u8, 139u8], + [246u8, 132u8, 141u8, 36u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EigenPodManagerCalls { + const NAME: &'static str = "EigenPodManagerCalls"; + 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::createPod(_) => ::SELECTOR, + Self::delegationManager(_) => { + ::SELECTOR + } + Self::eigenPodBeacon(_) => { + ::SELECTOR + } + Self::ethPOS(_) => ::SELECTOR, + Self::getPod(_) => ::SELECTOR, + Self::hasPod(_) => ::SELECTOR, + Self::initialize(_) => ::SELECTOR, + Self::numPods(_) => ::SELECTOR, + Self::owner(_) => ::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::renounceOwnership(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stake(_) => ::SELECTOR, + Self::strategyManager(_) => { + ::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 addShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::addShares) + } + addShares + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::pause) + } + pause + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::initialize) + } + initialize + }, + { + fn eigenPodBeacon( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::eigenPodBeacon) + } + eigenPodBeacon + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::strategyManager) + } + strategyManager + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::paused_1) + } + paused_1 + }, + { + fn podOwnerShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::podOwnerShares) + } + podOwnerShares + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn ethPOS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::ethPOS) + } + ethPOS + }, + { + fn createPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::createPod) + } + createPod + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::owner) + } + owner + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn stake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::stake) + } + stake + }, + { + fn ownerToPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::ownerToPod) + } + ownerToPod + }, + { + fn getPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::getPod) + } + getPod + }, + { + fn numPods( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::numPods) + } + numPods + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::slasher) + } + slasher + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::removeShares) + } + removeShares + }, + { + fn recordBeaconChainETHBalanceUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodManagerCalls::recordBeaconChainETHBalanceUpdate) + } + recordBeaconChainETHBalanceUpdate + }, + { + fn delegationManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::delegationManager) + } + delegationManager + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerCalls::transferOwnership) + } + transferOwnership + }, + { + fn hasPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::hasPod) + } + hasPod + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerCalls::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::createPod(inner) => { + ::abi_encoded_size(inner) + } + Self::delegationManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodBeacon(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ethPOS(inner) => { + ::abi_encoded_size(inner) + } + Self::getPod(inner) => { + ::abi_encoded_size(inner) + } + Self::hasPod(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::numPods(inner) => { + ::abi_encoded_size(inner) + } + Self::owner(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::renounceOwnership(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::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::addShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::createPod(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegationManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodBeacon(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ethPOS(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getPod(inner) => { + ::abi_encode_raw(inner, out) + } + Self::hasPod(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::numPods(inner) => { + ::abi_encode_raw(inner, out) + } + Self::owner(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::renounceOwnership(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::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 [`EigenPodManager`](self) events. + pub enum EigenPodManagerEvents { + BeaconChainETHDeposited(BeaconChainETHDeposited), + BeaconChainETHWithdrawalCompleted(BeaconChainETHWithdrawalCompleted), + Initialized(Initialized), + NewTotalShares(NewTotalShares), + OwnershipTransferred(OwnershipTransferred), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + PodDeployed(PodDeployed), + PodSharesUpdated(PodSharesUpdated), + Unpaused(Unpaused), + } + #[automatically_derived] + impl EigenPodManagerEvents { + /// 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]] = &[ + [ + 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, + ], + [ + 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, + ], + [ + 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, + ], + [ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, 154u8, + 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, 67u8, 46u8, + 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for EigenPodManagerEvents { + const NAME: &'static str = "EigenPodManagerEvents"; + 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::BeaconChainETHDeposited) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::BeaconChainETHWithdrawalCompleted) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::NewTotalShares) + } + 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::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 EigenPodManagerEvents { + 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::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NewTotalShares(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::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::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NewTotalShares(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::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 [`EigenPodManager`](self) contract instance. + + See the [wrapper's documentation](`EigenPodManagerInstance`) 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, + ) -> EigenPodManagerInstance { + EigenPodManagerInstance::::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, + _ethPOS: alloy::sol_types::private::Address, + _eigenPodBeacon: alloy::sol_types::private::Address, + _strategyManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + _delegationManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + EigenPodManagerInstance::::deploy( + provider, + _ethPOS, + _eigenPodBeacon, + _strategyManager, + _slasher, + _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, + _ethPOS: alloy::sol_types::private::Address, + _eigenPodBeacon: alloy::sol_types::private::Address, + _strategyManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + EigenPodManagerInstance::::deploy_builder( + provider, + _ethPOS, + _eigenPodBeacon, + _strategyManager, + _slasher, + _delegationManager, + ) + } + /**A [`EigenPodManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EigenPodManager`](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 EigenPodManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EigenPodManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EigenPodManagerInstance") + .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, + > EigenPodManagerInstance + { + /**Creates a new wrapper around an on-chain [`EigenPodManager`](self) contract instance. + + See the [wrapper's documentation](`EigenPodManagerInstance`) 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, + _ethPOS: alloy::sol_types::private::Address, + _eigenPodBeacon: alloy::sol_types::private::Address, + _strategyManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _ethPOS, + _eigenPodBeacon, + _strategyManager, + _slasher, + _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, + _ethPOS: alloy::sol_types::private::Address, + _eigenPodBeacon: alloy::sol_types::private::Address, + _strategyManager: alloy::sol_types::private::Address, + _slasher: 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 { + _ethPOS, + _eigenPodBeacon, + _strategyManager, + _slasher, + _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 EigenPodManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EigenPodManagerInstance { + EigenPodManagerInstance { + 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, + > EigenPodManagerInstance + { + /// 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 [`createPod`] function. + pub fn createPod(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&createPodCall {}) + } + ///Creates a new call builder for the [`delegationManager`] function. + pub fn delegationManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationManagerCall {}) + } + ///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 [`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 [`initialize`] function. + pub fn initialize( + &self, + initialOwner: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + _initPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + initialOwner, + _pauserRegistry, + _initPausedStatus, + }) + } + ///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 [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`ownerToPod`] function. + pub fn ownerToPod( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerToPodCall { _0 }) + } + ///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, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&podOwnerSharesCall { _0 }) + } + ///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 [`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 [`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 [`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, + 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, + > EigenPodManagerInstance + { + /// 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 [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`NewTotalShares`] event. + pub fn NewTotalShares_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 [`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/middleware/eigenpodmanagermock.rs b/crates/utils/src/middleware/eigenpodmanagermock.rs new file mode 100644 index 00000000..ec116a66 --- /dev/null +++ b/crates/utils/src/middleware/eigenpodmanagermock.rs @@ -0,0 +1,11923 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface EigenPodManagerMock { + event BeaconChainETHDeposited(address indexed podOwner, uint256 amount); + event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot); + event NewTotalShares(address indexed podOwner, int256 newTotalShares); + 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); + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + constructor(address _pauserRegistry); + + function IS_TEST() external view returns (bool); + function addShares(address, uint256 shares) external pure returns (uint256); + function beaconChainETHStrategy() external view returns (address); + function createPod() external returns (address); + function denebForkTimestamp() external pure returns (uint64); + function eigenPodBeacon() external view returns (address); + function ethPOS() external view returns (address); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function getPod(address podOwner) external pure returns (address); + function hasPod(address) external pure returns (bool); + function numPods() external view returns (uint256); + function ownerToPod(address) external pure 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 podShares(address) external view returns (int256); + function recordBeaconChainETHBalanceUpdate(address, int256) external pure; + function removeShares(address podOwner, uint256 shares) external; + function setDenebForkTimestamp(uint64 timestamp) external; + function setPauserRegistry(address newPauserRegistry) external; + function setPodOwnerShares(address podOwner, int256 shares) external; + function slasher() external view returns (address); + function stake(bytes memory, bytes memory, bytes32) external payable; + function strategyManager() external pure returns (address); + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function unpause(uint256 newPausedStatus) external; + function updateStaleValidatorCount(address, int256) external; + function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "addShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "beaconChainETHStrategy", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "pure" + }, + { + "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": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getPod", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPod" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "hasPod", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "numPods", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerToPod", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPod" + } + ], + "stateMutability": "pure" + }, + { + "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": "podShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "int256", + "internalType": "int256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "recordBeaconChainETHBalanceUpdate", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "int256", + "internalType": "int256" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "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": "timestamp", + "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": "setPodOwnerShares", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "shares", + "type": "int256", + "internalType": "int256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stake", + "inputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "strategyManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateStaleValidatorCount", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "int256", + "internalType": "int256" + } + ], + "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": "NewTotalShares", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newTotalShares", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "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 + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod EigenPodManagerMock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260078054600160ff199182168117909255600b805490911690911790553480156200002e57600080fd5b5060405162001b6e38038062001b6e833981016040819052620000519162000251565b6200005e81600062000065565b5062000283565b601c546001600160a01b03161580156200008757506001600160a01b03821615155b6200010f5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4015b60405180910390fd5b601d81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2620001548262000158565b5050565b6001600160a01b038116620001e85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40162000106565b601c54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156200026457600080fd5b81516001600160a01b03811681146200027c57600080fd5b9392505050565b6118db80620002936000396000f3fe6080604052600436106102305760003560e01c806384d810621161012e578063b5508aa9116100ab578063d9910a561161006f578063d9910a56146105ef578063e20c9f711461063b578063f6848d2414610650578063fa7626d41461066b578063fabc1cbc1461068557600080fd5b8063b5508aa9146105c5578063ba414fa6146105da578063beffbb89146105ef578063bfe34a411461060e578063c2c51c40146105ef57600080fd5b80639b4e4634116100f25780639b4e46341461055d5780639ba0627514610572578063a38406a314610593578063a6a509be146105b1578063b13442711461034657600080fd5b806384d810621461034657806385226c81146104de578063886f1195146105005780639104c31914610520578063916a17c61461054857600080fd5b80633e5e3c23116101bc5780635ac86ab7116101805780635ac86ab7146104115780635c975abb1461045157806360f4062b1461046657806366d9a9a01461049c57806374cdd798146104be57600080fd5b80633e5e3c23146103915780633f7286f4146103a657806344e71c80146103bb578063463db038146103de578063595c6a67146103fc57600080fd5b8063292b7b2b11610203578063292b7b2b146102cc5780632ade388014610304578063387b13001461032657806339b70e38146103465780633a591f081461035a57600080fd5b80630e81073c1461023557806310d67a2f14610268578063136439dd1461028a5780631ed7831c146102aa575b600080fd5b34801561024157600080fd5b50610255610250366004611327565b919050565b6040519081526020015b60405180910390f35b34801561027457600080fd5b50610288610283366004611353565b6106a5565b005b34801561029657600080fd5b506102886102a5366004611370565b61075e565b3480156102b657600080fd5b506102bf61089d565b60405161025f9190611389565b3480156102d857600080fd5b50604e546102ec906001600160a01b031681565b6040516001600160a01b03909116815260200161025f565b34801561031057600080fd5b506103196108ff565b60405161025f9190611406565b34801561033257600080fd5b506102886103413660046114e1565b505050565b34801561035257600080fd5b5060006102ec565b34801561036657600080fd5b50610288610375366004611327565b6001600160a01b03909116600090815260506020526040902055565b34801561039d57600080fd5b506102bf610a41565b3480156103b257600080fd5b506102bf610aa1565b3480156103c757600080fd5b5060405167ffffffffffffffff815260200161025f565b3480156103ea57600080fd5b506102886103f9366004611522565b50565b34801561040857600080fd5b50610288610b01565b34801561041d57600080fd5b5061044161042c36600461154c565b601d54600160ff9092169190911b9081161490565b604051901515815260200161025f565b34801561045d57600080fd5b50601d54610255565b34801561047257600080fd5b50610255610481366004611353565b6001600160a01b031660009081526050602052604090205490565b3480156104a857600080fd5b506104b1610bc8565b60405161025f919061156f565b3480156104ca57600080fd5b50604f546102ec906001600160a01b031681565b3480156104ea57600080fd5b506104f3610cae565b60405161025f9190611622565b34801561050c57600080fd5b50601c546102ec906001600160a01b031681565b34801561052c57600080fd5b506102ec73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b34801561055457600080fd5b506104b1610d7e565b61028861056b3660046116d8565b5050505050565b34801561057e57600080fd5b506102ec61058d366004611353565b50600090565b34801561059f57600080fd5b506102ec6105ae366004611353565b90565b3480156105bd57600080fd5b506000610255565b3480156105d157600080fd5b506104f3610e64565b3480156105e657600080fd5b50610441610f34565b3480156105fb57600080fd5b5061028861060a366004611327565b5050565b34801561061a57600080fd5b50610255610629366004611353565b60506020526000908152604090205481565b34801561064757600080fd5b506102bf61105f565b34801561065c57600080fd5b5061044161058d366004611353565b34801561067757600080fd5b506007546104419060ff1681565b34801561069157600080fd5b506102886106a0366004611370565b6110bf565b601c60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061174c565b6001600160a01b0316336001600160a01b0316146107555760405162461bcd60e51b815260040161074c90611769565b60405180910390fd5b6103f98161121b565b601c5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca91906117b3565b6107e65760405162461bcd60e51b815260040161074c906117d5565b601d548181161461085f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161074c565b601d81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b606060148054806020026020016040519081016040528092919081815260200182805480156108f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108d7575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610a3857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610a215783829060005260206000200180546109949061181d565b80601f01602080910402602001604051908101604052809291908181526020018280546109c09061181d565b8015610a0d5780601f106109e257610100808354040283529160200191610a0d565b820191906000526020600020905b8154815290600101906020018083116109f057829003601f168201915b505050505081526020019060010190610975565b505050508152505081526020019060010190610923565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b601c5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d91906117b3565b610b895760405162461bcd60e51b815260040161074c906117d5565b600019601d81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610a385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610c9657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610c585790505b50505050508152505081526020019060010190610bec565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610a38578382906000526020600020018054610cf19061181d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1d9061181d565b8015610d6a5780601f10610d3f57610100808354040283529160200191610d6a565b820191906000526020600020905b815481529060010190602001808311610d4d57829003601f168201915b505050505081526020019060010190610cd2565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610a385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610e4c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e0e5790505b50505050508152505081526020019060010190610da2565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610a38578382906000526020600020018054610ea79061181d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed39061181d565b8015610f205780601f10610ef557610100808354040283529160200191610f20565b820191906000526020600020905b815481529060010190602001808311610f0357829003601f168201915b505050505081526020019060010190610e88565b600754600090610100900460ff1615610f565750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102505760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610fe4917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611858565b60408051601f1981840301815290829052610ffe91611889565b6000604051808303816000865af19150503d806000811461103b576040519150601f19603f3d011682016040523d82523d6000602084013e611040565b606091505b509150508080602001905181019061105891906117b3565b9392505050565b606060138054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b601c60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611112573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611136919061174c565b6001600160a01b0316336001600160a01b0316146111665760405162461bcd60e51b815260040161074c90611769565b601d54198119601d541916146111e45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161074c565b601d81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610892565b6001600160a01b0381166112a95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161074c565b601c54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146103f957600080fd5b6000806040838503121561133a57600080fd5b823561134581611312565b946020939093013593505050565b60006020828403121561136557600080fd5b813561105881611312565b60006020828403121561138257600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156113ca5783516001600160a01b0316835292840192918401916001016113a5565b50909695505050505050565b60005b838110156113f15781810151838201526020016113d9565b83811115611400576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114d457603f19888603018452815180516001600160a01b0316865286015160408787018190528151908701819052908701906060600582901b88018101919088019060005b818110156114bd57898403605f190183528451805180865261149e818e88018f85016113d6565b958c0195601f01601f1916949094018b019350918a0191600101611477565b50919750505093860193509085019060010161142d565b5092979650505050505050565b6000806000606084860312156114f657600080fd5b833561150181611312565b9250602084013561151181611312565b929592945050506040919091013590565b60006020828403121561153457600080fd5b813567ffffffffffffffff8116811461105857600080fd5b60006020828403121561155e57600080fd5b813560ff8116811461105857600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561161357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156115fe5783516001600160e01b0319168252928b019260019290920191908b01906115d4565b50978a01979550505091870191600101611597565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114d457878503603f1901845281518051808752611670818989018a85016113d6565b601f01601f191695909501860194509285019290850190600101611649565b60008083601f8401126116a157600080fd5b50813567ffffffffffffffff8111156116b957600080fd5b6020830191508360208285010111156116d157600080fd5b9250929050565b6000806000806000606086880312156116f057600080fd5b853567ffffffffffffffff8082111561170857600080fd5b61171489838a0161168f565b9097509550602088013591508082111561172d57600080fd5b5061173a8882890161168f565b96999598509660400135949350505050565b60006020828403121561175e57600080fd5b815161105881611312565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156117c557600080fd5b8151801515811461105857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600181811c9082168061183157607f821691505b6020821081141561185257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009061187b8160048501602087016113d6565b919091016004019392505050565b6000825161189b8184602087016113d6565b919091019291505056fea2646970667358221220a992952a4e42d90a82e2623c982d04b12a8ee445ad980a75ef01c7d27150f77f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15b\0\0.W`\0\x80\xFD[P`@Qb\0\x1Bn8\x03\x80b\0\x1Bn\x839\x81\x01`@\x81\x90Rb\0\0Q\x91b\0\x02QV[b\0\0^\x81`\0b\0\0eV[Pb\0\x02\x83V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15b\0\0\x87WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[b\0\x01\x0FW`@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\x01[`@Q\x80\x91\x03\x90\xFD[`\x1D\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\xA2b\0\x01T\x82b\0\x01XV[PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x01\xE8W`@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\x01b\0\x01\x06V[`\x1CT`@\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`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0` \x82\x84\x03\x12\x15b\0\x02dW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02|W`\0\x80\xFD[\x93\x92PPPV[a\x18\xDB\x80b\0\x02\x93`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x020W`\x005`\xE0\x1C\x80c\x84\xD8\x10b\x11a\x01.W\x80c\xB5P\x8A\xA9\x11a\0\xABW\x80c\xD9\x91\nV\x11a\0oW\x80c\xD9\x91\nV\x14a\x05\xEFW\x80c\xE2\x0C\x9Fq\x14a\x06;W\x80c\xF6\x84\x8D$\x14a\x06PW\x80c\xFAv&\xD4\x14a\x06kW\x80c\xFA\xBC\x1C\xBC\x14a\x06\x85W`\0\x80\xFD[\x80c\xB5P\x8A\xA9\x14a\x05\xC5W\x80c\xBAAO\xA6\x14a\x05\xDAW\x80c\xBE\xFF\xBB\x89\x14a\x05\xEFW\x80c\xBF\xE3JA\x14a\x06\x0EW\x80c\xC2\xC5\x1C@\x14a\x05\xEFW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xF2W\x80c\x9BNF4\x14a\x05]W\x80c\x9B\xA0bu\x14a\x05rW\x80c\xA3\x84\x06\xA3\x14a\x05\x93W\x80c\xA6\xA5\t\xBE\x14a\x05\xB1W\x80c\xB14Bq\x14a\x03FW`\0\x80\xFD[\x80c\x84\xD8\x10b\x14a\x03FW\x80c\x85\"l\x81\x14a\x04\xDEW\x80c\x88o\x11\x95\x14a\x05\0W\x80c\x91\x04\xC3\x19\x14a\x05 W\x80c\x91j\x17\xC6\x14a\x05HW`\0\x80\xFD[\x80c>^<#\x11a\x01\xBCW\x80cZ\xC8j\xB7\x11a\x01\x80W\x80cZ\xC8j\xB7\x14a\x04\x11W\x80c\\\x97Z\xBB\x14a\x04QW\x80c`\xF4\x06+\x14a\x04fW\x80cf\xD9\xA9\xA0\x14a\x04\x9CW\x80ct\xCD\xD7\x98\x14a\x04\xBEW`\0\x80\xFD[\x80c>^<#\x14a\x03\x91W\x80c?r\x86\xF4\x14a\x03\xA6W\x80cD\xE7\x1C\x80\x14a\x03\xBBW\x80cF=\xB08\x14a\x03\xDEW\x80cY\\jg\x14a\x03\xFCW`\0\x80\xFD[\x80c)+{+\x11a\x02\x03W\x80c)+{+\x14a\x02\xCCW\x80c*\xDE8\x80\x14a\x03\x04W\x80c8{\x13\0\x14a\x03&W\x80c9\xB7\x0E8\x14a\x03FW\x80c:Y\x1F\x08\x14a\x03ZW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x025W\x80c\x10\xD6z/\x14a\x02hW\x80c\x13d9\xDD\x14a\x02\x8AW\x80c\x1E\xD7\x83\x1C\x14a\x02\xAAW[`\0\x80\xFD[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a\x13'V[\x91\x90PV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02tW`\0\x80\xFD[Pa\x02\x88a\x02\x836`\x04a\x13SV[a\x06\xA5V[\0[4\x80\x15a\x02\x96W`\0\x80\xFD[Pa\x02\x88a\x02\xA56`\x04a\x13pV[a\x07^V[4\x80\x15a\x02\xB6W`\0\x80\xFD[Pa\x02\xBFa\x08\x9DV[`@Qa\x02_\x91\x90a\x13\x89V[4\x80\x15a\x02\xD8W`\0\x80\xFD[P`NTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02_V[4\x80\x15a\x03\x10W`\0\x80\xFD[Pa\x03\x19a\x08\xFFV[`@Qa\x02_\x91\x90a\x14\x06V[4\x80\x15a\x032W`\0\x80\xFD[Pa\x02\x88a\x03A6`\x04a\x14\xE1V[PPPV[4\x80\x15a\x03RW`\0\x80\xFD[P`\0a\x02\xECV[4\x80\x15a\x03fW`\0\x80\xFD[Pa\x02\x88a\x03u6`\x04a\x13'V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`P` R`@\x90 UV[4\x80\x15a\x03\x9DW`\0\x80\xFD[Pa\x02\xBFa\nAV[4\x80\x15a\x03\xB2W`\0\x80\xFD[Pa\x02\xBFa\n\xA1V[4\x80\x15a\x03\xC7W`\0\x80\xFD[P`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a\x02_V[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02\x88a\x03\xF96`\x04a\x15\"V[PV[4\x80\x15a\x04\x08W`\0\x80\xFD[Pa\x02\x88a\x0B\x01V[4\x80\x15a\x04\x1DW`\0\x80\xFD[Pa\x04Aa\x04,6`\x04a\x15LV[`\x1DT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02_V[4\x80\x15a\x04]W`\0\x80\xFD[P`\x1DTa\x02UV[4\x80\x15a\x04rW`\0\x80\xFD[Pa\x02Ua\x04\x816`\x04a\x13SV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`P` R`@\x90 T\x90V[4\x80\x15a\x04\xA8W`\0\x80\xFD[Pa\x04\xB1a\x0B\xC8V[`@Qa\x02_\x91\x90a\x15oV[4\x80\x15a\x04\xCAW`\0\x80\xFD[P`OTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xEAW`\0\x80\xFD[Pa\x04\xF3a\x0C\xAEV[`@Qa\x02_\x91\x90a\x16\"V[4\x80\x15a\x05\x0CW`\0\x80\xFD[P`\x1CTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x05,W`\0\x80\xFD[Pa\x02\xECs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[4\x80\x15a\x05TW`\0\x80\xFD[Pa\x04\xB1a\r~V[a\x02\x88a\x05k6`\x04a\x16\xD8V[PPPPPV[4\x80\x15a\x05~W`\0\x80\xFD[Pa\x02\xECa\x05\x8D6`\x04a\x13SV[P`\0\x90V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x02\xECa\x05\xAE6`\x04a\x13SV[\x90V[4\x80\x15a\x05\xBDW`\0\x80\xFD[P`\0a\x02UV[4\x80\x15a\x05\xD1W`\0\x80\xFD[Pa\x04\xF3a\x0EdV[4\x80\x15a\x05\xE6W`\0\x80\xFD[Pa\x04Aa\x0F4V[4\x80\x15a\x05\xFBW`\0\x80\xFD[Pa\x02\x88a\x06\n6`\x04a\x13'V[PPV[4\x80\x15a\x06\x1AW`\0\x80\xFD[Pa\x02Ua\x06)6`\x04a\x13SV[`P` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x06GW`\0\x80\xFD[Pa\x02\xBFa\x10_V[4\x80\x15a\x06\\W`\0\x80\xFD[Pa\x04Aa\x05\x8D6`\x04a\x13SV[4\x80\x15a\x06wW`\0\x80\xFD[P`\x07Ta\x04A\x90`\xFF\x16\x81V[4\x80\x15a\x06\x91W`\0\x80\xFD[Pa\x02\x88a\x06\xA06`\x04a\x13pV[a\x10\xBFV[`\x1C`\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\x06\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x1C\x91\x90a\x17LV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07UW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17iV[`@Q\x80\x91\x03\x90\xFD[a\x03\xF9\x81a\x12\x1BV[`\x1CT`@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\x07\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xCA\x91\x90a\x17\xB3V[a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17\xD5V[`\x1DT\x81\x81\x16\x14a\x08_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\x07LV[`\x1D\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[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\n!W\x83\x82\x90`\0R` `\0 \x01\x80Ta\t\x94\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xC0\x90a\x18\x1DV[\x80\x15a\n\rW\x80`\x1F\x10a\t\xE2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\rV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\xF0W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\tuV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\t#V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[`\x1CT`@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\x0BIW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Bm\x91\x90a\x17\xB3V[a\x0B\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17\xD5V[`\0\x19`\x1D\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[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0C\x96W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0CXW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0B\xECV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0C\xF1\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\r\x1D\x90a\x18\x1DV[\x80\x15a\rjW\x80`\x1F\x10a\r?Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\rjV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\rMW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0C\xD2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0ELW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\x0EW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r\xA2V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0E\xA7\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0E\xD3\x90a\x18\x1DV[\x80\x15a\x0F W\x80`\x1F\x10a\x0E\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0F\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x88V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x0FVWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x02PW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x0F\xE4\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x18XV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xFE\x91a\x18\x89V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x10;W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10@V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x10X\x91\x90a\x17\xB3V[\x93\x92PPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[`\x1C`\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\x11\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x116\x91\x90a\x17LV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11fW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17iV[`\x1DT\x19\x81\x19`\x1DT\x19\x16\x14a\x11\xE4W`@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\x07LV[`\x1D\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\x08\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xA9W`@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\x07LV[`\x1CT`@\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`\x1C\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\x03\xF9W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x13:W`\0\x80\xFD[\x825a\x13E\x81a\x13\x12V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x13eW`\0\x80\xFD[\x815a\x10X\x81a\x13\x12V[`\0` \x82\x84\x03\x12\x15a\x13\x82W`\0\x80\xFD[P5\x91\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x13\xCAW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x13\xA5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x13\xF1W\x81\x81\x01Q\x83\x82\x01R` \x01a\x13\xD9V[\x83\x81\x11\x15a\x14\0W`\0\x84\x84\x01R[PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x14\xD4W`?\x19\x88\x86\x03\x01\x84R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x86R\x86\x01Q`@\x87\x87\x01\x81\x90R\x81Q\x90\x87\x01\x81\x90R\x90\x87\x01\x90```\x05\x82\x90\x1B\x88\x01\x81\x01\x91\x90\x88\x01\x90`\0[\x81\x81\x10\x15a\x14\xBDW\x89\x84\x03`_\x19\x01\x83R\x84Q\x80Q\x80\x86Ra\x14\x9E\x81\x8E\x88\x01\x8F\x85\x01a\x13\xD6V[\x95\x8C\x01\x95`\x1F\x01`\x1F\x19\x16\x94\x90\x94\x01\x8B\x01\x93P\x91\x8A\x01\x91`\x01\x01a\x14wV[P\x91\x97PPP\x93\x86\x01\x93P\x90\x85\x01\x90`\x01\x01a\x14-V[P\x92\x97\x96PPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14\xF6W`\0\x80\xFD[\x835a\x15\x01\x81a\x13\x12V[\x92P` \x84\x015a\x15\x11\x81a\x13\x12V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x154W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x10XW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15^W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x10XW`\0\x80\xFD[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x16\x13W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x15\xFEW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x15\xD4V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x15\x97V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x14\xD4W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x16p\x81\x89\x89\x01\x8A\x85\x01a\x13\xD6V[`\x1F\x01`\x1F\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x16IV[`\0\x80\x83`\x1F\x84\x01\x12a\x16\xA1W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xB9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x16\xD1W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x16\xF0W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17\x08W`\0\x80\xFD[a\x17\x14\x89\x83\x8A\x01a\x16\x8FV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\x17-W`\0\x80\xFD[Pa\x17:\x88\x82\x89\x01a\x16\x8FV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x17^W`\0\x80\xFD[\x81Qa\x10X\x81a\x13\x12V[` \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\x17\xC5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10XW`\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[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x181W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x18RWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x18{\x81`\x04\x85\x01` \x87\x01a\x13\xD6V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x18\x9B\x81\x84` \x87\x01a\x13\xD6V[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xA9\x92\x95*NB\xD9\n\x82\xE2b<\x98-\x04\xB1*\x8E\xE4E\xAD\x98\nu\xEF\x01\xC7\xD2qP\xF7\x7FdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106102305760003560e01c806384d810621161012e578063b5508aa9116100ab578063d9910a561161006f578063d9910a56146105ef578063e20c9f711461063b578063f6848d2414610650578063fa7626d41461066b578063fabc1cbc1461068557600080fd5b8063b5508aa9146105c5578063ba414fa6146105da578063beffbb89146105ef578063bfe34a411461060e578063c2c51c40146105ef57600080fd5b80639b4e4634116100f25780639b4e46341461055d5780639ba0627514610572578063a38406a314610593578063a6a509be146105b1578063b13442711461034657600080fd5b806384d810621461034657806385226c81146104de578063886f1195146105005780639104c31914610520578063916a17c61461054857600080fd5b80633e5e3c23116101bc5780635ac86ab7116101805780635ac86ab7146104115780635c975abb1461045157806360f4062b1461046657806366d9a9a01461049c57806374cdd798146104be57600080fd5b80633e5e3c23146103915780633f7286f4146103a657806344e71c80146103bb578063463db038146103de578063595c6a67146103fc57600080fd5b8063292b7b2b11610203578063292b7b2b146102cc5780632ade388014610304578063387b13001461032657806339b70e38146103465780633a591f081461035a57600080fd5b80630e81073c1461023557806310d67a2f14610268578063136439dd1461028a5780631ed7831c146102aa575b600080fd5b34801561024157600080fd5b50610255610250366004611327565b919050565b6040519081526020015b60405180910390f35b34801561027457600080fd5b50610288610283366004611353565b6106a5565b005b34801561029657600080fd5b506102886102a5366004611370565b61075e565b3480156102b657600080fd5b506102bf61089d565b60405161025f9190611389565b3480156102d857600080fd5b50604e546102ec906001600160a01b031681565b6040516001600160a01b03909116815260200161025f565b34801561031057600080fd5b506103196108ff565b60405161025f9190611406565b34801561033257600080fd5b506102886103413660046114e1565b505050565b34801561035257600080fd5b5060006102ec565b34801561036657600080fd5b50610288610375366004611327565b6001600160a01b03909116600090815260506020526040902055565b34801561039d57600080fd5b506102bf610a41565b3480156103b257600080fd5b506102bf610aa1565b3480156103c757600080fd5b5060405167ffffffffffffffff815260200161025f565b3480156103ea57600080fd5b506102886103f9366004611522565b50565b34801561040857600080fd5b50610288610b01565b34801561041d57600080fd5b5061044161042c36600461154c565b601d54600160ff9092169190911b9081161490565b604051901515815260200161025f565b34801561045d57600080fd5b50601d54610255565b34801561047257600080fd5b50610255610481366004611353565b6001600160a01b031660009081526050602052604090205490565b3480156104a857600080fd5b506104b1610bc8565b60405161025f919061156f565b3480156104ca57600080fd5b50604f546102ec906001600160a01b031681565b3480156104ea57600080fd5b506104f3610cae565b60405161025f9190611622565b34801561050c57600080fd5b50601c546102ec906001600160a01b031681565b34801561052c57600080fd5b506102ec73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b34801561055457600080fd5b506104b1610d7e565b61028861056b3660046116d8565b5050505050565b34801561057e57600080fd5b506102ec61058d366004611353565b50600090565b34801561059f57600080fd5b506102ec6105ae366004611353565b90565b3480156105bd57600080fd5b506000610255565b3480156105d157600080fd5b506104f3610e64565b3480156105e657600080fd5b50610441610f34565b3480156105fb57600080fd5b5061028861060a366004611327565b5050565b34801561061a57600080fd5b50610255610629366004611353565b60506020526000908152604090205481565b34801561064757600080fd5b506102bf61105f565b34801561065c57600080fd5b5061044161058d366004611353565b34801561067757600080fd5b506007546104419060ff1681565b34801561069157600080fd5b506102886106a0366004611370565b6110bf565b601c60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061174c565b6001600160a01b0316336001600160a01b0316146107555760405162461bcd60e51b815260040161074c90611769565b60405180910390fd5b6103f98161121b565b601c5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca91906117b3565b6107e65760405162461bcd60e51b815260040161074c906117d5565b601d548181161461085f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161074c565b601d81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b606060148054806020026020016040519081016040528092919081815260200182805480156108f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108d7575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610a3857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610a215783829060005260206000200180546109949061181d565b80601f01602080910402602001604051908101604052809291908181526020018280546109c09061181d565b8015610a0d5780601f106109e257610100808354040283529160200191610a0d565b820191906000526020600020905b8154815290600101906020018083116109f057829003601f168201915b505050505081526020019060010190610975565b505050508152505081526020019060010190610923565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b601c5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d91906117b3565b610b895760405162461bcd60e51b815260040161074c906117d5565b600019601d81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610a385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610c9657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610c585790505b50505050508152505081526020019060010190610bec565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610a38578382906000526020600020018054610cf19061181d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1d9061181d565b8015610d6a5780601f10610d3f57610100808354040283529160200191610d6a565b820191906000526020600020905b815481529060010190602001808311610d4d57829003601f168201915b505050505081526020019060010190610cd2565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610a385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610e4c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e0e5790505b50505050508152505081526020019060010190610da2565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610a38578382906000526020600020018054610ea79061181d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed39061181d565b8015610f205780601f10610ef557610100808354040283529160200191610f20565b820191906000526020600020905b815481529060010190602001808311610f0357829003601f168201915b505050505081526020019060010190610e88565b600754600090610100900460ff1615610f565750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102505760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610fe4917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611858565b60408051601f1981840301815290829052610ffe91611889565b6000604051808303816000865af19150503d806000811461103b576040519150601f19603f3d011682016040523d82523d6000602084013e611040565b606091505b509150508080602001905181019061105891906117b3565b9392505050565b606060138054806020026020016040519081016040528092919081815260200182805480156108f5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d7575050505050905090565b601c60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611112573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611136919061174c565b6001600160a01b0316336001600160a01b0316146111665760405162461bcd60e51b815260040161074c90611769565b601d54198119601d541916146111e45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161074c565b601d81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610892565b6001600160a01b0381166112a95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161074c565b601c54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146103f957600080fd5b6000806040838503121561133a57600080fd5b823561134581611312565b946020939093013593505050565b60006020828403121561136557600080fd5b813561105881611312565b60006020828403121561138257600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156113ca5783516001600160a01b0316835292840192918401916001016113a5565b50909695505050505050565b60005b838110156113f15781810151838201526020016113d9565b83811115611400576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114d457603f19888603018452815180516001600160a01b0316865286015160408787018190528151908701819052908701906060600582901b88018101919088019060005b818110156114bd57898403605f190183528451805180865261149e818e88018f85016113d6565b958c0195601f01601f1916949094018b019350918a0191600101611477565b50919750505093860193509085019060010161142d565b5092979650505050505050565b6000806000606084860312156114f657600080fd5b833561150181611312565b9250602084013561151181611312565b929592945050506040919091013590565b60006020828403121561153457600080fd5b813567ffffffffffffffff8116811461105857600080fd5b60006020828403121561155e57600080fd5b813560ff8116811461105857600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561161357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156115fe5783516001600160e01b0319168252928b019260019290920191908b01906115d4565b50978a01979550505091870191600101611597565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114d457878503603f1901845281518051808752611670818989018a85016113d6565b601f01601f191695909501860194509285019290850190600101611649565b60008083601f8401126116a157600080fd5b50813567ffffffffffffffff8111156116b957600080fd5b6020830191508360208285010111156116d157600080fd5b9250929050565b6000806000806000606086880312156116f057600080fd5b853567ffffffffffffffff8082111561170857600080fd5b61171489838a0161168f565b9097509550602088013591508082111561172d57600080fd5b5061173a8882890161168f565b96999598509660400135949350505050565b60006020828403121561175e57600080fd5b815161105881611312565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156117c557600080fd5b8151801515811461105857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600181811c9082168061183157607f821691505b6020821081141561185257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009061187b8160048501602087016113d6565b919091016004019392505050565b6000825161189b8184602087016113d6565b919091019291505056fea2646970667358221220a992952a4e42d90a82e2623c982d04b12a8ee445ad980a75ef01c7d27150f77f64736f6c634300080c0033 + /// ``` + #[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\x020W`\x005`\xE0\x1C\x80c\x84\xD8\x10b\x11a\x01.W\x80c\xB5P\x8A\xA9\x11a\0\xABW\x80c\xD9\x91\nV\x11a\0oW\x80c\xD9\x91\nV\x14a\x05\xEFW\x80c\xE2\x0C\x9Fq\x14a\x06;W\x80c\xF6\x84\x8D$\x14a\x06PW\x80c\xFAv&\xD4\x14a\x06kW\x80c\xFA\xBC\x1C\xBC\x14a\x06\x85W`\0\x80\xFD[\x80c\xB5P\x8A\xA9\x14a\x05\xC5W\x80c\xBAAO\xA6\x14a\x05\xDAW\x80c\xBE\xFF\xBB\x89\x14a\x05\xEFW\x80c\xBF\xE3JA\x14a\x06\x0EW\x80c\xC2\xC5\x1C@\x14a\x05\xEFW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xF2W\x80c\x9BNF4\x14a\x05]W\x80c\x9B\xA0bu\x14a\x05rW\x80c\xA3\x84\x06\xA3\x14a\x05\x93W\x80c\xA6\xA5\t\xBE\x14a\x05\xB1W\x80c\xB14Bq\x14a\x03FW`\0\x80\xFD[\x80c\x84\xD8\x10b\x14a\x03FW\x80c\x85\"l\x81\x14a\x04\xDEW\x80c\x88o\x11\x95\x14a\x05\0W\x80c\x91\x04\xC3\x19\x14a\x05 W\x80c\x91j\x17\xC6\x14a\x05HW`\0\x80\xFD[\x80c>^<#\x11a\x01\xBCW\x80cZ\xC8j\xB7\x11a\x01\x80W\x80cZ\xC8j\xB7\x14a\x04\x11W\x80c\\\x97Z\xBB\x14a\x04QW\x80c`\xF4\x06+\x14a\x04fW\x80cf\xD9\xA9\xA0\x14a\x04\x9CW\x80ct\xCD\xD7\x98\x14a\x04\xBEW`\0\x80\xFD[\x80c>^<#\x14a\x03\x91W\x80c?r\x86\xF4\x14a\x03\xA6W\x80cD\xE7\x1C\x80\x14a\x03\xBBW\x80cF=\xB08\x14a\x03\xDEW\x80cY\\jg\x14a\x03\xFCW`\0\x80\xFD[\x80c)+{+\x11a\x02\x03W\x80c)+{+\x14a\x02\xCCW\x80c*\xDE8\x80\x14a\x03\x04W\x80c8{\x13\0\x14a\x03&W\x80c9\xB7\x0E8\x14a\x03FW\x80c:Y\x1F\x08\x14a\x03ZW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x025W\x80c\x10\xD6z/\x14a\x02hW\x80c\x13d9\xDD\x14a\x02\x8AW\x80c\x1E\xD7\x83\x1C\x14a\x02\xAAW[`\0\x80\xFD[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a\x13'V[\x91\x90PV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02tW`\0\x80\xFD[Pa\x02\x88a\x02\x836`\x04a\x13SV[a\x06\xA5V[\0[4\x80\x15a\x02\x96W`\0\x80\xFD[Pa\x02\x88a\x02\xA56`\x04a\x13pV[a\x07^V[4\x80\x15a\x02\xB6W`\0\x80\xFD[Pa\x02\xBFa\x08\x9DV[`@Qa\x02_\x91\x90a\x13\x89V[4\x80\x15a\x02\xD8W`\0\x80\xFD[P`NTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02_V[4\x80\x15a\x03\x10W`\0\x80\xFD[Pa\x03\x19a\x08\xFFV[`@Qa\x02_\x91\x90a\x14\x06V[4\x80\x15a\x032W`\0\x80\xFD[Pa\x02\x88a\x03A6`\x04a\x14\xE1V[PPPV[4\x80\x15a\x03RW`\0\x80\xFD[P`\0a\x02\xECV[4\x80\x15a\x03fW`\0\x80\xFD[Pa\x02\x88a\x03u6`\x04a\x13'V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`P` R`@\x90 UV[4\x80\x15a\x03\x9DW`\0\x80\xFD[Pa\x02\xBFa\nAV[4\x80\x15a\x03\xB2W`\0\x80\xFD[Pa\x02\xBFa\n\xA1V[4\x80\x15a\x03\xC7W`\0\x80\xFD[P`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a\x02_V[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02\x88a\x03\xF96`\x04a\x15\"V[PV[4\x80\x15a\x04\x08W`\0\x80\xFD[Pa\x02\x88a\x0B\x01V[4\x80\x15a\x04\x1DW`\0\x80\xFD[Pa\x04Aa\x04,6`\x04a\x15LV[`\x1DT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02_V[4\x80\x15a\x04]W`\0\x80\xFD[P`\x1DTa\x02UV[4\x80\x15a\x04rW`\0\x80\xFD[Pa\x02Ua\x04\x816`\x04a\x13SV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`P` R`@\x90 T\x90V[4\x80\x15a\x04\xA8W`\0\x80\xFD[Pa\x04\xB1a\x0B\xC8V[`@Qa\x02_\x91\x90a\x15oV[4\x80\x15a\x04\xCAW`\0\x80\xFD[P`OTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xEAW`\0\x80\xFD[Pa\x04\xF3a\x0C\xAEV[`@Qa\x02_\x91\x90a\x16\"V[4\x80\x15a\x05\x0CW`\0\x80\xFD[P`\x1CTa\x02\xEC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x05,W`\0\x80\xFD[Pa\x02\xECs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[4\x80\x15a\x05TW`\0\x80\xFD[Pa\x04\xB1a\r~V[a\x02\x88a\x05k6`\x04a\x16\xD8V[PPPPPV[4\x80\x15a\x05~W`\0\x80\xFD[Pa\x02\xECa\x05\x8D6`\x04a\x13SV[P`\0\x90V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x02\xECa\x05\xAE6`\x04a\x13SV[\x90V[4\x80\x15a\x05\xBDW`\0\x80\xFD[P`\0a\x02UV[4\x80\x15a\x05\xD1W`\0\x80\xFD[Pa\x04\xF3a\x0EdV[4\x80\x15a\x05\xE6W`\0\x80\xFD[Pa\x04Aa\x0F4V[4\x80\x15a\x05\xFBW`\0\x80\xFD[Pa\x02\x88a\x06\n6`\x04a\x13'V[PPV[4\x80\x15a\x06\x1AW`\0\x80\xFD[Pa\x02Ua\x06)6`\x04a\x13SV[`P` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x06GW`\0\x80\xFD[Pa\x02\xBFa\x10_V[4\x80\x15a\x06\\W`\0\x80\xFD[Pa\x04Aa\x05\x8D6`\x04a\x13SV[4\x80\x15a\x06wW`\0\x80\xFD[P`\x07Ta\x04A\x90`\xFF\x16\x81V[4\x80\x15a\x06\x91W`\0\x80\xFD[Pa\x02\x88a\x06\xA06`\x04a\x13pV[a\x10\xBFV[`\x1C`\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\x06\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x1C\x91\x90a\x17LV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07UW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17iV[`@Q\x80\x91\x03\x90\xFD[a\x03\xF9\x81a\x12\x1BV[`\x1CT`@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\x07\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xCA\x91\x90a\x17\xB3V[a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17\xD5V[`\x1DT\x81\x81\x16\x14a\x08_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\x07LV[`\x1D\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[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\n!W\x83\x82\x90`\0R` `\0 \x01\x80Ta\t\x94\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xC0\x90a\x18\x1DV[\x80\x15a\n\rW\x80`\x1F\x10a\t\xE2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\rV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\xF0W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\tuV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\t#V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[`\x1CT`@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\x0BIW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Bm\x91\x90a\x17\xB3V[a\x0B\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17\xD5V[`\0\x19`\x1D\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[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0C\x96W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0CXW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0B\xECV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0C\xF1\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\r\x1D\x90a\x18\x1DV[\x80\x15a\rjW\x80`\x1F\x10a\r?Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\rjV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\rMW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0C\xD2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0ELW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\x0EW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r\xA2V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\n8W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0E\xA7\x90a\x18\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0E\xD3\x90a\x18\x1DV[\x80\x15a\x0F W\x80`\x1F\x10a\x0E\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0F\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x88V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x0FVWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x02PW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x0F\xE4\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x18XV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xFE\x91a\x18\x89V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x10;W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10@V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x10X\x91\x90a\x17\xB3V[\x93\x92PPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x08\xF5W` \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\x08\xD7WPPPPP\x90P\x90V[`\x1C`\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\x11\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x116\x91\x90a\x17LV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11fW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x07L\x90a\x17iV[`\x1DT\x19\x81\x19`\x1DT\x19\x16\x14a\x11\xE4W`@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\x07LV[`\x1D\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\x08\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xA9W`@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\x07LV[`\x1CT`@\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`\x1C\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\x03\xF9W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x13:W`\0\x80\xFD[\x825a\x13E\x81a\x13\x12V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x13eW`\0\x80\xFD[\x815a\x10X\x81a\x13\x12V[`\0` \x82\x84\x03\x12\x15a\x13\x82W`\0\x80\xFD[P5\x91\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x13\xCAW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x13\xA5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x13\xF1W\x81\x81\x01Q\x83\x82\x01R` \x01a\x13\xD9V[\x83\x81\x11\x15a\x14\0W`\0\x84\x84\x01R[PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x14\xD4W`?\x19\x88\x86\x03\x01\x84R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x86R\x86\x01Q`@\x87\x87\x01\x81\x90R\x81Q\x90\x87\x01\x81\x90R\x90\x87\x01\x90```\x05\x82\x90\x1B\x88\x01\x81\x01\x91\x90\x88\x01\x90`\0[\x81\x81\x10\x15a\x14\xBDW\x89\x84\x03`_\x19\x01\x83R\x84Q\x80Q\x80\x86Ra\x14\x9E\x81\x8E\x88\x01\x8F\x85\x01a\x13\xD6V[\x95\x8C\x01\x95`\x1F\x01`\x1F\x19\x16\x94\x90\x94\x01\x8B\x01\x93P\x91\x8A\x01\x91`\x01\x01a\x14wV[P\x91\x97PPP\x93\x86\x01\x93P\x90\x85\x01\x90`\x01\x01a\x14-V[P\x92\x97\x96PPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14\xF6W`\0\x80\xFD[\x835a\x15\x01\x81a\x13\x12V[\x92P` \x84\x015a\x15\x11\x81a\x13\x12V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x154W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x10XW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15^W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x10XW`\0\x80\xFD[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x16\x13W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x15\xFEW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x15\xD4V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x15\x97V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x14\xD4W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x16p\x81\x89\x89\x01\x8A\x85\x01a\x13\xD6V[`\x1F\x01`\x1F\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x16IV[`\0\x80\x83`\x1F\x84\x01\x12a\x16\xA1W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xB9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x16\xD1W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x16\xF0W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17\x08W`\0\x80\xFD[a\x17\x14\x89\x83\x8A\x01a\x16\x8FV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\x17-W`\0\x80\xFD[Pa\x17:\x88\x82\x89\x01a\x16\x8FV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x17^W`\0\x80\xFD[\x81Qa\x10X\x81a\x13\x12V[` \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\x17\xC5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10XW`\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[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x181W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x18RWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x18{\x81`\x04\x85\x01` \x87\x01a\x13\xD6V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x18\x9B\x81\x84` \x87\x01a\x13\xD6V[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xA9\x92\x95*NB\xD9\n\x82\xE2b<\x98-\x04\xB1*\x8E\xE4E\xAD\x98\nu\xEF\x01\xC7\xD2qP\xF7\x7FdsolcC\0\x08\x0C\x003", + ); + /**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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `NewTotalShares(address,int256)` and selector `0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098`. + ```solidity + event NewTotalShares(address indexed podOwner, int256 newTotalShares); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct NewTotalShares { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newTotalShares: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NewTotalShares { + 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 = "NewTotalShares(address,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, + 154u8, 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, + 67u8, 46u8, 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + podOwner: topics.1, + newTotalShares: 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.newTotalShares, + ), + ) + } + #[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 NewTotalShares { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NewTotalShares> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NewTotalShares) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _pauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub _pauserRegistry: 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._pauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _pauserRegistry: 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._pauserRegistry, + ), + ) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `addShares(address,uint256)` and selector `0x0e81073c`. + ```solidity + function addShares(address, uint256 shares) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: 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._0, + ), + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `createPod()` and selector `0x84d81062`. + ```solidity + function createPod() external returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createPodCall {} + ///Container type for the return parameters of the [`createPod()`](createPodCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 pure returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct denebForkTimestampCall {} + ///Container type for the return parameters of the [`denebForkTimestamp()`](denebForkTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct denebForkTimestampReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodBeaconCall {} + ///Container type for the return parameters of the [`eigenPodBeacon()`](eigenPodBeaconCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodBeaconReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSCall {} + ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `getPod(address)` and selector `0xa38406a3`. + ```solidity + function getPod(address podOwner) external pure returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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) external pure returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasPodCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasPodReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasPodCall { + 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: 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._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 `numPods()` and selector `0xa6a509be`. + ```solidity + function numPods() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numPodsCall {} + ///Container type for the return parameters of the [`numPods()`](numPodsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numPodsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) external pure returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerToPodCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerToPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerToPodCall { + 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: 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._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 `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `podShares(address)` and selector `0xbfe34a41`. + ```solidity + function podShares(address) external view returns (int256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podSharesCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`podShares(address)`](podSharesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: podSharesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for podSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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: podSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for podSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for podSharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = podSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Int<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "podShares(address)"; + const SELECTOR: [u8; 4] = [191u8, 227u8, 74u8, 65u8]; + #[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 `recordBeaconChainETHBalanceUpdate(address,int256)` and selector `0xc2c51c40`. + ```solidity + function recordBeaconChainETHBalanceUpdate(address, int256) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateCall { + pub _0: alloy::sol_types::private::Address, + pub _1: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordBeaconChainETHBalanceUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: 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: 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._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 `removeShares(address,uint256)` and selector `0xbeffbb89`. + ```solidity + function removeShares(address podOwner, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 timestamp) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setDenebForkTimestampCall { + pub timestamp: u64, + } + ///Container type for the return parameters of the [`setDenebForkTimestamp(uint64)`](setDenebForkTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setDenebForkTimestampReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.timestamp,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setDenebForkTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { timestamp: 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.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 `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setPodOwnerShares(address,int256)` and selector `0x3a591f08`. + ```solidity + function setPodOwnerShares(address podOwner, int256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPodOwnerSharesCall { + pub podOwner: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::I256, + } + ///Container type for the return parameters of the [`setPodOwnerShares(address,int256)`](setPodOwnerSharesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPodOwnerSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setPodOwnerSharesCall) -> Self { + (value.podOwner, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPodOwnerSharesCall { + 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: setPodOwnerSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPodOwnerSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPodOwnerSharesCall { + 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 = setPodOwnerSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPodOwnerShares(address,int256)"; + const SELECTOR: [u8; 4] = [58u8, 89u8, 31u8, 8u8]; + #[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 `slasher()` and selector `0xb1344271`. + ```solidity + function slasher() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, bytes memory, bytes32) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeCall { + pub _0: alloy::sol_types::private::Bytes, + pub _1: alloy::sol_types::private::Bytes, + pub _2: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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._0, + ), + ::tokenize( + &self._1, + ), + as alloy_sol_types::SolType>::tokenize(&self._2), + ) + } + #[inline] + fn abi_decode_returns( + 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 pure returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `updateStaleValidatorCount(address,int256)` and selector `0xd9910a56`. + ```solidity + function updateStaleValidatorCount(address, int256) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateStaleValidatorCountCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::primitives::aliases::I256, + } + ///Container type for the return parameters of the [`updateStaleValidatorCount(address,int256)`](updateStaleValidatorCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateStaleValidatorCountReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: updateStaleValidatorCountCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStaleValidatorCountCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: 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: updateStaleValidatorCountReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStaleValidatorCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateStaleValidatorCountCall { + 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 = updateStaleValidatorCountReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateStaleValidatorCount(address,int256)"; + const SELECTOR: [u8; 4] = [217u8, 145u8, 10u8, 86u8]; + #[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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`EigenPodManagerMock`](self) function calls. + pub enum EigenPodManagerMockCalls { + IS_TEST(IS_TESTCall), + addShares(addSharesCall), + beaconChainETHStrategy(beaconChainETHStrategyCall), + createPod(createPodCall), + denebForkTimestamp(denebForkTimestampCall), + eigenPodBeacon(eigenPodBeaconCall), + ethPOS(ethPOSCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + getPod(getPodCall), + hasPod(hasPodCall), + numPods(numPodsCall), + ownerToPod(ownerToPodCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + podOwnerShares(podOwnerSharesCall), + podShares(podSharesCall), + recordBeaconChainETHBalanceUpdate(recordBeaconChainETHBalanceUpdateCall), + removeShares(removeSharesCall), + setDenebForkTimestamp(setDenebForkTimestampCall), + setPauserRegistry(setPauserRegistryCall), + setPodOwnerShares(setPodOwnerSharesCall), + slasher(slasherCall), + stake(stakeCall), + strategyManager(strategyManagerCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + unpause(unpauseCall), + updateStaleValidatorCount(updateStaleValidatorCountCall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl EigenPodManagerMockCalls { + /// 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], + [30u8, 215u8, 131u8, 28u8], + [41u8, 43u8, 123u8, 43u8], + [42u8, 222u8, 56u8, 128u8], + [56u8, 123u8, 19u8, 0u8], + [57u8, 183u8, 14u8, 56u8], + [58u8, 89u8, 31u8, 8u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [68u8, 231u8, 28u8, 128u8], + [70u8, 61u8, 176u8, 56u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [96u8, 244u8, 6u8, 43u8], + [102u8, 217u8, 169u8, 160u8], + [116u8, 205u8, 215u8, 152u8], + [132u8, 216u8, 16u8, 98u8], + [133u8, 34u8, 108u8, 129u8], + [136u8, 111u8, 17u8, 149u8], + [145u8, 4u8, 195u8, 25u8], + [145u8, 106u8, 23u8, 198u8], + [155u8, 78u8, 70u8, 52u8], + [155u8, 160u8, 98u8, 117u8], + [163u8, 132u8, 6u8, 163u8], + [166u8, 165u8, 9u8, 190u8], + [177u8, 52u8, 66u8, 113u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [190u8, 255u8, 187u8, 137u8], + [191u8, 227u8, 74u8, 65u8], + [194u8, 197u8, 28u8, 64u8], + [217u8, 145u8, 10u8, 86u8], + [226u8, 12u8, 159u8, 113u8], + [246u8, 132u8, 141u8, 36u8], + [250u8, 118u8, 38u8, 212u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EigenPodManagerMockCalls { + const NAME: &'static str = "EigenPodManagerMockCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 39usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::addShares(_) => ::SELECTOR, + Self::beaconChainETHStrategy(_) => { + ::SELECTOR + } + Self::createPod(_) => ::SELECTOR, + Self::denebForkTimestamp(_) => { + ::SELECTOR + } + Self::eigenPodBeacon(_) => { + ::SELECTOR + } + Self::ethPOS(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::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::podShares(_) => ::SELECTOR, + Self::recordBeaconChainETHBalanceUpdate(_) => { + ::SELECTOR + } + Self::removeShares(_) => ::SELECTOR, + Self::setDenebForkTimestamp(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::setPodOwnerShares(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stake(_) => ::SELECTOR, + Self::strategyManager(_) => { + ::SELECTOR + } + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::unpause(_) => ::SELECTOR, + Self::updateStaleValidatorCount(_) => { + ::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(EigenPodManagerMockCalls::addShares) + } + addShares + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::pause) + } + pause + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::excludeSenders) + } + excludeSenders + }, + { + fn eigenPodBeacon( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::eigenPodBeacon) + } + eigenPodBeacon + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::strategyManager) + } + strategyManager + }, + { + fn setPodOwnerShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::setPodOwnerShares) + } + setPodOwnerShares + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::targetContracts) + } + targetContracts + }, + { + fn denebForkTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::denebForkTimestamp) + } + denebForkTimestamp + }, + { + fn setDenebForkTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::setDenebForkTimestamp) + } + setDenebForkTimestamp + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::paused_1) + } + paused_1 + }, + { + fn podOwnerShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::podOwnerShares) + } + podOwnerShares + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn ethPOS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::ethPOS) + } + ethPOS + }, + { + fn createPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::createPod) + } + createPod + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::targetSelectors) + } + targetSelectors + }, + { + fn stake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::stake) + } + stake + }, + { + fn ownerToPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::ownerToPod) + } + ownerToPod + }, + { + fn getPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::getPod) + } + getPod + }, + { + fn numPods( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::numPods) + } + numPods + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::slasher) + } + slasher + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::failed) + } + failed + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::removeShares) + } + removeShares + }, + { + fn podShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::podShares) + } + podShares + }, + { + fn recordBeaconChainETHBalanceUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + EigenPodManagerMockCalls::recordBeaconChainETHBalanceUpdate, + ) + } + recordBeaconChainETHBalanceUpdate + }, + { + fn updateStaleValidatorCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::updateStaleValidatorCount) + } + updateStaleValidatorCount + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerMockCalls::excludeContracts) + } + excludeContracts + }, + { + fn hasPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::hasPod) + } + hasPod + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::IS_TEST) + } + IS_TEST + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerMockCalls::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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::addShares(inner) => { + ::abi_encoded_size(inner) + } + Self::beaconChainETHStrategy(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::excludeArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::failed(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::podShares(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::setPodOwnerShares(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::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::updateStaleValidatorCount(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::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::addShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconChainETHStrategy(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::excludeArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::failed(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::podShares(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::setPodOwnerShares(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::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateStaleValidatorCount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawSharesAsTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`EigenPodManagerMock`](self) events. + pub enum EigenPodManagerMockEvents { + BeaconChainETHDeposited(BeaconChainETHDeposited), + BeaconChainETHWithdrawalCompleted(BeaconChainETHWithdrawalCompleted), + NewTotalShares(NewTotalShares), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + PodDeployed(PodDeployed), + PodSharesUpdated(PodSharesUpdated), + Unpaused(Unpaused), + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl EigenPodManagerMockEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 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, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 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, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 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, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 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, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 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, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 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, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, 154u8, + 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, 67u8, 46u8, + 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for EigenPodManagerMockEvents { + const NAME: &'static str = "EigenPodManagerMockEvents"; + const COUNT: usize = 30usize; + 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::NewTotalShares) + } + 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) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_int) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_address) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_array_0) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_array_1) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_bytes) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_bytes32) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_decimal_int) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::logs) + } + _ => { + 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 EigenPodManagerMockEvents { + 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::NewTotalShares(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), + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(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::NewTotalShares(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) + } + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EigenPodManagerMock`](self) contract instance. + + See the [wrapper's documentation](`EigenPodManagerMockInstance`) 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, + ) -> EigenPodManagerMockInstance { + EigenPodManagerMockInstance::::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, + _pauserRegistry: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + EigenPodManagerMockInstance::::deploy(provider, _pauserRegistry) + } + /**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, + _pauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + EigenPodManagerMockInstance::::deploy_builder(provider, _pauserRegistry) + } + /**A [`EigenPodManagerMock`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EigenPodManagerMock`](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 EigenPodManagerMockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EigenPodManagerMockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EigenPodManagerMockInstance") + .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, + > EigenPodManagerMockInstance + { + /**Creates a new wrapper around an on-chain [`EigenPodManagerMock`](self) contract instance. + + See the [wrapper's documentation](`EigenPodManagerMockInstance`) 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, + _pauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _pauserRegistry); + 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, + _pauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _pauserRegistry, + })[..], + ] + .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 EigenPodManagerMockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EigenPodManagerMockInstance { + EigenPodManagerMockInstance { + 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, + > EigenPodManagerMockInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`addShares`] function. + pub fn addShares( + &self, + _0: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addSharesCall { _0, 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 [`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 [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///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, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&hasPodCall { _0 }) + } + ///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, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerToPodCall { _0 }) + } + ///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 [`podShares`] function. + pub fn podShares( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&podSharesCall { _0 }) + } + ///Creates a new call builder for the [`recordBeaconChainETHBalanceUpdate`] function. + pub fn recordBeaconChainETHBalanceUpdate( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::primitives::aliases::I256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&recordBeaconChainETHBalanceUpdateCall { _0, _1 }) + } + ///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, + timestamp: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setDenebForkTimestampCall { timestamp }) + } + ///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 [`setPodOwnerShares`] function. + pub fn setPodOwnerShares( + &self, + podOwner: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::I256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPodOwnerSharesCall { podOwner, shares }) + } + ///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, + _0: alloy::sol_types::private::Bytes, + _1: alloy::sol_types::private::Bytes, + _2: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeCall { _0, _1, _2 }) + } + ///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 [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///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 [`updateStaleValidatorCount`] function. + pub fn updateStaleValidatorCount( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::primitives::aliases::I256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateStaleValidatorCountCall { _0, _1 }) + } + ///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, + > EigenPodManagerMockInstance + { + /// 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 [`NewTotalShares`] event. + pub fn NewTotalShares_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::() + } + ///Creates a new event filter for the [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/eigenpodmanagerstorage.rs b/crates/utils/src/middleware/eigenpodmanagerstorage.rs new file mode 100644 index 00000000..2c1126c5 --- /dev/null +++ b/crates/utils/src/middleware/eigenpodmanagerstorage.rs @@ -0,0 +1,5566 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface EigenPodManagerStorage { + event BeaconChainETHDeposited(address indexed podOwner, uint256 amount); + event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot); + event NewTotalShares(address indexed podOwner, int256 newTotalShares); + 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 createPod() external returns (address); + function delegationManager() external view returns (address); + function eigenPodBeacon() external view returns (address); + function ethPOS() external view returns (address); + 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) 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) external view returns (int256); + function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) external; + function removeShares(address podOwner, uint256 shares) 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 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": "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": "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": "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": "", + "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": "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": "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": "NewTotalShares", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newTotalShares", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "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::pub_underscore_fields, + clippy::style +)] +pub mod EigenPodManagerStorage { + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `NewTotalShares(address,int256)` and selector `0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098`. + ```solidity + event NewTotalShares(address indexed podOwner, int256 newTotalShares); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct NewTotalShares { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newTotalShares: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NewTotalShares { + 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 = "NewTotalShares(address,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, + 154u8, 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, + 67u8, 46u8, 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + podOwner: topics.1, + newTotalShares: 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.newTotalShares, + ), + ) + } + #[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 NewTotalShares { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NewTotalShares> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NewTotalShares) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `createPod()` and selector `0x84d81062`. + ```solidity + function createPod() external returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createPodCall {} + ///Container type for the return parameters of the [`createPod()`](createPodCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `delegationManager()` and selector `0xea4d3c9b`. + ```solidity + function delegationManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationManagerCall {} + ///Container type for the return parameters of the [`delegationManager()`](delegationManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationManagerCall { + 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: delegationManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegationManager()"; + const SELECTOR: [u8; 4] = [234u8, 77u8, 60u8, 155u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodBeaconCall {} + ///Container type for the return parameters of the [`eigenPodBeacon()`](eigenPodBeaconCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodBeaconReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSCall {} + ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `getPod(address)` and selector `0xa38406a3`. + ```solidity + function getPod(address podOwner) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasPodReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numPodsCall {} + ///Container type for the return parameters of the [`numPods()`](numPodsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numPodsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerToPodCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerToPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerToPodCall { + 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: 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._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 `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) external view returns (int256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerSharesCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for podOwnerSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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 `recordBeaconChainETHBalanceUpdate(address,int256)` and selector `0xc2c51c40`. + ```solidity + function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)` and selector `0x387b1300`. + ```solidity + function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`EigenPodManagerStorage`](self) function calls. + pub enum EigenPodManagerStorageCalls { + addShares(addSharesCall), + beaconChainETHStrategy(beaconChainETHStrategyCall), + createPod(createPodCall), + delegationManager(delegationManagerCall), + eigenPodBeacon(eigenPodBeaconCall), + ethPOS(ethPOSCall), + 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), + setPauserRegistry(setPauserRegistryCall), + slasher(slasherCall), + stake(stakeCall), + strategyManager(strategyManagerCall), + unpause(unpauseCall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl EigenPodManagerStorageCalls { + /// 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], + [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], + [194u8, 197u8, 28u8, 64u8], + [234u8, 77u8, 60u8, 155u8], + [246u8, 132u8, 141u8, 36u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EigenPodManagerStorageCalls { + const NAME: &'static str = "EigenPodManagerStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 24usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::addShares(_) => ::SELECTOR, + Self::beaconChainETHStrategy(_) => { + ::SELECTOR + } + Self::createPod(_) => ::SELECTOR, + Self::delegationManager(_) => { + ::SELECTOR + } + Self::eigenPodBeacon(_) => { + ::SELECTOR + } + Self::ethPOS(_) => ::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::setPauserRegistry(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stake(_) => ::SELECTOR, + Self::strategyManager(_) => { + ::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 addShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::addShares) + } + addShares + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::pause) + } + pause + }, + { + fn eigenPodBeacon( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::eigenPodBeacon) + } + eigenPodBeacon + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::strategyManager) + } + strategyManager + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::paused_1) + } + paused_1 + }, + { + fn podOwnerShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::podOwnerShares) + } + podOwnerShares + }, + { + fn ethPOS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::ethPOS) + } + ethPOS + }, + { + fn createPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::createPod) + } + createPod + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn stake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::stake) + } + stake + }, + { + fn ownerToPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::ownerToPod) + } + ownerToPod + }, + { + fn getPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::getPod) + } + getPod + }, + { + fn numPods( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::numPods) + } + numPods + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::slasher) + } + slasher + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::removeShares) + } + removeShares + }, + { + fn recordBeaconChainETHBalanceUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + EigenPodManagerStorageCalls::recordBeaconChainETHBalanceUpdate, + ) + } + recordBeaconChainETHBalanceUpdate + }, + { + fn delegationManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodManagerStorageCalls::delegationManager) + } + delegationManager + }, + { + fn hasPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::hasPod) + } + hasPod + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodManagerStorageCalls::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::createPod(inner) => { + ::abi_encoded_size(inner) + } + Self::delegationManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodBeacon(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ethPOS(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::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::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::createPod(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegationManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodBeacon(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ethPOS(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::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::withdrawSharesAsTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`EigenPodManagerStorage`](self) events. + pub enum EigenPodManagerStorageEvents { + BeaconChainETHDeposited(BeaconChainETHDeposited), + BeaconChainETHWithdrawalCompleted(BeaconChainETHWithdrawalCompleted), + NewTotalShares(NewTotalShares), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + PodDeployed(PodDeployed), + PodSharesUpdated(PodSharesUpdated), + Unpaused(Unpaused), + } + #[automatically_derived] + impl EigenPodManagerStorageEvents { + /// 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]] = &[ + [ + 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, + ], + [ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, 154u8, + 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, 67u8, 46u8, + 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for EigenPodManagerStorageEvents { + const NAME: &'static str = "EigenPodManagerStorageEvents"; + const COUNT: usize = 8usize; + 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::NewTotalShares) + } + 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 EigenPodManagerStorageEvents { + 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::NewTotalShares(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::NewTotalShares(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 [`EigenPodManagerStorage`](self) contract instance. + + See the [wrapper's documentation](`EigenPodManagerStorageInstance`) 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, + ) -> EigenPodManagerStorageInstance { + EigenPodManagerStorageInstance::::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>, + > { + EigenPodManagerStorageInstance::::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 { + EigenPodManagerStorageInstance::::deploy_builder(provider) + } + /**A [`EigenPodManagerStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EigenPodManagerStorage`](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 EigenPodManagerStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EigenPodManagerStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EigenPodManagerStorageInstance") + .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, + > EigenPodManagerStorageInstance + { + /**Creates a new wrapper around an on-chain [`EigenPodManagerStorage`](self) contract instance. + + See the [wrapper's documentation](`EigenPodManagerStorageInstance`) 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 EigenPodManagerStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EigenPodManagerStorageInstance { + EigenPodManagerStorageInstance { + 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, + > EigenPodManagerStorageInstance + { + /// 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 [`createPod`] function. + pub fn createPod(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&createPodCall {}) + } + ///Creates a new call builder for the [`delegationManager`] function. + pub fn delegationManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationManagerCall {}) + } + ///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 [`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, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerToPodCall { _0 }) + } + ///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, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&podOwnerSharesCall { _0 }) + } + ///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 [`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 [`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, + > EigenPodManagerStorageInstance + { + /// 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 [`NewTotalShares`] event. + pub fn NewTotalShares_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/middleware/eigenpodpausingconstants.rs b/crates/utils/src/middleware/eigenpodpausingconstants.rs new file mode 100644 index 00000000..f5325246 --- /dev/null +++ b/crates/utils/src/middleware/eigenpodpausingconstants.rs @@ -0,0 +1,227 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface EigenPodPausingConstants {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod EigenPodPausingConstants { + 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 [`EigenPodPausingConstants`](self) contract instance. + + See the [wrapper's documentation](`EigenPodPausingConstantsInstance`) 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, + ) -> EigenPodPausingConstantsInstance { + EigenPodPausingConstantsInstance::::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>, + > { + EigenPodPausingConstantsInstance::::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 { + EigenPodPausingConstantsInstance::::deploy_builder(provider) + } + /**A [`EigenPodPausingConstants`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EigenPodPausingConstants`](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 EigenPodPausingConstantsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EigenPodPausingConstantsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EigenPodPausingConstantsInstance") + .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, + > EigenPodPausingConstantsInstance + { + /**Creates a new wrapper around an on-chain [`EigenPodPausingConstants`](self) contract instance. + + See the [wrapper's documentation](`EigenPodPausingConstantsInstance`) 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 EigenPodPausingConstantsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EigenPodPausingConstantsInstance { + EigenPodPausingConstantsInstance { + 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, + > EigenPodPausingConstantsInstance + { + /// 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, + > EigenPodPausingConstantsInstance + { + /// 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/middleware/eigenpodstorage.rs b/crates/utils/src/middleware/eigenpodstorage.rs new file mode 100644 index 00000000..ed5c5e1c --- /dev/null +++ b/crates/utils/src/middleware/eigenpodstorage.rs @@ -0,0 +1,7804 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BeaconChainProofs { + struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; } + struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; } + struct StateRootProof { bytes32 beaconStateRoot; bytes proof; } + struct ValidatorProof { bytes32[] validatorFields; bytes proof; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BeaconChainProofs { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BalanceContainerProof { + pub balanceContainerRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: BalanceContainerProof) -> Self { + (value.balanceContainerRoot, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for BalanceContainerProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + balanceContainerRoot: tuple.0, + proof: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for BalanceContainerProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for BalanceContainerProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.balanceContainerRoot), + ::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 BalanceContainerProof { + 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 BalanceContainerProof { + const NAME: &'static str = "BalanceContainerProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "BalanceContainerProof(bytes32 balanceContainerRoot,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.balanceContainerRoot, + ) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for BalanceContainerProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceContainerRoot, + ) + + ::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.balanceContainerRoot, + 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 BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BalanceProof { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + pub balanceRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + 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: BalanceProof) -> Self { + (value.pubkeyHash, value.balanceRoot, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for BalanceProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: tuple.0, + balanceRoot: tuple.1, + proof: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for BalanceProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for BalanceProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + as alloy_sol_types::SolType>::tokenize(&self.balanceRoot), + ::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 BalanceProof { + 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 BalanceProof { + const NAME: &'static str = "BalanceProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "BalanceProof(bytes32 pubkeyHash,bytes32 balanceRoot,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.pubkeyHash) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.balanceRoot) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for BalanceProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.pubkeyHash, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceRoot, + ) + + ::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.pubkeyHash, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.balanceRoot, + 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 StateRootProof { bytes32 beaconStateRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 ValidatorProof { bytes32[] validatorFields; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ValidatorProof { + pub validatorFields: + alloy::sol_types::private::Vec>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + 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: ValidatorProof) -> Self { + (value.validatorFields, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ValidatorProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorFields: tuple.0, + proof: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ValidatorProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ValidatorProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), + ::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 ValidatorProof { + 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 ValidatorProof { + const NAME: &'static str = "ValidatorProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ValidatorProof(bytes32[] validatorFields,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.validatorFields, + ) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ValidatorProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.validatorFields, + ) + + ::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.validatorFields, + 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)) + } + } + }; + 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) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IEigenPod { + type VALIDATOR_STATUS is uint8; + struct Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int128 balanceDeltasGwei; } + struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IEigenPod { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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 Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int128 balanceDeltasGwei; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Checkpoint { + pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>, + pub proofsRemaining: alloy::sol_types::private::primitives::aliases::U24, + pub podBalanceGwei: u64, + pub balanceDeltasGwei: i128, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<24>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Int<128>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U24, + u64, + i128, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Checkpoint) -> Self { + ( + value.beaconBlockRoot, + value.proofsRemaining, + value.podBalanceGwei, + value.balanceDeltasGwei, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Checkpoint { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconBlockRoot: tuple.0, + proofsRemaining: tuple.1, + podBalanceGwei: tuple.2, + balanceDeltasGwei: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Checkpoint { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Checkpoint { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.beaconBlockRoot), + as alloy_sol_types::SolType>::tokenize(&self.proofsRemaining), + as alloy_sol_types::SolType>::tokenize(&self.podBalanceGwei), + as alloy_sol_types::SolType>::tokenize(&self.balanceDeltasGwei), + ) + } + #[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 Checkpoint { + 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 Checkpoint { + const NAME: &'static str = "Checkpoint"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Checkpoint(bytes32 beaconBlockRoot,uint24 proofsRemaining,uint64 podBalanceGwei,int128 balanceDeltasGwei)", + ) + } + #[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.beaconBlockRoot, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.proofsRemaining, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.podBalanceGwei, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.balanceDeltasGwei, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Checkpoint { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.beaconBlockRoot, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.proofsRemaining, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.podBalanceGwei, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceDeltasGwei, + ) + } + #[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.beaconBlockRoot, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.proofsRemaining, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.podBalanceGwei, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.balanceDeltasGwei, + 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 ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ValidatorInfo { + pub validatorIndex: u64, + pub restakedBalanceGwei: u64, + pub lastCheckpointedAt: u64, + pub status: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.lastCheckpointedAt, + value.status, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ValidatorInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorIndex: tuple.0, + restakedBalanceGwei: tuple.1, + lastCheckpointedAt: 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.lastCheckpointedAt, + ), + ::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 lastCheckpointedAt,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.lastCheckpointedAt, + ) + .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.lastCheckpointedAt, + ) + + ::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.lastCheckpointedAt, + 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)) + } + } + }; + 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) + } + /**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, + } + } + /// 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) + } + } + /// 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) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BeaconChainProofs { + struct BalanceContainerProof { + bytes32 balanceContainerRoot; + bytes proof; + } + struct BalanceProof { + bytes32 pubkeyHash; + bytes32 balanceRoot; + bytes proof; + } + struct StateRootProof { + bytes32 beaconStateRoot; + bytes proof; + } + struct ValidatorProof { + bytes32[] validatorFields; + bytes proof; + } +} + +library IEigenPod { + type VALIDATOR_STATUS is uint8; + struct Checkpoint { + bytes32 beaconBlockRoot; + uint24 proofsRemaining; + uint64 podBalanceGwei; + int128 balanceDeltasGwei; + } + struct ValidatorInfo { + uint64 validatorIndex; + uint64 restakedBalanceGwei; + uint64 lastCheckpointedAt; + VALIDATOR_STATUS status; + } +} + +interface EigenPodStorage { + event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount); + event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei); + event EigenPodStaked(bytes pubkey); + event NonBeaconChainETHReceived(uint256 amountReceived); + event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter); + event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount); + event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei); + event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + event ValidatorRestaked(uint40 validatorIndex); + event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + + function activeValidatorCount() external view returns (uint256); + function checkpointBalanceExitedGwei(uint64) external view returns (uint64); + function currentCheckpoint() external view returns (IEigenPod.Checkpoint memory); + function currentCheckpointTimestamp() external view returns (uint64); + function eigenPodManager() external view returns (address); + function getParentBlockRoot(uint64 timestamp) external view returns (bytes32); + function initialize(address owner) external; + function lastCheckpointTimestamp() external view returns (uint64); + function podOwner() external view returns (address); + function proofSubmitter() external view returns (address); + function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external; + function setProofSubmitter(address newProofSubmitter) external; + function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + function startCheckpoint(bool revertIfNoBalance) external; + function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (IEigenPod.ValidatorInfo memory); + function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (IEigenPod.ValidatorInfo memory); + function validatorStatus(bytes memory validatorPubkey) external view returns (IEigenPod.VALIDATOR_STATUS); + function validatorStatus(bytes32 pubkeyHash) external view returns (IEigenPod.VALIDATOR_STATUS); + function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external; + function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external; + function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) 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": "activeValidatorCount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "checkpointBalanceExitedGwei", + "inputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentCheckpoint", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.Checkpoint", + "components": [ + { + "name": "beaconBlockRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proofsRemaining", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "podBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "balanceDeltasGwei", + "type": "int128", + "internalType": "int128" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentCheckpointTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getParentBlockRoot", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "lastCheckpointTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "podOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proofSubmitter", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "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": "setProofSubmitter", + "inputs": [ + { + "name": "newProofSubmitter", + "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": "startCheckpoint", + "inputs": [ + { + "name": "revertIfNoBalance", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "lastCheckpointedAt", + "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": "lastCheckpointedAt", + "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": "verifyCheckpointProofs", + "inputs": [ + { + "name": "balanceContainerProof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.BalanceContainerProof", + "components": [ + { + "name": "balanceContainerRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "proofs", + "type": "tuple[]", + "internalType": "struct BeaconChainProofs.BalanceProof[]", + "components": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "balanceRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyStaleBalance", + "inputs": [ + { + "name": "beaconTimestamp", + "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": "proof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.ValidatorProof", + "components": [ + { + "name": "validatorFields", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyWithdrawalCredentials", + "inputs": [ + { + "name": "beaconTimestamp", + "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": "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": "CheckpointCreated", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "beaconBlockRoot", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "validatorCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "CheckpointFinalized", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "totalShareDeltaWei", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EigenPodStaked", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonBeaconChainETHReceived", + "inputs": [ + { + "name": "amountReceived", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProofSubmitterUpdated", + "inputs": [ + { + "name": "prevProofSubmitter", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newProofSubmitter", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "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": "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": "ValidatorCheckpointed", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "validatorIndex", + "type": "uint40", + "indexed": true, + "internalType": "uint40" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorRestaked", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorWithdrawn", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "validatorIndex", + "type": "uint40", + "indexed": true, + "internalType": "uint40" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod EigenPodStorage { + 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 `CheckpointCreated(uint64,bytes32,uint256)` and selector `0x575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076`. + ```solidity + event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct CheckpointCreated { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub validatorCount: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for CheckpointCreated { + 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<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "CheckpointCreated(uint64,bytes32,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8, 164u8, + 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8, 244u8, 183u8, + 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + beaconBlockRoot: topics.2, + validatorCount: 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.validatorCount, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.clone(), + self.beaconBlockRoot.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.beaconBlockRoot); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for CheckpointCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&CheckpointCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &CheckpointCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `CheckpointFinalized(uint64,int256)` and selector `0x525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44`. + ```solidity + event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct CheckpointFinalized { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub totalShareDeltaWei: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for CheckpointFinalized { + 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::Uint<64>, + ); + const SIGNATURE: &'static str = "CheckpointFinalized(uint64,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8, 111u8, + 100u8, 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8, 59u8, 207u8, + 220u8, 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + totalShareDeltaWei: 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.totalShareDeltaWei, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.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.checkpointTimestamp, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for CheckpointFinalized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&CheckpointFinalized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &CheckpointFinalized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `EigenPodStaked(bytes)` and selector `0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23`. + ```solidity + event EigenPodStaked(bytes pubkey); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `NonBeaconChainETHReceived(uint256)` and selector `0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49`. + ```solidity + event NonBeaconChainETHReceived(uint256 amountReceived); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `ProofSubmitterUpdated(address,address)` and selector `0xfb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac`. + ```solidity + event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ProofSubmitterUpdated { + #[allow(missing_docs)] + pub prevProofSubmitter: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newProofSubmitter: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProofSubmitterUpdated { + 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 = "ProofSubmitterUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8, 186u8, + 37u8, 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8, 99u8, 205u8, + 202u8, 74u8, 150u8, 154u8, 209u8, 154u8, 94u8, 172u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevProofSubmitter: data.0, + newProofSubmitter: 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.prevProofSubmitter, + ), + ::tokenize( + &self.newProofSubmitter, + ), + ) + } + #[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 ProofSubmitterUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProofSubmitterUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ProofSubmitterUpdated) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `ValidatorCheckpointed(uint64,uint40)` and selector `0xa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f`. + ```solidity + event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ValidatorCheckpointed { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ValidatorCheckpointed { + 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<64>, + alloy::sol_types::sol_data::Uint<40>, + ); + const SIGNATURE: &'static str = "ValidatorCheckpointed(uint64,uint40)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8, 172u8, + 236u8, 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8, 245u8, 244u8, + 202u8, 227u8, 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + validatorIndex: 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.checkpointTimestamp.clone(), + self.validatorIndex.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ValidatorCheckpointed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ValidatorCheckpointed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ValidatorCheckpointed) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**Event with signature `ValidatorWithdrawn(uint64,uint40)` and selector `0x2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a`. + ```solidity + event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ValidatorWithdrawn { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ValidatorWithdrawn { + 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<64>, + alloy::sol_types::sol_data::Uint<40>, + ); + const SIGNATURE: &'static str = "ValidatorWithdrawn(uint64,uint40)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8, 44u8, + 35u8, 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8, 230u8, 86u8, + 62u8, 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + validatorIndex: 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.checkpointTimestamp.clone(), + self.validatorIndex.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ValidatorWithdrawn { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ValidatorWithdrawn> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ValidatorWithdrawn) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `activeValidatorCount()` and selector `0x2340e8d3`. + ```solidity + function activeValidatorCount() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct activeValidatorCountCall {} + ///Container type for the return parameters of the [`activeValidatorCount()`](activeValidatorCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct activeValidatorCountReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: activeValidatorCountCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activeValidatorCountCall { + 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: activeValidatorCountReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activeValidatorCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for activeValidatorCountCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = activeValidatorCountReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "activeValidatorCount()"; + const SELECTOR: [u8; 4] = [35u8, 64u8, 232u8, 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 `checkpointBalanceExitedGwei(uint64)` and selector `0x52396a59`. + ```solidity + function checkpointBalanceExitedGwei(uint64) external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkpointBalanceExitedGweiCall { + pub _0: u64, + } + ///Container type for the return parameters of the [`checkpointBalanceExitedGwei(uint64)`](checkpointBalanceExitedGweiCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkpointBalanceExitedGweiReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: checkpointBalanceExitedGweiCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkpointBalanceExitedGweiCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[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: checkpointBalanceExitedGweiReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkpointBalanceExitedGweiReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for checkpointBalanceExitedGweiCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = checkpointBalanceExitedGweiReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "checkpointBalanceExitedGwei(uint64)"; + const SELECTOR: [u8; 4] = [82u8, 57u8, 106u8, 89u8]; + #[inline] + fn new<'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 `currentCheckpoint()` and selector `0x47d28372`. + ```solidity + function currentCheckpoint() external view returns (IEigenPod.Checkpoint memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointCall {} + ///Container type for the return parameters of the [`currentCheckpoint()`](currentCheckpointCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IEigenPod::Checkpoint,); + #[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: currentCheckpointReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentCheckpointCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentCheckpointReturn; + type ReturnTuple<'a> = (IEigenPod::Checkpoint,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentCheckpoint()"; + const SELECTOR: [u8; 4] = [71u8, 210u8, 131u8, 114u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `currentCheckpointTimestamp()` and selector `0x42ecff2a`. + ```solidity + function currentCheckpointTimestamp() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointTimestampCall {} + ///Container type for the return parameters of the [`currentCheckpointTimestamp()`](currentCheckpointTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointTimestampReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointTimestampCall { + 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: currentCheckpointTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentCheckpointTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentCheckpointTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentCheckpointTimestamp()"; + const SELECTOR: [u8; 4] = [66u8, 236u8, 255u8, 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 `eigenPodManager()` and selector `0x4665bcda`. + ```solidity + function eigenPodManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `getParentBlockRoot(uint64)` and selector `0x6c0d2d5a`. + ```solidity + function getParentBlockRoot(uint64 timestamp) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getParentBlockRootCall { + pub timestamp: u64, + } + ///Container type for the return parameters of the [`getParentBlockRoot(uint64)`](getParentBlockRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getParentBlockRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getParentBlockRootCall) -> Self { + (value.timestamp,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getParentBlockRootCall { + 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: getParentBlockRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getParentBlockRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getParentBlockRootCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getParentBlockRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getParentBlockRoot(uint64)"; + const SELECTOR: [u8; 4] = [108u8, 13u8, 45u8, 90u8]; + #[inline] + fn new<'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 `initialize(address)` and selector `0xc4d66de8`. + ```solidity + function initialize(address owner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `lastCheckpointTimestamp()` and selector `0xee94d67c`. + ```solidity + function lastCheckpointTimestamp() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct lastCheckpointTimestampCall {} + ///Container type for the return parameters of the [`lastCheckpointTimestamp()`](lastCheckpointTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct lastCheckpointTimestampReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastCheckpointTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastCheckpointTimestampCall { + 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: lastCheckpointTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastCheckpointTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for lastCheckpointTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = lastCheckpointTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "lastCheckpointTimestamp()"; + const SELECTOR: [u8; 4] = [238u8, 148u8, 214u8, 124u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerCall {} + ///Container type for the return parameters of the [`podOwner()`](podOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `proofSubmitter()` and selector `0x58753357`. + ```solidity + function proofSubmitter() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proofSubmitterCall {} + ///Container type for the return parameters of the [`proofSubmitter()`](proofSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proofSubmitterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proofSubmitterCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proofSubmitterCall { + 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: proofSubmitterReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proofSubmitterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for proofSubmitterCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = proofSubmitterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "proofSubmitter()"; + const SELECTOR: [u8; 4] = [88u8, 117u8, 51u8, 87u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recoverTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setProofSubmitter(address)` and selector `0xd06d5587`. + ```solidity + function setProofSubmitter(address newProofSubmitter) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setProofSubmitterCall { + pub newProofSubmitter: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProofSubmitter(address)`](setProofSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setProofSubmitterReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setProofSubmitterCall) -> Self { + (value.newProofSubmitter,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setProofSubmitterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newProofSubmitter: 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: setProofSubmitterReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setProofSubmitterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProofSubmitterCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProofSubmitterReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProofSubmitter(address)"; + const SELECTOR: [u8; 4] = [208u8, 109u8, 85u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newProofSubmitter, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `startCheckpoint(bool)` and selector `0x88676cad`. + ```solidity + function startCheckpoint(bool revertIfNoBalance) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct startCheckpointCall { + pub revertIfNoBalance: bool, + } + ///Container type for the return parameters of the [`startCheckpoint(bool)`](startCheckpointCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct startCheckpointReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: startCheckpointCall) -> Self { + (value.revertIfNoBalance,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for startCheckpointCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + revertIfNoBalance: 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: startCheckpointReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for startCheckpointReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for startCheckpointCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bool,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = startCheckpointReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "startCheckpoint(bool)"; + const SELECTOR: [u8; 4] = [136u8, 103u8, 108u8, 173u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.revertIfNoBalance, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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 (IEigenPod.ValidatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorPubkeyHashToInfoReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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> = (IEigenPod::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> = (IEigenPod::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 (IEigenPod.ValidatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorPubkeyToInfoReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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> = (IEigenPod::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> = (IEigenPod::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 (IEigenPod.VALIDATOR_STATUS); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorStatus_0Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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> = (IEigenPod::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> = (IEigenPod::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 (IEigenPod.VALIDATOR_STATUS); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorStatus_1Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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> = (IEigenPod::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> = (IEigenPod::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 `verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])` and selector `0xf074ba62`. + ```solidity + function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyCheckpointProofsCall { + pub balanceContainerProof: + ::RustType, + pub proofs: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])`](verifyCheckpointProofsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyCheckpointProofsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + BeaconChainProofs::BalanceContainerProof, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + 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: verifyCheckpointProofsCall) -> Self { + (value.balanceContainerProof, value.proofs) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyCheckpointProofsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + balanceContainerProof: tuple.0, + proofs: 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: verifyCheckpointProofsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyCheckpointProofsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyCheckpointProofsCall { + type Parameters<'a> = ( + BeaconChainProofs::BalanceContainerProof, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyCheckpointProofsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])"; + const SELECTOR: [u8; 4] = [240u8, 116u8, 186u8, 98u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.balanceContainerProof, + ), + as alloy_sol_types::SolType>::tokenize(&self.proofs), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))` and selector `0x039157d2`. + ```solidity + function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyStaleBalanceCall { + pub beaconTimestamp: u64, + pub stateRootProof: + ::RustType, + pub proof: ::RustType, + } + ///Container type for the return parameters of the [`verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))`](verifyStaleBalanceCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyStaleBalanceReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + BeaconChainProofs::ValidatorProof, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + ::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: verifyStaleBalanceCall) -> Self { + (value.beaconTimestamp, value.stateRootProof, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyStaleBalanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconTimestamp: tuple.0, + stateRootProof: tuple.1, + proof: 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: verifyStaleBalanceReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyStaleBalanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyStaleBalanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + BeaconChainProofs::ValidatorProof, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyStaleBalanceReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))"; + const SELECTOR: [u8; 4] = [3u8, 145u8, 87u8, 210u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.beaconTimestamp, + ), + ::tokenize( + &self.stateRootProof, + ), + ::tokenize( + &self.proof, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyWithdrawalCredentialsCall { + pub beaconTimestamp: u64, + pub stateRootProof: + ::RustType, + pub validatorIndices: + alloy::sol_types::private::Vec, + 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 [`verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])`](verifyWithdrawalCredentialsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyWithdrawalCredentialsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.beaconTimestamp, + value.stateRootProof, + value.validatorIndices, + value.validatorFieldsProofs, + value.validatorFields, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyWithdrawalCredentialsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconTimestamp: tuple.0, + stateRootProof: tuple.1, + validatorIndices: 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: 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.beaconTimestamp), + ::tokenize( + &self.stateRootProof, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorIndices), + 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 `withdrawRestakedBeaconChainETH(address,uint256)` and selector `0xc4907442`. + ```solidity + function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawRestakedBeaconChainETHReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawableRestakedExecutionLayerGweiCall {} + ///Container type for the return parameters of the [`withdrawableRestakedExecutionLayerGwei()`](withdrawableRestakedExecutionLayerGweiCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawableRestakedExecutionLayerGweiReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 [`EigenPodStorage`](self) function calls. + pub enum EigenPodStorageCalls { + activeValidatorCount(activeValidatorCountCall), + checkpointBalanceExitedGwei(checkpointBalanceExitedGweiCall), + currentCheckpoint(currentCheckpointCall), + currentCheckpointTimestamp(currentCheckpointTimestampCall), + eigenPodManager(eigenPodManagerCall), + getParentBlockRoot(getParentBlockRootCall), + initialize(initializeCall), + lastCheckpointTimestamp(lastCheckpointTimestampCall), + podOwner(podOwnerCall), + proofSubmitter(proofSubmitterCall), + recoverTokens(recoverTokensCall), + setProofSubmitter(setProofSubmitterCall), + stake(stakeCall), + startCheckpoint(startCheckpointCall), + validatorPubkeyHashToInfo(validatorPubkeyHashToInfoCall), + validatorPubkeyToInfo(validatorPubkeyToInfoCall), + validatorStatus_0(validatorStatus_0Call), + validatorStatus_1(validatorStatus_1Call), + verifyCheckpointProofs(verifyCheckpointProofsCall), + verifyStaleBalance(verifyStaleBalanceCall), + verifyWithdrawalCredentials(verifyWithdrawalCredentialsCall), + withdrawRestakedBeaconChainETH(withdrawRestakedBeaconChainETHCall), + withdrawableRestakedExecutionLayerGwei(withdrawableRestakedExecutionLayerGweiCall), + } + #[automatically_derived] + impl EigenPodStorageCalls { + /// 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, 145u8, 87u8, 210u8], + [11u8, 24u8, 255u8, 102u8], + [35u8, 64u8, 232u8, 211u8], + [52u8, 116u8, 170u8, 22u8], + [63u8, 101u8, 207u8, 25u8], + [66u8, 236u8, 255u8, 42u8], + [70u8, 101u8, 188u8, 218u8], + [71u8, 210u8, 131u8, 114u8], + [82u8, 57u8, 106u8, 89u8], + [88u8, 117u8, 51u8, 87u8], + [88u8, 234u8, 238u8, 121u8], + [108u8, 13u8, 45u8, 90u8], + [111u8, 205u8, 14u8, 83u8], + [116u8, 57u8, 132u8, 31u8], + [136u8, 103u8, 108u8, 173u8], + [155u8, 78u8, 70u8, 52u8], + [181u8, 34u8, 83u8, 138u8], + [196u8, 144u8, 116u8, 66u8], + [196u8, 214u8, 109u8, 232u8], + [208u8, 109u8, 85u8, 135u8], + [221u8, 163u8, 52u8, 108u8], + [238u8, 148u8, 214u8, 124u8], + [240u8, 116u8, 186u8, 98u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EigenPodStorageCalls { + const NAME: &'static str = "EigenPodStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 23usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::activeValidatorCount(_) => { + ::SELECTOR + } + Self::checkpointBalanceExitedGwei(_) => { + ::SELECTOR + } + Self::currentCheckpoint(_) => { + ::SELECTOR + } + Self::currentCheckpointTimestamp(_) => { + ::SELECTOR + } + Self::eigenPodManager(_) => { + ::SELECTOR + } + Self::getParentBlockRoot(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::lastCheckpointTimestamp(_) => { + ::SELECTOR + } + Self::podOwner(_) => ::SELECTOR, + Self::proofSubmitter(_) => { + ::SELECTOR + } + Self::recoverTokens(_) => { + ::SELECTOR + } + Self::setProofSubmitter(_) => { + ::SELECTOR + } + Self::stake(_) => ::SELECTOR, + Self::startCheckpoint(_) => { + ::SELECTOR + } + Self::validatorPubkeyHashToInfo(_) => { + ::SELECTOR + } + Self::validatorPubkeyToInfo(_) => { + ::SELECTOR + } + Self::validatorStatus_0(_) => { + ::SELECTOR + } + Self::validatorStatus_1(_) => { + ::SELECTOR + } + Self::verifyCheckpointProofs(_) => { + ::SELECTOR + } + Self::verifyStaleBalance(_) => { + ::SELECTOR + } + Self::verifyWithdrawalCredentials(_) => { + ::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 verifyStaleBalance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::verifyStaleBalance) + } + verifyStaleBalance + }, + { + fn podOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodStorageCalls::podOwner) + } + podOwner + }, + { + fn activeValidatorCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::activeValidatorCount) + } + activeValidatorCount + }, + { + fn withdrawableRestakedExecutionLayerGwei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + EigenPodStorageCalls::withdrawableRestakedExecutionLayerGwei, + ) + } + withdrawableRestakedExecutionLayerGwei + }, + { + fn verifyWithdrawalCredentials( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodStorageCalls::verifyWithdrawalCredentials) + } + verifyWithdrawalCredentials + }, + { + fn currentCheckpointTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodStorageCalls::currentCheckpointTimestamp) + } + currentCheckpointTimestamp + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn currentCheckpoint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::currentCheckpoint) + } + currentCheckpoint + }, + { + fn checkpointBalanceExitedGwei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodStorageCalls::checkpointBalanceExitedGwei) + } + checkpointBalanceExitedGwei + }, + { + fn proofSubmitter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::proofSubmitter) + } + proofSubmitter + }, + { + fn validatorStatus_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::validatorStatus_0) + } + validatorStatus_0 + }, + { + fn getParentBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::getParentBlockRoot) + } + getParentBlockRoot + }, + { + fn validatorPubkeyHashToInfo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::validatorPubkeyHashToInfo) + } + validatorPubkeyHashToInfo + }, + { + fn validatorStatus_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::validatorStatus_1) + } + validatorStatus_1 + }, + { + fn startCheckpoint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::startCheckpoint) + } + startCheckpoint + }, + { + fn stake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodStorageCalls::stake) + } + stake + }, + { + fn validatorPubkeyToInfo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::validatorPubkeyToInfo) + } + validatorPubkeyToInfo + }, + { + fn withdrawRestakedBeaconChainETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EigenPodStorageCalls::withdrawRestakedBeaconChainETH) + } + withdrawRestakedBeaconChainETH + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenPodStorageCalls::initialize) + } + initialize + }, + { + fn setProofSubmitter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::setProofSubmitter) + } + setProofSubmitter + }, + { + fn recoverTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::recoverTokens) + } + recoverTokens + }, + { + fn lastCheckpointTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::lastCheckpointTimestamp) + } + lastCheckpointTimestamp + }, + { + fn verifyCheckpointProofs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EigenPodStorageCalls::verifyCheckpointProofs) + } + verifyCheckpointProofs + }, + ]; + 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::activeValidatorCount(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::checkpointBalanceExitedGwei(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentCheckpoint(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentCheckpointTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getParentBlockRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::lastCheckpointTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::podOwner(inner) => { + ::abi_encoded_size(inner) + } + Self::proofSubmitter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recoverTokens(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setProofSubmitter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stake(inner) => { + ::abi_encoded_size(inner) + } + Self::startCheckpoint(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::verifyCheckpointProofs(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyStaleBalance(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyWithdrawalCredentials(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::activeValidatorCount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::checkpointBalanceExitedGwei(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currentCheckpoint(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currentCheckpointTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getParentBlockRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::lastCheckpointTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::podOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::proofSubmitter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recoverTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setProofSubmitter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stake(inner) => { + ::abi_encode_raw(inner, out) + } + Self::startCheckpoint(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::verifyCheckpointProofs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyStaleBalance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyWithdrawalCredentials(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 [`EigenPodStorage`](self) events. + pub enum EigenPodStorageEvents { + CheckpointCreated(CheckpointCreated), + CheckpointFinalized(CheckpointFinalized), + EigenPodStaked(EigenPodStaked), + NonBeaconChainETHReceived(NonBeaconChainETHReceived), + ProofSubmitterUpdated(ProofSubmitterUpdated), + RestakedBeaconChainETHWithdrawn(RestakedBeaconChainETHWithdrawn), + ValidatorBalanceUpdated(ValidatorBalanceUpdated), + ValidatorCheckpointed(ValidatorCheckpointed), + ValidatorRestaked(ValidatorRestaked), + ValidatorWithdrawn(ValidatorWithdrawn), + } + #[automatically_derived] + impl EigenPodStorageEvents { + /// 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, + ], + [ + 42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8, 44u8, 35u8, + 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8, 230u8, 86u8, 62u8, + 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8, + ], + [ + 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, + ], + [ + 82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8, 111u8, 100u8, + 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8, 59u8, 207u8, 220u8, + 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8, + ], + [ + 87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8, 164u8, + 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8, 244u8, 183u8, + 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8, + ], + [ + 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, + ], + [ + 169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8, 172u8, 236u8, + 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8, 245u8, 244u8, 202u8, 227u8, + 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8, + ], + [ + 251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8, 186u8, 37u8, + 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8, 99u8, 205u8, 202u8, 74u8, + 150u8, 154u8, 209u8, 154u8, 94u8, 172u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for EigenPodStorageEvents { + const NAME: &'static str = "EigenPodStorageEvents"; + 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::CheckpointCreated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::CheckpointFinalized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EigenPodStaked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::NonBeaconChainETHReceived) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ProofSubmitterUpdated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RestakedBeaconChainETHWithdrawn) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorBalanceUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorCheckpointed) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorRestaked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorWithdrawn) + } + _ => 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 EigenPodStorageEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::CheckpointCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::CheckpointFinalized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::EigenPodStaked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NonBeaconChainETHReceived(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProofSubmitterUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RestakedBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorBalanceUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorCheckpointed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorRestaked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::CheckpointCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::CheckpointFinalized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::EigenPodStaked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NonBeaconChainETHReceived(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProofSubmitterUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RestakedBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorBalanceUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorCheckpointed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorRestaked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EigenPodStorage`](self) contract instance. + + See the [wrapper's documentation](`EigenPodStorageInstance`) 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, + ) -> EigenPodStorageInstance { + EigenPodStorageInstance::::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>> + { + EigenPodStorageInstance::::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 { + EigenPodStorageInstance::::deploy_builder(provider) + } + /**A [`EigenPodStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EigenPodStorage`](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 EigenPodStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EigenPodStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EigenPodStorageInstance") + .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, + > EigenPodStorageInstance + { + /**Creates a new wrapper around an on-chain [`EigenPodStorage`](self) contract instance. + + See the [wrapper's documentation](`EigenPodStorageInstance`) 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 EigenPodStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EigenPodStorageInstance { + EigenPodStorageInstance { + 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, + > EigenPodStorageInstance + { + /// 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 [`activeValidatorCount`] function. + pub fn activeValidatorCount( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&activeValidatorCountCall {}) + } + ///Creates a new call builder for the [`checkpointBalanceExitedGwei`] function. + pub fn checkpointBalanceExitedGwei( + &self, + _0: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&checkpointBalanceExitedGweiCall { _0 }) + } + ///Creates a new call builder for the [`currentCheckpoint`] function. + pub fn currentCheckpoint( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tCheckpointCall {}) + } + ///Creates a new call builder for the [`currentCheckpointTimestamp`] function. + pub fn currentCheckpointTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tCheckpointTimestampCall {}) + } + ///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 [`getParentBlockRoot`] function. + pub fn getParentBlockRoot( + &self, + timestamp: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getParentBlockRootCall { timestamp }) + } + ///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 [`lastCheckpointTimestamp`] function. + pub fn lastCheckpointTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&lastCheckpointTimestampCall {}) + } + ///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 [`proofSubmitter`] function. + pub fn proofSubmitter( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&proofSubmitterCall {}) + } + ///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 [`setProofSubmitter`] function. + pub fn setProofSubmitter( + &self, + newProofSubmitter: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setProofSubmitterCall { newProofSubmitter }) + } + ///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 [`startCheckpoint`] function. + pub fn startCheckpoint( + &self, + revertIfNoBalance: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&startCheckpointCall { revertIfNoBalance }) + } + ///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 [`verifyCheckpointProofs`] function. + pub fn verifyCheckpointProofs( + &self, + balanceContainerProof: ::RustType, + proofs: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyCheckpointProofsCall { + balanceContainerProof, + proofs, + }) + } + ///Creates a new call builder for the [`verifyStaleBalance`] function. + pub fn verifyStaleBalance( + &self, + beaconTimestamp: u64, + stateRootProof: ::RustType, + proof: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyStaleBalanceCall { + beaconTimestamp, + stateRootProof, + proof, + }) + } + ///Creates a new call builder for the [`verifyWithdrawalCredentials`] function. + pub fn verifyWithdrawalCredentials( + &self, + beaconTimestamp: u64, + stateRootProof: ::RustType, + validatorIndices: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U40, + >, + validatorFieldsProofs: alloy::sol_types::private::Vec, + validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyWithdrawalCredentialsCall { + beaconTimestamp, + stateRootProof, + validatorIndices, + validatorFieldsProofs, + validatorFields, + }) + } + ///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, + > EigenPodStorageInstance + { + /// 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 [`CheckpointCreated`] event. + pub fn CheckpointCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`CheckpointFinalized`] event. + pub fn CheckpointFinalized_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///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 [`NonBeaconChainETHReceived`] event. + pub fn NonBeaconChainETHReceived_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProofSubmitterUpdated`] event. + pub fn ProofSubmitterUpdated_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 [`ValidatorBalanceUpdated`] event. + pub fn ValidatorBalanceUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ValidatorCheckpointed`] event. + pub fn ValidatorCheckpointed_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::() + } + ///Creates a new event filter for the [`ValidatorWithdrawn`] event. + pub fn ValidatorWithdrawn_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/eip1271signatureutils.rs b/crates/utils/src/middleware/eip1271signatureutils.rs similarity index 93% rename from crates/utils/src/eip1271signatureutils.rs rename to crates/utils/src/middleware/eip1271signatureutils.rs index 43175b6b..f96e9729 100644 --- a/crates/utils/src/eip1271signatureutils.rs +++ b/crates/utils/src/middleware/eip1271signatureutils.rs @@ -9,29 +9,34 @@ interface EIP1271SignatureUtils {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod EIP1271SignatureUtils { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000867163d1d9af6962b975084f57abd381390b52d6d3acf2f18580d3388489bb64736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c72eaf0a36fbad928548ead99b92e60775117e8d836caf5e1fd38f49466a44a64736f6c634300080c0033 /// ``` #[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", + 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 ,r\xEA\xF0\xA3o\xBA\xD9(T\x8E\xAD\x99\xB9.`wQ\x17\xE8\xD86\xCA\xF5\xE1\xFD8\xF4\x94f\xA4JdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000867163d1d9af6962b975084f57abd381390b52d6d3acf2f18580d3388489bb64736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c72eaf0a36fbad928548ead99b92e60775117e8d836caf5e1fd38f49466a44a64736f6c634300080c0033 /// ``` #[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", + 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 ,r\xEA\xF0\xA3o\xBA\xD9(T\x8E\xAD\x99\xB9.`wQ\x17\xE8\xD86\xCA\xF5\xE1\xFD8\xF4\x94f\xA4JdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`EIP1271SignatureUtils`](self) contract instance. diff --git a/crates/utils/src/middleware/eip712.rs b/crates/utils/src/middleware/eip712.rs new file mode 100644 index 00000000..76f03eb4 --- /dev/null +++ b/crates/utils/src/middleware/eip712.rs @@ -0,0 +1,223 @@ +/** + +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::pub_underscore_fields, + 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/emptycontract.rs b/crates/utils/src/middleware/emptycontract.rs similarity index 94% rename from crates/utils/src/emptycontract.rs rename to crates/utils/src/middleware/emptycontract.rs index b47ee898..28bcd295 100644 --- a/crates/utils/src/emptycontract.rs +++ b/crates/utils/src/middleware/emptycontract.rs @@ -25,44 +25,54 @@ interface EmptyContract { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod EmptyContract { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122007c80e3ab75b64ab2851d22a863601e8064735da0ba4040cde0990cb0528b7c064736f6c634300080c0033 + ///0x6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033 /// ``` #[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", + 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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122007c80e3ab75b64ab2851d22a863601e8064735da0ba4040cde0990cb0528b7c064736f6c634300080c0033 + ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033 /// ``` #[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", + 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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct fooCall {} ///Container type for the return parameters of the [`foo()`](fooCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct fooReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/endian.rs b/crates/utils/src/middleware/endian.rs similarity index 93% rename from crates/utils/src/endian.rs rename to crates/utils/src/middleware/endian.rs index 2bb8af26..08a7f166 100644 --- a/crates/utils/src/endian.rs +++ b/crates/utils/src/middleware/endian.rs @@ -9,29 +9,34 @@ interface Endian {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod Endian { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122086bf1e0aacb39f5db00198393f7847d474baa4c4b60685593f1e795391754a8364736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022c859432041a4834560aa3636700dadc411f86798069871f035ccfe397c6ec364736f6c634300080c0033 /// ``` #[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", + 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 \"\xC8YC A\xA4\x83E`\xAA66p\r\xAD\xC4\x11\xF8g\x98\x06\x98q\xF05\xCC\xFE9|n\xC3dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122086bf1e0aacb39f5db00198393f7847d474baa4c4b60685593f1e795391754a8364736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022c859432041a4834560aa3636700dadc411f86798069871f035ccfe397c6ec364736f6c634300080c0033 /// ``` #[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", + 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 \"\xC8YC A\xA4\x83E`\xAA66p\r\xAD\xC4\x11\xF8g\x98\x06\x98q\xF05\xCC\xFE9|n\xC3dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Endian`](self) contract instance. diff --git a/crates/utils/src/middleware/equalweightecdsaregistry.rs b/crates/utils/src/middleware/equalweightecdsaregistry.rs new file mode 100644 index 00000000..5aba0059 --- /dev/null +++ b/crates/utils/src/middleware/equalweightecdsaregistry.rs @@ -0,0 +1,9199 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface EqualWeightECDSARegistry { + struct Quorum { + StrategyParams[] strategies; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } + + error InsufficientSignedStake(); + error InsufficientWeight(); + error InvalidLength(); + error InvalidQuorum(); + 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 ThresholdWeightUpdated(uint256 _thresholdWeight); + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mockDelegationManager() external view returns (address); + function mockServiceManager() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function test_FixedStakeUpdates() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mockDelegationManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract MockDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mockServiceManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract MockServiceManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "test_FixedStakeUpdates", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "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": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "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": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod EqualWeightECDSARegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260078054600160ff199182168117909255600b8054909116909117905534801561002d57600080fd5b50614c728061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806385226c8111610097578063b5508aa911610066578063b5508aa9146101bf578063ba414fa6146101c7578063e20c9f71146101df578063fa7626d4146101e757600080fd5b806385226c811461016457806386777e0614610179578063916a17c6146101a4578063b52d472a146101ac57600080fd5b80633e5e3c23116100d35780633e5e3c23146101375780633f7286f41461013f57806366d9a9a014610147578063707a92411461015c57600080fd5b80630a9254e4146100fa5780631ed7831c146101045780632ade388014610122575b600080fd5b6101026101f4565b005b61010c610518565b604051610119919061187f565b60405180910390f35b61012a61057a565b6040516101199190611928565b61010c6106bc565b61010c61071c565b61014f61077c565b60405161011991906119e8565b610102610862565b61016c610fcc565b6040516101199190611a9b565b601d5461018c906001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61014f61109c565b601c5461018c906001600160a01b031681565b61016c611182565b6101cf611252565b6040519015158152602001610119565b61010c61137f565b6007546101cf9060ff1681565b6101fc6113df565b601c546040516001600160a01b039091169061021790611858565b6001600160a01b039091168152602001604051809103906000f080158015610243573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560408051600160208201818152606083018452611234936000939283929183015b60408051808201909152600080825260208201528152602001906001900390816102855750509052604080518082019091526001600160a01b038416815261271060208201528151805192935090916000906102e3576102e3611afd565b6020908102919091010152602754601d5460405163ab11899560e01b81526001600160a01b039283169263ab11899592610327929116906064908690600401611b13565b600060405180830381600087803b15801561034157600080fd5b505af1158015610355573d6000803e3d6000fd5b5050602754601e546040516358c1eb1760e01b81526001600160a01b039182166004820152911692506358c1eb179150602401600060405180830381600087803b1580156103a257600080fd5b505af11580156103b6573d6000803e3d6000fd5b5050602754601f546040516358c1eb1760e01b81526001600160a01b039182166004820152911692506358c1eb179150602401600060405180830381600087803b15801561040357600080fd5b505af1158015610417573d6000803e3d6000fd5b5050505061044260405180606001604052806060815260200160008019168152602001600081525090565b602754601e546040516305300d0960e11b81526001600160a01b0392831692630a601a1292610478929116908590600401611b9b565b600060405180830381600087803b15801561049257600080fd5b505af11580156104a6573d6000803e3d6000fd5b5050602754601f546040516305300d0960e11b81526001600160a01b039283169450630a601a1293506104e192909116908590600401611b9b565b600060405180830381600087803b1580156104fb57600080fd5b505af115801561050f573d6000803e3d6000fd5b50505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561057057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610552575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156106b357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561069c57838290600052602060002001805461060f90611be6565b80601f016020809104026020016040519081016040528092919081815260200182805461063b90611be6565b80156106885780601f1061065d57610100808354040283529160200191610688565b820191906000526020600020905b81548152906001019060200180831161066b57829003601f168201915b5050505050815260200190600101906105f0565b50505050815250508152602001906001019061059e565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610570576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610552575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610570576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610552575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106b35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561084a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161080c5790505b505050505081525050815260200190600101906107a0565b602754601e54604051631d92172560e11b81526001600160a01b0391821660048201526108e0929190911690633b242e4a906024015b602060405180830381865afa1580156108b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d99190611c21565b600161150f565b602754601f54604051631d92172560e11b81526001600160a01b03918216600482015261091a929190911690633b242e4a90602401610898565b6027546040805163314f3a4960e01b81529051610990926001600160a01b03169163314f3a499160048083019260209291908290030181865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190611c21565b600261150f565b737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f306109b5436001611c3a565b6040518263ffffffff1660e01b81526004016109d391815260200190565b600060405180830381600087803b1580156109ed57600080fd5b505af1158015610a01573d6000803e3d6000fd5b5050601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663857dc1906040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ac657600080fd5b505af1158015610ada573d6000803e3d6000fd5b5050602754601e54604051631d92172560e11b81526001600160a01b039182166004820152610b59945091169150633b242e4a90602401602060405180830381865afa158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b529190611c21565b600061150f565b602754601f54604051631d92172560e11b81526001600160a01b039182166004820152610b93929190911690633b242e4a90602401610898565b6027546040805163314f3a4960e01b81529051610bde926001600160a01b03169163314f3a499160048083019260209291908290030181865afa1580156108b5573d6000803e3d6000fd5b737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f30610c03436001611c3a565b6040518263ffffffff1660e01b8152600401610c2191815260200190565b600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b50505050610c7a60405180606001604052806060815260200160008019168152602001600081525090565b602754601e546040516305300d0960e11b81526001600160a01b0392831692630a601a1292610cb0929116908590600401611b9b565b600060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b5050602754601e54604051631d92172560e11b81526001600160a01b039182166004820152610d1a945091169150633b242e4a90602401610898565b602754601f54604051631d92172560e11b81526001600160a01b039182166004820152610d54929190911690633b242e4a90602401610898565b6027546040805163314f3a4960e01b81529051610d9f926001600160a01b03169163314f3a499160048083019260209291908290030181865afa158015610965573d6000803e3d6000fd5b737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f30610dc4436001611c3a565b6040518263ffffffff1660e01b8152600401610de291815260200190565b600060405180830381600087803b158015610dfc57600080fd5b505af1158015610e10573d6000803e3d6000fd5b506000925060029150610e209050565b604051908082528060200260200182016040528015610e49578160200160208202803683370190505b50601e5481519192506001600160a01b0316908290600090610e6d57610e6d611afd565b6001600160a01b039283166020918202929092010152601f54825191169082906001908110610e9e57610e9e611afd565b6001600160a01b03928316602091820292909201015260275460405162cf2ab560e01b815291169062cf2ab590610ed990849060040161187f565b600060405180830381600087803b158015610ef357600080fd5b505af1158015610f07573d6000803e3d6000fd5b5050602754601e54604051631d92172560e11b81526001600160a01b039182166004820152610f43945091169150633b242e4a90602401610898565b602754601f54604051631d92172560e11b81526001600160a01b039182166004820152610f7d929190911690633b242e4a90602401610898565b6027546040805163314f3a4960e01b81529051610fc8926001600160a01b03169163314f3a499160048083019260209291908290030181865afa158015610965573d6000803e3d6000fd5b5050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156106b357838290600052602060002001805461100f90611be6565b80601f016020809104026020016040519081016040528092919081815260200182805461103b90611be6565b80156110885780601f1061105d57610100808354040283529160200191611088565b820191906000526020600020905b81548152906001019060200180831161106b57829003601f168201915b505050505081526020019060010190610ff0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106b35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561116a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161112c5790505b505050505081525050815260200190600101906110c0565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156106b35783829060005260206000200180546111c590611be6565b80601f01602080910402602001604051908101604052809291908181526020018280546111f190611be6565b801561123e5780601f106112135761010080835404028352916020019161123e565b820191906000526020600020905b81548152906001019060200180831161122157829003601f168201915b5050505050815260200190600101906111a6565b600754600090610100900460ff16156112745750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561137a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611302917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611c60565b60408051601f198184030181529082905261131c91611c91565b6000604051808303816000865af19150503d8060008114611359576040519150601f19603f3d011682016040523d82523d6000602084013e61135e565b606091505b50915050808060200190518101906113769190611cad565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015610570576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610552575050505050905090565b611408604051806040016040528060088152602001675369676e6572203160c01b815250611636565b6020908155601e80546001600160a01b0319166001600160a01b03939093169290921790915560408051808201909152600881526729b4b3b732b9101960c11b9181019190915261145890611636565b602155601f80546001600160a01b0319166001600160a01b039290921691909117905560405161148790611865565b604051809103906000f0801580156114a3573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169190911790556040516114d090611872565b604051809103906000f0801580156114ec573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055565b808214610fc8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516115809060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1610fc861174c565b6000808260405160200161164a9190611c91565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d99190611cd6565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906117159085908790600401611cff565b600060405180830381600087803b15801561172f57600080fd5b505af1158015611743573d6000803e3d6000fd5b50505050915091565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156118475760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526117e69291602001611c60565b60408051601f198184030181529082905261180091611c91565b6000604051808303816000865af19150503d806000811461183d576040519150601f19603f3d011682016040523d82523d6000602084013e611842565b606091505b505050505b6007805461ff001916610100179055565b61299d80611d2c83390190565b61032b806146c983390190565b610249806149f483390190565b6020808252825182820181905260009190848201906040850190845b818110156118c05783516001600160a01b03168352928401929184019160010161189b565b50909695505050505050565b60005b838110156118e75781810151838201526020016118cf565b838111156118f6576000848401525b50505050565b600081518084526119148160208601602086016118cc565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156119d857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156119c257605f198985030183526119b08486516118fc565b948e01949350918d0191600101611994565b505050978a01979450509188019160010161194f565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611a8c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611a775783516001600160e01b0319168252928b019260019290920191908b0190611a4d565b50978a01979550505091870191600101611a10565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611af057603f19888603018452611ade8583516118fc565b94509285019290850190600101611ac2565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03848116825260208083018590526060604080850182905285519185018390528151608086018190526000949392830190859060a08801905b80831015611b8c5783518051881683528601516bffffffffffffffffffffffff1686830152928501926001929092019190840190611b53565b509a9950505050505050505050565b60018060a01b0383168152604060208201526000825160606040840152611bc560a08401826118fc565b90506020840151606084015260408401516080840152809150509392505050565b600181811c90821680611bfa57607f821691505b60208210811415611c1b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611c3357600080fd5b5051919050565b60008219821115611c5b57634e487b7160e01b600052601160045260246000fd5b500190565b6001600160e01b0319831681528151600090611c838160048501602087016118cc565b919091016004019392505050565b60008251611ca38184602087016118cc565b9190910192915050565b600060208284031215611cbf57600080fd5b81518015158114611ccf57600080fd5b9392505050565b600060208284031215611ce857600080fd5b81516001600160a01b0381168114611ccf57600080fd5b6001600160a01b0383168152604060208201819052600090611d23908301846118fc565b94935050505056fe60a06040523480156200001157600080fd5b506040516200299d3803806200299d833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516129096200009460003960006106fd01526129096000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80636d5be926116100de578063ab11899511610097578063e5d98f9411610071578063e5d98f9414610355578063ec7fbb3114610368578063f2fde38b14610394578063fad8b32a146103a757600080fd5b8063ab11899514610327578063b933fa741461033a578063dec5d1f61461034257600080fd5b80636d5be926146102a3578063715018a6146102d6578063857dc190146102de5780638da5cb5b146102e6578063955f2d901461030157806398ec1ac91461031457600080fd5b8063314f3a491161014b5780635140a548116101255780635140a5481461025757806358c1eb171461026a5780635ef533291461027d578063696255be1461029057600080fd5b8063314f3a49146102345780633b242e4a1461023c57806340bf2fb71461024f57600080fd5b8062cf2ab5146101925780630a601a12146101a75780630dba3394146101ba5780631626ba7e146101e05780631703a0181461020c5780631e4cd85e14610221575b600080fd5b6101a56101a0366004611e1e565b6103ba565b005b6101a56101b5366004611ed2565b6103c6565b6101cd6101c8366004611f8f565b6103d4565b6040519081526020015b60405180910390f35b6101f36101ee366004611fac565b6103f0565b6040516001600160e01b031990911681526020016101d7565b61021461042e565b6040516101d79190612055565b6101cd61022f366004611f8f565b6104c1565b6101cd6104d7565b6101cd61024a366004612068565b6104e8565b6067546101cd565b6101a5610265366004612085565b610509565b6101a5610278366004612068565b61052c565b6101a561028b36600461214e565b61053d565b6101a561029e366004612167565b61054e565b6102c66102b1366004612068565b60986020526000908152604090205460ff1681565b60405190151581526020016101d7565b6101a5610568565b6101a561057c565b6033546040516001600160a01b0390911681526020016101d7565b6101cd61030f3660046121a3565b610585565b6101cd610322366004612068565b6105b7565b6101a56103353660046122bd565b61081e565b6101cd61093a565b6101a5610350366004612315565b610946565b6101a5610363366004612068565b610957565b6102c6610376366004612068565b6001600160a01b03166000908152606d602052604090205460ff1690565b6101a56103a2366004612068565b610968565b6101a56103b5366004612068565b6109de565b6103c3816109ef565b50565b6103d08282610a46565b5050565b60006103ea606a63ffffffff80851690610a8e16565b92915050565b6000806000808480602001905181019061040a9190612460565b92509250925061041c86848484610b9d565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b828210156104b457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610465565b5050505081525050905090565b60006103ea606b63ffffffff80851690610a8e16565b60006104e3606a610c4e565b905090565b6001600160a01b0381166000908152606c602052604081206103ea90610c4e565b6103d08260008151811061051f5761051f612534565b6020026020010151610caa565b610534610ccd565b6103c381610d27565b610545610ccd565b6103c381610dad565b610556610ccd565b61055f82610df0565b6103d0816109ef565b610570610ccd565b61057a6000610e36565b565b61057a33610e88565b6001600160a01b0382166000908152606c602052604081206105b09063ffffffff80851690610a8e16565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561062e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105df565b50505050905060008082516001600160401b0381111561065057610650611ce2565b604051908082528060200260200182016040528015610679578160200160208202803683370190505b50905060005b83518110156106e25783818151811061069a5761069a612534565b6020026020010151600001518282815181106106b8576106b8612534565b6001600160a01b0390921660209283029190910190910152806106da81612560565b91505061067f565b50604051639004134760e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639004134790610734908990869060040161257b565b600060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077991908101906125d7565b905060005b84518110156107f05784818151811061079957610799612534565b6020026020010151602001516001600160601b03168282815181106107c0576107c0612534565b60200260200101516107d29190612667565b6107dc9085612686565b9350806107e881612560565b91505061077e565b506107fd6127108461269e565b92506067548310610812575090949350505050565b50600095945050505050565b600054610100900460ff161580801561083e5750600054600160ff909116105b806108585750303b158015610858575060005460ff166001145b6108c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108e3576000805461ff0019166101001790555b6108ee848484610fab565b8015610934576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104e3606b610c4e565b61094e610ccd565b61055f8261100c565b61095f610ccd565b6103c38161116b565b610970610ccd565b6001600160a01b0381166109d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b7565b6103c381610e36565b6109e6610ccd565b6103c3816111ab565b6000805b8251811015610a3c57610a1e838281518110610a1157610a11612534565b6020026020010151611254565b610a2890836126c0565b915080610a3481612560565b9150506109f3565b5061093481611331565b6001600160a01b03821660009081526098602052604090205460ff161515600114610a845760405163380fa21360e11b815260040160405180910390fd5b6103d0828261139d565b6000438210610adf5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108b7565b825460005b81811015610b44576000610af882846114ca565b905084866000018281548110610b1057610b10612534565b60009182526020909120015463ffffffff161115610b3057809250610b3e565b610b3b816001612686565b91505b50610ae4565b8115610b885784610b56600184612701565b81548110610b6657610b66612534565b60009182526020909120015464010000000090046001600160e01b0316610b8b565b60005b6001600160e01b031695945050505050565b600083519050600080610bb18386516114e5565b60005b83811015610c3a576000878281518110610bd057610bd0612534565b60200260200101519050610be48482611526565b610c08818a898581518110610bfb57610bfb612534565b6020026020010151611558565b8093506000610c178288611589565b9050610c238185612686565b935050508080610c3290612560565b915050610bb4565b50610c4581856115ec565b50505050505050565b80546000908015610c975782610c65600183612701565b81548110610c7557610c75612534565b60009182526020909120015464010000000090046001600160e01b0316610c9a565b60005b6001600160e01b03169392505050565b6065548151146103ba5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461057a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b7565b6001600160a01b03811660009081526098602052604090205460ff1615610d61576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610db8606b82611648565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610ec1576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610ed183612718565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610eff82611254565b9050610f0a81611331565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610f5357600080fd5b505af1158015610f67573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610fd25760405162461bcd60e51b81526004016108b79061272f565b606880546001600160a01b0319166001600160a01b038516179055610ff682610dad565b610fff8161100c565b611007611773565b505050565b611015816117a2565b6110325760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156110a557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611056565b5050509152509091506066905060006110be8282611cb4565b505060005b825151811015611139578251805160669190839081106110e5576110e5612534565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061113181612560565b9150506110c3565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610e2a92919061277a565b61117481610e88565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526098602052604090205460ff166111e45760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606d602052604090205460ff16156103c3576103c38161116b565b6001600160a01b0381166000908152606d602052604081205481908190819060ff16156112b3576001600160a01b0385166000908152606c6020526040902061129e906001611648565b5092506112ac8360016127a8565b90506112e5565b6001600160a01b0385166000908152606c602052604081206112d491611648565b5092506112e28360006127a8565b90505b60408051848152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a2949350505050565b60008061133e606a610c4e565b9150600061134c84846126c0565b915081905061135c606a82611648565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b6001600160a01b0382166000908152606d602052604090205460ff16156113d7576040516342ee68b560e01b815260040160405180910390fd5b606580549060006113e783612560565b90915550506001600160a01b0382166000908152606d60205260408120805460ff1916600117905561141883611254565b905061142381611331565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906114579086908690600401612813565b600060405180830381600087803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b60006114d9600284841861269e565b6105b090848416612686565b808214611508576040516001621398b960e31b0319815260040160405180910390fd5b816103d05760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103d05760405163ba50f91160e01b815260040160405180910390fd5b61156c6001600160a01b0384168383611872565b61100757604051638baa579f60e01b815260040160405180910390fd5b600063ffffffff82811614156115c1576001600160a01b0383166000908152606c602052604090206115ba90610c4e565b90506103ea565b6001600160a01b0383166000908152606c602052604090206115ba9063ffffffff80851690610a8e16565b60006115f7826119be565b90508083111561161a57604051634b05a0f760e11b815260040160405180910390fd5b6000611625836119f1565b9050838111156109345760405163e121632f60e01b815260040160405180910390fd5b815460009081908161165986610c4e565b905060008211801561169757504386611673600185612701565b8154811061168357611683612534565b60009182526020909120015463ffffffff16145b156116f7576116a585611a1f565b866116b1600185612701565b815481106116c1576116c1612534565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611765565b85600001604051806040016040528061170f43611a8c565b63ffffffff16815260200161172388611a1f565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff1661179a5760405162461bcd60e51b81526004016108b79061272f565b61057a611af1565b8051600090818080805b8451811015611850578481815181106117c7576117c7612534565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106118075760405163ba50f91160e01b815260040160405180910390fd5b82935084818151811061181c5761181c612534565b6020026020010151602001516001600160601b03168261183c9190612686565b91508061184881612560565b9150506117ac565b5061271081146118665750600095945050505050565b50600195945050505050565b60008060006118818585611b21565b9092509050600081600481111561189a5761189a61285e565b1480156118b85750856001600160a01b0316826001600160a01b0316145b156118c8576001925050506105b0565b600080876001600160a01b0316631626ba7e60e01b88886040516024016118f0929190612874565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161192e919061288d565b600060405180830381855afa9150503d8060008114611969576040519150601f19603f3d011682016040523d82523d6000602084013e61196e565b606091505b5091509150818015611981575080516020145b80156119b257508051630b135d3f60e11b906119a690830160209081019084016128a9565b6001600160e01b031916145b98975050505050505050565b600063ffffffff82811614156119d8576103ea606a610c4e565b6103ea606a63ffffffff80851690610a8e16565b919050565b600063ffffffff8281161415611a0b576103ea606b610c4e565b6103ea606b63ffffffff80851690610a8e16565b60006001600160e01b03821115611a885760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108b7565b5090565b600063ffffffff821115611a885760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108b7565b600054610100900460ff16611b185760405162461bcd60e51b81526004016108b79061272f565b61057a33610e36565b600080825160411415611b585760208301516040840151606085015160001a611b4c87828585611b8e565b9450945050505061176c565b825160401415611b825760208301516040840151611b77868383611c7b565b93509350505061176c565b5060009050600261176c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611bc55750600090506003611c72565b8460ff16601b14158015611bdd57508460ff16601c14155b15611bee5750600090506004611c72565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c6b57600060019250925050611c72565b9150600090505b94509492505050565b6000806001600160ff1b03831681611c9860ff86901c601b612686565b9050611ca687828885611b8e565b935093505050935093915050565b50805460008255906000526020600020908101906103c391905b80821115611a885760008155600101611cce565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611d1a57611d1a611ce2565b60405290565b604080519081016001600160401b0381118282101715611d1a57611d1a611ce2565b604051601f8201601f191681016001600160401b0381118282101715611d6a57611d6a611ce2565b604052919050565b60006001600160401b03821115611d8b57611d8b611ce2565b5060051b60200190565b6001600160a01b03811681146103c357600080fd5b600082601f830112611dbb57600080fd5b81356020611dd0611dcb83611d72565b611d42565b82815260059290921b84018101918181019086841115611def57600080fd5b8286015b84811015611e13578035611e0681611d95565b8352918301918301611df3565b509695505050505050565b600060208284031215611e3057600080fd5b81356001600160401b03811115611e4657600080fd5b611e5284828501611daa565b949350505050565b60006001600160401b03821115611e7357611e73611ce2565b50601f01601f191660200190565b600082601f830112611e9257600080fd5b8135611ea0611dcb82611e5a565b818152846020838601011115611eb557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ee557600080fd5b8235611ef081611d95565b915060208301356001600160401b0380821115611f0c57600080fd5b9084019060608287031215611f2057600080fd5b604051606081018181108382111715611f3b57611f3b611ce2565b604052823582811115611f4d57600080fd5b611f5988828601611e81565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff811681146103c357600080fd5b600060208284031215611fa157600080fd5b81356105b081611f7d565b60008060408385031215611fbf57600080fd5b8235915060208301356001600160401b03811115611fdc57600080fd5b611fe885828601611e81565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561204857835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612011565b5090979650505050505050565b6020815260006105b06020830184611ff2565b60006020828403121561207a57600080fd5b81356105b081611d95565b6000806040838503121561209857600080fd5b82356001600160401b03808211156120af57600080fd5b818501915085601f8301126120c357600080fd5b813560206120d3611dcb83611d72565b82815260059290921b840181019181810190898411156120f257600080fd5b8286015b8481101561212a5780358681111561210e5760008081fd5b61211c8c86838b0101611daa565b8452509183019183016120f6565b509650508601359250508082111561214157600080fd5b50611fe885828601611e81565b60006020828403121561216057600080fd5b5035919050565b6000806040838503121561217a57600080fd5b8235915060208301356001600160401b0381111561219757600080fd5b611fe885828601611daa565b600080604083850312156121b657600080fd5b82356121c181611d95565b915060208301356121d181611f7d565b809150509250929050565b600060208083850312156121ef57600080fd5b6121f7611cf8565b915082356001600160401b0381111561220f57600080fd5b8301601f8101851361222057600080fd5b803561222e611dcb82611d72565b81815260069190911b8201830190838101908783111561224d57600080fd5b928401925b828410156122b0576040848903121561226b5760008081fd5b612273611d20565b843561227e81611d95565b8152848601356001600160601b038116811461229a5760008081fd5b8187015282526040939093019290840190612252565b8552509295945050505050565b6000806000606084860312156122d257600080fd5b83356122dd81611d95565b92506020840135915060408401356001600160401b038111156122ff57600080fd5b61230b868287016121dc565b9150509250925092565b6000806040838503121561232857600080fd5b82356001600160401b038082111561233f57600080fd5b61234b868387016121dc565b9350602085013591508082111561236157600080fd5b50611fe885828601611daa565b60005b83811015612389578181015183820152602001612371565b838111156109345750506000910152565b600082601f8301126123ab57600080fd5b815160206123bb611dcb83611d72565b82815260059290921b840181019181810190868411156123da57600080fd5b8286015b84811015611e135780516001600160401b038111156123fd5760008081fd5b8701603f8101891361240f5760008081fd5b848101516040612421611dcb83611e5a565b8281528b828486010111156124365760008081fd5b6124458389830184870161236e565b86525050509183019183016123de565b80516119ec81611f7d565b60008060006060848603121561247557600080fd5b83516001600160401b038082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b815160206124b0611dcb83611d72565b82815260059290921b8401810191818101908a8411156124cf57600080fd5b948201945b838610156124f65785516124e781611d95565b825294820194908201906124d4565b9189015191975090935050508082111561250f57600080fd5b5061251c8682870161239a565b92505061252b60408501612455565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156125745761257461254a565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b818110156125c95785518516835294830194918301916001016125ab565b509098975050505050505050565b600060208083850312156125ea57600080fd5b82516001600160401b0381111561260057600080fd5b8301601f8101851361261157600080fd5b805161261f611dcb82611d72565b81815260059190911b8201830190838101908783111561263e57600080fd5b928401925b8284101561265c57835182529284019290840190612643565b979650505050505050565b60008160001904831182151516156126815761268161254a565b500290565b600082198211156126995761269961254a565b500190565b6000826126bb57634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156126e2576126e261254a565b600160ff1b83900384128116156126fb576126fb61254a565b50500190565b6000828210156127135761271361254a565b500390565b6000816127275761272761254a565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60408152600061278d6040830185611ff2565b828103602084015261279f8185611ff2565b95945050505050565b60008083128015600160ff1b8501841216156127c6576127c661254a565b6001600160ff1b03840183138116156127e1576127e161254a565b50500390565b600081518084526127ff81602086016020860161236e565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261283d60a08401826127e7565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e5260408301846127e7565b6000825161289f81846020870161236e565b9190910192915050565b6000602082840312156128bb57600080fd5b81516001600160e01b0319811681146105b057600080fdfea26469706673582212201b12ccb84dc133a9f910d479d0b076293d022c27386084146694193cf41f609b64736f6c634300080c0033608060405234801561001057600080fd5b5061030b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063778e55f31461003b5780639004134714610065575b600080fd5b610052610049366004610131565b6103e892915050565b6040519081526020015b60405180910390f35b61007861007336600461017a565b610085565b60405161005c9190610252565b60606000825167ffffffffffffffff8111156100a3576100a3610164565b6040519080825280602002602001820160405280156100cc578160200160208202803683370190505b50905060005b835181101561010d576103e88282815181106100f0576100f0610296565b602090810291909101015280610105816102ac565b9150506100d2565b509392505050565b80356001600160a01b038116811461012c57600080fd5b919050565b6000806040838503121561014457600080fd5b61014d83610115565b915061015b60208401610115565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561018d57600080fd5b61019683610115565b915060208084013567ffffffffffffffff808211156101b457600080fd5b818601915086601f8301126101c857600080fd5b8135818111156101da576101da610164565b8060051b604051601f19603f830116810181811085821117156101ff576101ff610164565b60405291825284820192508381018501918983111561021d57600080fd5b938501935b828510156102425761023385610115565b84529385019392850192610222565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561028a5783518352928401929184019160010161026e565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156102ce57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220044609968e4209af57558f74bde90d5690cc68a4d97bf9dc5f705209c70b0d9064736f6c634300080c0033608060405234801561001057600080fd5b50610229806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639926ee7d1461003b578063a364f4da1461004f575b600080fd5b61004d6100493660046100ec565b5050565b005b61004d61005d3660046101d1565b50565b80356001600160a01b038116811461007757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156100b5576100b561007c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156100e4576100e461007c565b604052919050565b600080604083850312156100ff57600080fd5b61010883610060565b915060208084013567ffffffffffffffff8082111561012657600080fd5b908501906060828803121561013a57600080fd5b610142610092565b82358281111561015157600080fd5b8301601f8101891361016257600080fd5b8035838111156101745761017461007c565b610186601f8201601f191687016100bb565b9350808452898682840101111561019c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b6000602082840312156101e357600080fd5b6101ec82610060565b939250505056fea26469706673582212206943cdf3fa94350d7917a12c2d4b4a05065ffd77579c5291937d46934ca9fabd64736f6c634300080c0033a264697066735822122010e49fae1b8359c50bf09fbcb6403d93e07ecbf4bbda7d4ba660023feaa9780664736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15a\0-W`\0\x80\xFD[PaLr\x80a\0=`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xF5W`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x97W\x80c\xB5P\x8A\xA9\x11a\0fW\x80c\xB5P\x8A\xA9\x14a\x01\xBFW\x80c\xBAAO\xA6\x14a\x01\xC7W\x80c\xE2\x0C\x9Fq\x14a\x01\xDFW\x80c\xFAv&\xD4\x14a\x01\xE7W`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x01dW\x80c\x86w~\x06\x14a\x01yW\x80c\x91j\x17\xC6\x14a\x01\xA4W\x80c\xB5-G*\x14a\x01\xACW`\0\x80\xFD[\x80c>^<#\x11a\0\xD3W\x80c>^<#\x14a\x017W\x80c?r\x86\xF4\x14a\x01?W\x80cf\xD9\xA9\xA0\x14a\x01GW\x80cpz\x92A\x14a\x01\\W`\0\x80\xFD[\x80c\n\x92T\xE4\x14a\0\xFAW\x80c\x1E\xD7\x83\x1C\x14a\x01\x04W\x80c*\xDE8\x80\x14a\x01\"W[`\0\x80\xFD[a\x01\x02a\x01\xF4V[\0[a\x01\x0Ca\x05\x18V[`@Qa\x01\x19\x91\x90a\x18\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01*a\x05zV[`@Qa\x01\x19\x91\x90a\x19(V[a\x01\x0Ca\x06\xBCV[a\x01\x0Ca\x07\x1CV[a\x01Oa\x07|V[`@Qa\x01\x19\x91\x90a\x19\xE8V[a\x01\x02a\x08bV[a\x01la\x0F\xCCV[`@Qa\x01\x19\x91\x90a\x1A\x9BV[`\x1DTa\x01\x8C\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x19V[a\x01Oa\x10\x9CV[`\x1CTa\x01\x8C\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01la\x11\x82V[a\x01\xCFa\x12RV[`@Q\x90\x15\x15\x81R` \x01a\x01\x19V[a\x01\x0Ca\x13\x7FV[`\x07Ta\x01\xCF\x90`\xFF\x16\x81V[a\x01\xFCa\x13\xDFV[`\x1CT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90a\x02\x17\x90a\x18XV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x02CW=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01` \x82\x01\x81\x81R``\x83\x01\x84Ra\x124\x93`\0\x93\x92\x83\x92\x91\x83\x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02\x85WPP\x90R`@\x80Q\x80\x82\x01\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra'\x10` \x82\x01R\x81Q\x80Q\x92\x93P\x90\x91`\0\x90a\x02\xE3Wa\x02\xE3a\x1A\xFDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`'T`\x1DT`@Qc\xAB\x11\x89\x95`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92c\xAB\x11\x89\x95\x92a\x03'\x92\x91\x16\x90`d\x90\x86\x90`\x04\x01a\x1B\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03UW=`\0\x80>=`\0\xFD[PP`'T`\x1ET`@QcX\xC1\xEB\x17`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92PcX\xC1\xEB\x17\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xA2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xB6W=`\0\x80>=`\0\xFD[PP`'T`\x1FT`@QcX\xC1\xEB\x17`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92PcX\xC1\xEB\x17\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\x03W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\x17W=`\0\x80>=`\0\xFD[PPPPa\x04B`@Q\x80``\x01`@R\x80``\x81R` \x01`\0\x80\x19\x16\x81R` \x01`\0\x81RP\x90V[`'T`\x1ET`@Qc\x050\r\t`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92c\n`\x1A\x12\x92a\x04x\x92\x91\x16\x90\x85\x90`\x04\x01a\x1B\x9BV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xA6W=`\0\x80>=`\0\xFD[PP`'T`\x1FT`@Qc\x050\r\t`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\n`\x1A\x12\x93Pa\x04\xE1\x92\x90\x91\x16\x90\x85\x90`\x04\x01a\x1B\x9BV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xFBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\x0FW=`\0\x80>=`\0\xFD[PPPPPPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05pW` \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\x05RW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06\x9CW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06\x0F\x90a\x1B\xE6V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06;\x90a\x1B\xE6V[\x80\x15a\x06\x88W\x80`\x1F\x10a\x06]Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\x88V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06kW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xF0V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x9EV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05pW` \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\x05RWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05pW` \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\x05RWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xA0V[`'T`\x1ET`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x08\xE0\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xB5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD9\x91\x90a\x1C!V[`\x01a\x15\x0FV[`'T`\x1FT`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\t\x1A\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01a\x08\x98V[`'T`@\x80Qc1O:I`\xE0\x1B\x81R\x90Qa\t\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c1O:I\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\teW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x89\x91\x90a\x1C!V[`\x02a\x15\x0FV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-c\x1F{O0a\t\xB5C`\x01a\x1C:V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\t\xD3\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\t\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\x01W=`\0\x80>=`\0\xFD[PP`\x1ET`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x92Pc\xCAf\x9F\xA7\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n^W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\nrW=`\0\x80>=`\0\xFD[PPPP`'`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x85}\xC1\x90`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\xC6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xDAW=`\0\x80>=`\0\xFD[PP`'T`\x1ET`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x0BY\x94P\x91\x16\x91Pc;$.J\x90`$\x01` `@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\x0BR\x91\x90a\x1C!V[`\0a\x15\x0FV[`'T`\x1FT`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x0B\x93\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01a\x08\x98V[`'T`@\x80Qc1O:I`\xE0\x1B\x81R\x90Qa\x0B\xDE\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c1O:I\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x08\xB5W=`\0\x80>=`\0\xFD[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-c\x1F{O0a\x0C\x03C`\x01a\x1C:V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C!\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C;W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPPa\x0Cz`@Q\x80``\x01`@R\x80``\x81R` \x01`\0\x80\x19\x16\x81R` \x01`\0\x81RP\x90V[`'T`\x1ET`@Qc\x050\r\t`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92c\n`\x1A\x12\x92a\x0C\xB0\x92\x91\x16\x90\x85\x90`\x04\x01a\x1B\x9BV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C\xDEW=`\0\x80>=`\0\xFD[PP`'T`\x1ET`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\r\x1A\x94P\x91\x16\x91Pc;$.J\x90`$\x01a\x08\x98V[`'T`\x1FT`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\rT\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01a\x08\x98V[`'T`@\x80Qc1O:I`\xE0\x1B\x81R\x90Qa\r\x9F\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c1O:I\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\teW=`\0\x80>=`\0\xFD[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-c\x1F{O0a\r\xC4C`\x01a\x1C:V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x10W=`\0\x80>=`\0\xFD[P`\0\x92P`\x02\x91Pa\x0E \x90PV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0EIW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`\x1ET\x81Q\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90\x82\x90`\0\x90a\x0EmWa\x0Ema\x1A\xFDV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`\x1FT\x82Q\x91\x16\x90\x82\x90`\x01\x90\x81\x10a\x0E\x9EWa\x0E\x9Ea\x1A\xFDV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`'T`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x0E\xD9\x90\x84\x90`\x04\x01a\x18\x7FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\x07W=`\0\x80>=`\0\xFD[PP`'T`\x1ET`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x0FC\x94P\x91\x16\x91Pc;$.J\x90`$\x01a\x08\x98V[`'T`\x1FT`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x0F}\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01a\x08\x98V[`'T`@\x80Qc1O:I`\xE0\x1B\x81R\x90Qa\x0F\xC8\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c1O:I\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\teW=`\0\x80>=`\0\xFD[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x10\x0F\x90a\x1B\xE6V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10;\x90a\x1B\xE6V[\x80\x15a\x10\x88W\x80`\x1F\x10a\x10]Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10\x88V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10kW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xF0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x11jW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x11,W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x10\xC0V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x11\xC5\x90a\x1B\xE6V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x11\xF1\x90a\x1B\xE6V[\x80\x15a\x12>W\x80`\x1F\x10a\x12\x13Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x12>V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x12!W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x11\xA6V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x12tWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x13zW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x13\x02\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x1C`V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x13\x1C\x91a\x1C\x91V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x13YW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x13^V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x13v\x91\x90a\x1C\xADV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05pW` \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\x05RWPPPPP\x90P\x90V[a\x14\x08`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01gSigner 1`\xC0\x1B\x81RPa\x166V[` \x90\x81U`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92\x90\x92\x17\x90\x91U`@\x80Q\x80\x82\x01\x90\x91R`\x08\x81Rg)\xB4\xB3\xB72\xB9\x10\x19`\xC1\x1B\x91\x81\x01\x91\x90\x91Ra\x14X\x90a\x166V[`!U`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qa\x14\x87\x90a\x18eV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x14\xA3W=`\0\x80>=`\0\xFD[P`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qa\x14\xD0\x90a\x18rV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x14\xECW=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x80\x82\x14a\x0F\xC8W\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x15\x80\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\x0F\xC8a\x17LV[`\0\x80\x82`@Q` \x01a\x16J\x91\x90a\x1C\x91V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90R\x80Q` \x90\x91\x01 `\x01b^y\xB7`\xE0\x1B\x03\x19\x82R`\x04\x82\x01\x81\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xFF\xA1\x86I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xB5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xD9\x91\x90a\x1C\xD6V[`@Qc\x18\xCA\xF8\xE3`\xE3\x1B\x81R\x90\x92Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC6W\xC7\x18\x90a\x17\x15\x90\x85\x90\x87\x90`\x04\x01a\x1C\xFFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x17/W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17CW=`\0\x80>=`\0\xFD[PPPP\x91P\x91V[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x18GW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x17\xE6\x92\x91` \x01a\x1C`V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x18\0\x91a\x1C\x91V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x18=W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x18BV[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[a)\x9D\x80a\x1D,\x839\x01\x90V[a\x03+\x80aF\xC9\x839\x01\x90V[a\x02I\x80aI\xF4\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x18\xC0W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x18\x9BV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x18\xE7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x18\xCFV[\x83\x81\x11\x15a\x18\xF6W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\x19\x14\x81` \x86\x01` \x86\x01a\x18\xCCV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x19\xD8W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x19\xC2W`_\x19\x89\x85\x03\x01\x83Ra\x19\xB0\x84\x86Qa\x18\xFCV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x19\x94V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x19OV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x1A\x8CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1AwW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x1AMV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1A\x10V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x1A\xF0W`?\x19\x88\x86\x03\x01\x84Ra\x1A\xDE\x85\x83Qa\x18\xFCV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1A\xC2V[P\x92\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R` \x80\x83\x01\x85\x90R```@\x80\x85\x01\x82\x90R\x85Q\x91\x85\x01\x83\x90R\x81Q`\x80\x86\x01\x81\x90R`\0\x94\x93\x92\x83\x01\x90\x85\x90`\xA0\x88\x01\x90[\x80\x83\x10\x15a\x1B\x8CW\x83Q\x80Q\x88\x16\x83R\x86\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x83\x01R\x92\x85\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a\x1BSV[P\x9A\x99PPPPPPPPPPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra\x1B\xC5`\xA0\x84\x01\x82a\x18\xFCV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x1B\xFAW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x1C\x1BWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x1C3W`\0\x80\xFD[PQ\x91\x90PV[`\0\x82\x19\x82\x11\x15a\x1C[WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x1C\x83\x81`\x04\x85\x01` \x87\x01a\x18\xCCV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x1C\xA3\x81\x84` \x87\x01a\x18\xCCV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x1C\xBFW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\xCFW`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x1C\xE8W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1C\xCFW`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a\x1D#\x90\x83\x01\x84a\x18\xFCV[\x94\x93PPPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0)\x9D8\x03\x80b\0)\x9D\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)\tb\0\0\x94`\09`\0a\x06\xFD\x01Ra)\t`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x8DW`\x005`\xE0\x1C\x80cm[\xE9&\x11a\0\xDEW\x80c\xAB\x11\x89\x95\x11a\0\x97W\x80c\xE5\xD9\x8F\x94\x11a\0qW\x80c\xE5\xD9\x8F\x94\x14a\x03UW\x80c\xEC\x7F\xBB1\x14a\x03hW\x80c\xF2\xFD\xE3\x8B\x14a\x03\x94W\x80c\xFA\xD8\xB3*\x14a\x03\xA7W`\0\x80\xFD[\x80c\xAB\x11\x89\x95\x14a\x03'W\x80c\xB93\xFAt\x14a\x03:W\x80c\xDE\xC5\xD1\xF6\x14a\x03BW`\0\x80\xFD[\x80cm[\xE9&\x14a\x02\xA3W\x80cqP\x18\xA6\x14a\x02\xD6W\x80c\x85}\xC1\x90\x14a\x02\xDEW\x80c\x8D\xA5\xCB[\x14a\x02\xE6W\x80c\x95_-\x90\x14a\x03\x01W\x80c\x98\xEC\x1A\xC9\x14a\x03\x14W`\0\x80\xFD[\x80c1O:I\x11a\x01KW\x80cQ@\xA5H\x11a\x01%W\x80cQ@\xA5H\x14a\x02WW\x80cX\xC1\xEB\x17\x14a\x02jW\x80c^\xF53)\x14a\x02}W\x80cibU\xBE\x14a\x02\x90W`\0\x80\xFD[\x80c1O:I\x14a\x024W\x80c;$.J\x14a\x02=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07y\x91\x90\x81\x01\x90a%\xD7V[\x90P`\0[\x84Q\x81\x10\x15a\x07\xF0W\x84\x81\x81Q\x81\x10a\x07\x99Wa\x07\x99a%4V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\xC0Wa\x07\xC0a%4V[` \x02` \x01\x01Qa\x07\xD2\x91\x90a&gV[a\x07\xDC\x90\x85a&\x86V[\x93P\x80a\x07\xE8\x81a%`V[\x91PPa\x07~V[Pa\x07\xFDa'\x10\x84a&\x9EV[\x92P`gT\x83\x10a\x08\x12WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08>WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08XWP0;\x15\x80\x15a\x08XWP`\0T`\xFF\x16`\x01\x14[a\x08\xC0W`@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\xE3W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xEE\x84\x84\x84a\x0F\xABV[\x80\x15a\t4W`\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\xE3`ka\x0CNV[a\tNa\x0C\xCDV[a\x05_\x82a\x10\x0CV[a\t_a\x0C\xCDV[a\x03\xC3\x81a\x11kV[a\tpa\x0C\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xD5W`@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\xB7V[a\x03\xC3\x81a\x0E6V[a\t\xE6a\x0C\xCDV[a\x03\xC3\x81a\x11\xABV[`\0\x80[\x82Q\x81\x10\x15a\nV[a\x0B;\x81`\x01a&\x86V[\x91P[Pa\n\xE4V[\x81\x15a\x0B\x88W\x84a\x0BV`\x01\x84a'\x01V[\x81T\x81\x10a\x0BfWa\x0Bfa%4V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B\x8BV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80a\x0B\xB1\x83\x86Qa\x14\xE5V[`\0[\x83\x81\x10\x15a\x0C:W`\0\x87\x82\x81Q\x81\x10a\x0B\xD0Wa\x0B\xD0a%4V[` \x02` \x01\x01Q\x90Pa\x0B\xE4\x84\x82a\x15&V[a\x0C\x08\x81\x8A\x89\x85\x81Q\x81\x10a\x0B\xFBWa\x0B\xFBa%4V[` \x02` \x01\x01Qa\x15XV[\x80\x93P`\0a\x0C\x17\x82\x88a\x15\x89V[\x90Pa\x0C#\x81\x85a&\x86V[\x93PPP\x80\x80a\x0C2\x90a%`V[\x91PPa\x0B\xB4V[Pa\x0CE\x81\x85a\x15\xECV[PPPPPPPV[\x80T`\0\x90\x80\x15a\x0C\x97W\x82a\x0Ce`\x01\x83a'\x01V[\x81T\x81\x10a\x0CuWa\x0Cua%4V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C\x9AV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`eT\x81Q\x14a\x03\xBAW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x05zW`@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\xB7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x98` R`@\x90 T`\xFF\x16\x15a\raW`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x98` 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\r\xB8`k\x82a\x16HV[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\x81\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16a\x0E\xC1W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0E\xD1\x83a'\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x0E\xFF\x82a\x12TV[\x90Pa\x0F\n\x81a\x131V[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\x0FSW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FgW=`\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`ja\x0CNV[\x91P`\0a\x13L\x84\x84a&\xC0V[\x91P\x81\x90Pa\x13\\`j\x82a\x16HV[PP`@\x80Q\x84\x81R` \x81\x01\x84\x90R\x7F\x86\xDC\xF8k\x12\xDF\xEE\xDE\xA7J\xE90\r\xBD\xAA\x19;\xCC\xE5\x80\x93i\xC8\x17~\xA2\xF4\xEA\xAAer\x9B\x91\x01`@Q\x80\x91\x03\x90\xA1P\x91P\x91V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16\x15a\x13\xD7W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x13\xE7\x83a%`V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x14\x18\x83a\x12TV[\x90Pa\x14#\x81a\x131V[PP`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\x14W\x90\x86\x90\x86\x90`\x04\x01a(\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x14qW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x14\x85W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x86\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\xA3PPPV[`\0a\x14\xD9`\x02\x84\x84\x18a&\x9EV[a\x05\xB0\x90\x84\x84\x16a&\x86V[\x80\x82\x14a\x15\x08W`@Q`\x01b\x13\x98\xB9`\xE3\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\x03\xD0W`@Qc%\x1FV\xA1`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x10a\x03\xD0W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15l`\x01`\x01`\xA0\x1B\x03\x84\x16\x83\x83a\x18rV[a\x10\x07W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x15\xC1W`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x15\xBA\x90a\x0CNV[\x90Pa\x03\xEAV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x15\xBA\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0a\x15\xF7\x82a\x19\xBEV[\x90P\x80\x83\x11\x15a\x16\x1AW`@QcK\x05\xA0\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x16%\x83a\x19\xF1V[\x90P\x83\x81\x11\x15a\t4W`@Qc\xE1!c/`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81T`\0\x90\x81\x90\x81a\x16Y\x86a\x0CNV[\x90P`\0\x82\x11\x80\x15a\x16\x97WPC\x86a\x16s`\x01\x85a'\x01V[\x81T\x81\x10a\x16\x83Wa\x16\x83a%4V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x16\xF7Wa\x16\xA5\x85a\x1A\x1FV[\x86a\x16\xB1`\x01\x85a'\x01V[\x81T\x81\x10a\x16\xC1Wa\x16\xC1a%4V[\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\x17eV[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x17\x0FCa\x1A\x8CV[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x17#\x88a\x1A\x1FV[`\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\x17\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'/V[a\x05za\x1A\xF1V[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x18PW\x84\x81\x81Q\x81\x10a\x17\xC7Wa\x17\xC7a%4V[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x18\x07W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x18\x1CWa\x18\x1Ca%4V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x18<\x91\x90a&\x86V[\x91P\x80a\x18H\x81a%`V[\x91PPa\x17\xACV[Pa'\x10\x81\x14a\x18fWP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x18\x81\x85\x85a\x1B!V[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x18\x9AWa\x18\x9Aa(^V[\x14\x80\x15a\x18\xB8WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x18\xC8W`\x01\x92PPPa\x05\xB0V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x18\xF0\x92\x91\x90a(tV[`@\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\x19.\x91\x90a(\x8DV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x19iW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x19nV[``\x91P[P\x91P\x91P\x81\x80\x15a\x19\x81WP\x80Q` \x14[\x80\x15a\x19\xB2WP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x19\xA6\x90\x83\x01` \x90\x81\x01\x90\x84\x01a(\xA9V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x19\xD8Wa\x03\xEA`ja\x0CNV[a\x03\xEA`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[\x91\x90PV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x1A\x0BWa\x03\xEA`ka\x0CNV[a\x03\xEA`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1A\x88W`@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\xB7V[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1A\x88W`@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\xB7V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1B\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'/V[a\x05z3a\x0E6V[`\0\x80\x82Q`A\x14\x15a\x1BXW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1BL\x87\x82\x85\x85a\x1B\x8EV[\x94P\x94PPPPa\x17lV[\x82Q`@\x14\x15a\x1B\x82W` \x83\x01Q`@\x84\x01Qa\x1Bw\x86\x83\x83a\x1C{V[\x93P\x93PPPa\x17lV[P`\0\x90P`\x02a\x17lV[`\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\xC5WP`\0\x90P`\x03a\x1CrV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1B\xDDWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1B\xEEWP`\0\x90P`\x04a\x1CrV[`@\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\x1CBW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1CkW`\0`\x01\x92P\x92PPa\x1CrV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1C\x98`\xFF\x86\x90\x1C`\x1Ba&\x86V[\x90Pa\x1C\xA6\x87\x82\x88\x85a\x1B\x8EV[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\xC3\x91\x90[\x80\x82\x11\x15a\x1A\x88W`\0\x81U`\x01\x01a\x1C\xCEV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x1AWa\x1D\x1Aa\x1C\xE2V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x1AWa\x1D\x1Aa\x1C\xE2V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1DjWa\x1Dja\x1C\xE2V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1D\x8BWa\x1D\x8Ba\x1C\xE2V[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1D\xBBW`\0\x80\xFD[\x815` a\x1D\xD0a\x1D\xCB\x83a\x1DrV[a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x1D\xEFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1E\x13W\x805a\x1E\x06\x81a\x1D\x95V[\x83R\x91\x83\x01\x91\x83\x01a\x1D\xF3V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x1E0W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EFW`\0\x80\xFD[a\x1ER\x84\x82\x85\x01a\x1D\xAAV[\x94\x93PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1EsWa\x1Esa\x1C\xE2V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x92W`\0\x80\xFD[\x815a\x1E\xA0a\x1D\xCB\x82a\x1EZV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1E\xB5W`\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\xE5W`\0\x80\xFD[\x825a\x1E\xF0\x81a\x1D\x95V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x1F\x0CW`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x1F W`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x1F;Wa\x1F;a\x1C\xE2V[`@R\x825\x82\x81\x11\x15a\x1FMW`\0\x80\xFD[a\x1FY\x88\x82\x86\x01a\x1E\x81V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1F\xA1W`\0\x80\xFD[\x815a\x05\xB0\x81a\x1F}V[`\0\x80`@\x83\x85\x03\x12\x15a\x1F\xBFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F\xDCW`\0\x80\xFD[a\x1F\xE8\x85\x82\x86\x01a\x1E\x81V[\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 HW\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 \x11V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xB0` \x83\x01\x84a\x1F\xF2V[`\0` \x82\x84\x03\x12\x15a zW`\0\x80\xFD[\x815a\x05\xB0\x81a\x1D\x95V[`\0\x80`@\x83\x85\x03\x12\x15a \x98W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a \xAFW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a \xC3W`\0\x80\xFD[\x815` a \xD3a\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a \xF2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a!*W\x805\x86\x81\x11\x15a!\x0EW`\0\x80\x81\xFD[a!\x1C\x8C\x86\x83\x8B\x01\x01a\x1D\xAAV[\x84RP\x91\x83\x01\x91\x83\x01a \xF6V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a!AW`\0\x80\xFD[Pa\x1F\xE8\x85\x82\x86\x01a\x1E\x81V[`\0` \x82\x84\x03\x12\x15a!`W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a!zW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!\x97W`\0\x80\xFD[a\x1F\xE8\x85\x82\x86\x01a\x1D\xAAV[`\0\x80`@\x83\x85\x03\x12\x15a!\xB6W`\0\x80\xFD[\x825a!\xC1\x81a\x1D\x95V[\x91P` \x83\x015a!\xD1\x81a\x1F}V[\x80\x91PP\x92P\x92\x90PV[`\0` \x80\x83\x85\x03\x12\x15a!\xEFW`\0\x80\xFD[a!\xF7a\x1C\xF8V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\x0FW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\" W`\0\x80\xFD[\x805a\".a\x1D\xCB\x82a\x1DrV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\"MW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\"\xB0W`@\x84\x89\x03\x12\x15a\"kW`\0\x80\x81\xFD[a\"sa\x1D V[\x845a\"~\x81a\x1D\x95V[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\"\x9AW`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a\"RV[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\"\xD2W`\0\x80\xFD[\x835a\"\xDD\x81a\x1D\x95V[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xFFW`\0\x80\xFD[a#\x0B\x86\x82\x87\x01a!\xDCV[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a#(W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#?W`\0\x80\xFD[a#K\x86\x83\x87\x01a!\xDCV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a#aW`\0\x80\xFD[Pa\x1F\xE8\x85\x82\x86\x01a\x1D\xAAV[`\0[\x83\x81\x10\x15a#\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a#qV[\x83\x81\x11\x15a\t4WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a#\xABW`\0\x80\xFD[\x81Q` a#\xBBa\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a#\xDAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1E\x13W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xFDW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a$\x0FW`\0\x80\x81\xFD[\x84\x81\x01Q`@a$!a\x1D\xCB\x83a\x1EZV[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a$6W`\0\x80\x81\xFD[a$E\x83\x89\x83\x01\x84\x87\x01a#nV[\x86RPPP\x91\x83\x01\x91\x83\x01a#\xDEV[\x80Qa\x19\xEC\x81a\x1F}V[`\0\x80`\0``\x84\x86\x03\x12\x15a$uW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a$\x8CW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a$\xA0W`\0\x80\xFD[\x81Q` a$\xB0a\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a$\xCFW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a$\xF6W\x85Qa$\xE7\x81a\x1D\x95V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a$\xD4V[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a%\x0FW`\0\x80\xFD[Pa%\x1C\x86\x82\x87\x01a#\x9AV[\x92PPa%+`@\x85\x01a$UV[\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%tWa%ta%JV[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%\xC9W\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a%\xABV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a%\xEAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\0W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a&\x11W`\0\x80\xFD[\x80Qa&\x1Fa\x1D\xCB\x82a\x1DrV[\x81\x81R`\x05\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&\\W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a&CV[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&\x81Wa&\x81a%JV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a&\x99Wa&\x99a%JV[P\x01\x90V[`\0\x82a&\xBBWcNH{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&\xE2Wa&\xE2a%JV[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a&\xFBWa&\xFBa%JV[PP\x01\x90V[`\0\x82\x82\x10\x15a'\x13Wa'\x13a%JV[P\x03\x90V[`\0\x81a''Wa''a%JV[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'\x8D`@\x83\x01\x85a\x1F\xF2V[\x82\x81\x03` \x84\x01Ra'\x9F\x81\x85a\x1F\xF2V[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a'\xC6Wa'\xC6a%JV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a'\xE1Wa'\xE1a%JV[PP\x03\x90V[`\0\x81Q\x80\x84Ra'\xFF\x81` \x86\x01` \x86\x01a#nV[`\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(=`\xA0\x84\x01\x82a'\xE7V[\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\x1ER`@\x83\x01\x84a'\xE7V[`\0\x82Qa(\x9F\x81\x84` \x87\x01a#nV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a(\xBBW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xB0W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x1B\x12\xCC\xB8M\xC13\xA9\xF9\x10\xD4y\xD0\xB0v)=\x02,'8`\x84\x14f\x94\x19<\xF4\x1F`\x9BdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\x0B\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cw\x8EU\xF3\x14a\0;W\x80c\x90\x04\x13G\x14a\0eW[`\0\x80\xFD[a\0Ra\0I6`\x04a\x011V[a\x03\xE8\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0xa\0s6`\x04a\x01zV[a\0\x85V[`@Qa\0\\\x91\x90a\x02RV[```\0\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xA3Wa\0\xA3a\x01dV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\0\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x01\rWa\x03\xE8\x82\x82\x81Q\x81\x10a\0\xF0Wa\0\xF0a\x02\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x01\x05\x81a\x02\xACV[\x91PPa\0\xD2V[P\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01,W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01DW`\0\x80\xFD[a\x01M\x83a\x01\x15V[\x91Pa\x01[` \x84\x01a\x01\x15V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x01\x8DW`\0\x80\xFD[a\x01\x96\x83a\x01\x15V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xB4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x01\xC8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\xDAWa\x01\xDAa\x01dV[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x01\xFFWa\x01\xFFa\x01dV[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x89\x83\x11\x15a\x02\x1DW`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x02BWa\x023\x85a\x01\x15V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\"V[\x80\x96PPPPPPP\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\x8AW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02nV[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x02\xCEWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x04F\t\x96\x8EB\t\xAFWU\x8Ft\xBD\xE9\rV\x90\xCCh\xA4\xD9{\xF9\xDC_pR\t\xC7\x0B\r\x90dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02)\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x99&\xEE}\x14a\0;W\x80c\xA3d\xF4\xDA\x14a\0OW[`\0\x80\xFD[a\0Ma\0I6`\x04a\0\xECV[PPV[\0[a\0Ma\0]6`\x04a\x01\xD1V[PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0wW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\0\xB5Wa\0\xB5a\0|V[`@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\0\xE4Wa\0\xE4a\0|V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xFFW`\0\x80\xFD[a\x01\x08\x83a\0`V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01&W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x01:W`\0\x80\xFD[a\x01Ba\0\x92V[\x825\x82\x81\x11\x15a\x01QW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x01bW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x01tWa\x01ta\0|V[a\x01\x86`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\0\xBBV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x01\x9CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xE3W`\0\x80\xFD[a\x01\xEC\x82a\0`V[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 iC\xCD\xF3\xFA\x945\ry\x17\xA1,-KJ\x05\x06_\xFDwW\x9CR\x91\x93}F\x93L\xA9\xFA\xBDdsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 \x10\xE4\x9F\xAE\x1B\x83Y\xC5\x0B\xF0\x9F\xBC\xB6@=\x93\xE0~\xCB\xF4\xBB\xDA}K\xA6`\x02?\xEA\xA9x\x06dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806385226c8111610097578063b5508aa911610066578063b5508aa9146101bf578063ba414fa6146101c7578063e20c9f71146101df578063fa7626d4146101e757600080fd5b806385226c811461016457806386777e0614610179578063916a17c6146101a4578063b52d472a146101ac57600080fd5b80633e5e3c23116100d35780633e5e3c23146101375780633f7286f41461013f57806366d9a9a014610147578063707a92411461015c57600080fd5b80630a9254e4146100fa5780631ed7831c146101045780632ade388014610122575b600080fd5b6101026101f4565b005b61010c610518565b604051610119919061187f565b60405180910390f35b61012a61057a565b6040516101199190611928565b61010c6106bc565b61010c61071c565b61014f61077c565b60405161011991906119e8565b610102610862565b61016c610fcc565b6040516101199190611a9b565b601d5461018c906001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61014f61109c565b601c5461018c906001600160a01b031681565b61016c611182565b6101cf611252565b6040519015158152602001610119565b61010c61137f565b6007546101cf9060ff1681565b6101fc6113df565b601c546040516001600160a01b039091169061021790611858565b6001600160a01b039091168152602001604051809103906000f080158015610243573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560408051600160208201818152606083018452611234936000939283929183015b60408051808201909152600080825260208201528152602001906001900390816102855750509052604080518082019091526001600160a01b038416815261271060208201528151805192935090916000906102e3576102e3611afd565b6020908102919091010152602754601d5460405163ab11899560e01b81526001600160a01b039283169263ab11899592610327929116906064908690600401611b13565b600060405180830381600087803b15801561034157600080fd5b505af1158015610355573d6000803e3d6000fd5b5050602754601e546040516358c1eb1760e01b81526001600160a01b039182166004820152911692506358c1eb179150602401600060405180830381600087803b1580156103a257600080fd5b505af11580156103b6573d6000803e3d6000fd5b5050602754601f546040516358c1eb1760e01b81526001600160a01b039182166004820152911692506358c1eb179150602401600060405180830381600087803b15801561040357600080fd5b505af1158015610417573d6000803e3d6000fd5b5050505061044260405180606001604052806060815260200160008019168152602001600081525090565b602754601e546040516305300d0960e11b81526001600160a01b0392831692630a601a1292610478929116908590600401611b9b565b600060405180830381600087803b15801561049257600080fd5b505af11580156104a6573d6000803e3d6000fd5b5050602754601f546040516305300d0960e11b81526001600160a01b039283169450630a601a1293506104e192909116908590600401611b9b565b600060405180830381600087803b1580156104fb57600080fd5b505af115801561050f573d6000803e3d6000fd5b50505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561057057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610552575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156106b357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561069c57838290600052602060002001805461060f90611be6565b80601f016020809104026020016040519081016040528092919081815260200182805461063b90611be6565b80156106885780601f1061065d57610100808354040283529160200191610688565b820191906000526020600020905b81548152906001019060200180831161066b57829003601f168201915b5050505050815260200190600101906105f0565b50505050815250508152602001906001019061059e565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610570576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610552575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610570576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610552575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106b35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561084a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161080c5790505b505050505081525050815260200190600101906107a0565b602754601e54604051631d92172560e11b81526001600160a01b0391821660048201526108e0929190911690633b242e4a906024015b602060405180830381865afa1580156108b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d99190611c21565b600161150f565b602754601f54604051631d92172560e11b81526001600160a01b03918216600482015261091a929190911690633b242e4a90602401610898565b6027546040805163314f3a4960e01b81529051610990926001600160a01b03169163314f3a499160048083019260209291908290030181865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190611c21565b600261150f565b737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f306109b5436001611c3a565b6040518263ffffffff1660e01b81526004016109d391815260200190565b600060405180830381600087803b1580156109ed57600080fd5b505af1158015610a01573d6000803e3d6000fd5b5050601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663857dc1906040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ac657600080fd5b505af1158015610ada573d6000803e3d6000fd5b5050602754601e54604051631d92172560e11b81526001600160a01b039182166004820152610b59945091169150633b242e4a90602401602060405180830381865afa158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b529190611c21565b600061150f565b602754601f54604051631d92172560e11b81526001600160a01b039182166004820152610b93929190911690633b242e4a90602401610898565b6027546040805163314f3a4960e01b81529051610bde926001600160a01b03169163314f3a499160048083019260209291908290030181865afa1580156108b5573d6000803e3d6000fd5b737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f30610c03436001611c3a565b6040518263ffffffff1660e01b8152600401610c2191815260200190565b600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b50505050610c7a60405180606001604052806060815260200160008019168152602001600081525090565b602754601e546040516305300d0960e11b81526001600160a01b0392831692630a601a1292610cb0929116908590600401611b9b565b600060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b5050602754601e54604051631d92172560e11b81526001600160a01b039182166004820152610d1a945091169150633b242e4a90602401610898565b602754601f54604051631d92172560e11b81526001600160a01b039182166004820152610d54929190911690633b242e4a90602401610898565b6027546040805163314f3a4960e01b81529051610d9f926001600160a01b03169163314f3a499160048083019260209291908290030181865afa158015610965573d6000803e3d6000fd5b737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f30610dc4436001611c3a565b6040518263ffffffff1660e01b8152600401610de291815260200190565b600060405180830381600087803b158015610dfc57600080fd5b505af1158015610e10573d6000803e3d6000fd5b506000925060029150610e209050565b604051908082528060200260200182016040528015610e49578160200160208202803683370190505b50601e5481519192506001600160a01b0316908290600090610e6d57610e6d611afd565b6001600160a01b039283166020918202929092010152601f54825191169082906001908110610e9e57610e9e611afd565b6001600160a01b03928316602091820292909201015260275460405162cf2ab560e01b815291169062cf2ab590610ed990849060040161187f565b600060405180830381600087803b158015610ef357600080fd5b505af1158015610f07573d6000803e3d6000fd5b5050602754601e54604051631d92172560e11b81526001600160a01b039182166004820152610f43945091169150633b242e4a90602401610898565b602754601f54604051631d92172560e11b81526001600160a01b039182166004820152610f7d929190911690633b242e4a90602401610898565b6027546040805163314f3a4960e01b81529051610fc8926001600160a01b03169163314f3a499160048083019260209291908290030181865afa158015610965573d6000803e3d6000fd5b5050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156106b357838290600052602060002001805461100f90611be6565b80601f016020809104026020016040519081016040528092919081815260200182805461103b90611be6565b80156110885780601f1061105d57610100808354040283529160200191611088565b820191906000526020600020905b81548152906001019060200180831161106b57829003601f168201915b505050505081526020019060010190610ff0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106b35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561116a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161112c5790505b505050505081525050815260200190600101906110c0565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156106b35783829060005260206000200180546111c590611be6565b80601f01602080910402602001604051908101604052809291908181526020018280546111f190611be6565b801561123e5780601f106112135761010080835404028352916020019161123e565b820191906000526020600020905b81548152906001019060200180831161122157829003601f168201915b5050505050815260200190600101906111a6565b600754600090610100900460ff16156112745750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561137a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611302917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611c60565b60408051601f198184030181529082905261131c91611c91565b6000604051808303816000865af19150503d8060008114611359576040519150601f19603f3d011682016040523d82523d6000602084013e61135e565b606091505b50915050808060200190518101906113769190611cad565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015610570576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610552575050505050905090565b611408604051806040016040528060088152602001675369676e6572203160c01b815250611636565b6020908155601e80546001600160a01b0319166001600160a01b03939093169290921790915560408051808201909152600881526729b4b3b732b9101960c11b9181019190915261145890611636565b602155601f80546001600160a01b0319166001600160a01b039290921691909117905560405161148790611865565b604051809103906000f0801580156114a3573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169190911790556040516114d090611872565b604051809103906000f0801580156114ec573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055565b808214610fc8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516115809060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1610fc861174c565b6000808260405160200161164a9190611c91565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d99190611cd6565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906117159085908790600401611cff565b600060405180830381600087803b15801561172f57600080fd5b505af1158015611743573d6000803e3d6000fd5b50505050915091565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156118475760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526117e69291602001611c60565b60408051601f198184030181529082905261180091611c91565b6000604051808303816000865af19150503d806000811461183d576040519150601f19603f3d011682016040523d82523d6000602084013e611842565b606091505b505050505b6007805461ff001916610100179055565b61299d80611d2c83390190565b61032b806146c983390190565b610249806149f483390190565b6020808252825182820181905260009190848201906040850190845b818110156118c05783516001600160a01b03168352928401929184019160010161189b565b50909695505050505050565b60005b838110156118e75781810151838201526020016118cf565b838111156118f6576000848401525b50505050565b600081518084526119148160208601602086016118cc565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156119d857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156119c257605f198985030183526119b08486516118fc565b948e01949350918d0191600101611994565b505050978a01979450509188019160010161194f565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611a8c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611a775783516001600160e01b0319168252928b019260019290920191908b0190611a4d565b50978a01979550505091870191600101611a10565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611af057603f19888603018452611ade8583516118fc565b94509285019290850190600101611ac2565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03848116825260208083018590526060604080850182905285519185018390528151608086018190526000949392830190859060a08801905b80831015611b8c5783518051881683528601516bffffffffffffffffffffffff1686830152928501926001929092019190840190611b53565b509a9950505050505050505050565b60018060a01b0383168152604060208201526000825160606040840152611bc560a08401826118fc565b90506020840151606084015260408401516080840152809150509392505050565b600181811c90821680611bfa57607f821691505b60208210811415611c1b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611c3357600080fd5b5051919050565b60008219821115611c5b57634e487b7160e01b600052601160045260246000fd5b500190565b6001600160e01b0319831681528151600090611c838160048501602087016118cc565b919091016004019392505050565b60008251611ca38184602087016118cc565b9190910192915050565b600060208284031215611cbf57600080fd5b81518015158114611ccf57600080fd5b9392505050565b600060208284031215611ce857600080fd5b81516001600160a01b0381168114611ccf57600080fd5b6001600160a01b0383168152604060208201819052600090611d23908301846118fc565b94935050505056fe60a06040523480156200001157600080fd5b506040516200299d3803806200299d833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516129096200009460003960006106fd01526129096000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80636d5be926116100de578063ab11899511610097578063e5d98f9411610071578063e5d98f9414610355578063ec7fbb3114610368578063f2fde38b14610394578063fad8b32a146103a757600080fd5b8063ab11899514610327578063b933fa741461033a578063dec5d1f61461034257600080fd5b80636d5be926146102a3578063715018a6146102d6578063857dc190146102de5780638da5cb5b146102e6578063955f2d901461030157806398ec1ac91461031457600080fd5b8063314f3a491161014b5780635140a548116101255780635140a5481461025757806358c1eb171461026a5780635ef533291461027d578063696255be1461029057600080fd5b8063314f3a49146102345780633b242e4a1461023c57806340bf2fb71461024f57600080fd5b8062cf2ab5146101925780630a601a12146101a75780630dba3394146101ba5780631626ba7e146101e05780631703a0181461020c5780631e4cd85e14610221575b600080fd5b6101a56101a0366004611e1e565b6103ba565b005b6101a56101b5366004611ed2565b6103c6565b6101cd6101c8366004611f8f565b6103d4565b6040519081526020015b60405180910390f35b6101f36101ee366004611fac565b6103f0565b6040516001600160e01b031990911681526020016101d7565b61021461042e565b6040516101d79190612055565b6101cd61022f366004611f8f565b6104c1565b6101cd6104d7565b6101cd61024a366004612068565b6104e8565b6067546101cd565b6101a5610265366004612085565b610509565b6101a5610278366004612068565b61052c565b6101a561028b36600461214e565b61053d565b6101a561029e366004612167565b61054e565b6102c66102b1366004612068565b60986020526000908152604090205460ff1681565b60405190151581526020016101d7565b6101a5610568565b6101a561057c565b6033546040516001600160a01b0390911681526020016101d7565b6101cd61030f3660046121a3565b610585565b6101cd610322366004612068565b6105b7565b6101a56103353660046122bd565b61081e565b6101cd61093a565b6101a5610350366004612315565b610946565b6101a5610363366004612068565b610957565b6102c6610376366004612068565b6001600160a01b03166000908152606d602052604090205460ff1690565b6101a56103a2366004612068565b610968565b6101a56103b5366004612068565b6109de565b6103c3816109ef565b50565b6103d08282610a46565b5050565b60006103ea606a63ffffffff80851690610a8e16565b92915050565b6000806000808480602001905181019061040a9190612460565b92509250925061041c86848484610b9d565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b828210156104b457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610465565b5050505081525050905090565b60006103ea606b63ffffffff80851690610a8e16565b60006104e3606a610c4e565b905090565b6001600160a01b0381166000908152606c602052604081206103ea90610c4e565b6103d08260008151811061051f5761051f612534565b6020026020010151610caa565b610534610ccd565b6103c381610d27565b610545610ccd565b6103c381610dad565b610556610ccd565b61055f82610df0565b6103d0816109ef565b610570610ccd565b61057a6000610e36565b565b61057a33610e88565b6001600160a01b0382166000908152606c602052604081206105b09063ffffffff80851690610a8e16565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561062e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105df565b50505050905060008082516001600160401b0381111561065057610650611ce2565b604051908082528060200260200182016040528015610679578160200160208202803683370190505b50905060005b83518110156106e25783818151811061069a5761069a612534565b6020026020010151600001518282815181106106b8576106b8612534565b6001600160a01b0390921660209283029190910190910152806106da81612560565b91505061067f565b50604051639004134760e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639004134790610734908990869060040161257b565b600060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077991908101906125d7565b905060005b84518110156107f05784818151811061079957610799612534565b6020026020010151602001516001600160601b03168282815181106107c0576107c0612534565b60200260200101516107d29190612667565b6107dc9085612686565b9350806107e881612560565b91505061077e565b506107fd6127108461269e565b92506067548310610812575090949350505050565b50600095945050505050565b600054610100900460ff161580801561083e5750600054600160ff909116105b806108585750303b158015610858575060005460ff166001145b6108c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108e3576000805461ff0019166101001790555b6108ee848484610fab565b8015610934576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104e3606b610c4e565b61094e610ccd565b61055f8261100c565b61095f610ccd565b6103c38161116b565b610970610ccd565b6001600160a01b0381166109d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b7565b6103c381610e36565b6109e6610ccd565b6103c3816111ab565b6000805b8251811015610a3c57610a1e838281518110610a1157610a11612534565b6020026020010151611254565b610a2890836126c0565b915080610a3481612560565b9150506109f3565b5061093481611331565b6001600160a01b03821660009081526098602052604090205460ff161515600114610a845760405163380fa21360e11b815260040160405180910390fd5b6103d0828261139d565b6000438210610adf5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108b7565b825460005b81811015610b44576000610af882846114ca565b905084866000018281548110610b1057610b10612534565b60009182526020909120015463ffffffff161115610b3057809250610b3e565b610b3b816001612686565b91505b50610ae4565b8115610b885784610b56600184612701565b81548110610b6657610b66612534565b60009182526020909120015464010000000090046001600160e01b0316610b8b565b60005b6001600160e01b031695945050505050565b600083519050600080610bb18386516114e5565b60005b83811015610c3a576000878281518110610bd057610bd0612534565b60200260200101519050610be48482611526565b610c08818a898581518110610bfb57610bfb612534565b6020026020010151611558565b8093506000610c178288611589565b9050610c238185612686565b935050508080610c3290612560565b915050610bb4565b50610c4581856115ec565b50505050505050565b80546000908015610c975782610c65600183612701565b81548110610c7557610c75612534565b60009182526020909120015464010000000090046001600160e01b0316610c9a565b60005b6001600160e01b03169392505050565b6065548151146103ba5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461057a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b7565b6001600160a01b03811660009081526098602052604090205460ff1615610d61576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610db8606b82611648565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610ec1576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610ed183612718565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610eff82611254565b9050610f0a81611331565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610f5357600080fd5b505af1158015610f67573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610fd25760405162461bcd60e51b81526004016108b79061272f565b606880546001600160a01b0319166001600160a01b038516179055610ff682610dad565b610fff8161100c565b611007611773565b505050565b611015816117a2565b6110325760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156110a557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611056565b5050509152509091506066905060006110be8282611cb4565b505060005b825151811015611139578251805160669190839081106110e5576110e5612534565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061113181612560565b9150506110c3565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610e2a92919061277a565b61117481610e88565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526098602052604090205460ff166111e45760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606d602052604090205460ff16156103c3576103c38161116b565b6001600160a01b0381166000908152606d602052604081205481908190819060ff16156112b3576001600160a01b0385166000908152606c6020526040902061129e906001611648565b5092506112ac8360016127a8565b90506112e5565b6001600160a01b0385166000908152606c602052604081206112d491611648565b5092506112e28360006127a8565b90505b60408051848152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a2949350505050565b60008061133e606a610c4e565b9150600061134c84846126c0565b915081905061135c606a82611648565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b6001600160a01b0382166000908152606d602052604090205460ff16156113d7576040516342ee68b560e01b815260040160405180910390fd5b606580549060006113e783612560565b90915550506001600160a01b0382166000908152606d60205260408120805460ff1916600117905561141883611254565b905061142381611331565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906114579086908690600401612813565b600060405180830381600087803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b60006114d9600284841861269e565b6105b090848416612686565b808214611508576040516001621398b960e31b0319815260040160405180910390fd5b816103d05760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103d05760405163ba50f91160e01b815260040160405180910390fd5b61156c6001600160a01b0384168383611872565b61100757604051638baa579f60e01b815260040160405180910390fd5b600063ffffffff82811614156115c1576001600160a01b0383166000908152606c602052604090206115ba90610c4e565b90506103ea565b6001600160a01b0383166000908152606c602052604090206115ba9063ffffffff80851690610a8e16565b60006115f7826119be565b90508083111561161a57604051634b05a0f760e11b815260040160405180910390fd5b6000611625836119f1565b9050838111156109345760405163e121632f60e01b815260040160405180910390fd5b815460009081908161165986610c4e565b905060008211801561169757504386611673600185612701565b8154811061168357611683612534565b60009182526020909120015463ffffffff16145b156116f7576116a585611a1f565b866116b1600185612701565b815481106116c1576116c1612534565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611765565b85600001604051806040016040528061170f43611a8c565b63ffffffff16815260200161172388611a1f565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff1661179a5760405162461bcd60e51b81526004016108b79061272f565b61057a611af1565b8051600090818080805b8451811015611850578481815181106117c7576117c7612534565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106118075760405163ba50f91160e01b815260040160405180910390fd5b82935084818151811061181c5761181c612534565b6020026020010151602001516001600160601b03168261183c9190612686565b91508061184881612560565b9150506117ac565b5061271081146118665750600095945050505050565b50600195945050505050565b60008060006118818585611b21565b9092509050600081600481111561189a5761189a61285e565b1480156118b85750856001600160a01b0316826001600160a01b0316145b156118c8576001925050506105b0565b600080876001600160a01b0316631626ba7e60e01b88886040516024016118f0929190612874565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161192e919061288d565b600060405180830381855afa9150503d8060008114611969576040519150601f19603f3d011682016040523d82523d6000602084013e61196e565b606091505b5091509150818015611981575080516020145b80156119b257508051630b135d3f60e11b906119a690830160209081019084016128a9565b6001600160e01b031916145b98975050505050505050565b600063ffffffff82811614156119d8576103ea606a610c4e565b6103ea606a63ffffffff80851690610a8e16565b919050565b600063ffffffff8281161415611a0b576103ea606b610c4e565b6103ea606b63ffffffff80851690610a8e16565b60006001600160e01b03821115611a885760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108b7565b5090565b600063ffffffff821115611a885760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108b7565b600054610100900460ff16611b185760405162461bcd60e51b81526004016108b79061272f565b61057a33610e36565b600080825160411415611b585760208301516040840151606085015160001a611b4c87828585611b8e565b9450945050505061176c565b825160401415611b825760208301516040840151611b77868383611c7b565b93509350505061176c565b5060009050600261176c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611bc55750600090506003611c72565b8460ff16601b14158015611bdd57508460ff16601c14155b15611bee5750600090506004611c72565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c6b57600060019250925050611c72565b9150600090505b94509492505050565b6000806001600160ff1b03831681611c9860ff86901c601b612686565b9050611ca687828885611b8e565b935093505050935093915050565b50805460008255906000526020600020908101906103c391905b80821115611a885760008155600101611cce565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611d1a57611d1a611ce2565b60405290565b604080519081016001600160401b0381118282101715611d1a57611d1a611ce2565b604051601f8201601f191681016001600160401b0381118282101715611d6a57611d6a611ce2565b604052919050565b60006001600160401b03821115611d8b57611d8b611ce2565b5060051b60200190565b6001600160a01b03811681146103c357600080fd5b600082601f830112611dbb57600080fd5b81356020611dd0611dcb83611d72565b611d42565b82815260059290921b84018101918181019086841115611def57600080fd5b8286015b84811015611e13578035611e0681611d95565b8352918301918301611df3565b509695505050505050565b600060208284031215611e3057600080fd5b81356001600160401b03811115611e4657600080fd5b611e5284828501611daa565b949350505050565b60006001600160401b03821115611e7357611e73611ce2565b50601f01601f191660200190565b600082601f830112611e9257600080fd5b8135611ea0611dcb82611e5a565b818152846020838601011115611eb557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ee557600080fd5b8235611ef081611d95565b915060208301356001600160401b0380821115611f0c57600080fd5b9084019060608287031215611f2057600080fd5b604051606081018181108382111715611f3b57611f3b611ce2565b604052823582811115611f4d57600080fd5b611f5988828601611e81565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff811681146103c357600080fd5b600060208284031215611fa157600080fd5b81356105b081611f7d565b60008060408385031215611fbf57600080fd5b8235915060208301356001600160401b03811115611fdc57600080fd5b611fe885828601611e81565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561204857835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612011565b5090979650505050505050565b6020815260006105b06020830184611ff2565b60006020828403121561207a57600080fd5b81356105b081611d95565b6000806040838503121561209857600080fd5b82356001600160401b03808211156120af57600080fd5b818501915085601f8301126120c357600080fd5b813560206120d3611dcb83611d72565b82815260059290921b840181019181810190898411156120f257600080fd5b8286015b8481101561212a5780358681111561210e5760008081fd5b61211c8c86838b0101611daa565b8452509183019183016120f6565b509650508601359250508082111561214157600080fd5b50611fe885828601611e81565b60006020828403121561216057600080fd5b5035919050565b6000806040838503121561217a57600080fd5b8235915060208301356001600160401b0381111561219757600080fd5b611fe885828601611daa565b600080604083850312156121b657600080fd5b82356121c181611d95565b915060208301356121d181611f7d565b809150509250929050565b600060208083850312156121ef57600080fd5b6121f7611cf8565b915082356001600160401b0381111561220f57600080fd5b8301601f8101851361222057600080fd5b803561222e611dcb82611d72565b81815260069190911b8201830190838101908783111561224d57600080fd5b928401925b828410156122b0576040848903121561226b5760008081fd5b612273611d20565b843561227e81611d95565b8152848601356001600160601b038116811461229a5760008081fd5b8187015282526040939093019290840190612252565b8552509295945050505050565b6000806000606084860312156122d257600080fd5b83356122dd81611d95565b92506020840135915060408401356001600160401b038111156122ff57600080fd5b61230b868287016121dc565b9150509250925092565b6000806040838503121561232857600080fd5b82356001600160401b038082111561233f57600080fd5b61234b868387016121dc565b9350602085013591508082111561236157600080fd5b50611fe885828601611daa565b60005b83811015612389578181015183820152602001612371565b838111156109345750506000910152565b600082601f8301126123ab57600080fd5b815160206123bb611dcb83611d72565b82815260059290921b840181019181810190868411156123da57600080fd5b8286015b84811015611e135780516001600160401b038111156123fd5760008081fd5b8701603f8101891361240f5760008081fd5b848101516040612421611dcb83611e5a565b8281528b828486010111156124365760008081fd5b6124458389830184870161236e565b86525050509183019183016123de565b80516119ec81611f7d565b60008060006060848603121561247557600080fd5b83516001600160401b038082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b815160206124b0611dcb83611d72565b82815260059290921b8401810191818101908a8411156124cf57600080fd5b948201945b838610156124f65785516124e781611d95565b825294820194908201906124d4565b9189015191975090935050508082111561250f57600080fd5b5061251c8682870161239a565b92505061252b60408501612455565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156125745761257461254a565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b818110156125c95785518516835294830194918301916001016125ab565b509098975050505050505050565b600060208083850312156125ea57600080fd5b82516001600160401b0381111561260057600080fd5b8301601f8101851361261157600080fd5b805161261f611dcb82611d72565b81815260059190911b8201830190838101908783111561263e57600080fd5b928401925b8284101561265c57835182529284019290840190612643565b979650505050505050565b60008160001904831182151516156126815761268161254a565b500290565b600082198211156126995761269961254a565b500190565b6000826126bb57634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156126e2576126e261254a565b600160ff1b83900384128116156126fb576126fb61254a565b50500190565b6000828210156127135761271361254a565b500390565b6000816127275761272761254a565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60408152600061278d6040830185611ff2565b828103602084015261279f8185611ff2565b95945050505050565b60008083128015600160ff1b8501841216156127c6576127c661254a565b6001600160ff1b03840183138116156127e1576127e161254a565b50500390565b600081518084526127ff81602086016020860161236e565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261283d60a08401826127e7565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e5260408301846127e7565b6000825161289f81846020870161236e565b9190910192915050565b6000602082840312156128bb57600080fd5b81516001600160e01b0319811681146105b057600080fdfea26469706673582212201b12ccb84dc133a9f910d479d0b076293d022c27386084146694193cf41f609b64736f6c634300080c0033608060405234801561001057600080fd5b5061030b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063778e55f31461003b5780639004134714610065575b600080fd5b610052610049366004610131565b6103e892915050565b6040519081526020015b60405180910390f35b61007861007336600461017a565b610085565b60405161005c9190610252565b60606000825167ffffffffffffffff8111156100a3576100a3610164565b6040519080825280602002602001820160405280156100cc578160200160208202803683370190505b50905060005b835181101561010d576103e88282815181106100f0576100f0610296565b602090810291909101015280610105816102ac565b9150506100d2565b509392505050565b80356001600160a01b038116811461012c57600080fd5b919050565b6000806040838503121561014457600080fd5b61014d83610115565b915061015b60208401610115565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561018d57600080fd5b61019683610115565b915060208084013567ffffffffffffffff808211156101b457600080fd5b818601915086601f8301126101c857600080fd5b8135818111156101da576101da610164565b8060051b604051601f19603f830116810181811085821117156101ff576101ff610164565b60405291825284820192508381018501918983111561021d57600080fd5b938501935b828510156102425761023385610115565b84529385019392850192610222565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561028a5783518352928401929184019160010161026e565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156102ce57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220044609968e4209af57558f74bde90d5690cc68a4d97bf9dc5f705209c70b0d9064736f6c634300080c0033608060405234801561001057600080fd5b50610229806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639926ee7d1461003b578063a364f4da1461004f575b600080fd5b61004d6100493660046100ec565b5050565b005b61004d61005d3660046101d1565b50565b80356001600160a01b038116811461007757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156100b5576100b561007c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156100e4576100e461007c565b604052919050565b600080604083850312156100ff57600080fd5b61010883610060565b915060208084013567ffffffffffffffff8082111561012657600080fd5b908501906060828803121561013a57600080fd5b610142610092565b82358281111561015157600080fd5b8301601f8101891361016257600080fd5b8035838111156101745761017461007c565b610186601f8201601f191687016100bb565b9350808452898682840101111561019c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b6000602082840312156101e357600080fd5b6101ec82610060565b939250505056fea26469706673582212206943cdf3fa94350d7917a12c2d4b4a05065ffd77579c5291937d46934ca9fabd64736f6c634300080c0033a264697066735822122010e49fae1b8359c50bf09fbcb6403d93e07ecbf4bbda7d4ba660023feaa9780664736f6c634300080c0033 + /// ``` + #[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\xF5W`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x97W\x80c\xB5P\x8A\xA9\x11a\0fW\x80c\xB5P\x8A\xA9\x14a\x01\xBFW\x80c\xBAAO\xA6\x14a\x01\xC7W\x80c\xE2\x0C\x9Fq\x14a\x01\xDFW\x80c\xFAv&\xD4\x14a\x01\xE7W`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x01dW\x80c\x86w~\x06\x14a\x01yW\x80c\x91j\x17\xC6\x14a\x01\xA4W\x80c\xB5-G*\x14a\x01\xACW`\0\x80\xFD[\x80c>^<#\x11a\0\xD3W\x80c>^<#\x14a\x017W\x80c?r\x86\xF4\x14a\x01?W\x80cf\xD9\xA9\xA0\x14a\x01GW\x80cpz\x92A\x14a\x01\\W`\0\x80\xFD[\x80c\n\x92T\xE4\x14a\0\xFAW\x80c\x1E\xD7\x83\x1C\x14a\x01\x04W\x80c*\xDE8\x80\x14a\x01\"W[`\0\x80\xFD[a\x01\x02a\x01\xF4V[\0[a\x01\x0Ca\x05\x18V[`@Qa\x01\x19\x91\x90a\x18\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01*a\x05zV[`@Qa\x01\x19\x91\x90a\x19(V[a\x01\x0Ca\x06\xBCV[a\x01\x0Ca\x07\x1CV[a\x01Oa\x07|V[`@Qa\x01\x19\x91\x90a\x19\xE8V[a\x01\x02a\x08bV[a\x01la\x0F\xCCV[`@Qa\x01\x19\x91\x90a\x1A\x9BV[`\x1DTa\x01\x8C\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x19V[a\x01Oa\x10\x9CV[`\x1CTa\x01\x8C\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01la\x11\x82V[a\x01\xCFa\x12RV[`@Q\x90\x15\x15\x81R` \x01a\x01\x19V[a\x01\x0Ca\x13\x7FV[`\x07Ta\x01\xCF\x90`\xFF\x16\x81V[a\x01\xFCa\x13\xDFV[`\x1CT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90a\x02\x17\x90a\x18XV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x02CW=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01` \x82\x01\x81\x81R``\x83\x01\x84Ra\x124\x93`\0\x93\x92\x83\x92\x91\x83\x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02\x85WPP\x90R`@\x80Q\x80\x82\x01\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra'\x10` \x82\x01R\x81Q\x80Q\x92\x93P\x90\x91`\0\x90a\x02\xE3Wa\x02\xE3a\x1A\xFDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`'T`\x1DT`@Qc\xAB\x11\x89\x95`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92c\xAB\x11\x89\x95\x92a\x03'\x92\x91\x16\x90`d\x90\x86\x90`\x04\x01a\x1B\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03UW=`\0\x80>=`\0\xFD[PP`'T`\x1ET`@QcX\xC1\xEB\x17`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92PcX\xC1\xEB\x17\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xA2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xB6W=`\0\x80>=`\0\xFD[PP`'T`\x1FT`@QcX\xC1\xEB\x17`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92PcX\xC1\xEB\x17\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\x03W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\x17W=`\0\x80>=`\0\xFD[PPPPa\x04B`@Q\x80``\x01`@R\x80``\x81R` \x01`\0\x80\x19\x16\x81R` \x01`\0\x81RP\x90V[`'T`\x1ET`@Qc\x050\r\t`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92c\n`\x1A\x12\x92a\x04x\x92\x91\x16\x90\x85\x90`\x04\x01a\x1B\x9BV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xA6W=`\0\x80>=`\0\xFD[PP`'T`\x1FT`@Qc\x050\r\t`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\n`\x1A\x12\x93Pa\x04\xE1\x92\x90\x91\x16\x90\x85\x90`\x04\x01a\x1B\x9BV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xFBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\x0FW=`\0\x80>=`\0\xFD[PPPPPPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05pW` \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\x05RW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06\x9CW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06\x0F\x90a\x1B\xE6V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06;\x90a\x1B\xE6V[\x80\x15a\x06\x88W\x80`\x1F\x10a\x06]Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\x88V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06kW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xF0V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x9EV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05pW` \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\x05RWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05pW` \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\x05RWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xA0V[`'T`\x1ET`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x08\xE0\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xB5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD9\x91\x90a\x1C!V[`\x01a\x15\x0FV[`'T`\x1FT`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\t\x1A\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01a\x08\x98V[`'T`@\x80Qc1O:I`\xE0\x1B\x81R\x90Qa\t\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c1O:I\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\teW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x89\x91\x90a\x1C!V[`\x02a\x15\x0FV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-c\x1F{O0a\t\xB5C`\x01a\x1C:V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\t\xD3\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\t\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\x01W=`\0\x80>=`\0\xFD[PP`\x1ET`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x92Pc\xCAf\x9F\xA7\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n^W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\nrW=`\0\x80>=`\0\xFD[PPPP`'`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x85}\xC1\x90`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\xC6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xDAW=`\0\x80>=`\0\xFD[PP`'T`\x1ET`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x0BY\x94P\x91\x16\x91Pc;$.J\x90`$\x01` `@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\x0BR\x91\x90a\x1C!V[`\0a\x15\x0FV[`'T`\x1FT`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x0B\x93\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01a\x08\x98V[`'T`@\x80Qc1O:I`\xE0\x1B\x81R\x90Qa\x0B\xDE\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c1O:I\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x08\xB5W=`\0\x80>=`\0\xFD[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-c\x1F{O0a\x0C\x03C`\x01a\x1C:V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C!\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C;W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPPa\x0Cz`@Q\x80``\x01`@R\x80``\x81R` \x01`\0\x80\x19\x16\x81R` \x01`\0\x81RP\x90V[`'T`\x1ET`@Qc\x050\r\t`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92c\n`\x1A\x12\x92a\x0C\xB0\x92\x91\x16\x90\x85\x90`\x04\x01a\x1B\x9BV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C\xDEW=`\0\x80>=`\0\xFD[PP`'T`\x1ET`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\r\x1A\x94P\x91\x16\x91Pc;$.J\x90`$\x01a\x08\x98V[`'T`\x1FT`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\rT\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01a\x08\x98V[`'T`@\x80Qc1O:I`\xE0\x1B\x81R\x90Qa\r\x9F\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c1O:I\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\teW=`\0\x80>=`\0\xFD[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-c\x1F{O0a\r\xC4C`\x01a\x1C:V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x10W=`\0\x80>=`\0\xFD[P`\0\x92P`\x02\x91Pa\x0E \x90PV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0EIW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`\x1ET\x81Q\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90\x82\x90`\0\x90a\x0EmWa\x0Ema\x1A\xFDV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`\x1FT\x82Q\x91\x16\x90\x82\x90`\x01\x90\x81\x10a\x0E\x9EWa\x0E\x9Ea\x1A\xFDV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`'T`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x0E\xD9\x90\x84\x90`\x04\x01a\x18\x7FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\x07W=`\0\x80>=`\0\xFD[PP`'T`\x1ET`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x0FC\x94P\x91\x16\x91Pc;$.J\x90`$\x01a\x08\x98V[`'T`\x1FT`@Qc\x1D\x92\x17%`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01Ra\x0F}\x92\x91\x90\x91\x16\x90c;$.J\x90`$\x01a\x08\x98V[`'T`@\x80Qc1O:I`\xE0\x1B\x81R\x90Qa\x0F\xC8\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c1O:I\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\teW=`\0\x80>=`\0\xFD[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x10\x0F\x90a\x1B\xE6V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10;\x90a\x1B\xE6V[\x80\x15a\x10\x88W\x80`\x1F\x10a\x10]Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10\x88V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10kW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xF0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x11jW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x11,W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x10\xC0V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\xB3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x11\xC5\x90a\x1B\xE6V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x11\xF1\x90a\x1B\xE6V[\x80\x15a\x12>W\x80`\x1F\x10a\x12\x13Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x12>V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x12!W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x11\xA6V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x12tWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x13zW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x13\x02\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x1C`V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x13\x1C\x91a\x1C\x91V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x13YW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x13^V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x13v\x91\x90a\x1C\xADV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05pW` \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\x05RWPPPPP\x90P\x90V[a\x14\x08`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01gSigner 1`\xC0\x1B\x81RPa\x166V[` \x90\x81U`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92\x90\x92\x17\x90\x91U`@\x80Q\x80\x82\x01\x90\x91R`\x08\x81Rg)\xB4\xB3\xB72\xB9\x10\x19`\xC1\x1B\x91\x81\x01\x91\x90\x91Ra\x14X\x90a\x166V[`!U`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qa\x14\x87\x90a\x18eV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x14\xA3W=`\0\x80>=`\0\xFD[P`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qa\x14\xD0\x90a\x18rV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x14\xECW=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x80\x82\x14a\x0F\xC8W\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x15\x80\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\x0F\xC8a\x17LV[`\0\x80\x82`@Q` \x01a\x16J\x91\x90a\x1C\x91V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90R\x80Q` \x90\x91\x01 `\x01b^y\xB7`\xE0\x1B\x03\x19\x82R`\x04\x82\x01\x81\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xFF\xA1\x86I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xB5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xD9\x91\x90a\x1C\xD6V[`@Qc\x18\xCA\xF8\xE3`\xE3\x1B\x81R\x90\x92Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC6W\xC7\x18\x90a\x17\x15\x90\x85\x90\x87\x90`\x04\x01a\x1C\xFFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x17/W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17CW=`\0\x80>=`\0\xFD[PPPP\x91P\x91V[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x18GW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x17\xE6\x92\x91` \x01a\x1C`V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x18\0\x91a\x1C\x91V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x18=W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x18BV[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[a)\x9D\x80a\x1D,\x839\x01\x90V[a\x03+\x80aF\xC9\x839\x01\x90V[a\x02I\x80aI\xF4\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x18\xC0W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x18\x9BV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x18\xE7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x18\xCFV[\x83\x81\x11\x15a\x18\xF6W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\x19\x14\x81` \x86\x01` \x86\x01a\x18\xCCV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x19\xD8W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x19\xC2W`_\x19\x89\x85\x03\x01\x83Ra\x19\xB0\x84\x86Qa\x18\xFCV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x19\x94V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x19OV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x1A\x8CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1AwW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x1AMV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1A\x10V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x1A\xF0W`?\x19\x88\x86\x03\x01\x84Ra\x1A\xDE\x85\x83Qa\x18\xFCV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1A\xC2V[P\x92\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R` \x80\x83\x01\x85\x90R```@\x80\x85\x01\x82\x90R\x85Q\x91\x85\x01\x83\x90R\x81Q`\x80\x86\x01\x81\x90R`\0\x94\x93\x92\x83\x01\x90\x85\x90`\xA0\x88\x01\x90[\x80\x83\x10\x15a\x1B\x8CW\x83Q\x80Q\x88\x16\x83R\x86\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x83\x01R\x92\x85\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a\x1BSV[P\x9A\x99PPPPPPPPPPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra\x1B\xC5`\xA0\x84\x01\x82a\x18\xFCV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x1B\xFAW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x1C\x1BWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x1C3W`\0\x80\xFD[PQ\x91\x90PV[`\0\x82\x19\x82\x11\x15a\x1C[WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x1C\x83\x81`\x04\x85\x01` \x87\x01a\x18\xCCV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x1C\xA3\x81\x84` \x87\x01a\x18\xCCV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x1C\xBFW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\xCFW`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x1C\xE8W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1C\xCFW`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a\x1D#\x90\x83\x01\x84a\x18\xFCV[\x94\x93PPPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0)\x9D8\x03\x80b\0)\x9D\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)\tb\0\0\x94`\09`\0a\x06\xFD\x01Ra)\t`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x8DW`\x005`\xE0\x1C\x80cm[\xE9&\x11a\0\xDEW\x80c\xAB\x11\x89\x95\x11a\0\x97W\x80c\xE5\xD9\x8F\x94\x11a\0qW\x80c\xE5\xD9\x8F\x94\x14a\x03UW\x80c\xEC\x7F\xBB1\x14a\x03hW\x80c\xF2\xFD\xE3\x8B\x14a\x03\x94W\x80c\xFA\xD8\xB3*\x14a\x03\xA7W`\0\x80\xFD[\x80c\xAB\x11\x89\x95\x14a\x03'W\x80c\xB93\xFAt\x14a\x03:W\x80c\xDE\xC5\xD1\xF6\x14a\x03BW`\0\x80\xFD[\x80cm[\xE9&\x14a\x02\xA3W\x80cqP\x18\xA6\x14a\x02\xD6W\x80c\x85}\xC1\x90\x14a\x02\xDEW\x80c\x8D\xA5\xCB[\x14a\x02\xE6W\x80c\x95_-\x90\x14a\x03\x01W\x80c\x98\xEC\x1A\xC9\x14a\x03\x14W`\0\x80\xFD[\x80c1O:I\x11a\x01KW\x80cQ@\xA5H\x11a\x01%W\x80cQ@\xA5H\x14a\x02WW\x80cX\xC1\xEB\x17\x14a\x02jW\x80c^\xF53)\x14a\x02}W\x80cibU\xBE\x14a\x02\x90W`\0\x80\xFD[\x80c1O:I\x14a\x024W\x80c;$.J\x14a\x02=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07y\x91\x90\x81\x01\x90a%\xD7V[\x90P`\0[\x84Q\x81\x10\x15a\x07\xF0W\x84\x81\x81Q\x81\x10a\x07\x99Wa\x07\x99a%4V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\xC0Wa\x07\xC0a%4V[` \x02` \x01\x01Qa\x07\xD2\x91\x90a&gV[a\x07\xDC\x90\x85a&\x86V[\x93P\x80a\x07\xE8\x81a%`V[\x91PPa\x07~V[Pa\x07\xFDa'\x10\x84a&\x9EV[\x92P`gT\x83\x10a\x08\x12WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08>WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08XWP0;\x15\x80\x15a\x08XWP`\0T`\xFF\x16`\x01\x14[a\x08\xC0W`@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\xE3W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xEE\x84\x84\x84a\x0F\xABV[\x80\x15a\t4W`\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\xE3`ka\x0CNV[a\tNa\x0C\xCDV[a\x05_\x82a\x10\x0CV[a\t_a\x0C\xCDV[a\x03\xC3\x81a\x11kV[a\tpa\x0C\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xD5W`@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\xB7V[a\x03\xC3\x81a\x0E6V[a\t\xE6a\x0C\xCDV[a\x03\xC3\x81a\x11\xABV[`\0\x80[\x82Q\x81\x10\x15a\nV[a\x0B;\x81`\x01a&\x86V[\x91P[Pa\n\xE4V[\x81\x15a\x0B\x88W\x84a\x0BV`\x01\x84a'\x01V[\x81T\x81\x10a\x0BfWa\x0Bfa%4V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B\x8BV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80a\x0B\xB1\x83\x86Qa\x14\xE5V[`\0[\x83\x81\x10\x15a\x0C:W`\0\x87\x82\x81Q\x81\x10a\x0B\xD0Wa\x0B\xD0a%4V[` \x02` \x01\x01Q\x90Pa\x0B\xE4\x84\x82a\x15&V[a\x0C\x08\x81\x8A\x89\x85\x81Q\x81\x10a\x0B\xFBWa\x0B\xFBa%4V[` \x02` \x01\x01Qa\x15XV[\x80\x93P`\0a\x0C\x17\x82\x88a\x15\x89V[\x90Pa\x0C#\x81\x85a&\x86V[\x93PPP\x80\x80a\x0C2\x90a%`V[\x91PPa\x0B\xB4V[Pa\x0CE\x81\x85a\x15\xECV[PPPPPPPV[\x80T`\0\x90\x80\x15a\x0C\x97W\x82a\x0Ce`\x01\x83a'\x01V[\x81T\x81\x10a\x0CuWa\x0Cua%4V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C\x9AV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`eT\x81Q\x14a\x03\xBAW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x05zW`@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\xB7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x98` R`@\x90 T`\xFF\x16\x15a\raW`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x98` 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\r\xB8`k\x82a\x16HV[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\x81\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16a\x0E\xC1W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0E\xD1\x83a'\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x0E\xFF\x82a\x12TV[\x90Pa\x0F\n\x81a\x131V[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\x0FSW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FgW=`\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`ja\x0CNV[\x91P`\0a\x13L\x84\x84a&\xC0V[\x91P\x81\x90Pa\x13\\`j\x82a\x16HV[PP`@\x80Q\x84\x81R` \x81\x01\x84\x90R\x7F\x86\xDC\xF8k\x12\xDF\xEE\xDE\xA7J\xE90\r\xBD\xAA\x19;\xCC\xE5\x80\x93i\xC8\x17~\xA2\xF4\xEA\xAAer\x9B\x91\x01`@Q\x80\x91\x03\x90\xA1P\x91P\x91V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x90 T`\xFF\x16\x15a\x13\xD7W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x13\xE7\x83a%`V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x14\x18\x83a\x12TV[\x90Pa\x14#\x81a\x131V[PP`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\x14W\x90\x86\x90\x86\x90`\x04\x01a(\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x14qW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x14\x85W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x86\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\xA3PPPV[`\0a\x14\xD9`\x02\x84\x84\x18a&\x9EV[a\x05\xB0\x90\x84\x84\x16a&\x86V[\x80\x82\x14a\x15\x08W`@Q`\x01b\x13\x98\xB9`\xE3\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\x03\xD0W`@Qc%\x1FV\xA1`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x10a\x03\xD0W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15l`\x01`\x01`\xA0\x1B\x03\x84\x16\x83\x83a\x18rV[a\x10\x07W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x15\xC1W`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x15\xBA\x90a\x0CNV[\x90Pa\x03\xEAV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`l` R`@\x90 a\x15\xBA\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0a\x15\xF7\x82a\x19\xBEV[\x90P\x80\x83\x11\x15a\x16\x1AW`@QcK\x05\xA0\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x16%\x83a\x19\xF1V[\x90P\x83\x81\x11\x15a\t4W`@Qc\xE1!c/`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81T`\0\x90\x81\x90\x81a\x16Y\x86a\x0CNV[\x90P`\0\x82\x11\x80\x15a\x16\x97WPC\x86a\x16s`\x01\x85a'\x01V[\x81T\x81\x10a\x16\x83Wa\x16\x83a%4V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x16\xF7Wa\x16\xA5\x85a\x1A\x1FV[\x86a\x16\xB1`\x01\x85a'\x01V[\x81T\x81\x10a\x16\xC1Wa\x16\xC1a%4V[\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\x17eV[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x17\x0FCa\x1A\x8CV[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x17#\x88a\x1A\x1FV[`\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\x17\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'/V[a\x05za\x1A\xF1V[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x18PW\x84\x81\x81Q\x81\x10a\x17\xC7Wa\x17\xC7a%4V[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x18\x07W`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x18\x1CWa\x18\x1Ca%4V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x18<\x91\x90a&\x86V[\x91P\x80a\x18H\x81a%`V[\x91PPa\x17\xACV[Pa'\x10\x81\x14a\x18fWP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x18\x81\x85\x85a\x1B!V[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x18\x9AWa\x18\x9Aa(^V[\x14\x80\x15a\x18\xB8WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x18\xC8W`\x01\x92PPPa\x05\xB0V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x18\xF0\x92\x91\x90a(tV[`@\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\x19.\x91\x90a(\x8DV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x19iW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x19nV[``\x91P[P\x91P\x91P\x81\x80\x15a\x19\x81WP\x80Q` \x14[\x80\x15a\x19\xB2WP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x19\xA6\x90\x83\x01` \x90\x81\x01\x90\x84\x01a(\xA9V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x19\xD8Wa\x03\xEA`ja\x0CNV[a\x03\xEA`jc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[\x91\x90PV[`\0c\xFF\xFF\xFF\xFF\x82\x81\x16\x14\x15a\x1A\x0BWa\x03\xEA`ka\x0CNV[a\x03\xEA`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\n\x8E\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1A\x88W`@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\xB7V[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1A\x88W`@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\xB7V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1B\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xB7\x90a'/V[a\x05z3a\x0E6V[`\0\x80\x82Q`A\x14\x15a\x1BXW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1BL\x87\x82\x85\x85a\x1B\x8EV[\x94P\x94PPPPa\x17lV[\x82Q`@\x14\x15a\x1B\x82W` \x83\x01Q`@\x84\x01Qa\x1Bw\x86\x83\x83a\x1C{V[\x93P\x93PPPa\x17lV[P`\0\x90P`\x02a\x17lV[`\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\xC5WP`\0\x90P`\x03a\x1CrV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1B\xDDWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1B\xEEWP`\0\x90P`\x04a\x1CrV[`@\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\x1CBW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1CkW`\0`\x01\x92P\x92PPa\x1CrV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1C\x98`\xFF\x86\x90\x1C`\x1Ba&\x86V[\x90Pa\x1C\xA6\x87\x82\x88\x85a\x1B\x8EV[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\xC3\x91\x90[\x80\x82\x11\x15a\x1A\x88W`\0\x81U`\x01\x01a\x1C\xCEV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x1AWa\x1D\x1Aa\x1C\xE2V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x1AWa\x1D\x1Aa\x1C\xE2V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1DjWa\x1Dja\x1C\xE2V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1D\x8BWa\x1D\x8Ba\x1C\xE2V[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1D\xBBW`\0\x80\xFD[\x815` a\x1D\xD0a\x1D\xCB\x83a\x1DrV[a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x1D\xEFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1E\x13W\x805a\x1E\x06\x81a\x1D\x95V[\x83R\x91\x83\x01\x91\x83\x01a\x1D\xF3V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x1E0W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EFW`\0\x80\xFD[a\x1ER\x84\x82\x85\x01a\x1D\xAAV[\x94\x93PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1EsWa\x1Esa\x1C\xE2V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x92W`\0\x80\xFD[\x815a\x1E\xA0a\x1D\xCB\x82a\x1EZV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1E\xB5W`\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\xE5W`\0\x80\xFD[\x825a\x1E\xF0\x81a\x1D\x95V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x1F\x0CW`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x1F W`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x1F;Wa\x1F;a\x1C\xE2V[`@R\x825\x82\x81\x11\x15a\x1FMW`\0\x80\xFD[a\x1FY\x88\x82\x86\x01a\x1E\x81V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x03\xC3W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1F\xA1W`\0\x80\xFD[\x815a\x05\xB0\x81a\x1F}V[`\0\x80`@\x83\x85\x03\x12\x15a\x1F\xBFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F\xDCW`\0\x80\xFD[a\x1F\xE8\x85\x82\x86\x01a\x1E\x81V[\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 HW\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 \x11V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xB0` \x83\x01\x84a\x1F\xF2V[`\0` \x82\x84\x03\x12\x15a zW`\0\x80\xFD[\x815a\x05\xB0\x81a\x1D\x95V[`\0\x80`@\x83\x85\x03\x12\x15a \x98W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a \xAFW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a \xC3W`\0\x80\xFD[\x815` a \xD3a\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a \xF2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a!*W\x805\x86\x81\x11\x15a!\x0EW`\0\x80\x81\xFD[a!\x1C\x8C\x86\x83\x8B\x01\x01a\x1D\xAAV[\x84RP\x91\x83\x01\x91\x83\x01a \xF6V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a!AW`\0\x80\xFD[Pa\x1F\xE8\x85\x82\x86\x01a\x1E\x81V[`\0` \x82\x84\x03\x12\x15a!`W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a!zW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!\x97W`\0\x80\xFD[a\x1F\xE8\x85\x82\x86\x01a\x1D\xAAV[`\0\x80`@\x83\x85\x03\x12\x15a!\xB6W`\0\x80\xFD[\x825a!\xC1\x81a\x1D\x95V[\x91P` \x83\x015a!\xD1\x81a\x1F}V[\x80\x91PP\x92P\x92\x90PV[`\0` \x80\x83\x85\x03\x12\x15a!\xEFW`\0\x80\xFD[a!\xF7a\x1C\xF8V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\x0FW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\" W`\0\x80\xFD[\x805a\".a\x1D\xCB\x82a\x1DrV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\"MW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\"\xB0W`@\x84\x89\x03\x12\x15a\"kW`\0\x80\x81\xFD[a\"sa\x1D V[\x845a\"~\x81a\x1D\x95V[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\"\x9AW`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a\"RV[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\"\xD2W`\0\x80\xFD[\x835a\"\xDD\x81a\x1D\x95V[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xFFW`\0\x80\xFD[a#\x0B\x86\x82\x87\x01a!\xDCV[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a#(W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#?W`\0\x80\xFD[a#K\x86\x83\x87\x01a!\xDCV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a#aW`\0\x80\xFD[Pa\x1F\xE8\x85\x82\x86\x01a\x1D\xAAV[`\0[\x83\x81\x10\x15a#\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a#qV[\x83\x81\x11\x15a\t4WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a#\xABW`\0\x80\xFD[\x81Q` a#\xBBa\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a#\xDAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1E\x13W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xFDW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a$\x0FW`\0\x80\x81\xFD[\x84\x81\x01Q`@a$!a\x1D\xCB\x83a\x1EZV[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a$6W`\0\x80\x81\xFD[a$E\x83\x89\x83\x01\x84\x87\x01a#nV[\x86RPPP\x91\x83\x01\x91\x83\x01a#\xDEV[\x80Qa\x19\xEC\x81a\x1F}V[`\0\x80`\0``\x84\x86\x03\x12\x15a$uW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a$\x8CW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a$\xA0W`\0\x80\xFD[\x81Q` a$\xB0a\x1D\xCB\x83a\x1DrV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a$\xCFW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a$\xF6W\x85Qa$\xE7\x81a\x1D\x95V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a$\xD4V[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a%\x0FW`\0\x80\xFD[Pa%\x1C\x86\x82\x87\x01a#\x9AV[\x92PPa%+`@\x85\x01a$UV[\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%tWa%ta%JV[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%\xC9W\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a%\xABV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a%\xEAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\0W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a&\x11W`\0\x80\xFD[\x80Qa&\x1Fa\x1D\xCB\x82a\x1DrV[\x81\x81R`\x05\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&\\W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a&CV[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&\x81Wa&\x81a%JV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a&\x99Wa&\x99a%JV[P\x01\x90V[`\0\x82a&\xBBWcNH{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&\xE2Wa&\xE2a%JV[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a&\xFBWa&\xFBa%JV[PP\x01\x90V[`\0\x82\x82\x10\x15a'\x13Wa'\x13a%JV[P\x03\x90V[`\0\x81a''Wa''a%JV[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'\x8D`@\x83\x01\x85a\x1F\xF2V[\x82\x81\x03` \x84\x01Ra'\x9F\x81\x85a\x1F\xF2V[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a'\xC6Wa'\xC6a%JV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a'\xE1Wa'\xE1a%JV[PP\x03\x90V[`\0\x81Q\x80\x84Ra'\xFF\x81` \x86\x01` \x86\x01a#nV[`\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(=`\xA0\x84\x01\x82a'\xE7V[\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\x1ER`@\x83\x01\x84a'\xE7V[`\0\x82Qa(\x9F\x81\x84` \x87\x01a#nV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a(\xBBW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xB0W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x1B\x12\xCC\xB8M\xC13\xA9\xF9\x10\xD4y\xD0\xB0v)=\x02,'8`\x84\x14f\x94\x19<\xF4\x1F`\x9BdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\x0B\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cw\x8EU\xF3\x14a\0;W\x80c\x90\x04\x13G\x14a\0eW[`\0\x80\xFD[a\0Ra\0I6`\x04a\x011V[a\x03\xE8\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0xa\0s6`\x04a\x01zV[a\0\x85V[`@Qa\0\\\x91\x90a\x02RV[```\0\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xA3Wa\0\xA3a\x01dV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\0\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x01\rWa\x03\xE8\x82\x82\x81Q\x81\x10a\0\xF0Wa\0\xF0a\x02\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x01\x05\x81a\x02\xACV[\x91PPa\0\xD2V[P\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01,W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01DW`\0\x80\xFD[a\x01M\x83a\x01\x15V[\x91Pa\x01[` \x84\x01a\x01\x15V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x01\x8DW`\0\x80\xFD[a\x01\x96\x83a\x01\x15V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xB4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x01\xC8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\xDAWa\x01\xDAa\x01dV[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x01\xFFWa\x01\xFFa\x01dV[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x89\x83\x11\x15a\x02\x1DW`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x02BWa\x023\x85a\x01\x15V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\"V[\x80\x96PPPPPPP\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\x8AW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02nV[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x02\xCEWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x04F\t\x96\x8EB\t\xAFWU\x8Ft\xBD\xE9\rV\x90\xCCh\xA4\xD9{\xF9\xDC_pR\t\xC7\x0B\r\x90dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02)\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x99&\xEE}\x14a\0;W\x80c\xA3d\xF4\xDA\x14a\0OW[`\0\x80\xFD[a\0Ma\0I6`\x04a\0\xECV[PPV[\0[a\0Ma\0]6`\x04a\x01\xD1V[PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0wW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\0\xB5Wa\0\xB5a\0|V[`@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\0\xE4Wa\0\xE4a\0|V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xFFW`\0\x80\xFD[a\x01\x08\x83a\0`V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01&W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x01:W`\0\x80\xFD[a\x01Ba\0\x92V[\x825\x82\x81\x11\x15a\x01QW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x01bW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x01tWa\x01ta\0|V[a\x01\x86`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\0\xBBV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x01\x9CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xE3W`\0\x80\xFD[a\x01\xEC\x82a\0`V[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 iC\xCD\xF3\xFA\x945\ry\x17\xA1,-KJ\x05\x06_\xFDwW\x9CR\x91\x93}F\x93L\xA9\xFA\xBDdsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 \x10\xE4\x9F\xAE\x1B\x83Y\xC5\x0B\xF0\x9F\xBC\xB6@=\x93\xE0~\xCB\xF4\xBB\xDA}K\xA6`\x02?\xEA\xA9x\x06dsolcC\0\x08\x0C\x003", + ); + /**```solidity + struct Quorum { StrategyParams[] strategies; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Quorum { + pub strategies: + alloy::sol_types::private::Vec<::RustType>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InsufficientSignedStake {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InsufficientWeight {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidLength {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidQuorum {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `InvalidSignature()` and selector `0x8baa579f`. + ```solidity + error InvalidSignature(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidSignature {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidSignedWeight {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidThreshold {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MustUpdateAllOperators {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NotSorted {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorAlreadyRegistered {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorNotRegistered {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `ThresholdWeightUpdated(uint256)` and selector `0x9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b`. + ```solidity + event ThresholdWeightUpdated(uint256 _thresholdWeight); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mockDelegationManager()` and selector `0xb52d472a`. + ```solidity + function mockDelegationManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockDelegationManagerCall {} + ///Container type for the return parameters of the [`mockDelegationManager()`](mockDelegationManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockDelegationManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockDelegationManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockDelegationManagerCall { + 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: mockDelegationManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockDelegationManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockDelegationManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockDelegationManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockDelegationManager()"; + const SELECTOR: [u8; 4] = [181u8, 45u8, 71u8, 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 `mockServiceManager()` and selector `0x86777e06`. + ```solidity + function mockServiceManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockServiceManagerCall {} + ///Container type for the return parameters of the [`mockServiceManager()`](mockServiceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mockServiceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockServiceManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockServiceManagerCall { + 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: mockServiceManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockServiceManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockServiceManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockServiceManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockServiceManager()"; + const SELECTOR: [u8; 4] = [134u8, 119u8, 126u8, 6u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `test_FixedStakeUpdates()` and selector `0x707a9241`. + ```solidity + function test_FixedStakeUpdates() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct test_FixedStakeUpdatesCall {} + ///Container type for the return parameters of the [`test_FixedStakeUpdates()`](test_FixedStakeUpdatesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct test_FixedStakeUpdatesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: test_FixedStakeUpdatesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for test_FixedStakeUpdatesCall { + 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: test_FixedStakeUpdatesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for test_FixedStakeUpdatesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for test_FixedStakeUpdatesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = test_FixedStakeUpdatesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "test_FixedStakeUpdates()"; + const SELECTOR: [u8; 4] = [112u8, 122u8, 146u8, 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) + } + } + }; + ///Container for all the [`EqualWeightECDSARegistry`](self) function calls. + pub enum EqualWeightECDSARegistryCalls { + IS_TEST(IS_TESTCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mockDelegationManager(mockDelegationManagerCall), + mockServiceManager(mockServiceManagerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + test_FixedStakeUpdates(test_FixedStakeUpdatesCall), + } + #[automatically_derived] + impl EqualWeightECDSARegistryCalls { + /// 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], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [112u8, 122u8, 146u8, 65u8], + [133u8, 34u8, 108u8, 129u8], + [134u8, 119u8, 126u8, 6u8], + [145u8, 106u8, 23u8, 198u8], + [181u8, 45u8, 71u8, 42u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EqualWeightECDSARegistryCalls { + const NAME: &'static str = "EqualWeightECDSARegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 15usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mockDelegationManager(_) => { + ::SELECTOR + } + Self::mockServiceManager(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::test_FixedStakeUpdates(_) => { + ::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(EqualWeightECDSARegistryCalls::setUp) + } + setUp + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn test_FixedStakeUpdates( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::test_FixedStakeUpdates) + } + test_FixedStakeUpdates + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn mockServiceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::mockServiceManager) + } + mockServiceManager + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::targetSelectors) + } + targetSelectors + }, + { + fn mockDelegationManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::mockDelegationManager) + } + mockDelegationManager + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(EqualWeightECDSARegistryCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(EqualWeightECDSARegistryCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mockDelegationManager(inner) => { + ::abi_encoded_size(inner) + } + Self::mockServiceManager(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::test_FixedStakeUpdates(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mockDelegationManager(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::mockServiceManager(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::test_FixedStakeUpdates(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`EqualWeightECDSARegistry`](self) custom errors. + pub enum EqualWeightECDSARegistryErrors { + InsufficientSignedStake(InsufficientSignedStake), + InsufficientWeight(InsufficientWeight), + InvalidLength(InvalidLength), + InvalidQuorum(InvalidQuorum), + InvalidSignature(InvalidSignature), + InvalidSignedWeight(InvalidSignedWeight), + InvalidThreshold(InvalidThreshold), + LengthMismatch(LengthMismatch), + MustUpdateAllOperators(MustUpdateAllOperators), + NotSorted(NotSorted), + OperatorAlreadyRegistered(OperatorAlreadyRegistered), + OperatorNotRegistered(OperatorNotRegistered), + } + #[automatically_derived] + impl EqualWeightECDSARegistryErrors { + /// 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], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EqualWeightECDSARegistryErrors { + const NAME: &'static str = "EqualWeightECDSARegistryErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InsufficientSignedStake(_) => { + ::SELECTOR + } + Self::InsufficientWeight(_) => { + ::SELECTOR + } + Self::InvalidLength(_) => ::SELECTOR, + Self::InvalidQuorum(_) => ::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< + EqualWeightECDSARegistryErrors, + >] = &[ + { + fn OperatorNotRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::OperatorNotRegistered) + } + OperatorNotRegistered + }, + { + fn MustUpdateAllOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::MustUpdateAllOperators) + } + MustUpdateAllOperators + }, + { + fn OperatorAlreadyRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::OperatorAlreadyRegistered) + } + OperatorAlreadyRegistered + }, + { + fn InvalidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::InvalidSignature) + } + InvalidSignature + }, + { + fn InvalidLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(EqualWeightECDSARegistryErrors::InvalidLength) + } + InvalidLength + }, + { + fn InvalidSignedWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::InvalidSignedWeight) + } + InvalidSignedWeight + }, + { + fn InsufficientWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::InsufficientWeight) + } + InsufficientWeight + }, + { + fn InvalidThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::InvalidThreshold) + } + InvalidThreshold + }, + { + fn NotSorted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(EqualWeightECDSARegistryErrors::NotSorted) + } + NotSorted + }, + { + fn InvalidQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(EqualWeightECDSARegistryErrors::InvalidQuorum) + } + InvalidQuorum + }, + { + fn InsufficientSignedStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::InsufficientSignedStake) + } + InsufficientSignedStake + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(EqualWeightECDSARegistryErrors::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::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::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 [`EqualWeightECDSARegistry`](self) events. + pub enum EqualWeightECDSARegistryEvents { + MinimumWeightUpdated(MinimumWeightUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorWeightUpdated(OperatorWeightUpdated), + QuorumUpdated(QuorumUpdated), + ThresholdWeightUpdated(ThresholdWeightUpdated), + TotalWeightUpdated(TotalWeightUpdated), + UpdateMinimumWeight(UpdateMinimumWeight), + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl EqualWeightECDSARegistryEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 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, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 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, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 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, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 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, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 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, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 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, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for EqualWeightECDSARegistryEvents { + const NAME: &'static str = "EqualWeightECDSARegistryEvents"; + const COUNT: usize = 30usize; + 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::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) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 EqualWeightECDSARegistryEvents { + 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::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) + } + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(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::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) + } + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EqualWeightECDSARegistry`](self) contract instance. + + See the [wrapper's documentation](`EqualWeightECDSARegistryInstance`) 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, + ) -> EqualWeightECDSARegistryInstance { + EqualWeightECDSARegistryInstance::::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>, + > { + EqualWeightECDSARegistryInstance::::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 { + EqualWeightECDSARegistryInstance::::deploy_builder(provider) + } + /**A [`EqualWeightECDSARegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EqualWeightECDSARegistry`](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 EqualWeightECDSARegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EqualWeightECDSARegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EqualWeightECDSARegistryInstance") + .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, + > EqualWeightECDSARegistryInstance + { + /**Creates a new wrapper around an on-chain [`EqualWeightECDSARegistry`](self) contract instance. + + See the [wrapper's documentation](`EqualWeightECDSARegistryInstance`) 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 EqualWeightECDSARegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EqualWeightECDSARegistryInstance { + EqualWeightECDSARegistryInstance { + 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, + > EqualWeightECDSARegistryInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mockDelegationManager`] function. + pub fn mockDelegationManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockDelegationManagerCall {}) + } + ///Creates a new call builder for the [`mockServiceManager`] function. + pub fn mockServiceManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockServiceManagerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`test_FixedStakeUpdates`] function. + pub fn test_FixedStakeUpdates( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&test_FixedStakeUpdatesCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EqualWeightECDSARegistryInstance + { + /// 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 [`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::() + } + ///Creates a new event filter for the [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/erc1967proxy.rs b/crates/utils/src/middleware/erc1967proxy.rs similarity index 96% rename from crates/utils/src/erc1967proxy.rs rename to crates/utils/src/middleware/erc1967proxy.rs index 25f4f111..55d87bd8 100644 --- a/crates/utils/src/erc1967proxy.rs +++ b/crates/utils/src/middleware/erc1967proxy.rs @@ -89,35 +89,45 @@ interface ERC1967Proxy { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ERC1967Proxy { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122001c74ec5e53ef0395112bb62e82fffecb5db4051bfbfb6465874c4e43e445eff64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564 + ///0x608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200357b31afce64ac21a9725f07ca186aec74ff8c167b1e8a31767db615c566ab064736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564 /// ``` #[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", + 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 \x03W\xB3\x1A\xFC\xE6J\xC2\x1A\x97%\xF0|\xA1\x86\xAE\xC7O\xF8\xC1g\xB1\xE8\xA3\x17g\xDBa\\Vj\xB0dsolcC\0\x08\x0C\x003Address: low-level delegate call failed", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122001c74ec5e53ef0395112bb62e82fffecb5db4051bfbfb6465874c4e43e445eff64736f6c634300080c0033 + ///0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200357b31afce64ac21a9725f07ca186aec74ff8c167b1e8a31767db615c566ab064736f6c634300080c0033 /// ``` #[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", + 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 \x03W\xB3\x1A\xFC\xE6J\xC2\x1A\x97%\xF0|\xA1\x86\xAE\xC7O\xF8\xC1g\xB1\xE8\xA3\x17g\xDBa\\Vj\xB0dsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct AdminChanged { #[allow(missing_docs)] @@ -125,7 +135,12 @@ pub mod ERC1967Proxy { #[allow(missing_docs)] pub newAdmin: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -216,13 +231,23 @@ pub mod ERC1967Proxy { ```solidity event BeaconUpgraded(address indexed beacon); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -306,13 +331,23 @@ pub mod ERC1967Proxy { ```solidity event Upgraded(address indexed implementation); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -398,7 +433,7 @@ pub mod ERC1967Proxy { ```solidity constructor(address _logic, bytes _data) payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _logic: alloy::sol_types::private::Address, diff --git a/crates/utils/src/middleware/erc1967upgrade.rs b/crates/utils/src/middleware/erc1967upgrade.rs new file mode 100644 index 00000000..1c93da48 --- /dev/null +++ b/crates/utils/src/middleware/erc1967upgrade.rs @@ -0,0 +1,696 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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/middleware/erc20.rs similarity index 96% rename from crates/utils/src/erc20.rs rename to crates/utils/src/middleware/erc20.rs index 660f7423..964dcfc9 100644 --- a/crates/utils/src/erc20.rs +++ b/crates/utils/src/middleware/erc20.rs @@ -313,35 +313,45 @@ interface ERC20 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ERC20 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60806040523480156200001157600080fd5b5060405162000b1938038062000b198339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220ef5f3cfd62b14695c68a154fecf5fb4a74e8449b179776f0e11447388983c76464736f6c634300080c0033 + ///0x60806040523480156200001157600080fd5b5060405162000b1938038062000b198339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220eee75a319b4b066c913ab39d77d9b8ed2494bb94cc6eadb9da0497831b6e224064736f6c634300080c0033 /// ``` #[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", + 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 \xEE\xE7Z1\x9BK\x06l\x91:\xB3\x9Dw\xD9\xB8\xED$\x94\xBB\x94\xCCn\xAD\xB9\xDA\x04\x97\x83\x1Bn\"@dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220ef5f3cfd62b14695c68a154fecf5fb4a74e8449b179776f0e11447388983c76464736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220eee75a319b4b066c913ab39d77d9b8ed2494bb94cc6eadb9da0497831b6e224064736f6c634300080c0033 /// ``` #[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", + 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 \xEE\xE7Z1\x9BK\x06l\x91:\xB3\x9Dw\xD9\xB8\xED$\x94\xBB\x94\xCCn\xAD\xB9\xDA\x04\x97\x83\x1Bn\"@dsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -351,7 +361,12 @@ pub mod ERC20 { #[allow(missing_docs)] pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -451,7 +466,12 @@ pub mod ERC20 { ```solidity event Transfer(address indexed from, address indexed to, uint256 value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -461,7 +481,12 @@ pub mod ERC20 { #[allow(missing_docs)] pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -561,7 +586,7 @@ pub mod ERC20 { ```solidity constructor(string name_, string symbol_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub name_: alloy::sol_types::private::String, @@ -637,19 +662,24 @@ pub mod ERC20 { ```solidity function allowance(address owner, address spender) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -764,19 +794,24 @@ pub mod ERC20 { ```solidity function approve(address spender, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -891,18 +926,23 @@ pub mod ERC20 { ```solidity function balanceOf(address account) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1002,16 +1042,21 @@ pub mod ERC20 { ```solidity function decimals() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsCall {} ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsReturn { pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1107,19 +1152,24 @@ pub mod ERC20 { ```solidity function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decreaseAllowanceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1234,19 +1284,24 @@ pub mod ERC20 { ```solidity function increaseAllowance(address spender, uint256 addedValue) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct increaseAllowanceReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1361,16 +1416,21 @@ pub mod ERC20 { ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1466,16 +1526,21 @@ pub mod ERC20 { ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1571,16 +1636,21 @@ pub mod ERC20 { ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1676,19 +1746,24 @@ pub mod ERC20 { ```solidity function transfer(address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1803,7 +1878,7 @@ pub mod ERC20 { ```solidity function transferFrom(address from, address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { pub from: alloy::sol_types::private::Address, @@ -1811,12 +1886,17 @@ pub mod ERC20 { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/erc20burnable.rs b/crates/utils/src/middleware/erc20burnable.rs new file mode 100644 index 00000000..28670b8d --- /dev/null +++ b/crates/utils/src/middleware/erc20burnable.rs @@ -0,0 +1,2882 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ERC20Burnable { + 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 burn(uint256 amount) external; + function burnFrom(address account, uint256 amount) external; + 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": "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": "burn", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "burnFrom", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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::pub_underscore_fields, + clippy::style +)] +pub mod ERC20Burnable { + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `burn(uint256)` and selector `0x42966c68`. + ```solidity + function burn(uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct burnCall { + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`burn(uint256)`](burnCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct burnReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: burnCall) -> Self { + (value.amount,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for burnCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amount: 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: burnReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for burnReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for burnCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = burnReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "burn(uint256)"; + const SELECTOR: [u8; 4] = [66u8, 150u8, 108u8, 104u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> 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 `burnFrom(address,uint256)` and selector `0x79cc6790`. + ```solidity + function burnFrom(address account, uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct burnFromCall { + pub account: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`burnFrom(address,uint256)`](burnFromCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct burnFromReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: burnFromCall) -> Self { + (value.account, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for burnFromCall { + 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: burnFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for burnFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for burnFromCall { + 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 = burnFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "burnFrom(address,uint256)"; + const SELECTOR: [u8; 4] = [121u8, 204u8, 103u8, 144u8]; + #[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 `decimals()` and selector `0x313ce567`. + ```solidity + function decimals() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decreaseAllowanceReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct increaseAllowanceReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`ERC20Burnable`](self) function calls. + pub enum ERC20BurnableCalls { + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + burn(burnCall), + burnFrom(burnFromCall), + decimals(decimalsCall), + decreaseAllowance(decreaseAllowanceCall), + increaseAllowance(increaseAllowanceCall), + name(nameCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl ERC20BurnableCalls { + /// 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], + [66u8, 150u8, 108u8, 104u8], + [112u8, 160u8, 130u8, 49u8], + [121u8, 204u8, 103u8, 144u8], + [149u8, 216u8, 155u8, 65u8], + [164u8, 87u8, 194u8, 215u8], + [169u8, 5u8, 156u8, 187u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ERC20BurnableCalls { + const NAME: &'static str = "ERC20BurnableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowance(_) => ::SELECTOR, + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::burn(_) => ::SELECTOR, + Self::burnFrom(_) => ::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(ERC20BurnableCalls::name) + } + name + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20BurnableCalls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20BurnableCalls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20BurnableCalls::transferFrom) + } + transferFrom + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20BurnableCalls::decimals) + } + decimals + }, + { + fn increaseAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20BurnableCalls::increaseAllowance) + } + increaseAllowance + }, + { + fn burn( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20BurnableCalls::burn) + } + burn + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20BurnableCalls::balanceOf) + } + balanceOf + }, + { + fn burnFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20BurnableCalls::burnFrom) + } + burnFrom + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20BurnableCalls::symbol) + } + symbol + }, + { + fn decreaseAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20BurnableCalls::decreaseAllowance) + } + decreaseAllowance + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20BurnableCalls::transfer) + } + transfer + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20BurnableCalls::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::burn(inner) => { + ::abi_encoded_size(inner) + } + Self::burnFrom(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::burn(inner) => { + ::abi_encode_raw(inner, out) + } + Self::burnFrom(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 [`ERC20Burnable`](self) events. + pub enum ERC20BurnableEvents { + Approval(Approval), + Transfer(Transfer), + } + #[automatically_derived] + impl ERC20BurnableEvents { + /// 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 ERC20BurnableEvents { + const NAME: &'static str = "ERC20BurnableEvents"; + 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 ERC20BurnableEvents { + 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 [`ERC20Burnable`](self) contract instance. + + See the [wrapper's documentation](`ERC20BurnableInstance`) 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, + ) -> ERC20BurnableInstance { + ERC20BurnableInstance::::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>> + { + ERC20BurnableInstance::::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 { + ERC20BurnableInstance::::deploy_builder(provider) + } + /**A [`ERC20Burnable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ERC20Burnable`](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 ERC20BurnableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ERC20BurnableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ERC20BurnableInstance") + .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, + > ERC20BurnableInstance + { + /**Creates a new wrapper around an on-chain [`ERC20Burnable`](self) contract instance. + + See the [wrapper's documentation](`ERC20BurnableInstance`) 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 ERC20BurnableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ERC20BurnableInstance { + ERC20BurnableInstance { + 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, + > ERC20BurnableInstance + { + /// 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 [`burn`] function. + pub fn burn( + &self, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&burnCall { amount }) + } + ///Creates a new call builder for the [`burnFrom`] function. + pub fn burnFrom( + &self, + account: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&burnFromCall { account, amount }) + } + ///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, + > ERC20BurnableInstance + { + /// 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/middleware/erc20presetfixedsupply.rs b/crates/utils/src/middleware/erc20presetfixedsupply.rs new file mode 100644 index 00000000..c6929a24 --- /dev/null +++ b/crates/utils/src/middleware/erc20presetfixedsupply.rs @@ -0,0 +1,3045 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ERC20PresetFixedSupply { + 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, uint256 initialSupply, address owner); + + 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 burn(uint256 amount) external; + function burnFrom(address account, uint256 amount) external; + 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" + }, + { + "name": "initialSupply", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "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": "burn", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "burnFrom", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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::pub_underscore_fields, + clippy::style +)] +pub mod ERC20PresetFixedSupply { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c0033 + /// ``` + #[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\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c0033 + /// ``` + #[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\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, uint256 initialSupply, address owner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub name: alloy::sol_types::private::String, + pub symbol: alloy::sol_types::private::String, + pub initialSupply: alloy::sol_types::private::primitives::aliases::U256, + pub owner: alloy::sol_types::private::Address, + } + 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, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::String, + 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: constructorCall) -> Self { + (value.name, value.symbol, value.initialSupply, value.owner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name: tuple.0, + symbol: tuple.1, + initialSupply: tuple.2, + owner: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + 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.name, + ), + ::tokenize( + &self.symbol, + ), + as alloy_sol_types::SolType>::tokenize( + &self.initialSupply, + ), + ::tokenize( + &self.owner, + ), + ) + } + } + }; + /**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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `burn(uint256)` and selector `0x42966c68`. + ```solidity + function burn(uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct burnCall { + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`burn(uint256)`](burnCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct burnReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: burnCall) -> Self { + (value.amount,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for burnCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amount: 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: burnReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for burnReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for burnCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = burnReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "burn(uint256)"; + const SELECTOR: [u8; 4] = [66u8, 150u8, 108u8, 104u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> 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 `burnFrom(address,uint256)` and selector `0x79cc6790`. + ```solidity + function burnFrom(address account, uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct burnFromCall { + pub account: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`burnFrom(address,uint256)`](burnFromCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct burnFromReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: burnFromCall) -> Self { + (value.account, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for burnFromCall { + 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: burnFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for burnFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for burnFromCall { + 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 = burnFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "burnFrom(address,uint256)"; + const SELECTOR: [u8; 4] = [121u8, 204u8, 103u8, 144u8]; + #[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 `decimals()` and selector `0x313ce567`. + ```solidity + function decimals() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decreaseAllowanceReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct increaseAllowanceReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`ERC20PresetFixedSupply`](self) function calls. + pub enum ERC20PresetFixedSupplyCalls { + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + burn(burnCall), + burnFrom(burnFromCall), + decimals(decimalsCall), + decreaseAllowance(decreaseAllowanceCall), + increaseAllowance(increaseAllowanceCall), + name(nameCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl ERC20PresetFixedSupplyCalls { + /// 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], + [66u8, 150u8, 108u8, 104u8], + [112u8, 160u8, 130u8, 49u8], + [121u8, 204u8, 103u8, 144u8], + [149u8, 216u8, 155u8, 65u8], + [164u8, 87u8, 194u8, 215u8], + [169u8, 5u8, 156u8, 187u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ERC20PresetFixedSupplyCalls { + const NAME: &'static str = "ERC20PresetFixedSupplyCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowance(_) => ::SELECTOR, + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::burn(_) => ::SELECTOR, + Self::burnFrom(_) => ::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(ERC20PresetFixedSupplyCalls::name) + } + name + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20PresetFixedSupplyCalls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20PresetFixedSupplyCalls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20PresetFixedSupplyCalls::transferFrom) + } + transferFrom + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20PresetFixedSupplyCalls::decimals) + } + decimals + }, + { + fn increaseAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20PresetFixedSupplyCalls::increaseAllowance) + } + increaseAllowance + }, + { + fn burn( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20PresetFixedSupplyCalls::burn) + } + burn + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20PresetFixedSupplyCalls::balanceOf) + } + balanceOf + }, + { + fn burnFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20PresetFixedSupplyCalls::burnFrom) + } + burnFrom + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20PresetFixedSupplyCalls::symbol) + } + symbol + }, + { + fn decreaseAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20PresetFixedSupplyCalls::decreaseAllowance) + } + decreaseAllowance + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20PresetFixedSupplyCalls::transfer) + } + transfer + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20PresetFixedSupplyCalls::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::burn(inner) => { + ::abi_encoded_size(inner) + } + Self::burnFrom(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::burn(inner) => { + ::abi_encode_raw(inner, out) + } + Self::burnFrom(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 [`ERC20PresetFixedSupply`](self) events. + pub enum ERC20PresetFixedSupplyEvents { + Approval(Approval), + Transfer(Transfer), + } + #[automatically_derived] + impl ERC20PresetFixedSupplyEvents { + /// 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 ERC20PresetFixedSupplyEvents { + const NAME: &'static str = "ERC20PresetFixedSupplyEvents"; + 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 ERC20PresetFixedSupplyEvents { + 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 [`ERC20PresetFixedSupply`](self) contract instance. + + See the [wrapper's documentation](`ERC20PresetFixedSupplyInstance`) 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, + ) -> ERC20PresetFixedSupplyInstance { + ERC20PresetFixedSupplyInstance::::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, + initialSupply: alloy::sol_types::private::primitives::aliases::U256, + owner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ERC20PresetFixedSupplyInstance::::deploy( + provider, + name, + symbol, + initialSupply, + owner, + ) + } + /**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, + initialSupply: alloy::sol_types::private::primitives::aliases::U256, + owner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + ERC20PresetFixedSupplyInstance::::deploy_builder( + provider, + name, + symbol, + initialSupply, + owner, + ) + } + /**A [`ERC20PresetFixedSupply`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ERC20PresetFixedSupply`](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 ERC20PresetFixedSupplyInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ERC20PresetFixedSupplyInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ERC20PresetFixedSupplyInstance") + .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, + > ERC20PresetFixedSupplyInstance + { + /**Creates a new wrapper around an on-chain [`ERC20PresetFixedSupply`](self) contract instance. + + See the [wrapper's documentation](`ERC20PresetFixedSupplyInstance`) 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, + initialSupply: alloy::sol_types::private::primitives::aliases::U256, + owner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, name, symbol, initialSupply, owner); + 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, + initialSupply: alloy::sol_types::private::primitives::aliases::U256, + owner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + name, + symbol, + initialSupply, + owner, + })[..], + ] + .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 ERC20PresetFixedSupplyInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ERC20PresetFixedSupplyInstance { + ERC20PresetFixedSupplyInstance { + 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, + > ERC20PresetFixedSupplyInstance + { + /// 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 [`burn`] function. + pub fn burn( + &self, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&burnCall { amount }) + } + ///Creates a new call builder for the [`burnFrom`] function. + pub fn burnFrom( + &self, + account: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&burnFromCall { account, amount }) + } + ///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, + > ERC20PresetFixedSupplyInstance + { + /// 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/middleware/ethposdepositmock.rs b/crates/utils/src/middleware/ethposdepositmock.rs new file mode 100644 index 00000000..2313628c --- /dev/null +++ b/crates/utils/src/middleware/ethposdepositmock.rs @@ -0,0 +1,1048 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ETHPOSDepositMock { + 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 pure returns (bytes memory); + function get_deposit_root() external pure 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": "pure" + }, + { + "type": "function", + "name": "get_deposit_root", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "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::pub_underscore_fields, + clippy::style +)] +pub mod ETHPOSDepositMock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033 + /// ``` + #[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\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033 + /// ``` + #[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\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003", + ); + /**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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 pure returns (bytes memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct get_deposit_countReturn { + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 pure returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct get_deposit_rootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 [`ETHPOSDepositMock`](self) function calls. + pub enum ETHPOSDepositMockCalls { + deposit(depositCall), + get_deposit_count(get_deposit_countCall), + get_deposit_root(get_deposit_rootCall), + } + #[automatically_derived] + impl ETHPOSDepositMockCalls { + /// 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 ETHPOSDepositMockCalls { + const NAME: &'static str = "ETHPOSDepositMockCalls"; + 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(ETHPOSDepositMockCalls::deposit) + } + deposit + }, + { + fn get_deposit_count( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ETHPOSDepositMockCalls::get_deposit_count) + } + get_deposit_count + }, + { + fn get_deposit_root( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ETHPOSDepositMockCalls::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 [`ETHPOSDepositMock`](self) events. + pub enum ETHPOSDepositMockEvents { + DepositEvent(DepositEvent), + } + #[automatically_derived] + impl ETHPOSDepositMockEvents { + /// 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 ETHPOSDepositMockEvents { + const NAME: &'static str = "ETHPOSDepositMockEvents"; + 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 ETHPOSDepositMockEvents { + 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 [`ETHPOSDepositMock`](self) contract instance. + + See the [wrapper's documentation](`ETHPOSDepositMockInstance`) 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, + ) -> ETHPOSDepositMockInstance { + ETHPOSDepositMockInstance::::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>> + { + ETHPOSDepositMockInstance::::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 { + ETHPOSDepositMockInstance::::deploy_builder(provider) + } + /**A [`ETHPOSDepositMock`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ETHPOSDepositMock`](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 ETHPOSDepositMockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ETHPOSDepositMockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ETHPOSDepositMockInstance") + .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, + > ETHPOSDepositMockInstance + { + /**Creates a new wrapper around an on-chain [`ETHPOSDepositMock`](self) contract instance. + + See the [wrapper's documentation](`ETHPOSDepositMockInstance`) 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 ETHPOSDepositMockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ETHPOSDepositMockInstance { + ETHPOSDepositMockInstance { + 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, + > ETHPOSDepositMockInstance + { + /// 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, + > ETHPOSDepositMockInstance + { + /// 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/middleware/g2operations.rs b/crates/utils/src/middleware/g2operations.rs new file mode 100644 index 00000000..b2514f06 --- /dev/null +++ b/crates/utils/src/middleware/g2operations.rs @@ -0,0 +1,6336 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface G2Operations { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "g2Point", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod G2Operations { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260078054600160ff199182168117909255600b8054909116909117905534801561002d57600080fd5b506113ff8061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806385226c811161007157806385226c8114610131578063916a17c614610146578063b5508aa91461014e578063ba414fa614610156578063e20c9f711461016e578063fa7626d41461017657600080fd5b8063131e2f18146100b95780631ed7831c146100e25780632ade3880146100f75780633e5e3c231461010c5780633f7286f41461011457806366d9a9a01461011c575b600080fd5b6100cc6100c7366004610ea6565b610183565b6040516100d99190610ee8565b60405180910390f35b6100ea610600565b6040516100d99190610f14565b6100ff610662565b6040516100d99190610f8d565b6100ea6107a4565b6100ea610804565b610124610864565b6040516100d99190611068565b61013961094a565b6040516100d9919061111b565b610124610a1a565b610139610b00565b61015e610bd0565b60405190151581526020016100d9565b6100ea610cfd565b60075461015e9060ff1681565b61018b610e63565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816101a357905050905060405180604001604052806002815260200161676f60f01b815250816000815181106101e8576101e861119e565b602002602001018190525060405180604001604052806003815260200162393ab760e91b815250816001815181106102225761022261119e565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b8152508160028151811061026d5761026d61119e565b602002602001018190525061028183610d5d565b816003815181106102945761029461119e565b6020026020010181905250604051806040016040528060018152602001603160f81b815250816004815181106102cc576102cc61119e565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679061031190859060040161111b565b6000604051808303816000875af1158015610330573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261035891908101906111b4565b90508080602001905181019061036e9190611261565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106103a8576103a861119e565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906103ea90859060040161111b565b6000604051808303816000875af1158015610409573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261043191908101906111b4565b9050808060200190518101906104479190611261565b8351526040805180820190915260018152603360f81b60208201528251839060049081106104775761047761119e565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906104b990859060040161111b565b6000604051808303816000875af11580156104d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261050091908101906111b4565b9050808060200190518101906105169190611261565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b815250826004815181106105535761055361119e565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679061059590859060040161111b565b6000604051808303816000875af11580156105b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105dc91908101906111b4565b9050808060200190518101906105f29190611261565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561065857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161063a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561079b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156107845783829060005260206000200180546106f79061127a565b80601f01602080910402602001604051908101604052809291908181526020018280546107239061127a565b80156107705780601f1061074557610100808354040283529160200191610770565b820191906000526020600020905b81548152906001019060200180831161075357829003601f168201915b5050505050815260200190600101906106d8565b505050508152505081526020019060010190610686565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610658576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161063a575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610658576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161063a575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561079b5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561093257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108f45790505b50505050508152505081526020019060010190610888565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561079b57838290600052602060002001805461098d9061127a565b80601f01602080910402602001604051908101604052809291908181526020018280546109b99061127a565b8015610a065780601f106109db57610100808354040283529160200191610a06565b820191906000526020600020905b8154815290600101906020018083116109e957829003601f168201915b50505050508152602001906001019061096e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561079b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ae857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610aaa5790505b50505050508152505081526020019060010190610a3e565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561079b578382906000526020600020018054610b439061127a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6f9061127a565b8015610bbc5780601f10610b9157610100808354040283529160200191610bbc565b820191906000526020600020905b815481529060010190602001808311610b9f57829003601f168201915b505050505081526020019060010190610b24565b600754600090610100900460ff1615610bf25750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cf85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610c80917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016112b5565b60408051601f1981840301815290829052610c9a916112e6565b6000604051808303816000865af19150503d8060008114610cd7576040519150601f19603f3d011682016040523d82523d6000602084013e610cdc565b606091505b5091505080806020019051810190610cf49190611302565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015610658576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161063a575050505050905090565b606081610d815750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610dab5780610d9581611341565b9150610da49050600a83611372565b9150610d85565b60008167ffffffffffffffff811115610dc657610dc6611188565b6040519080825280601f01601f191660200182016040528015610df0576020820181803683370190505b5090505b8415610e5b57610e05600183611386565b9150610e12600a8661139d565b610e1d9060306113b1565b60f81b818381518110610e3257610e3261119e565b60200101906001600160f81b031916908160001a905350610e54600a86611372565b9450610df4565b949350505050565b6040518060400160405280610e76610e88565b8152602001610e83610e88565b905290565b60405180604001604052806002906020820280368337509192915050565b600060208284031215610eb857600080fd5b5035919050565b8060005b6002811015610ee2578151845260209384019390910190600101610ec3565b50505050565b6000608082019050610efb828451610ebf565b6020830151610f0d6040840182610ebf565b5092915050565b6020808252825182820181905260009190848201906040850190845b81811015610f555783516001600160a01b031683529284019291840191600101610f30565b50909695505050505050565b60005b83811015610f7c578181015183820152602001610f64565b83811115610ee25750506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561105b57603f19888603018452815180516001600160a01b0316865286015160408787018190528151908701819052908701906060600582901b88018101919088019060005b8181101561104457898403605f1901835284518051808652611025818e88018f8501610f61565b958c0195601f01601f1916949094018b019350918a0191600101610ffe565b509197505050938601935090850190600101610fb4565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561110c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156110f75783516001600160e01b0319168252928b019260019290920191908b01906110cd565b50978a01979550505091870191600101611090565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561105b57878503603f1901845281518051808752611169818989018a8501610f61565b601f01601f191695909501860194509285019290850190600101611142565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156111c657600080fd5b815167ffffffffffffffff808211156111de57600080fd5b818401915084601f8301126111f257600080fd5b81518181111561120457611204611188565b604051601f8201601f19908116603f0116810190838211818310171561122c5761122c611188565b8160405282815287602084870101111561124557600080fd5b611256836020830160208801610f61565b979650505050505050565b60006020828403121561127357600080fd5b5051919050565b600181811c9082168061128e57607f821691505b602082108114156112af57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b03198316815281516000906112d8816004850160208701610f61565b919091016004019392505050565b600082516112f8818460208701610f61565b9190910192915050565b60006020828403121561131457600080fd5b8151801515811461132457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156113555761135561132b565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826113815761138161135c565b500490565b6000828210156113985761139861132b565b500390565b6000826113ac576113ac61135c565b500690565b600082198211156113c4576113c461132b565b50019056fea264697066735822122016b407432f7a48357dd58643db97f47a14a26e66cd00967d3847ec52615cda0764736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15a\0-W`\0\x80\xFD[Pa\x13\xFF\x80a\0=`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0qW\x80c\x85\"l\x81\x14a\x011W\x80c\x91j\x17\xC6\x14a\x01FW\x80c\xB5P\x8A\xA9\x14a\x01NW\x80c\xBAAO\xA6\x14a\x01VW\x80c\xE2\x0C\x9Fq\x14a\x01nW\x80c\xFAv&\xD4\x14a\x01vW`\0\x80\xFD[\x80c\x13\x1E/\x18\x14a\0\xB9W\x80c\x1E\xD7\x83\x1C\x14a\0\xE2W\x80c*\xDE8\x80\x14a\0\xF7W\x80c>^<#\x14a\x01\x0CW\x80c?r\x86\xF4\x14a\x01\x14W\x80cf\xD9\xA9\xA0\x14a\x01\x1CW[`\0\x80\xFD[a\0\xCCa\0\xC76`\x04a\x0E\xA6V[a\x01\x83V[`@Qa\0\xD9\x91\x90a\x0E\xE8V[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\x06\0V[`@Qa\0\xD9\x91\x90a\x0F\x14V[a\0\xFFa\x06bV[`@Qa\0\xD9\x91\x90a\x0F\x8DV[a\0\xEAa\x07\xA4V[a\0\xEAa\x08\x04V[a\x01$a\x08dV[`@Qa\0\xD9\x91\x90a\x10hV[a\x019a\tJV[`@Qa\0\xD9\x91\x90a\x11\x1BV[a\x01$a\n\x1AV[a\x019a\x0B\0V[a\x01^a\x0B\xD0V[`@Q\x90\x15\x15\x81R` \x01a\0\xD9V[a\0\xEAa\x0C\xFDV[`\x07Ta\x01^\x90`\xFF\x16\x81V[a\x01\x8Ba\x0EcV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x01\xA3W\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10a\x01\xE8Wa\x01\xE8a\x11\x9EV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10a\x02\"Wa\x02\"a\x11\x9EV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10a\x02mWa\x02ma\x11\x9EV[` \x02` \x01\x01\x81\x90RPa\x02\x81\x83a\r]V[\x81`\x03\x81Q\x81\x10a\x02\x94Wa\x02\x94a\x11\x9EV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10a\x02\xCCWa\x02\xCCa\x11\x9EV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x03\x11\x90\x85\x90`\x04\x01a\x11\x1BV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x030W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03X\x91\x90\x81\x01\x90a\x11\xB4V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x03n\x91\x90a\x12aV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10a\x03\xA8Wa\x03\xA8a\x11\x9EV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x03\xEA\x90\x85\x90`\x04\x01a\x11\x1BV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\tW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x041\x91\x90\x81\x01\x90a\x11\xB4V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x04G\x91\x90a\x12aV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10a\x04wWa\x04wa\x11\x9EV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x04\xB9\x90\x85\x90`\x04\x01a\x11\x1BV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x05\0\x91\x90\x81\x01\x90a\x11\xB4V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x05\x16\x91\x90a\x12aV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10a\x05SWa\x05Sa\x11\x9EV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x05\x95\x90\x85\x90`\x04\x01a\x11\x1BV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x05\xDC\x91\x90\x81\x01\x90a\x11\xB4V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x05\xF2\x91\x90a\x12aV[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06XW` \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\x06:W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x07\x84W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06\xF7\x90a\x12zV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07#\x90a\x12zV[\x80\x15a\x07pW\x80`\x1F\x10a\x07EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07pV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07SW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xD8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\x86V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06XW` \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\x06:WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06XW` \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\x06:WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\t2W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\xF4W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x88V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\t\x8D\x90a\x12zV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xB9\x90a\x12zV[\x80\x15a\n\x06W\x80`\x1F\x10a\t\xDBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\x06V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\xE9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\tnV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xE8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xAAW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n>V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0BC\x90a\x12zV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0Bo\x90a\x12zV[\x80\x15a\x0B\xBCW\x80`\x1F\x10a\x0B\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0B\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0B\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0B$V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x0B\xF2WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x0C\xF8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x0C\x80\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x12\xB5V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\x9A\x91a\x12\xE6V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xD7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0C\xDCV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0C\xF4\x91\x90a\x13\x02V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06XW` \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\x06:WPPPPP\x90P\x90V[``\x81a\r\x81WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a\r\xABW\x80a\r\x95\x81a\x13AV[\x91Pa\r\xA4\x90P`\n\x83a\x13rV[\x91Pa\r\x85V[`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xC6Wa\r\xC6a\x11\x88V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\r\xF0W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a\x0E[Wa\x0E\x05`\x01\x83a\x13\x86V[\x91Pa\x0E\x12`\n\x86a\x13\x9DV[a\x0E\x1D\x90`0a\x13\xB1V[`\xF8\x1B\x81\x83\x81Q\x81\x10a\x0E2Wa\x0E2a\x11\x9EV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa\x0ET`\n\x86a\x13rV[\x94Pa\r\xF4V[\x94\x93PPPPV[`@Q\x80`@\x01`@R\x80a\x0Eva\x0E\x88V[\x81R` \x01a\x0E\x83a\x0E\x88V[\x90R\x90V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0E\xB8W`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15a\x0E\xE2W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a\x0E\xC3V[PPPPV[`\0`\x80\x82\x01\x90Pa\x0E\xFB\x82\x84Qa\x0E\xBFV[` \x83\x01Qa\x0F\r`@\x84\x01\x82a\x0E\xBFV[P\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FUW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0F0V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x0F|W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0FdV[\x83\x81\x11\x15a\x0E\xE2WPP`\0\x91\x01RV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x10[W`?\x19\x88\x86\x03\x01\x84R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x86R\x86\x01Q`@\x87\x87\x01\x81\x90R\x81Q\x90\x87\x01\x81\x90R\x90\x87\x01\x90```\x05\x82\x90\x1B\x88\x01\x81\x01\x91\x90\x88\x01\x90`\0[\x81\x81\x10\x15a\x10DW\x89\x84\x03`_\x19\x01\x83R\x84Q\x80Q\x80\x86Ra\x10%\x81\x8E\x88\x01\x8F\x85\x01a\x0FaV[\x95\x8C\x01\x95`\x1F\x01`\x1F\x19\x16\x94\x90\x94\x01\x8B\x01\x93P\x91\x8A\x01\x91`\x01\x01a\x0F\xFEV[P\x91\x97PPP\x93\x86\x01\x93P\x90\x85\x01\x90`\x01\x01a\x0F\xB4V[P\x92\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x11\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x10\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x90V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x10[W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11i\x81\x89\x89\x01\x8A\x85\x01a\x0FaV[`\x1F\x01`\x1F\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x11BV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x11\xC6W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xDEW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x11\xF2W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x12\x04Wa\x12\x04a\x11\x88V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x12,Wa\x12,a\x11\x88V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x12EW`\0\x80\xFD[a\x12V\x83` \x83\x01` \x88\x01a\x0FaV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x12sW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x12\x8EW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x12\xAFWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x12\xD8\x81`\x04\x85\x01` \x87\x01a\x0FaV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x12\xF8\x81\x84` \x87\x01a\x0FaV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x13\x14W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13$W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x13UWa\x13Ua\x13+V[P`\x01\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a\x13\x81Wa\x13\x81a\x13\\V[P\x04\x90V[`\0\x82\x82\x10\x15a\x13\x98Wa\x13\x98a\x13+V[P\x03\x90V[`\0\x82a\x13\xACWa\x13\xACa\x13\\V[P\x06\x90V[`\0\x82\x19\x82\x11\x15a\x13\xC4Wa\x13\xC4a\x13+V[P\x01\x90V\xFE\xA2dipfsX\"\x12 \x16\xB4\x07C/zH5}\xD5\x86C\xDB\x97\xF4z\x14\xA2nf\xCD\0\x96}8G\xECRa\\\xDA\x07dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806385226c811161007157806385226c8114610131578063916a17c614610146578063b5508aa91461014e578063ba414fa614610156578063e20c9f711461016e578063fa7626d41461017657600080fd5b8063131e2f18146100b95780631ed7831c146100e25780632ade3880146100f75780633e5e3c231461010c5780633f7286f41461011457806366d9a9a01461011c575b600080fd5b6100cc6100c7366004610ea6565b610183565b6040516100d99190610ee8565b60405180910390f35b6100ea610600565b6040516100d99190610f14565b6100ff610662565b6040516100d99190610f8d565b6100ea6107a4565b6100ea610804565b610124610864565b6040516100d99190611068565b61013961094a565b6040516100d9919061111b565b610124610a1a565b610139610b00565b61015e610bd0565b60405190151581526020016100d9565b6100ea610cfd565b60075461015e9060ff1681565b61018b610e63565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816101a357905050905060405180604001604052806002815260200161676f60f01b815250816000815181106101e8576101e861119e565b602002602001018190525060405180604001604052806003815260200162393ab760e91b815250816001815181106102225761022261119e565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b8152508160028151811061026d5761026d61119e565b602002602001018190525061028183610d5d565b816003815181106102945761029461119e565b6020026020010181905250604051806040016040528060018152602001603160f81b815250816004815181106102cc576102cc61119e565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679061031190859060040161111b565b6000604051808303816000875af1158015610330573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261035891908101906111b4565b90508080602001905181019061036e9190611261565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106103a8576103a861119e565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906103ea90859060040161111b565b6000604051808303816000875af1158015610409573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261043191908101906111b4565b9050808060200190518101906104479190611261565b8351526040805180820190915260018152603360f81b60208201528251839060049081106104775761047761119e565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906104b990859060040161111b565b6000604051808303816000875af11580156104d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261050091908101906111b4565b9050808060200190518101906105169190611261565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b815250826004815181106105535761055361119e565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679061059590859060040161111b565b6000604051808303816000875af11580156105b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105dc91908101906111b4565b9050808060200190518101906105f29190611261565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561065857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161063a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561079b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156107845783829060005260206000200180546106f79061127a565b80601f01602080910402602001604051908101604052809291908181526020018280546107239061127a565b80156107705780601f1061074557610100808354040283529160200191610770565b820191906000526020600020905b81548152906001019060200180831161075357829003601f168201915b5050505050815260200190600101906106d8565b505050508152505081526020019060010190610686565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610658576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161063a575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610658576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161063a575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561079b5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561093257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108f45790505b50505050508152505081526020019060010190610888565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561079b57838290600052602060002001805461098d9061127a565b80601f01602080910402602001604051908101604052809291908181526020018280546109b99061127a565b8015610a065780601f106109db57610100808354040283529160200191610a06565b820191906000526020600020905b8154815290600101906020018083116109e957829003601f168201915b50505050508152602001906001019061096e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561079b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ae857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610aaa5790505b50505050508152505081526020019060010190610a3e565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561079b578382906000526020600020018054610b439061127a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6f9061127a565b8015610bbc5780601f10610b9157610100808354040283529160200191610bbc565b820191906000526020600020905b815481529060010190602001808311610b9f57829003601f168201915b505050505081526020019060010190610b24565b600754600090610100900460ff1615610bf25750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cf85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610c80917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016112b5565b60408051601f1981840301815290829052610c9a916112e6565b6000604051808303816000865af19150503d8060008114610cd7576040519150601f19603f3d011682016040523d82523d6000602084013e610cdc565b606091505b5091505080806020019051810190610cf49190611302565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015610658576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161063a575050505050905090565b606081610d815750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610dab5780610d9581611341565b9150610da49050600a83611372565b9150610d85565b60008167ffffffffffffffff811115610dc657610dc6611188565b6040519080825280601f01601f191660200182016040528015610df0576020820181803683370190505b5090505b8415610e5b57610e05600183611386565b9150610e12600a8661139d565b610e1d9060306113b1565b60f81b818381518110610e3257610e3261119e565b60200101906001600160f81b031916908160001a905350610e54600a86611372565b9450610df4565b949350505050565b6040518060400160405280610e76610e88565b8152602001610e83610e88565b905290565b60405180604001604052806002906020820280368337509192915050565b600060208284031215610eb857600080fd5b5035919050565b8060005b6002811015610ee2578151845260209384019390910190600101610ec3565b50505050565b6000608082019050610efb828451610ebf565b6020830151610f0d6040840182610ebf565b5092915050565b6020808252825182820181905260009190848201906040850190845b81811015610f555783516001600160a01b031683529284019291840191600101610f30565b50909695505050505050565b60005b83811015610f7c578181015183820152602001610f64565b83811115610ee25750506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561105b57603f19888603018452815180516001600160a01b0316865286015160408787018190528151908701819052908701906060600582901b88018101919088019060005b8181101561104457898403605f1901835284518051808652611025818e88018f8501610f61565b958c0195601f01601f1916949094018b019350918a0191600101610ffe565b509197505050938601935090850190600101610fb4565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561110c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156110f75783516001600160e01b0319168252928b019260019290920191908b01906110cd565b50978a01979550505091870191600101611090565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561105b57878503603f1901845281518051808752611169818989018a8501610f61565b601f01601f191695909501860194509285019290850190600101611142565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156111c657600080fd5b815167ffffffffffffffff808211156111de57600080fd5b818401915084601f8301126111f257600080fd5b81518181111561120457611204611188565b604051601f8201601f19908116603f0116810190838211818310171561122c5761122c611188565b8160405282815287602084870101111561124557600080fd5b611256836020830160208801610f61565b979650505050505050565b60006020828403121561127357600080fd5b5051919050565b600181811c9082168061128e57607f821691505b602082108114156112af57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b03198316815281516000906112d8816004850160208701610f61565b919091016004019392505050565b600082516112f8818460208701610f61565b9190910192915050565b60006020828403121561131457600080fd5b8151801515811461132457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156113555761135561132b565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826113815761138161135c565b500490565b6000828210156113985761139861132b565b500390565b6000826113ac576113ac61135c565b500690565b600082198211156113c4576113c461132b565b50019056fea264697066735822122016b407432f7a48357dd58643db97f47a14a26e66cd00967d3847ec52615cda0764736f6c634300080c0033 + /// ``` + #[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\xB4W`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0qW\x80c\x85\"l\x81\x14a\x011W\x80c\x91j\x17\xC6\x14a\x01FW\x80c\xB5P\x8A\xA9\x14a\x01NW\x80c\xBAAO\xA6\x14a\x01VW\x80c\xE2\x0C\x9Fq\x14a\x01nW\x80c\xFAv&\xD4\x14a\x01vW`\0\x80\xFD[\x80c\x13\x1E/\x18\x14a\0\xB9W\x80c\x1E\xD7\x83\x1C\x14a\0\xE2W\x80c*\xDE8\x80\x14a\0\xF7W\x80c>^<#\x14a\x01\x0CW\x80c?r\x86\xF4\x14a\x01\x14W\x80cf\xD9\xA9\xA0\x14a\x01\x1CW[`\0\x80\xFD[a\0\xCCa\0\xC76`\x04a\x0E\xA6V[a\x01\x83V[`@Qa\0\xD9\x91\x90a\x0E\xE8V[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\x06\0V[`@Qa\0\xD9\x91\x90a\x0F\x14V[a\0\xFFa\x06bV[`@Qa\0\xD9\x91\x90a\x0F\x8DV[a\0\xEAa\x07\xA4V[a\0\xEAa\x08\x04V[a\x01$a\x08dV[`@Qa\0\xD9\x91\x90a\x10hV[a\x019a\tJV[`@Qa\0\xD9\x91\x90a\x11\x1BV[a\x01$a\n\x1AV[a\x019a\x0B\0V[a\x01^a\x0B\xD0V[`@Q\x90\x15\x15\x81R` \x01a\0\xD9V[a\0\xEAa\x0C\xFDV[`\x07Ta\x01^\x90`\xFF\x16\x81V[a\x01\x8Ba\x0EcV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x01\xA3W\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10a\x01\xE8Wa\x01\xE8a\x11\x9EV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10a\x02\"Wa\x02\"a\x11\x9EV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10a\x02mWa\x02ma\x11\x9EV[` \x02` \x01\x01\x81\x90RPa\x02\x81\x83a\r]V[\x81`\x03\x81Q\x81\x10a\x02\x94Wa\x02\x94a\x11\x9EV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10a\x02\xCCWa\x02\xCCa\x11\x9EV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x03\x11\x90\x85\x90`\x04\x01a\x11\x1BV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x030W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03X\x91\x90\x81\x01\x90a\x11\xB4V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x03n\x91\x90a\x12aV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10a\x03\xA8Wa\x03\xA8a\x11\x9EV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x03\xEA\x90\x85\x90`\x04\x01a\x11\x1BV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\tW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x041\x91\x90\x81\x01\x90a\x11\xB4V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x04G\x91\x90a\x12aV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10a\x04wWa\x04wa\x11\x9EV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x04\xB9\x90\x85\x90`\x04\x01a\x11\x1BV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x05\0\x91\x90\x81\x01\x90a\x11\xB4V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x05\x16\x91\x90a\x12aV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10a\x05SWa\x05Sa\x11\x9EV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x05\x95\x90\x85\x90`\x04\x01a\x11\x1BV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x05\xDC\x91\x90\x81\x01\x90a\x11\xB4V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x05\xF2\x91\x90a\x12aV[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06XW` \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\x06:W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x07\x84W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06\xF7\x90a\x12zV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07#\x90a\x12zV[\x80\x15a\x07pW\x80`\x1F\x10a\x07EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07pV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07SW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xD8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\x86V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06XW` \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\x06:WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06XW` \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\x06:WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\t2W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\xF4W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x88V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\t\x8D\x90a\x12zV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xB9\x90a\x12zV[\x80\x15a\n\x06W\x80`\x1F\x10a\t\xDBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\x06V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\xE9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\tnV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xE8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xAAW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n>V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0BC\x90a\x12zV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0Bo\x90a\x12zV[\x80\x15a\x0B\xBCW\x80`\x1F\x10a\x0B\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0B\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0B\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0B$V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x0B\xF2WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x0C\xF8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x0C\x80\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x12\xB5V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\x9A\x91a\x12\xE6V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xD7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0C\xDCV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0C\xF4\x91\x90a\x13\x02V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06XW` \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\x06:WPPPPP\x90P\x90V[``\x81a\r\x81WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a\r\xABW\x80a\r\x95\x81a\x13AV[\x91Pa\r\xA4\x90P`\n\x83a\x13rV[\x91Pa\r\x85V[`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xC6Wa\r\xC6a\x11\x88V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\r\xF0W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a\x0E[Wa\x0E\x05`\x01\x83a\x13\x86V[\x91Pa\x0E\x12`\n\x86a\x13\x9DV[a\x0E\x1D\x90`0a\x13\xB1V[`\xF8\x1B\x81\x83\x81Q\x81\x10a\x0E2Wa\x0E2a\x11\x9EV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa\x0ET`\n\x86a\x13rV[\x94Pa\r\xF4V[\x94\x93PPPPV[`@Q\x80`@\x01`@R\x80a\x0Eva\x0E\x88V[\x81R` \x01a\x0E\x83a\x0E\x88V[\x90R\x90V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0E\xB8W`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15a\x0E\xE2W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a\x0E\xC3V[PPPPV[`\0`\x80\x82\x01\x90Pa\x0E\xFB\x82\x84Qa\x0E\xBFV[` \x83\x01Qa\x0F\r`@\x84\x01\x82a\x0E\xBFV[P\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FUW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0F0V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x0F|W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0FdV[\x83\x81\x11\x15a\x0E\xE2WPP`\0\x91\x01RV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x10[W`?\x19\x88\x86\x03\x01\x84R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x86R\x86\x01Q`@\x87\x87\x01\x81\x90R\x81Q\x90\x87\x01\x81\x90R\x90\x87\x01\x90```\x05\x82\x90\x1B\x88\x01\x81\x01\x91\x90\x88\x01\x90`\0[\x81\x81\x10\x15a\x10DW\x89\x84\x03`_\x19\x01\x83R\x84Q\x80Q\x80\x86Ra\x10%\x81\x8E\x88\x01\x8F\x85\x01a\x0FaV[\x95\x8C\x01\x95`\x1F\x01`\x1F\x19\x16\x94\x90\x94\x01\x8B\x01\x93P\x91\x8A\x01\x91`\x01\x01a\x0F\xFEV[P\x91\x97PPP\x93\x86\x01\x93P\x90\x85\x01\x90`\x01\x01a\x0F\xB4V[P\x92\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x11\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x10\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x90V[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x10[W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11i\x81\x89\x89\x01\x8A\x85\x01a\x0FaV[`\x1F\x01`\x1F\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x11BV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x11\xC6W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xDEW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x11\xF2W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x12\x04Wa\x12\x04a\x11\x88V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x12,Wa\x12,a\x11\x88V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x12EW`\0\x80\xFD[a\x12V\x83` \x83\x01` \x88\x01a\x0FaV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x12sW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x12\x8EW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x12\xAFWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x12\xD8\x81`\x04\x85\x01` \x87\x01a\x0FaV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x12\xF8\x81\x84` \x87\x01a\x0FaV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x13\x14W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13$W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x13UWa\x13Ua\x13+V[P`\x01\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a\x13\x81Wa\x13\x81a\x13\\V[P\x04\x90V[`\0\x82\x82\x10\x15a\x13\x98Wa\x13\x98a\x13+V[P\x03\x90V[`\0\x82a\x13\xACWa\x13\xACa\x13\\V[P\x06\x90V[`\0\x82\x19\x82\x11\x15a\x13\xC4Wa\x13\xC4a\x13+V[P\x01\x90V\xFE\xA2dipfsX\"\x12 \x16\xB4\x07C/zH5}\xD5\x86C\xDB\x97\xF4z\x14\xA2nf\xCD\0\x96}8G\xECRa\\\xDA\x07dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mul(uint256)` and selector `0x131e2f18`. + ```solidity + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulCall { + pub x: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mul(uint256)`](mulCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulReturn { + pub g2Point: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: mulCall) -> Self { + (value.x,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { x: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: mulReturn) -> Self { + (value.g2Point,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { g2Point: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mulCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mulReturn; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mul(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 30u8, 47u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.x, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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) + } + } + }; + ///Container for all the [`G2Operations`](self) function calls. + pub enum G2OperationsCalls { + IS_TEST(IS_TESTCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mul(mulCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + } + #[automatically_derived] + impl G2OperationsCalls { + /// 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, 30u8, 47u8, 24u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for G2OperationsCalls { + const NAME: &'static str = "G2OperationsCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mul(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::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 mul( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(G2OperationsCalls::mul) + } + mul + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::targetSelectors) + } + targetSelectors + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(G2OperationsCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(G2OperationsCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(G2OperationsCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mul(inner) => ::abi_encoded_size(inner), + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mul(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`G2Operations`](self) events. + pub enum G2OperationsEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl G2OperationsEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for G2OperationsEvents { + const NAME: &'static str = "G2OperationsEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 G2OperationsEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`G2Operations`](self) contract instance. + + See the [wrapper's documentation](`G2OperationsInstance`) 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, + ) -> G2OperationsInstance { + G2OperationsInstance::::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>> + { + G2OperationsInstance::::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 { + G2OperationsInstance::::deploy_builder(provider) + } + /**A [`G2Operations`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`G2Operations`](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 G2OperationsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for G2OperationsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("G2OperationsInstance") + .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, + > G2OperationsInstance + { + /**Creates a new wrapper around an on-chain [`G2Operations`](self) contract instance. + + See the [wrapper's documentation](`G2OperationsInstance`) 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 G2OperationsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> G2OperationsInstance { + G2OperationsInstance { + 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, + > G2OperationsInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mul`] function. + pub fn mul( + &self, + x: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mulCall { x }) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > G2OperationsInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/greeter.rs b/crates/utils/src/middleware/greeter.rs new file mode 100644 index 00000000..371d851d --- /dev/null +++ b/crates/utils/src/middleware/greeter.rs @@ -0,0 +1,585 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Greeter { + function greeting() external view returns (string memory); + function initialize(string memory _greeting) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "greeting", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_greeting", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Greeter { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610339806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ef690cc01461003b578063f62d188814610059575b600080fd5b61004361006e565b60405161005091906101ac565b60405180910390f35b61006c610067366004610217565b6100fc565b005b6000805461007b906102c8565b80601f01602080910402602001604051908101604052809291908181526020018280546100a7906102c8565b80156100f45780601f106100c9576101008083540402835291602001916100f4565b820191906000526020600020905b8154815290600101906020018083116100d757829003601f168201915b505050505081565b805161010f906000906020840190610113565b5050565b82805461011f906102c8565b90600052602060002090601f0160209004810192826101415760008555610187565b82601f1061015a57805160ff1916838001178555610187565b82800160010185558215610187579182015b8281111561018757825182559160200191906001019061016c565b50610193929150610197565b5090565b5b808211156101935760008155600101610198565b600060208083528351808285015260005b818110156101d9578581018301518582016040015282016101bd565b818111156101eb576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561022957600080fd5b813567ffffffffffffffff8082111561024157600080fd5b818401915084601f83011261025557600080fd5b81358181111561026757610267610201565b604051601f8201601f19908116603f0116810190838211818310171561028f5761028f610201565b816040528281528760208487010111156102a857600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c908216806102dc57607f821691505b602082108114156102fd57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212209b8782a7e871bb1c49c0cc40ec1d0ecba1f3bd6acc1ff5f891cddac0559ef12464736f6c634300080c0033 + /// ``` + #[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\x039\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\xEFi\x0C\xC0\x14a\0;W\x80c\xF6-\x18\x88\x14a\0YW[`\0\x80\xFD[a\0Ca\0nV[`@Qa\0P\x91\x90a\x01\xACV[`@Q\x80\x91\x03\x90\xF3[a\0la\0g6`\x04a\x02\x17V[a\0\xFCV[\0[`\0\x80Ta\0{\x90a\x02\xC8V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\0\xA7\x90a\x02\xC8V[\x80\x15a\0\xF4W\x80`\x1F\x10a\0\xC9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\0\xF4V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\0\xD7W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x80Qa\x01\x0F\x90`\0\x90` \x84\x01\x90a\x01\x13V[PPV[\x82\x80Ta\x01\x1F\x90a\x02\xC8V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x01AW`\0\x85Ua\x01\x87V[\x82`\x1F\x10a\x01ZW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x01\x87V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x01\x87W\x91\x82\x01[\x82\x81\x11\x15a\x01\x87W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x01lV[Pa\x01\x93\x92\x91Pa\x01\x97V[P\x90V[[\x80\x82\x11\x15a\x01\x93W`\0\x81U`\x01\x01a\x01\x98V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xD9W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\xBDV[\x81\x81\x11\x15a\x01\xEBW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x02)W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02AW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x02UW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02gWa\x02ga\x02\x01V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02\x8FWa\x02\x8Fa\x02\x01V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x02\xA8W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x02\xDCW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x02\xFDWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV\xFE\xA2dipfsX\"\x12 \x9B\x87\x82\xA7\xE8q\xBB\x1CI\xC0\xCC@\xEC\x1D\x0E\xCB\xA1\xF3\xBDj\xCC\x1F\xF5\xF8\x91\xCD\xDA\xC0U\x9E\xF1$dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ef690cc01461003b578063f62d188814610059575b600080fd5b61004361006e565b60405161005091906101ac565b60405180910390f35b61006c610067366004610217565b6100fc565b005b6000805461007b906102c8565b80601f01602080910402602001604051908101604052809291908181526020018280546100a7906102c8565b80156100f45780601f106100c9576101008083540402835291602001916100f4565b820191906000526020600020905b8154815290600101906020018083116100d757829003601f168201915b505050505081565b805161010f906000906020840190610113565b5050565b82805461011f906102c8565b90600052602060002090601f0160209004810192826101415760008555610187565b82601f1061015a57805160ff1916838001178555610187565b82800160010185558215610187579182015b8281111561018757825182559160200191906001019061016c565b50610193929150610197565b5090565b5b808211156101935760008155600101610198565b600060208083528351808285015260005b818110156101d9578581018301518582016040015282016101bd565b818111156101eb576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561022957600080fd5b813567ffffffffffffffff8082111561024157600080fd5b818401915084601f83011261025557600080fd5b81358181111561026757610267610201565b604051601f8201601f19908116603f0116810190838211818310171561028f5761028f610201565b816040528281528760208487010111156102a857600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c908216806102dc57607f821691505b602082108114156102fd57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212209b8782a7e871bb1c49c0cc40ec1d0ecba1f3bd6acc1ff5f891cddac0559ef12464736f6c634300080c0033 + /// ``` + #[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\x006W`\x005`\xE0\x1C\x80c\xEFi\x0C\xC0\x14a\0;W\x80c\xF6-\x18\x88\x14a\0YW[`\0\x80\xFD[a\0Ca\0nV[`@Qa\0P\x91\x90a\x01\xACV[`@Q\x80\x91\x03\x90\xF3[a\0la\0g6`\x04a\x02\x17V[a\0\xFCV[\0[`\0\x80Ta\0{\x90a\x02\xC8V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\0\xA7\x90a\x02\xC8V[\x80\x15a\0\xF4W\x80`\x1F\x10a\0\xC9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\0\xF4V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\0\xD7W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x80Qa\x01\x0F\x90`\0\x90` \x84\x01\x90a\x01\x13V[PPV[\x82\x80Ta\x01\x1F\x90a\x02\xC8V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x01AW`\0\x85Ua\x01\x87V[\x82`\x1F\x10a\x01ZW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x01\x87V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x01\x87W\x91\x82\x01[\x82\x81\x11\x15a\x01\x87W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x01lV[Pa\x01\x93\x92\x91Pa\x01\x97V[P\x90V[[\x80\x82\x11\x15a\x01\x93W`\0\x81U`\x01\x01a\x01\x98V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xD9W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\xBDV[\x81\x81\x11\x15a\x01\xEBW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x02)W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02AW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x02UW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02gWa\x02ga\x02\x01V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02\x8FWa\x02\x8Fa\x02\x01V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x02\xA8W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x02\xDCW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x02\xFDWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV\xFE\xA2dipfsX\"\x12 \x9B\x87\x82\xA7\xE8q\xBB\x1CI\xC0\xCC@\xEC\x1D\x0E\xCB\xA1\xF3\xBDj\xCC\x1F\xF5\xF8\x91\xCD\xDA\xC0U\x9E\xF1$dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `greeting()` and selector `0xef690cc0`. + ```solidity + function greeting() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct greetingCall {} + ///Container type for the return parameters of the [`greeting()`](greetingCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct greetingReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: greetingCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for greetingCall { + 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: greetingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for greetingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for greetingCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = greetingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "greeting()"; + const SELECTOR: [u8; 4] = [239u8, 105u8, 12u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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)` and selector `0xf62d1888`. + ```solidity + function initialize(string memory _greeting) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + pub _greeting: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`initialize(string)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: initializeCall) -> Self { + (value._greeting,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _greeting: 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::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)"; + const SELECTOR: [u8; 4] = [246u8, 45u8, 24u8, 136u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._greeting, + ), + ) + } + #[inline] + fn 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 [`Greeter`](self) function calls. + pub enum GreeterCalls { + greeting(greetingCall), + initialize(initializeCall), + } + #[automatically_derived] + impl GreeterCalls { + /// 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]] = + &[[239u8, 105u8, 12u8, 192u8], [246u8, 45u8, 24u8, 136u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for GreeterCalls { + const NAME: &'static str = "GreeterCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::greeting(_) => ::SELECTOR, + Self::initialize(_) => ::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 greeting( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(GreeterCalls::greeting) + } + greeting + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(GreeterCalls::initialize) + } + initialize + }, + ]; + 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::greeting(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::greeting(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Greeter`](self) contract instance. + + See the [wrapper's documentation](`GreeterInstance`) 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, + ) -> GreeterInstance { + GreeterInstance::::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>> + { + GreeterInstance::::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 { + GreeterInstance::::deploy_builder(provider) + } + /**A [`Greeter`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Greeter`](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 GreeterInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for GreeterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("GreeterInstance") + .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, + > GreeterInstance + { + /**Creates a new wrapper around an on-chain [`Greeter`](self) contract instance. + + See the [wrapper's documentation](`GreeterInstance`) 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 GreeterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> GreeterInstance { + GreeterInstance { + 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, + > GreeterInstance + { + /// 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 [`greeting`] function. + pub fn greeting(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&greetingCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _greeting: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { _greeting }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > GreeterInstance + { + /// 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/middleware/greeterproxiable.rs b/crates/utils/src/middleware/greeterproxiable.rs new file mode 100644 index 00000000..1e346153 --- /dev/null +++ b/crates/utils/src/middleware/greeterproxiable.rs @@ -0,0 +1,1082 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface GreeterProxiable { + function UPGRADE_INTERFACE_VERSION() external view returns (string memory); + function greeting() external view returns (string memory); + function initialize(string memory _greeting) external; + function proxiableUUID() external view returns (bytes32); + function upgradeToAndCall(address newImplementation, bytes memory data) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "UPGRADE_INTERFACE_VERSION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "greeting", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_greeting", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod GreeterProxiable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506106c6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80634f1ef2861461005c57806352d1902d14610071578063ad3cb1cc146100a4578063ef690cc0146100d5578063f62d1888146100dd575b600080fd5b61006f61006a36600461047f565b6100f0565b005b6040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81526020015b60405180910390f35b6100c8604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161009b9190610510565b6100c86102f1565b61006f6100eb36600461057b565b61037f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561014a575060408051601f3d908101601f191682019092526101479181019061062c565b60015b61019b5760405162461bcd60e51b815260206004820152601e60248201527f74686520696d706c656d656e746174696f6e206973206e6f742055555053000060448201526064015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461020a5760405162461bcd60e51b815260206004820152601d60248201527f736c6f7420697320756e737570706f72746564206173206120757569640000006044820152606401610192565b610232847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b81156102e3576000846001600160a01b03168484604051610254929190610645565b600060405180830381855af49150503d806000811461028f576040519150601f19603f3d011682016040523d82523d6000602084013e610294565b606091505b50509050806102dd5760405162461bcd60e51b81526020600482015260156024820152741d5c19dc9859194818d85b1b081c995d995c9d1959605a1b6044820152606401610192565b506102eb565b6102eb610396565b50505050565b600080546102fe90610655565b80601f016020809104026020016040519081016040528092919081815260200182805461032a90610655565b80156103775780601f1061034c57610100808354040283529160200191610377565b820191906000526020600020905b81548152906001019060200180831161035a57829003601f168201915b505050505081565b80516103929060009060208401906103e6565b5050565b34156103e45760405162461bcd60e51b815260206004820152601860248201527f6e6f6e2d70617961626c6520757067726164652063616c6c00000000000000006044820152606401610192565b565b8280546103f290610655565b90600052602060002090601f016020900481019282610414576000855561045a565b82601f1061042d57805160ff191683800117855561045a565b8280016001018555821561045a579182015b8281111561045a57825182559160200191906001019061043f565b5061046692915061046a565b5090565b5b80821115610466576000815560010161046b565b60008060006040848603121561049457600080fd5b83356001600160a01b03811681146104ab57600080fd5b9250602084013567ffffffffffffffff808211156104c857600080fd5b818601915086601f8301126104dc57600080fd5b8135818111156104eb57600080fd5b8760208285010111156104fd57600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b8181101561053d57858101830151858201604001528201610521565b8181111561054f576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561058d57600080fd5b813567ffffffffffffffff808211156105a557600080fd5b818401915084601f8301126105b957600080fd5b8135818111156105cb576105cb610565565b604051601f8201601f19908116603f011681019083821181831017156105f3576105f3610565565b8160405282815287602084870101111561060c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561063e57600080fd5b5051919050565b8183823760009101908152919050565b600181811c9082168061066957607f821691505b6020821081141561068a57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212207e74ff918d7d915f84bf35f43338c5d2b8090c228e2791d26b020c0d28be6e2964736f6c634300080c0033 + /// ``` + #[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\x06\xC6\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cO\x1E\xF2\x86\x14a\0\\W\x80cR\xD1\x90-\x14a\0qW\x80c\xAD<\xB1\xCC\x14a\0\xA4W\x80c\xEFi\x0C\xC0\x14a\0\xD5W\x80c\xF6-\x18\x88\x14a\0\xDDW[`\0\x80\xFD[a\0oa\0j6`\x04a\x04\x7FV[a\0\xF0V[\0[`@Q\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC8`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\0\x9B\x91\x90a\x05\x10V[a\0\xC8a\x02\xF1V[a\0oa\0\xEB6`\x04a\x05{V[a\x03\x7FV[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x01JWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x01G\x91\x81\x01\x90a\x06,V[`\x01[a\x01\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fthe implementation is not UUPS\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a\x02\nW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fslot is unsupported as a uuid\0\0\0`D\x82\x01R`d\x01a\x01\x92V[a\x022\x84\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[\x81\x15a\x02\xE3W`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x02T\x92\x91\x90a\x06EV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x02\x8FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\x94V[``\x91P[PP\x90P\x80a\x02\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1D\\\x19\xDC\x98Y\x19H\x18\xD8[\x1B\x08\x1C\x99]\x99\\\x9D\x19Y`Z\x1B`D\x82\x01R`d\x01a\x01\x92V[Pa\x02\xEBV[a\x02\xEBa\x03\x96V[PPPPV[`\0\x80Ta\x02\xFE\x90a\x06UV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03*\x90a\x06UV[\x80\x15a\x03wW\x80`\x1F\x10a\x03LWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03wV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03ZW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x80Qa\x03\x92\x90`\0\x90` \x84\x01\x90a\x03\xE6V[PPV[4\x15a\x03\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fnon-payable upgrade call\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01\x92V[V[\x82\x80Ta\x03\xF2\x90a\x06UV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x04\x14W`\0\x85Ua\x04ZV[\x82`\x1F\x10a\x04-W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x04ZV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x04ZW\x91\x82\x01[\x82\x81\x11\x15a\x04ZW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x04?V[Pa\x04f\x92\x91Pa\x04jV[P\x90V[[\x80\x82\x11\x15a\x04fW`\0\x81U`\x01\x01a\x04kV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x04\x94W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\xABW`\0\x80\xFD[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xC8W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x04\xDCW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\xEBW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x04\xFDW`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x05=W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x05!V[\x81\x81\x11\x15a\x05OW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x05\x8DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\xA5W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x05\xB9W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x05\xCBWa\x05\xCBa\x05eV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x05\xF3Wa\x05\xF3a\x05eV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x06\x0CW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x06>W`\0\x80\xFD[PQ\x91\x90PV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x06iW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x06\x8AWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV\xFE\xA2dipfsX\"\x12 ~t\xFF\x91\x8D}\x91_\x84\xBF5\xF438\xC5\xD2\xB8\t\x0C\"\x8E'\x91\xD2k\x02\x0C\r(\xBEn)dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100575760003560e01c80634f1ef2861461005c57806352d1902d14610071578063ad3cb1cc146100a4578063ef690cc0146100d5578063f62d1888146100dd575b600080fd5b61006f61006a36600461047f565b6100f0565b005b6040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81526020015b60405180910390f35b6100c8604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161009b9190610510565b6100c86102f1565b61006f6100eb36600461057b565b61037f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561014a575060408051601f3d908101601f191682019092526101479181019061062c565b60015b61019b5760405162461bcd60e51b815260206004820152601e60248201527f74686520696d706c656d656e746174696f6e206973206e6f742055555053000060448201526064015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461020a5760405162461bcd60e51b815260206004820152601d60248201527f736c6f7420697320756e737570706f72746564206173206120757569640000006044820152606401610192565b610232847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b81156102e3576000846001600160a01b03168484604051610254929190610645565b600060405180830381855af49150503d806000811461028f576040519150601f19603f3d011682016040523d82523d6000602084013e610294565b606091505b50509050806102dd5760405162461bcd60e51b81526020600482015260156024820152741d5c19dc9859194818d85b1b081c995d995c9d1959605a1b6044820152606401610192565b506102eb565b6102eb610396565b50505050565b600080546102fe90610655565b80601f016020809104026020016040519081016040528092919081815260200182805461032a90610655565b80156103775780601f1061034c57610100808354040283529160200191610377565b820191906000526020600020905b81548152906001019060200180831161035a57829003601f168201915b505050505081565b80516103929060009060208401906103e6565b5050565b34156103e45760405162461bcd60e51b815260206004820152601860248201527f6e6f6e2d70617961626c6520757067726164652063616c6c00000000000000006044820152606401610192565b565b8280546103f290610655565b90600052602060002090601f016020900481019282610414576000855561045a565b82601f1061042d57805160ff191683800117855561045a565b8280016001018555821561045a579182015b8281111561045a57825182559160200191906001019061043f565b5061046692915061046a565b5090565b5b80821115610466576000815560010161046b565b60008060006040848603121561049457600080fd5b83356001600160a01b03811681146104ab57600080fd5b9250602084013567ffffffffffffffff808211156104c857600080fd5b818601915086601f8301126104dc57600080fd5b8135818111156104eb57600080fd5b8760208285010111156104fd57600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b8181101561053d57858101830151858201604001528201610521565b8181111561054f576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561058d57600080fd5b813567ffffffffffffffff808211156105a557600080fd5b818401915084601f8301126105b957600080fd5b8135818111156105cb576105cb610565565b604051601f8201601f19908116603f011681019083821181831017156105f3576105f3610565565b8160405282815287602084870101111561060c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561063e57600080fd5b5051919050565b8183823760009101908152919050565b600181811c9082168061066957607f821691505b6020821081141561068a57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212207e74ff918d7d915f84bf35f43338c5d2b8090c228e2791d26b020c0d28be6e2964736f6c634300080c0033 + /// ``` + #[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\0WW`\x005`\xE0\x1C\x80cO\x1E\xF2\x86\x14a\0\\W\x80cR\xD1\x90-\x14a\0qW\x80c\xAD<\xB1\xCC\x14a\0\xA4W\x80c\xEFi\x0C\xC0\x14a\0\xD5W\x80c\xF6-\x18\x88\x14a\0\xDDW[`\0\x80\xFD[a\0oa\0j6`\x04a\x04\x7FV[a\0\xF0V[\0[`@Q\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC8`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\0\x9B\x91\x90a\x05\x10V[a\0\xC8a\x02\xF1V[a\0oa\0\xEB6`\x04a\x05{V[a\x03\x7FV[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x01JWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x01G\x91\x81\x01\x90a\x06,V[`\x01[a\x01\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fthe implementation is not UUPS\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a\x02\nW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fslot is unsupported as a uuid\0\0\0`D\x82\x01R`d\x01a\x01\x92V[a\x022\x84\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[\x81\x15a\x02\xE3W`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x02T\x92\x91\x90a\x06EV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x02\x8FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\x94V[``\x91P[PP\x90P\x80a\x02\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1D\\\x19\xDC\x98Y\x19H\x18\xD8[\x1B\x08\x1C\x99]\x99\\\x9D\x19Y`Z\x1B`D\x82\x01R`d\x01a\x01\x92V[Pa\x02\xEBV[a\x02\xEBa\x03\x96V[PPPPV[`\0\x80Ta\x02\xFE\x90a\x06UV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03*\x90a\x06UV[\x80\x15a\x03wW\x80`\x1F\x10a\x03LWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03wV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03ZW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x80Qa\x03\x92\x90`\0\x90` \x84\x01\x90a\x03\xE6V[PPV[4\x15a\x03\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fnon-payable upgrade call\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01\x92V[V[\x82\x80Ta\x03\xF2\x90a\x06UV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x04\x14W`\0\x85Ua\x04ZV[\x82`\x1F\x10a\x04-W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x04ZV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x04ZW\x91\x82\x01[\x82\x81\x11\x15a\x04ZW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x04?V[Pa\x04f\x92\x91Pa\x04jV[P\x90V[[\x80\x82\x11\x15a\x04fW`\0\x81U`\x01\x01a\x04kV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x04\x94W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\xABW`\0\x80\xFD[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xC8W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x04\xDCW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\xEBW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x04\xFDW`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x05=W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x05!V[\x81\x81\x11\x15a\x05OW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x05\x8DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\xA5W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x05\xB9W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x05\xCBWa\x05\xCBa\x05eV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x05\xF3Wa\x05\xF3a\x05eV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x06\x0CW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x06>W`\0\x80\xFD[PQ\x91\x90PV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x06iW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x06\x8AWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV\xFE\xA2dipfsX\"\x12 ~t\xFF\x91\x8D}\x91_\x84\xBF5\xF438\xC5\xD2\xB8\t\x0C\"\x8E'\x91\xD2k\x02\x0C\r(\xBEn)dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`. + ```solidity + function UPGRADE_INTERFACE_VERSION() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct UPGRADE_INTERFACE_VERSIONCall {} + ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct UPGRADE_INTERFACE_VERSIONReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for UPGRADE_INTERFACE_VERSIONCall { + 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: UPGRADE_INTERFACE_VERSIONReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for UPGRADE_INTERFACE_VERSIONReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = UPGRADE_INTERFACE_VERSIONReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()"; + const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `greeting()` and selector `0xef690cc0`. + ```solidity + function greeting() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct greetingCall {} + ///Container type for the return parameters of the [`greeting()`](greetingCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct greetingReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: greetingCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for greetingCall { + 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: greetingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for greetingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for greetingCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = greetingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "greeting()"; + const SELECTOR: [u8; 4] = [239u8, 105u8, 12u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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)` and selector `0xf62d1888`. + ```solidity + function initialize(string memory _greeting) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + pub _greeting: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`initialize(string)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: initializeCall) -> Self { + (value._greeting,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _greeting: 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::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)"; + const SELECTOR: [u8; 4] = [246u8, 45u8, 24u8, 136u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._greeting, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `proxiableUUID()` and selector `0x52d1902d`. + ```solidity + function proxiableUUID() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxiableUUIDCall {} + ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxiableUUIDReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`. + ```solidity + function upgradeToAndCall(address newImplementation, bytes memory data) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct upgradeToAndCallReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`GreeterProxiable`](self) function calls. + pub enum GreeterProxiableCalls { + UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall), + greeting(greetingCall), + initialize(initializeCall), + proxiableUUID(proxiableUUIDCall), + upgradeToAndCall(upgradeToAndCallCall), + } + #[automatically_derived] + impl GreeterProxiableCalls { + /// 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]] = &[ + [79u8, 30u8, 242u8, 134u8], + [82u8, 209u8, 144u8, 45u8], + [173u8, 60u8, 177u8, 204u8], + [239u8, 105u8, 12u8, 192u8], + [246u8, 45u8, 24u8, 136u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for GreeterProxiableCalls { + const NAME: &'static str = "GreeterProxiableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 5usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::UPGRADE_INTERFACE_VERSION(_) => { + ::SELECTOR + } + Self::greeting(_) => ::SELECTOR, + Self::initialize(_) => ::SELECTOR, + Self::proxiableUUID(_) => ::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] = &[ + { + fn upgradeToAndCall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(GreeterProxiableCalls::upgradeToAndCall) + } + upgradeToAndCall + }, + { + fn proxiableUUID( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(GreeterProxiableCalls::proxiableUUID) + } + proxiableUUID + }, + { + fn UPGRADE_INTERFACE_VERSION( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(GreeterProxiableCalls::UPGRADE_INTERFACE_VERSION) + } + UPGRADE_INTERFACE_VERSION + }, + { + fn greeting( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(GreeterProxiableCalls::greeting) + } + greeting + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(GreeterProxiableCalls::initialize) + } + initialize + }, + ]; + 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::UPGRADE_INTERFACE_VERSION(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::greeting(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::proxiableUUID(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::UPGRADE_INTERFACE_VERSION(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::greeting(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + Self::proxiableUUID(inner) => { + ::abi_encode_raw(inner, out) + } + Self::upgradeToAndCall(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`GreeterProxiable`](self) contract instance. + + See the [wrapper's documentation](`GreeterProxiableInstance`) 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, + ) -> GreeterProxiableInstance { + GreeterProxiableInstance::::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>> + { + GreeterProxiableInstance::::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 { + GreeterProxiableInstance::::deploy_builder(provider) + } + /**A [`GreeterProxiable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`GreeterProxiable`](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 GreeterProxiableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for GreeterProxiableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("GreeterProxiableInstance") + .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, + > GreeterProxiableInstance + { + /**Creates a new wrapper around an on-chain [`GreeterProxiable`](self) contract instance. + + See the [wrapper's documentation](`GreeterProxiableInstance`) 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 GreeterProxiableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> GreeterProxiableInstance { + GreeterProxiableInstance { + 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, + > GreeterProxiableInstance + { + /// 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 [`UPGRADE_INTERFACE_VERSION`] function. + pub fn UPGRADE_INTERFACE_VERSION( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {}) + } + ///Creates a new call builder for the [`greeting`] function. + pub fn greeting(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&greetingCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _greeting: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { _greeting }) + } + ///Creates a new call builder for the [`proxiableUUID`] function. + pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&proxiableUUIDCall {}) + } + ///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, + > GreeterProxiableInstance + { + /// 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/middleware/greeterv2.rs b/crates/utils/src/middleware/greeterv2.rs new file mode 100644 index 00000000..497c7ae8 --- /dev/null +++ b/crates/utils/src/middleware/greeterv2.rs @@ -0,0 +1,728 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface GreeterV2 { + function greeting() external view returns (string memory); + function initialize(string memory _greeting) external; + function resetGreeting() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "greeting", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_greeting", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resetGreeting", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod GreeterV2 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061037e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634cbf9e3114610046578063ef690cc014610050578063f62d18881461006e575b600080fd5b61004e610081565b005b6100586100b3565b60405161006591906101f1565b60405180910390f35b61004e61007c36600461025c565b610141565b604080518082019091526008808252671c995cd95d1d195960c21b60209092019182526100b091600091610158565b50565b600080546100c09061030d565b80601f01602080910402602001604051908101604052809291908181526020018280546100ec9061030d565b80156101395780601f1061010e57610100808354040283529160200191610139565b820191906000526020600020905b81548152906001019060200180831161011c57829003601f168201915b505050505081565b8051610154906000906020840190610158565b5050565b8280546101649061030d565b90600052602060002090601f01602090048101928261018657600085556101cc565b82601f1061019f57805160ff19168380011785556101cc565b828001600101855582156101cc579182015b828111156101cc5782518255916020019190600101906101b1565b506101d89291506101dc565b5090565b5b808211156101d857600081556001016101dd565b600060208083528351808285015260005b8181101561021e57858101830151858201604001528201610202565b81811115610230576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561026e57600080fd5b813567ffffffffffffffff8082111561028657600080fd5b818401915084601f83011261029a57600080fd5b8135818111156102ac576102ac610246565b604051601f8201601f19908116603f011681019083821181831017156102d4576102d4610246565b816040528281528760208487010111156102ed57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c9082168061032157607f821691505b6020821081141561034257634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220bdea07166027c2c04033daed52373f66e03e98e5c5fa12614f908c02b996b08964736f6c634300080c0033 + /// ``` + #[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\x03~\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cL\xBF\x9E1\x14a\0FW\x80c\xEFi\x0C\xC0\x14a\0PW\x80c\xF6-\x18\x88\x14a\0nW[`\0\x80\xFD[a\0Na\0\x81V[\0[a\0Xa\0\xB3V[`@Qa\0e\x91\x90a\x01\xF1V[`@Q\x80\x91\x03\x90\xF3[a\0Na\0|6`\x04a\x02\\V[a\x01AV[`@\x80Q\x80\x82\x01\x90\x91R`\x08\x80\x82Rg\x1C\x99\\\xD9]\x1D\x19Y`\xC2\x1B` \x90\x92\x01\x91\x82Ra\0\xB0\x91`\0\x91a\x01XV[PV[`\0\x80Ta\0\xC0\x90a\x03\rV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\0\xEC\x90a\x03\rV[\x80\x15a\x019W\x80`\x1F\x10a\x01\x0EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x019V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01\x1CW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x80Qa\x01T\x90`\0\x90` \x84\x01\x90a\x01XV[PPV[\x82\x80Ta\x01d\x90a\x03\rV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x01\x86W`\0\x85Ua\x01\xCCV[\x82`\x1F\x10a\x01\x9FW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x01\xCCV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x01\xCCW\x91\x82\x01[\x82\x81\x11\x15a\x01\xCCW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x01\xB1V[Pa\x01\xD8\x92\x91Pa\x01\xDCV[P\x90V[[\x80\x82\x11\x15a\x01\xD8W`\0\x81U`\x01\x01a\x01\xDDV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x02\x1EW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\x02V[\x81\x81\x11\x15a\x020W`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x02nW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x86W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x02\x9AW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xACWa\x02\xACa\x02FV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02\xD4Wa\x02\xD4a\x02FV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x02\xEDW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03!W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x03BWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV\xFE\xA2dipfsX\"\x12 \xBD\xEA\x07\x16`'\xC2\xC0@3\xDA\xEDR7?f\xE0>\x98\xE5\xC5\xFA\x12aO\x90\x8C\x02\xB9\x96\xB0\x89dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80634cbf9e3114610046578063ef690cc014610050578063f62d18881461006e575b600080fd5b61004e610081565b005b6100586100b3565b60405161006591906101f1565b60405180910390f35b61004e61007c36600461025c565b610141565b604080518082019091526008808252671c995cd95d1d195960c21b60209092019182526100b091600091610158565b50565b600080546100c09061030d565b80601f01602080910402602001604051908101604052809291908181526020018280546100ec9061030d565b80156101395780601f1061010e57610100808354040283529160200191610139565b820191906000526020600020905b81548152906001019060200180831161011c57829003601f168201915b505050505081565b8051610154906000906020840190610158565b5050565b8280546101649061030d565b90600052602060002090601f01602090048101928261018657600085556101cc565b82601f1061019f57805160ff19168380011785556101cc565b828001600101855582156101cc579182015b828111156101cc5782518255916020019190600101906101b1565b506101d89291506101dc565b5090565b5b808211156101d857600081556001016101dd565b600060208083528351808285015260005b8181101561021e57858101830151858201604001528201610202565b81811115610230576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561026e57600080fd5b813567ffffffffffffffff8082111561028657600080fd5b818401915084601f83011261029a57600080fd5b8135818111156102ac576102ac610246565b604051601f8201601f19908116603f011681019083821181831017156102d4576102d4610246565b816040528281528760208487010111156102ed57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c9082168061032157607f821691505b6020821081141561034257634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220bdea07166027c2c04033daed52373f66e03e98e5c5fa12614f908c02b996b08964736f6c634300080c0033 + /// ``` + #[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\x80cL\xBF\x9E1\x14a\0FW\x80c\xEFi\x0C\xC0\x14a\0PW\x80c\xF6-\x18\x88\x14a\0nW[`\0\x80\xFD[a\0Na\0\x81V[\0[a\0Xa\0\xB3V[`@Qa\0e\x91\x90a\x01\xF1V[`@Q\x80\x91\x03\x90\xF3[a\0Na\0|6`\x04a\x02\\V[a\x01AV[`@\x80Q\x80\x82\x01\x90\x91R`\x08\x80\x82Rg\x1C\x99\\\xD9]\x1D\x19Y`\xC2\x1B` \x90\x92\x01\x91\x82Ra\0\xB0\x91`\0\x91a\x01XV[PV[`\0\x80Ta\0\xC0\x90a\x03\rV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\0\xEC\x90a\x03\rV[\x80\x15a\x019W\x80`\x1F\x10a\x01\x0EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x019V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01\x1CW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x80Qa\x01T\x90`\0\x90` \x84\x01\x90a\x01XV[PPV[\x82\x80Ta\x01d\x90a\x03\rV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x01\x86W`\0\x85Ua\x01\xCCV[\x82`\x1F\x10a\x01\x9FW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x01\xCCV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x01\xCCW\x91\x82\x01[\x82\x81\x11\x15a\x01\xCCW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x01\xB1V[Pa\x01\xD8\x92\x91Pa\x01\xDCV[P\x90V[[\x80\x82\x11\x15a\x01\xD8W`\0\x81U`\x01\x01a\x01\xDDV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x02\x1EW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\x02V[\x81\x81\x11\x15a\x020W`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x02nW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x86W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x02\x9AW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xACWa\x02\xACa\x02FV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02\xD4Wa\x02\xD4a\x02FV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x02\xEDW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03!W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x03BWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV\xFE\xA2dipfsX\"\x12 \xBD\xEA\x07\x16`'\xC2\xC0@3\xDA\xEDR7?f\xE0>\x98\xE5\xC5\xFA\x12aO\x90\x8C\x02\xB9\x96\xB0\x89dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `greeting()` and selector `0xef690cc0`. + ```solidity + function greeting() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct greetingCall {} + ///Container type for the return parameters of the [`greeting()`](greetingCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct greetingReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: greetingCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for greetingCall { + 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: greetingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for greetingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for greetingCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = greetingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "greeting()"; + const SELECTOR: [u8; 4] = [239u8, 105u8, 12u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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)` and selector `0xf62d1888`. + ```solidity + function initialize(string memory _greeting) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + pub _greeting: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`initialize(string)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: initializeCall) -> Self { + (value._greeting,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _greeting: 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::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)"; + const SELECTOR: [u8; 4] = [246u8, 45u8, 24u8, 136u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._greeting, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `resetGreeting()` and selector `0x4cbf9e31`. + ```solidity + function resetGreeting() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetGreetingCall {} + ///Container type for the return parameters of the [`resetGreeting()`](resetGreetingCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetGreetingReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: resetGreetingCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetGreetingCall { + 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: resetGreetingReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetGreetingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for resetGreetingCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = resetGreetingReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "resetGreeting()"; + const SELECTOR: [u8; 4] = [76u8, 191u8, 158u8, 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) + } + } + }; + ///Container for all the [`GreeterV2`](self) function calls. + pub enum GreeterV2Calls { + greeting(greetingCall), + initialize(initializeCall), + resetGreeting(resetGreetingCall), + } + #[automatically_derived] + impl GreeterV2Calls { + /// 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]] = &[ + [76u8, 191u8, 158u8, 49u8], + [239u8, 105u8, 12u8, 192u8], + [246u8, 45u8, 24u8, 136u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for GreeterV2Calls { + const NAME: &'static str = "GreeterV2Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::greeting(_) => ::SELECTOR, + Self::initialize(_) => ::SELECTOR, + Self::resetGreeting(_) => ::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 resetGreeting( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(GreeterV2Calls::resetGreeting) + } + resetGreeting + }, + { + fn greeting( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(GreeterV2Calls::greeting) + } + greeting + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(GreeterV2Calls::initialize) + } + initialize + }, + ]; + 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::greeting(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::resetGreeting(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::greeting(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + Self::resetGreeting(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`GreeterV2`](self) contract instance. + + See the [wrapper's documentation](`GreeterV2Instance`) 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, + ) -> GreeterV2Instance { + GreeterV2Instance::::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>> + { + GreeterV2Instance::::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 { + GreeterV2Instance::::deploy_builder(provider) + } + /**A [`GreeterV2`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`GreeterV2`](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 GreeterV2Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for GreeterV2Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("GreeterV2Instance") + .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, + > GreeterV2Instance + { + /**Creates a new wrapper around an on-chain [`GreeterV2`](self) contract instance. + + See the [wrapper's documentation](`GreeterV2Instance`) 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 GreeterV2Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> GreeterV2Instance { + GreeterV2Instance { + 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, + > GreeterV2Instance + { + /// 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 [`greeting`] function. + pub fn greeting(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&greetingCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _greeting: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { _greeting }) + } + ///Creates a new call builder for the [`resetGreeting`] function. + pub fn resetGreeting(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&resetGreetingCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > GreeterV2Instance + { + /// 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/middleware/greeterv2proxiable.rs b/crates/utils/src/middleware/greeterv2proxiable.rs new file mode 100644 index 00000000..dc5591f5 --- /dev/null +++ b/crates/utils/src/middleware/greeterv2proxiable.rs @@ -0,0 +1,1223 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface GreeterV2Proxiable { + function UPGRADE_INTERFACE_VERSION() external view returns (string memory); + function greeting() external view returns (string memory); + function initialize(string memory _greeting) external; + function proxiableUUID() external view returns (bytes32); + function resetGreeting() external; + function upgradeToAndCall(address newImplementation, bytes memory data) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "UPGRADE_INTERFACE_VERSION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "greeting", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_greeting", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "resetGreeting", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod GreeterV2Proxiable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061070b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80634cbf9e31146100675780634f1ef2861461007157806352d1902d14610084578063ad3cb1cc146100b7578063ef690cc0146100e8578063f62d1888146100f0575b600080fd5b61006f610103565b005b61006f61007f3660046104c4565b610135565b6040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81526020015b60405180910390f35b6100db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100ae9190610555565b6100db610336565b61006f6100fe3660046105c0565b6103c4565b604080518082019091526008808252671c995cd95d1d195960c21b60209092019182526101329160009161042b565b50565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561018f575060408051601f3d908101601f1916820190925261018c91810190610671565b60015b6101e05760405162461bcd60e51b815260206004820152601e60248201527f74686520696d706c656d656e746174696f6e206973206e6f742055555053000060448201526064015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461024f5760405162461bcd60e51b815260206004820152601d60248201527f736c6f7420697320756e737570706f727465642061732061207575696400000060448201526064016101d7565b610277847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b8115610328576000846001600160a01b0316848460405161029992919061068a565b600060405180830381855af49150503d80600081146102d4576040519150601f19603f3d011682016040523d82523d6000602084013e6102d9565b606091505b50509050806103225760405162461bcd60e51b81526020600482015260156024820152741d5c19dc9859194818d85b1b081c995d995c9d1959605a1b60448201526064016101d7565b50610330565b6103306103db565b50505050565b600080546103439061069a565b80601f016020809104026020016040519081016040528092919081815260200182805461036f9061069a565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b505050505081565b80516103d790600090602084019061042b565b5050565b34156104295760405162461bcd60e51b815260206004820152601860248201527f6e6f6e2d70617961626c6520757067726164652063616c6c000000000000000060448201526064016101d7565b565b8280546104379061069a565b90600052602060002090601f016020900481019282610459576000855561049f565b82601f1061047257805160ff191683800117855561049f565b8280016001018555821561049f579182015b8281111561049f578251825591602001919060010190610484565b506104ab9291506104af565b5090565b5b808211156104ab57600081556001016104b0565b6000806000604084860312156104d957600080fd5b83356001600160a01b03811681146104f057600080fd5b9250602084013567ffffffffffffffff8082111561050d57600080fd5b818601915086601f83011261052157600080fd5b81358181111561053057600080fd5b87602082850101111561054257600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b8181101561058257858101830151858201604001528201610566565b81811115610594576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156105d257600080fd5b813567ffffffffffffffff808211156105ea57600080fd5b818401915084601f8301126105fe57600080fd5b813581811115610610576106106105aa565b604051601f8201601f19908116603f01168101908382118183101715610638576106386105aa565b8160405282815287602084870101111561065157600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561068357600080fd5b5051919050565b8183823760009101908152919050565b600181811c908216806106ae57607f821691505b602082108114156106cf57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220b5ba9b6be00e1b15765d8e5b813903a903eb0d766f70036621c356cf2e267a8a64736f6c634300080c0033 + /// ``` + #[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\x0B\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80cL\xBF\x9E1\x14a\0gW\x80cO\x1E\xF2\x86\x14a\0qW\x80cR\xD1\x90-\x14a\0\x84W\x80c\xAD<\xB1\xCC\x14a\0\xB7W\x80c\xEFi\x0C\xC0\x14a\0\xE8W\x80c\xF6-\x18\x88\x14a\0\xF0W[`\0\x80\xFD[a\0oa\x01\x03V[\0[a\0oa\0\x7F6`\x04a\x04\xC4V[a\x015V[`@Q\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\0\xAE\x91\x90a\x05UV[a\0\xDBa\x036V[a\0oa\0\xFE6`\x04a\x05\xC0V[a\x03\xC4V[`@\x80Q\x80\x82\x01\x90\x91R`\x08\x80\x82Rg\x1C\x99\\\xD9]\x1D\x19Y`\xC2\x1B` \x90\x92\x01\x91\x82Ra\x012\x91`\0\x91a\x04+V[PV[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x01\x8FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x01\x8C\x91\x81\x01\x90a\x06qV[`\x01[a\x01\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fthe implementation is not UUPS\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a\x02OW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fslot is unsupported as a uuid\0\0\0`D\x82\x01R`d\x01a\x01\xD7V[a\x02w\x84\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[\x81\x15a\x03(W`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x02\x99\x92\x91\x90a\x06\x8AV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x02\xD4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\xD9V[``\x91P[PP\x90P\x80a\x03\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1D\\\x19\xDC\x98Y\x19H\x18\xD8[\x1B\x08\x1C\x99]\x99\\\x9D\x19Y`Z\x1B`D\x82\x01R`d\x01a\x01\xD7V[Pa\x030V[a\x030a\x03\xDBV[PPPPV[`\0\x80Ta\x03C\x90a\x06\x9AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03o\x90a\x06\x9AV[\x80\x15a\x03\xBCW\x80`\x1F\x10a\x03\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x80Qa\x03\xD7\x90`\0\x90` \x84\x01\x90a\x04+V[PPV[4\x15a\x04)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fnon-payable upgrade call\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01\xD7V[V[\x82\x80Ta\x047\x90a\x06\x9AV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x04YW`\0\x85Ua\x04\x9FV[\x82`\x1F\x10a\x04rW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x04\x9FV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x04\x9FW\x91\x82\x01[\x82\x81\x11\x15a\x04\x9FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x04\x84V[Pa\x04\xAB\x92\x91Pa\x04\xAFV[P\x90V[[\x80\x82\x11\x15a\x04\xABW`\0\x81U`\x01\x01a\x04\xB0V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x04\xD9W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\xF0W`\0\x80\xFD[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\rW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x05!W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x050W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x05BW`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x05\x82W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x05fV[\x81\x81\x11\x15a\x05\x94W`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x05\xD2W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\xEAW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x05\xFEW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x06\x10Wa\x06\x10a\x05\xAAV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x068Wa\x068a\x05\xAAV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x06QW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x06\x83W`\0\x80\xFD[PQ\x91\x90PV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x06\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x06\xCFWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB5\xBA\x9Bk\xE0\x0E\x1B\x15v]\x8E[\x819\x03\xA9\x03\xEB\rvop\x03f!\xC3V\xCF.&z\x8AdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100625760003560e01c80634cbf9e31146100675780634f1ef2861461007157806352d1902d14610084578063ad3cb1cc146100b7578063ef690cc0146100e8578063f62d1888146100f0575b600080fd5b61006f610103565b005b61006f61007f3660046104c4565b610135565b6040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81526020015b60405180910390f35b6100db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100ae9190610555565b6100db610336565b61006f6100fe3660046105c0565b6103c4565b604080518082019091526008808252671c995cd95d1d195960c21b60209092019182526101329160009161042b565b50565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561018f575060408051601f3d908101601f1916820190925261018c91810190610671565b60015b6101e05760405162461bcd60e51b815260206004820152601e60248201527f74686520696d706c656d656e746174696f6e206973206e6f742055555053000060448201526064015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461024f5760405162461bcd60e51b815260206004820152601d60248201527f736c6f7420697320756e737570706f727465642061732061207575696400000060448201526064016101d7565b610277847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b8115610328576000846001600160a01b0316848460405161029992919061068a565b600060405180830381855af49150503d80600081146102d4576040519150601f19603f3d011682016040523d82523d6000602084013e6102d9565b606091505b50509050806103225760405162461bcd60e51b81526020600482015260156024820152741d5c19dc9859194818d85b1b081c995d995c9d1959605a1b60448201526064016101d7565b50610330565b6103306103db565b50505050565b600080546103439061069a565b80601f016020809104026020016040519081016040528092919081815260200182805461036f9061069a565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b505050505081565b80516103d790600090602084019061042b565b5050565b34156104295760405162461bcd60e51b815260206004820152601860248201527f6e6f6e2d70617961626c6520757067726164652063616c6c000000000000000060448201526064016101d7565b565b8280546104379061069a565b90600052602060002090601f016020900481019282610459576000855561049f565b82601f1061047257805160ff191683800117855561049f565b8280016001018555821561049f579182015b8281111561049f578251825591602001919060010190610484565b506104ab9291506104af565b5090565b5b808211156104ab57600081556001016104b0565b6000806000604084860312156104d957600080fd5b83356001600160a01b03811681146104f057600080fd5b9250602084013567ffffffffffffffff8082111561050d57600080fd5b818601915086601f83011261052157600080fd5b81358181111561053057600080fd5b87602082850101111561054257600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b8181101561058257858101830151858201604001528201610566565b81811115610594576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156105d257600080fd5b813567ffffffffffffffff808211156105ea57600080fd5b818401915084601f8301126105fe57600080fd5b813581811115610610576106106105aa565b604051601f8201601f19908116603f01168101908382118183101715610638576106386105aa565b8160405282815287602084870101111561065157600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561068357600080fd5b5051919050565b8183823760009101908152919050565b600181811c908216806106ae57607f821691505b602082108114156106cf57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220b5ba9b6be00e1b15765d8e5b813903a903eb0d766f70036621c356cf2e267a8a64736f6c634300080c0033 + /// ``` + #[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\0bW`\x005`\xE0\x1C\x80cL\xBF\x9E1\x14a\0gW\x80cO\x1E\xF2\x86\x14a\0qW\x80cR\xD1\x90-\x14a\0\x84W\x80c\xAD<\xB1\xCC\x14a\0\xB7W\x80c\xEFi\x0C\xC0\x14a\0\xE8W\x80c\xF6-\x18\x88\x14a\0\xF0W[`\0\x80\xFD[a\0oa\x01\x03V[\0[a\0oa\0\x7F6`\x04a\x04\xC4V[a\x015V[`@Q\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\0\xAE\x91\x90a\x05UV[a\0\xDBa\x036V[a\0oa\0\xFE6`\x04a\x05\xC0V[a\x03\xC4V[`@\x80Q\x80\x82\x01\x90\x91R`\x08\x80\x82Rg\x1C\x99\\\xD9]\x1D\x19Y`\xC2\x1B` \x90\x92\x01\x91\x82Ra\x012\x91`\0\x91a\x04+V[PV[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x01\x8FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x01\x8C\x91\x81\x01\x90a\x06qV[`\x01[a\x01\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fthe implementation is not UUPS\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a\x02OW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fslot is unsupported as a uuid\0\0\0`D\x82\x01R`d\x01a\x01\xD7V[a\x02w\x84\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[\x81\x15a\x03(W`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x02\x99\x92\x91\x90a\x06\x8AV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x02\xD4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\xD9V[``\x91P[PP\x90P\x80a\x03\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1D\\\x19\xDC\x98Y\x19H\x18\xD8[\x1B\x08\x1C\x99]\x99\\\x9D\x19Y`Z\x1B`D\x82\x01R`d\x01a\x01\xD7V[Pa\x030V[a\x030a\x03\xDBV[PPPPV[`\0\x80Ta\x03C\x90a\x06\x9AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03o\x90a\x06\x9AV[\x80\x15a\x03\xBCW\x80`\x1F\x10a\x03\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x80Qa\x03\xD7\x90`\0\x90` \x84\x01\x90a\x04+V[PPV[4\x15a\x04)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fnon-payable upgrade call\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01\xD7V[V[\x82\x80Ta\x047\x90a\x06\x9AV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x04YW`\0\x85Ua\x04\x9FV[\x82`\x1F\x10a\x04rW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x04\x9FV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x04\x9FW\x91\x82\x01[\x82\x81\x11\x15a\x04\x9FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x04\x84V[Pa\x04\xAB\x92\x91Pa\x04\xAFV[P\x90V[[\x80\x82\x11\x15a\x04\xABW`\0\x81U`\x01\x01a\x04\xB0V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x04\xD9W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\xF0W`\0\x80\xFD[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\rW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x05!W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x050W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x05BW`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x05\x82W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x05fV[\x81\x81\x11\x15a\x05\x94W`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x05\xD2W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\xEAW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x05\xFEW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x06\x10Wa\x06\x10a\x05\xAAV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x068Wa\x068a\x05\xAAV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x06QW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x06\x83W`\0\x80\xFD[PQ\x91\x90PV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x06\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x06\xCFWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB5\xBA\x9Bk\xE0\x0E\x1B\x15v]\x8E[\x819\x03\xA9\x03\xEB\rvop\x03f!\xC3V\xCF.&z\x8AdsolcC\0\x08\x0C\x003", + ); + /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`. + ```solidity + function UPGRADE_INTERFACE_VERSION() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct UPGRADE_INTERFACE_VERSIONCall {} + ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct UPGRADE_INTERFACE_VERSIONReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for UPGRADE_INTERFACE_VERSIONCall { + 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: UPGRADE_INTERFACE_VERSIONReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for UPGRADE_INTERFACE_VERSIONReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = UPGRADE_INTERFACE_VERSIONReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()"; + const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `greeting()` and selector `0xef690cc0`. + ```solidity + function greeting() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct greetingCall {} + ///Container type for the return parameters of the [`greeting()`](greetingCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct greetingReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: greetingCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for greetingCall { + 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: greetingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for greetingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for greetingCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = greetingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "greeting()"; + const SELECTOR: [u8; 4] = [239u8, 105u8, 12u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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)` and selector `0xf62d1888`. + ```solidity + function initialize(string memory _greeting) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + pub _greeting: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`initialize(string)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: initializeCall) -> Self { + (value._greeting,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _greeting: 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::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)"; + const SELECTOR: [u8; 4] = [246u8, 45u8, 24u8, 136u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._greeting, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `proxiableUUID()` and selector `0x52d1902d`. + ```solidity + function proxiableUUID() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxiableUUIDCall {} + ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxiableUUIDReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `resetGreeting()` and selector `0x4cbf9e31`. + ```solidity + function resetGreeting() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetGreetingCall {} + ///Container type for the return parameters of the [`resetGreeting()`](resetGreetingCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetGreetingReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: resetGreetingCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetGreetingCall { + 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: resetGreetingReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetGreetingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for resetGreetingCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = resetGreetingReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "resetGreeting()"; + const SELECTOR: [u8; 4] = [76u8, 191u8, 158u8, 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 `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`. + ```solidity + function upgradeToAndCall(address newImplementation, bytes memory data) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct upgradeToAndCallReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`GreeterV2Proxiable`](self) function calls. + pub enum GreeterV2ProxiableCalls { + UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall), + greeting(greetingCall), + initialize(initializeCall), + proxiableUUID(proxiableUUIDCall), + resetGreeting(resetGreetingCall), + upgradeToAndCall(upgradeToAndCallCall), + } + #[automatically_derived] + impl GreeterV2ProxiableCalls { + /// 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]] = &[ + [76u8, 191u8, 158u8, 49u8], + [79u8, 30u8, 242u8, 134u8], + [82u8, 209u8, 144u8, 45u8], + [173u8, 60u8, 177u8, 204u8], + [239u8, 105u8, 12u8, 192u8], + [246u8, 45u8, 24u8, 136u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for GreeterV2ProxiableCalls { + const NAME: &'static str = "GreeterV2ProxiableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::UPGRADE_INTERFACE_VERSION(_) => { + ::SELECTOR + } + Self::greeting(_) => ::SELECTOR, + Self::initialize(_) => ::SELECTOR, + Self::proxiableUUID(_) => ::SELECTOR, + Self::resetGreeting(_) => ::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] = &[ + { + fn resetGreeting( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(GreeterV2ProxiableCalls::resetGreeting) + } + resetGreeting + }, + { + fn upgradeToAndCall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(GreeterV2ProxiableCalls::upgradeToAndCall) + } + upgradeToAndCall + }, + { + fn proxiableUUID( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(GreeterV2ProxiableCalls::proxiableUUID) + } + proxiableUUID + }, + { + fn UPGRADE_INTERFACE_VERSION( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(GreeterV2ProxiableCalls::UPGRADE_INTERFACE_VERSION) + } + UPGRADE_INTERFACE_VERSION + }, + { + fn greeting( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(GreeterV2ProxiableCalls::greeting) + } + greeting + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(GreeterV2ProxiableCalls::initialize) + } + initialize + }, + ]; + 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::UPGRADE_INTERFACE_VERSION(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::greeting(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::proxiableUUID(inner) => { + ::abi_encoded_size(inner) + } + Self::resetGreeting(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::UPGRADE_INTERFACE_VERSION(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::greeting(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + Self::proxiableUUID(inner) => { + ::abi_encode_raw(inner, out) + } + Self::resetGreeting(inner) => { + ::abi_encode_raw(inner, out) + } + Self::upgradeToAndCall(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`GreeterV2Proxiable`](self) contract instance. + + See the [wrapper's documentation](`GreeterV2ProxiableInstance`) 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, + ) -> GreeterV2ProxiableInstance { + GreeterV2ProxiableInstance::::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>> + { + GreeterV2ProxiableInstance::::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 { + GreeterV2ProxiableInstance::::deploy_builder(provider) + } + /**A [`GreeterV2Proxiable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`GreeterV2Proxiable`](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 GreeterV2ProxiableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for GreeterV2ProxiableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("GreeterV2ProxiableInstance") + .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, + > GreeterV2ProxiableInstance + { + /**Creates a new wrapper around an on-chain [`GreeterV2Proxiable`](self) contract instance. + + See the [wrapper's documentation](`GreeterV2ProxiableInstance`) 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 GreeterV2ProxiableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> GreeterV2ProxiableInstance { + GreeterV2ProxiableInstance { + 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, + > GreeterV2ProxiableInstance + { + /// 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 [`UPGRADE_INTERFACE_VERSION`] function. + pub fn UPGRADE_INTERFACE_VERSION( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {}) + } + ///Creates a new call builder for the [`greeting`] function. + pub fn greeting(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&greetingCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _greeting: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { _greeting }) + } + ///Creates a new call builder for the [`proxiableUUID`] function. + pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&proxiableUUIDCall {}) + } + ///Creates a new call builder for the [`resetGreeting`] function. + pub fn resetGreeting(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&resetGreetingCall {}) + } + ///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, + > GreeterV2ProxiableInstance + { + /// 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/middleware/iavsdirectory.rs b/crates/utils/src/middleware/iavsdirectory.rs new file mode 100644 index 00000000..e6090741 --- /dev/null +++ b/crates/utils/src/middleware/iavsdirectory.rs @@ -0,0 +1,2599 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 cancelSalt(bytes32 salt) external; + function deregisterOperatorFromAVS(address operator) external; + function domainSeparator() external view returns (bytes32); + 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": "cancelSalt", + "inputs": [ + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateOperatorAVSRegistrationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct cancelSaltReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSaltIsSpentReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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), + cancelSalt(cancelSaltCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + domainSeparator(domainSeparatorCall), + 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], + [236u8, 118u8, 244u8, 66u8], + [246u8, 152u8, 218u8, 37u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IAVSDirectoryCalls { + const NAME: &'static str = "IAVSDirectoryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 8usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::calculateOperatorAVSRegistrationDigestHash(_) => { + ::SELECTOR + } + Self::cancelSalt(_) => { + ::SELECTOR + } + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::domainSeparator(_) => { + ::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 + }, + { + fn cancelSalt( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IAVSDirectoryCalls::cancelSalt) + } + cancelSalt + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IAVSDirectoryCalls::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::OPERATOR_AVS_REGISTRATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::cancelSalt(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::domainSeparator(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::cancelSalt(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::domainSeparator(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 [`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 [`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 [`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/middleware/ibeacon.rs b/crates/utils/src/middleware/ibeacon.rs new file mode 100644 index 00000000..d8b7f96f --- /dev/null +++ b/crates/utils/src/middleware/ibeacon.rs @@ -0,0 +1,433 @@ +/** + +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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct implementationCall {} + ///Container type for the return parameters of the [`implementation()`](implementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct implementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/ibeaconchainoracle_deprecatedm1.rs b/crates/utils/src/middleware/ibeaconchainoracle_deprecatedm1.rs new file mode 100644 index 00000000..9a936dd8 --- /dev/null +++ b/crates/utils/src/middleware/ibeaconchainoracle_deprecatedm1.rs @@ -0,0 +1,2191 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IBeaconChainOracle_DeprecatedM1 { + function addOracleSigners(address[] memory _oracleSigners) external; + function beaconStateRootAtBlockNumber(uint64 blockNumber) external view returns (bytes32); + function hasVoted(uint64 blockNumber, address oracleSigner) external view returns (bool); + function isOracleSigner(address _oracleSigner) external view returns (bool); + function latestConfirmedOracleBlockNumber() external view returns (uint64); + function removeOracleSigners(address[] memory _oracleSigners) external; + function setThreshold(uint256 _threshold) external; + function stateRootVotes(uint64 blockNumber, bytes32 stateRoot) external view returns (uint256); + function threshold() external view returns (uint256); + function totalOracleSigners() external view returns (uint256); + function voteForBeaconChainStateRoot(uint64 blockNumber, bytes32 stateRoot) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "addOracleSigners", + "inputs": [ + { + "name": "_oracleSigners", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "beaconStateRootAtBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "hasVoted", + "inputs": [ + { + "name": "blockNumber", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "oracleSigner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isOracleSigner", + "inputs": [ + { + "name": "_oracleSigner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "latestConfirmedOracleBlockNumber", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeOracleSigners", + "inputs": [ + { + "name": "_oracleSigners", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setThreshold", + "inputs": [ + { + "name": "_threshold", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stateRootVotes", + "inputs": [ + { + "name": "blockNumber", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "stateRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "threshold", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalOracleSigners", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "voteForBeaconChainStateRoot", + "inputs": [ + { + "name": "blockNumber", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "stateRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IBeaconChainOracle_DeprecatedM1 { + 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 `addOracleSigners(address[])` and selector `0x30904457`. + ```solidity + function addOracleSigners(address[] memory _oracleSigners) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addOracleSignersCall { + pub _oracleSigners: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`addOracleSigners(address[])`](addOracleSignersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addOracleSignersReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: addOracleSignersCall) -> Self { + (value._oracleSigners,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addOracleSignersCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _oracleSigners: 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: addOracleSignersReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addOracleSignersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addOracleSignersCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addOracleSignersReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addOracleSigners(address[])"; + const SELECTOR: [u8; 4] = [48u8, 144u8, 68u8, 87u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self._oracleSigners, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `beaconStateRootAtBlockNumber(uint64)` and selector `0x864b8a69`. + ```solidity + function beaconStateRootAtBlockNumber(uint64 blockNumber) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconStateRootAtBlockNumberCall { + pub blockNumber: u64, + } + ///Container type for the return parameters of the [`beaconStateRootAtBlockNumber(uint64)`](beaconStateRootAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconStateRootAtBlockNumberReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: beaconStateRootAtBlockNumberCall) -> Self { + (value.blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconStateRootAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: 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: beaconStateRootAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconStateRootAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for beaconStateRootAtBlockNumberCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = beaconStateRootAtBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "beaconStateRootAtBlockNumber(uint64)"; + const SELECTOR: [u8; 4] = [134u8, 75u8, 138u8, 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.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 `hasVoted(uint64,address)` and selector `0xc61ff600`. + ```solidity + function hasVoted(uint64 blockNumber, address oracleSigner) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasVotedCall { + pub blockNumber: u64, + pub oracleSigner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`hasVoted(uint64,address)`](hasVotedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasVotedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: hasVotedCall) -> Self { + (value.blockNumber, value.oracleSigner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasVotedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + oracleSigner: 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: hasVotedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasVotedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for hasVotedCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = hasVotedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "hasVoted(uint64,address)"; + const SELECTOR: [u8; 4] = [198u8, 31u8, 246u8, 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.blockNumber, + ), + ::tokenize( + &self.oracleSigner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isOracleSigner(address)` and selector `0x7a000989`. + ```solidity + function isOracleSigner(address _oracleSigner) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isOracleSignerCall { + pub _oracleSigner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isOracleSigner(address)`](isOracleSignerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isOracleSignerReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: isOracleSignerCall) -> Self { + (value._oracleSigner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOracleSignerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _oracleSigner: 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: isOracleSignerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOracleSignerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isOracleSignerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isOracleSignerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isOracleSigner(address)"; + const SELECTOR: [u8; 4] = [122u8, 0u8, 9u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._oracleSigner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `latestConfirmedOracleBlockNumber()` and selector `0x2dae03e1`. + ```solidity + function latestConfirmedOracleBlockNumber() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestConfirmedOracleBlockNumberCall {} + ///Container type for the return parameters of the [`latestConfirmedOracleBlockNumber()`](latestConfirmedOracleBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestConfirmedOracleBlockNumberReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: latestConfirmedOracleBlockNumberCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for latestConfirmedOracleBlockNumberCall { + 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: latestConfirmedOracleBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for latestConfirmedOracleBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for latestConfirmedOracleBlockNumberCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = latestConfirmedOracleBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "latestConfirmedOracleBlockNumber()"; + const SELECTOR: [u8; 4] = [45u8, 174u8, 3u8, 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 `removeOracleSigners(address[])` and selector `0xa3b2aa96`. + ```solidity + function removeOracleSigners(address[] memory _oracleSigners) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeOracleSignersCall { + pub _oracleSigners: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`removeOracleSigners(address[])`](removeOracleSignersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeOracleSignersReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: removeOracleSignersCall) -> Self { + (value._oracleSigners,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeOracleSignersCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _oracleSigners: 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: removeOracleSignersReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeOracleSignersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeOracleSignersCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeOracleSignersReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeOracleSigners(address[])"; + const SELECTOR: [u8; 4] = [163u8, 178u8, 170u8, 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._oracleSigners, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setThreshold(uint256)` and selector `0x960bfe04`. + ```solidity + function setThreshold(uint256 _threshold) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setThresholdCall { + pub _threshold: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`setThreshold(uint256)`](setThresholdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setThresholdReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setThresholdCall) -> Self { + (value._threshold,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setThresholdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _threshold: 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: setThresholdReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setThresholdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setThresholdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setThresholdReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setThreshold(uint256)"; + const SELECTOR: [u8; 4] = [150u8, 11u8, 254u8, 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._threshold, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stateRootVotes(uint64,bytes32)` and selector `0x0690526a`. + ```solidity + function stateRootVotes(uint64 blockNumber, bytes32 stateRoot) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stateRootVotesCall { + pub blockNumber: u64, + pub stateRoot: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`stateRootVotes(uint64,bytes32)`](stateRootVotesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stateRootVotesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, 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: stateRootVotesCall) -> Self { + (value.blockNumber, value.stateRoot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stateRootVotesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + stateRoot: 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: stateRootVotesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stateRootVotesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stateRootVotesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stateRootVotesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stateRootVotes(uint64,bytes32)"; + const SELECTOR: [u8; 4] = [6u8, 144u8, 82u8, 106u8]; + #[inline] + fn new<'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.stateRoot), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `threshold()` and selector `0x42cde4e8`. + ```solidity + function threshold() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct thresholdCall {} + ///Container type for the return parameters of the [`threshold()`](thresholdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct thresholdReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: thresholdCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for thresholdCall { + 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: thresholdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for thresholdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for thresholdCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = thresholdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "threshold()"; + const SELECTOR: [u8; 4] = [66u8, 205u8, 228u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalOracleSigners()` and selector `0x7d21af06`. + ```solidity + function totalOracleSigners() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalOracleSignersCall {} + ///Container type for the return parameters of the [`totalOracleSigners()`](totalOracleSignersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalOracleSignersReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalOracleSignersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOracleSignersCall { + 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: totalOracleSignersReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOracleSignersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalOracleSignersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalOracleSignersReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalOracleSigners()"; + const SELECTOR: [u8; 4] = [125u8, 33u8, 175u8, 6u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `voteForBeaconChainStateRoot(uint64,bytes32)` and selector `0xa22f141e`. + ```solidity + function voteForBeaconChainStateRoot(uint64 blockNumber, bytes32 stateRoot) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct voteForBeaconChainStateRootCall { + pub blockNumber: u64, + pub stateRoot: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`voteForBeaconChainStateRoot(uint64,bytes32)`](voteForBeaconChainStateRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct voteForBeaconChainStateRootReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, 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: voteForBeaconChainStateRootCall) -> Self { + (value.blockNumber, value.stateRoot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for voteForBeaconChainStateRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + stateRoot: 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: voteForBeaconChainStateRootReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for voteForBeaconChainStateRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for voteForBeaconChainStateRootCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = voteForBeaconChainStateRootReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "voteForBeaconChainStateRoot(uint64,bytes32)"; + const SELECTOR: [u8; 4] = [162u8, 47u8, 20u8, 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.blockNumber), + as alloy_sol_types::SolType>::tokenize(&self.stateRoot), + ) + } + #[inline] + fn 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_DeprecatedM1`](self) function calls. + pub enum IBeaconChainOracle_DeprecatedM1Calls { + addOracleSigners(addOracleSignersCall), + beaconStateRootAtBlockNumber(beaconStateRootAtBlockNumberCall), + hasVoted(hasVotedCall), + isOracleSigner(isOracleSignerCall), + latestConfirmedOracleBlockNumber(latestConfirmedOracleBlockNumberCall), + removeOracleSigners(removeOracleSignersCall), + setThreshold(setThresholdCall), + stateRootVotes(stateRootVotesCall), + threshold(thresholdCall), + totalOracleSigners(totalOracleSignersCall), + voteForBeaconChainStateRoot(voteForBeaconChainStateRootCall), + } + #[automatically_derived] + impl IBeaconChainOracle_DeprecatedM1Calls { + /// 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, 144u8, 82u8, 106u8], + [45u8, 174u8, 3u8, 225u8], + [48u8, 144u8, 68u8, 87u8], + [66u8, 205u8, 228u8, 232u8], + [122u8, 0u8, 9u8, 137u8], + [125u8, 33u8, 175u8, 6u8], + [134u8, 75u8, 138u8, 105u8], + [150u8, 11u8, 254u8, 4u8], + [162u8, 47u8, 20u8, 30u8], + [163u8, 178u8, 170u8, 150u8], + [198u8, 31u8, 246u8, 0u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IBeaconChainOracle_DeprecatedM1Calls { + const NAME: &'static str = "IBeaconChainOracle_DeprecatedM1Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 11usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::addOracleSigners(_) => { + ::SELECTOR + } + Self::beaconStateRootAtBlockNumber(_) => { + ::SELECTOR + } + Self::hasVoted(_) => ::SELECTOR, + Self::isOracleSigner(_) => { + ::SELECTOR + } + Self::latestConfirmedOracleBlockNumber(_) => { + ::SELECTOR + } + Self::removeOracleSigners(_) => { + ::SELECTOR + } + Self::setThreshold(_) => ::SELECTOR, + Self::stateRootVotes(_) => { + ::SELECTOR + } + Self::threshold(_) => ::SELECTOR, + Self::totalOracleSigners(_) => { + ::SELECTOR + } + Self::voteForBeaconChainStateRoot(_) => { + ::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< + IBeaconChainOracle_DeprecatedM1Calls, + >] = &[ + { + fn stateRootVotes( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(IBeaconChainOracle_DeprecatedM1Calls::stateRootVotes) + } + stateRootVotes + }, + { + fn latestConfirmedOracleBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + IBeaconChainOracle_DeprecatedM1Calls::latestConfirmedOracleBlockNumber, + ) + } + latestConfirmedOracleBlockNumber + }, + { + fn addOracleSigners( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(IBeaconChainOracle_DeprecatedM1Calls::addOracleSigners) + } + addOracleSigners + }, + { + fn threshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(IBeaconChainOracle_DeprecatedM1Calls::threshold) + } + threshold + }, + { + fn isOracleSigner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(IBeaconChainOracle_DeprecatedM1Calls::isOracleSigner) + } + isOracleSigner + }, + { + fn totalOracleSigners( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(IBeaconChainOracle_DeprecatedM1Calls::totalOracleSigners) + } + totalOracleSigners + }, + { + fn beaconStateRootAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + IBeaconChainOracle_DeprecatedM1Calls::beaconStateRootAtBlockNumber, + ) + } + beaconStateRootAtBlockNumber + }, + { + fn setThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(IBeaconChainOracle_DeprecatedM1Calls::setThreshold) + } + setThreshold + }, + { + fn voteForBeaconChainStateRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + IBeaconChainOracle_DeprecatedM1Calls::voteForBeaconChainStateRoot, + ) + } + voteForBeaconChainStateRoot + }, + { + fn removeOracleSigners( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(IBeaconChainOracle_DeprecatedM1Calls::removeOracleSigners) + } + removeOracleSigners + }, + { + fn hasVoted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(IBeaconChainOracle_DeprecatedM1Calls::hasVoted) + } + hasVoted + }, + ]; + 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::addOracleSigners(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::beaconStateRootAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::hasVoted(inner) => { + ::abi_encoded_size(inner) + } + Self::isOracleSigner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::latestConfirmedOracleBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeOracleSigners(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setThreshold(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stateRootVotes(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::threshold(inner) => { + ::abi_encoded_size(inner) + } + Self::totalOracleSigners(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::voteForBeaconChainStateRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::addOracleSigners(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconStateRootAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::hasVoted(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isOracleSigner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::latestConfirmedOracleBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeOracleSigners(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setThreshold(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stateRootVotes(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::threshold(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::totalOracleSigners(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::voteForBeaconChainStateRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBeaconChainOracle_DeprecatedM1`](self) contract instance. + + See the [wrapper's documentation](`IBeaconChainOracle_DeprecatedM1Instance`) 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, + ) -> IBeaconChainOracle_DeprecatedM1Instance { + IBeaconChainOracle_DeprecatedM1Instance::::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>, + > { + IBeaconChainOracle_DeprecatedM1Instance::::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 { + IBeaconChainOracle_DeprecatedM1Instance::::deploy_builder(provider) + } + /**A [`IBeaconChainOracle_DeprecatedM1`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBeaconChainOracle_DeprecatedM1`](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 IBeaconChainOracle_DeprecatedM1Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBeaconChainOracle_DeprecatedM1Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBeaconChainOracle_DeprecatedM1Instance") + .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, + > IBeaconChainOracle_DeprecatedM1Instance + { + /**Creates a new wrapper around an on-chain [`IBeaconChainOracle_DeprecatedM1`](self) contract instance. + + See the [wrapper's documentation](`IBeaconChainOracle_DeprecatedM1Instance`) 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 IBeaconChainOracle_DeprecatedM1Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBeaconChainOracle_DeprecatedM1Instance { + IBeaconChainOracle_DeprecatedM1Instance { + 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, + > IBeaconChainOracle_DeprecatedM1Instance + { + /// 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 [`addOracleSigners`] function. + pub fn addOracleSigners( + &self, + _oracleSigners: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addOracleSignersCall { _oracleSigners }) + } + ///Creates a new call builder for the [`beaconStateRootAtBlockNumber`] function. + pub fn beaconStateRootAtBlockNumber( + &self, + blockNumber: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&beaconStateRootAtBlockNumberCall { blockNumber }) + } + ///Creates a new call builder for the [`hasVoted`] function. + pub fn hasVoted( + &self, + blockNumber: u64, + oracleSigner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&hasVotedCall { + blockNumber, + oracleSigner, + }) + } + ///Creates a new call builder for the [`isOracleSigner`] function. + pub fn isOracleSigner( + &self, + _oracleSigner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isOracleSignerCall { _oracleSigner }) + } + ///Creates a new call builder for the [`latestConfirmedOracleBlockNumber`] function. + pub fn latestConfirmedOracleBlockNumber( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&latestConfirmedOracleBlockNumberCall {}) + } + ///Creates a new call builder for the [`removeOracleSigners`] function. + pub fn removeOracleSigners( + &self, + _oracleSigners: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&removeOracleSignersCall { _oracleSigners }) + } + ///Creates a new call builder for the [`setThreshold`] function. + pub fn setThreshold( + &self, + _threshold: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setThresholdCall { _threshold }) + } + ///Creates a new call builder for the [`stateRootVotes`] function. + pub fn stateRootVotes( + &self, + blockNumber: u64, + stateRoot: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stateRootVotesCall { + blockNumber, + stateRoot, + }) + } + ///Creates a new call builder for the [`threshold`] function. + pub fn threshold(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&thresholdCall {}) + } + ///Creates a new call builder for the [`totalOracleSigners`] function. + pub fn totalOracleSigners( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalOracleSignersCall {}) + } + ///Creates a new call builder for the [`voteForBeaconChainStateRoot`] function. + pub fn voteForBeaconChainStateRoot( + &self, + blockNumber: u64, + stateRoot: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&voteForBeaconChainStateRootCall { + blockNumber, + stateRoot, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBeaconChainOracle_DeprecatedM1Instance + { + /// 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/middleware/iblsapkregistry.rs b/crates/utils/src/middleware/iblsapkregistry.rs new file mode 100644 index 00000000..805cc934 --- /dev/null +++ b/crates/utils/src/middleware/iblsapkregistry.rs @@ -0,0 +1,4508 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::FixedBytes<24>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorToPubkeyHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerBLSPublicKeyReturn { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/iblsapkregistryevents.rs b/crates/utils/src/middleware/iblsapkregistryevents.rs new file mode 100644 index 00000000..23815eb9 --- /dev/null +++ b/crates/utils/src/middleware/iblsapkregistryevents.rs @@ -0,0 +1,1341 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 IBLSApkRegistryEvents { + 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); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "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::pub_underscore_fields, + clippy::style +)] +pub mod IBLSApkRegistryEvents { + 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 `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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + ///Container for all the [`IBLSApkRegistryEvents`](self) events. + pub enum IBLSApkRegistryEventsEvents { + NewPubkeyRegistration(NewPubkeyRegistration), + OperatorAddedToQuorums(OperatorAddedToQuorums), + OperatorRemovedFromQuorums(OperatorRemovedFromQuorums), + } + #[automatically_derived] + impl IBLSApkRegistryEventsEvents { + /// 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 IBLSApkRegistryEventsEvents { + const NAME: &'static str = "IBLSApkRegistryEventsEvents"; + 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 IBLSApkRegistryEventsEvents { + 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 [`IBLSApkRegistryEvents`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryEventsInstance`) 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, + ) -> IBLSApkRegistryEventsInstance { + IBLSApkRegistryEventsInstance::::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>, + > { + IBLSApkRegistryEventsInstance::::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 { + IBLSApkRegistryEventsInstance::::deploy_builder(provider) + } + /**A [`IBLSApkRegistryEvents`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSApkRegistryEvents`](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 IBLSApkRegistryEventsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBLSApkRegistryEventsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSApkRegistryEventsInstance") + .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, + > IBLSApkRegistryEventsInstance + { + /**Creates a new wrapper around an on-chain [`IBLSApkRegistryEvents`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryEventsInstance`) 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 IBLSApkRegistryEventsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSApkRegistryEventsInstance { + IBLSApkRegistryEventsInstance { + 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, + > IBLSApkRegistryEventsInstance + { + /// 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, + > IBLSApkRegistryEventsInstance + { + /// 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/middleware/iblssignaturechecker.rs b/crates/utils/src/middleware/iblssignaturechecker.rs new file mode 100644 index 00000000..c139a78b --- /dev/null +++ b/crates/utils/src/middleware/iblssignaturechecker.rs @@ -0,0 +1,2553 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct StaleStakesForbiddenUpdate { + #[allow(missing_docs)] + pub value: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/idelegationmanager.rs b/crates/utils/src/middleware/idelegationmanager.rs new file mode 100644 index 00000000..b26a6328 --- /dev/null +++ b/crates/utils/src/middleware/idelegationmanager.rs @@ -0,0 +1,10523 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 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 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 setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) 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": "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": "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": "setMinWithdrawalDelayBlocks", + "inputs": [ + { + "name": "newMinWithdrawalDelayBlocks", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DELEGATION_APPROVAL_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct STAKER_DELEGATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateCurrentStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateDelegationApprovalDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateWithdrawalRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct cumulativeWithdrawalsQueuedReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decreaseDelegatedSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegateToReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegateToBySignatureReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegatedToReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationApproverSaltIsSpentReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSharesReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalDelayReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct increaseDelegatedSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isDelegatedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isOperatorReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksCall {} + ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyOperatorDetailsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorDetailsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct queueWithdrawalsReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerAsOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setMinWithdrawalDelayBlocks(uint256)` and selector `0x635bbd10`. + ```solidity + function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setMinWithdrawalDelayBlocksReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setStrategyWithdrawalDelayBlocks(address[],uint256[])` and selector `0x1522bf02`. + ```solidity + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWithdrawalDelayBlocksReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `stakerNonce(address)` and selector `0x29c77d4f`. + ```solidity + function stakerNonce(address staker) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerNonceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerOptOutWindowBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct undelegateReturn { + pub withdrawalRoot: + alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorMetadataURIReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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), + getDelegatableShares(getDelegatableSharesCall), + getOperatorShares(getOperatorSharesCall), + getWithdrawalDelay(getWithdrawalDelayCall), + increaseDelegatedShares(increaseDelegatedSharesCall), + isDelegated(isDelegatedCall), + isOperator(isOperatorCall), + minWithdrawalDelayBlocks(minWithdrawalDelayBlocksCall), + modifyOperatorDetails(modifyOperatorDetailsCall), + operatorDetails(operatorDetailsCall), + operatorShares(operatorSharesCall), + queueWithdrawals(queueWithdrawalsCall), + registerAsOperator(registerAsOperatorCall), + setMinWithdrawalDelayBlocks(setMinWithdrawalDelayBlocksCall), + setStrategyWithdrawalDelayBlocks(setStrategyWithdrawalDelayBlocksCall), + 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], + [21u8, 34u8, 191u8, 2u8], + [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], + [99u8, 91u8, 189u8, 16u8], + [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], + [207u8, 128u8, 135u8, 62u8], + [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 = 37usize; + #[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::getDelegatableShares(_) => { + ::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::setMinWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::setStrategyWithdrawalDelayBlocks(_) => { + ::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 setStrategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IDelegationManagerCalls::setStrategyWithdrawalDelayBlocks, + ) + } + setStrategyWithdrawalDelayBlocks + }, + { + 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 setMinWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IDelegationManagerCalls::setMinWithdrawalDelayBlocks) + } + setMinWithdrawalDelayBlocks + }, + { + 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 getDelegatableShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::getDelegatableShares) + } + getDelegatableShares + }, + { + 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::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::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::setMinWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStrategyWithdrawalDelayBlocks(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::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::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::setMinWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setStrategyWithdrawalDelayBlocks(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 [`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 [`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 [`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 [`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 [`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/middleware/ieigenpod.rs b/crates/utils/src/middleware/ieigenpod.rs new file mode 100644 index 00000000..622b7b12 --- /dev/null +++ b/crates/utils/src/middleware/ieigenpod.rs @@ -0,0 +1,7644 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BeaconChainProofs { + struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; } + struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; } + struct StateRootProof { bytes32 beaconStateRoot; bytes proof; } + struct ValidatorProof { bytes32[] validatorFields; bytes proof; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BeaconChainProofs { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BalanceContainerProof { + pub balanceContainerRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: BalanceContainerProof) -> Self { + (value.balanceContainerRoot, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for BalanceContainerProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + balanceContainerRoot: tuple.0, + proof: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for BalanceContainerProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for BalanceContainerProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.balanceContainerRoot), + ::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 BalanceContainerProof { + 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 BalanceContainerProof { + const NAME: &'static str = "BalanceContainerProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "BalanceContainerProof(bytes32 balanceContainerRoot,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.balanceContainerRoot, + ) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for BalanceContainerProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceContainerRoot, + ) + + ::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.balanceContainerRoot, + 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 BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BalanceProof { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + pub balanceRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + 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: BalanceProof) -> Self { + (value.pubkeyHash, value.balanceRoot, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for BalanceProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: tuple.0, + balanceRoot: tuple.1, + proof: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for BalanceProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for BalanceProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + as alloy_sol_types::SolType>::tokenize(&self.balanceRoot), + ::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 BalanceProof { + 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 BalanceProof { + const NAME: &'static str = "BalanceProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "BalanceProof(bytes32 pubkeyHash,bytes32 balanceRoot,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.pubkeyHash) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.balanceRoot) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for BalanceProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.pubkeyHash, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceRoot, + ) + + ::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.pubkeyHash, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.balanceRoot, + 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 StateRootProof { bytes32 beaconStateRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 ValidatorProof { bytes32[] validatorFields; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ValidatorProof { + pub validatorFields: + alloy::sol_types::private::Vec>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + 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: ValidatorProof) -> Self { + (value.validatorFields, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ValidatorProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorFields: tuple.0, + proof: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ValidatorProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ValidatorProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), + ::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 ValidatorProof { + 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 ValidatorProof { + const NAME: &'static str = "ValidatorProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ValidatorProof(bytes32[] validatorFields,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.validatorFields, + ) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ValidatorProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.validatorFields, + ) + + ::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.validatorFields, + 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)) + } + } + }; + 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 BalanceContainerProof { + bytes32 balanceContainerRoot; + bytes proof; + } + struct BalanceProof { + bytes32 pubkeyHash; + bytes32 balanceRoot; + bytes proof; + } + struct StateRootProof { + bytes32 beaconStateRoot; + bytes proof; + } + struct ValidatorProof { + bytes32[] validatorFields; + bytes proof; + } +} + +interface IEigenPod { + type VALIDATOR_STATUS is uint8; + struct Checkpoint { + bytes32 beaconBlockRoot; + uint24 proofsRemaining; + uint64 podBalanceGwei; + int128 balanceDeltasGwei; + } + struct ValidatorInfo { + uint64 validatorIndex; + uint64 restakedBalanceGwei; + uint64 lastCheckpointedAt; + VALIDATOR_STATUS status; + } + + event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount); + event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei); + event EigenPodStaked(bytes pubkey); + event NonBeaconChainETHReceived(uint256 amountReceived); + event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter); + event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount); + event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei); + event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + event ValidatorRestaked(uint40 validatorIndex); + event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + + function activeValidatorCount() external view returns (uint256); + function checkpointBalanceExitedGwei(uint64) external view returns (uint64); + function currentCheckpoint() external view returns (Checkpoint memory); + function currentCheckpointTimestamp() external view returns (uint64); + function eigenPodManager() external view returns (address); + function getParentBlockRoot(uint64 timestamp) external view returns (bytes32); + function initialize(address owner) external; + function lastCheckpointTimestamp() external view returns (uint64); + function podOwner() external view returns (address); + function proofSubmitter() external view returns (address); + function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external; + function setProofSubmitter(address newProofSubmitter) external; + function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + function startCheckpoint(bool revertIfNoBalance) external; + 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 verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external; + function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external; + function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) 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": "activeValidatorCount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "checkpointBalanceExitedGwei", + "inputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentCheckpoint", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.Checkpoint", + "components": [ + { + "name": "beaconBlockRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proofsRemaining", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "podBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "balanceDeltasGwei", + "type": "int128", + "internalType": "int128" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentCheckpointTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getParentBlockRoot", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "lastCheckpointTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "podOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proofSubmitter", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "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": "setProofSubmitter", + "inputs": [ + { + "name": "newProofSubmitter", + "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": "startCheckpoint", + "inputs": [ + { + "name": "revertIfNoBalance", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "lastCheckpointedAt", + "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": "lastCheckpointedAt", + "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": "verifyCheckpointProofs", + "inputs": [ + { + "name": "balanceContainerProof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.BalanceContainerProof", + "components": [ + { + "name": "balanceContainerRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "proofs", + "type": "tuple[]", + "internalType": "struct BeaconChainProofs.BalanceProof[]", + "components": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "balanceRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyStaleBalance", + "inputs": [ + { + "name": "beaconTimestamp", + "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": "proof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.ValidatorProof", + "components": [ + { + "name": "validatorFields", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyWithdrawalCredentials", + "inputs": [ + { + "name": "beaconTimestamp", + "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": "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": "CheckpointCreated", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "beaconBlockRoot", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "validatorCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "CheckpointFinalized", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "totalShareDeltaWei", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EigenPodStaked", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonBeaconChainETHReceived", + "inputs": [ + { + "name": "amountReceived", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProofSubmitterUpdated", + "inputs": [ + { + "name": "prevProofSubmitter", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newProofSubmitter", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "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": "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": "ValidatorCheckpointed", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "validatorIndex", + "type": "uint40", + "indexed": true, + "internalType": "uint40" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorRestaked", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorWithdrawn", + "inputs": [ + { + "name": "checkpointTimestamp", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "validatorIndex", + "type": "uint40", + "indexed": true, + "internalType": "uint40" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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 Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int128 balanceDeltasGwei; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Checkpoint { + pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>, + pub proofsRemaining: alloy::sol_types::private::primitives::aliases::U24, + pub podBalanceGwei: u64, + pub balanceDeltasGwei: i128, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<24>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Int<128>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U24, + u64, + i128, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Checkpoint) -> Self { + ( + value.beaconBlockRoot, + value.proofsRemaining, + value.podBalanceGwei, + value.balanceDeltasGwei, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Checkpoint { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconBlockRoot: tuple.0, + proofsRemaining: tuple.1, + podBalanceGwei: tuple.2, + balanceDeltasGwei: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Checkpoint { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Checkpoint { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.beaconBlockRoot), + as alloy_sol_types::SolType>::tokenize(&self.proofsRemaining), + as alloy_sol_types::SolType>::tokenize(&self.podBalanceGwei), + as alloy_sol_types::SolType>::tokenize(&self.balanceDeltasGwei), + ) + } + #[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 Checkpoint { + 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 Checkpoint { + const NAME: &'static str = "Checkpoint"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Checkpoint(bytes32 beaconBlockRoot,uint24 proofsRemaining,uint64 podBalanceGwei,int128 balanceDeltasGwei)", + ) + } + #[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.beaconBlockRoot, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.proofsRemaining, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.podBalanceGwei, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.balanceDeltasGwei, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Checkpoint { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.beaconBlockRoot, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.proofsRemaining, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.podBalanceGwei, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.balanceDeltasGwei, + ) + } + #[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.beaconBlockRoot, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.proofsRemaining, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.podBalanceGwei, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.balanceDeltasGwei, + 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 ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ValidatorInfo { + pub validatorIndex: u64, + pub restakedBalanceGwei: u64, + pub lastCheckpointedAt: u64, + pub status: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.lastCheckpointedAt, + value.status, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ValidatorInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorIndex: tuple.0, + restakedBalanceGwei: tuple.1, + lastCheckpointedAt: 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.lastCheckpointedAt, + ), + ::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 lastCheckpointedAt,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.lastCheckpointedAt, + ) + .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.lastCheckpointedAt, + ) + + ::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.lastCheckpointedAt, + 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 `CheckpointCreated(uint64,bytes32,uint256)` and selector `0x575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076`. + ```solidity + event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct CheckpointCreated { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub validatorCount: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for CheckpointCreated { + 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<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "CheckpointCreated(uint64,bytes32,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8, 164u8, + 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8, 244u8, 183u8, + 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + beaconBlockRoot: topics.2, + validatorCount: 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.validatorCount, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.clone(), + self.beaconBlockRoot.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.beaconBlockRoot); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for CheckpointCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&CheckpointCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &CheckpointCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `CheckpointFinalized(uint64,int256)` and selector `0x525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44`. + ```solidity + event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct CheckpointFinalized { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub totalShareDeltaWei: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for CheckpointFinalized { + 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::Uint<64>, + ); + const SIGNATURE: &'static str = "CheckpointFinalized(uint64,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8, 111u8, + 100u8, 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8, 59u8, 207u8, + 220u8, 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + totalShareDeltaWei: 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.totalShareDeltaWei, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.checkpointTimestamp.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.checkpointTimestamp, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for CheckpointFinalized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&CheckpointFinalized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &CheckpointFinalized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `EigenPodStaked(bytes)` and selector `0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23`. + ```solidity + event EigenPodStaked(bytes pubkey); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `NonBeaconChainETHReceived(uint256)` and selector `0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49`. + ```solidity + event NonBeaconChainETHReceived(uint256 amountReceived); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `ProofSubmitterUpdated(address,address)` and selector `0xfb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac`. + ```solidity + event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ProofSubmitterUpdated { + #[allow(missing_docs)] + pub prevProofSubmitter: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newProofSubmitter: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProofSubmitterUpdated { + 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 = "ProofSubmitterUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8, 186u8, + 37u8, 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8, 99u8, 205u8, + 202u8, 74u8, 150u8, 154u8, 209u8, 154u8, 94u8, 172u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevProofSubmitter: data.0, + newProofSubmitter: 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.prevProofSubmitter, + ), + ::tokenize( + &self.newProofSubmitter, + ), + ) + } + #[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 ProofSubmitterUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProofSubmitterUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ProofSubmitterUpdated) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `ValidatorCheckpointed(uint64,uint40)` and selector `0xa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f`. + ```solidity + event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ValidatorCheckpointed { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ValidatorCheckpointed { + 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<64>, + alloy::sol_types::sol_data::Uint<40>, + ); + const SIGNATURE: &'static str = "ValidatorCheckpointed(uint64,uint40)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8, 172u8, + 236u8, 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8, 245u8, 244u8, + 202u8, 227u8, 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + validatorIndex: 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.checkpointTimestamp.clone(), + self.validatorIndex.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ValidatorCheckpointed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ValidatorCheckpointed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ValidatorCheckpointed) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**Event with signature `ValidatorWithdrawn(uint64,uint40)` and selector `0x2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a`. + ```solidity + event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ValidatorWithdrawn { + #[allow(missing_docs)] + pub checkpointTimestamp: u64, + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ValidatorWithdrawn { + 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<64>, + alloy::sol_types::sol_data::Uint<40>, + ); + const SIGNATURE: &'static str = "ValidatorWithdrawn(uint64,uint40)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8, 44u8, + 35u8, 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8, 230u8, 86u8, + 62u8, 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + checkpointTimestamp: topics.1, + validatorIndex: 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.checkpointTimestamp.clone(), + self.validatorIndex.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.checkpointTimestamp, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ValidatorWithdrawn { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ValidatorWithdrawn> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ValidatorWithdrawn) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `activeValidatorCount()` and selector `0x2340e8d3`. + ```solidity + function activeValidatorCount() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct activeValidatorCountCall {} + ///Container type for the return parameters of the [`activeValidatorCount()`](activeValidatorCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct activeValidatorCountReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: activeValidatorCountCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activeValidatorCountCall { + 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: activeValidatorCountReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activeValidatorCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for activeValidatorCountCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = activeValidatorCountReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "activeValidatorCount()"; + const SELECTOR: [u8; 4] = [35u8, 64u8, 232u8, 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 `checkpointBalanceExitedGwei(uint64)` and selector `0x52396a59`. + ```solidity + function checkpointBalanceExitedGwei(uint64) external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkpointBalanceExitedGweiCall { + pub _0: u64, + } + ///Container type for the return parameters of the [`checkpointBalanceExitedGwei(uint64)`](checkpointBalanceExitedGweiCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkpointBalanceExitedGweiReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: checkpointBalanceExitedGweiCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkpointBalanceExitedGweiCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[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: checkpointBalanceExitedGweiReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkpointBalanceExitedGweiReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for checkpointBalanceExitedGweiCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = checkpointBalanceExitedGweiReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "checkpointBalanceExitedGwei(uint64)"; + const SELECTOR: [u8; 4] = [82u8, 57u8, 106u8, 89u8]; + #[inline] + fn new<'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 `currentCheckpoint()` and selector `0x47d28372`. + ```solidity + function currentCheckpoint() external view returns (Checkpoint memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointCall {} + ///Container type for the return parameters of the [`currentCheckpoint()`](currentCheckpointCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Checkpoint,); + #[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: currentCheckpointReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentCheckpointCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentCheckpointReturn; + type ReturnTuple<'a> = (Checkpoint,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentCheckpoint()"; + const SELECTOR: [u8; 4] = [71u8, 210u8, 131u8, 114u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `currentCheckpointTimestamp()` and selector `0x42ecff2a`. + ```solidity + function currentCheckpointTimestamp() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointTimestampCall {} + ///Container type for the return parameters of the [`currentCheckpointTimestamp()`](currentCheckpointTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentCheckpointTimestampReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentCheckpointTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointTimestampCall { + 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: currentCheckpointTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentCheckpointTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentCheckpointTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentCheckpointTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentCheckpointTimestamp()"; + const SELECTOR: [u8; 4] = [66u8, 236u8, 255u8, 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 `eigenPodManager()` and selector `0x4665bcda`. + ```solidity + function eigenPodManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `getParentBlockRoot(uint64)` and selector `0x6c0d2d5a`. + ```solidity + function getParentBlockRoot(uint64 timestamp) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getParentBlockRootCall { + pub timestamp: u64, + } + ///Container type for the return parameters of the [`getParentBlockRoot(uint64)`](getParentBlockRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getParentBlockRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getParentBlockRootCall) -> Self { + (value.timestamp,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getParentBlockRootCall { + 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: getParentBlockRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getParentBlockRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getParentBlockRootCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getParentBlockRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getParentBlockRoot(uint64)"; + const SELECTOR: [u8; 4] = [108u8, 13u8, 45u8, 90u8]; + #[inline] + fn new<'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 `initialize(address)` and selector `0xc4d66de8`. + ```solidity + function initialize(address owner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `lastCheckpointTimestamp()` and selector `0xee94d67c`. + ```solidity + function lastCheckpointTimestamp() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct lastCheckpointTimestampCall {} + ///Container type for the return parameters of the [`lastCheckpointTimestamp()`](lastCheckpointTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct lastCheckpointTimestampReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastCheckpointTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastCheckpointTimestampCall { + 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: lastCheckpointTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastCheckpointTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for lastCheckpointTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = lastCheckpointTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "lastCheckpointTimestamp()"; + const SELECTOR: [u8; 4] = [238u8, 148u8, 214u8, 124u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerCall {} + ///Container type for the return parameters of the [`podOwner()`](podOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `proofSubmitter()` and selector `0x58753357`. + ```solidity + function proofSubmitter() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proofSubmitterCall {} + ///Container type for the return parameters of the [`proofSubmitter()`](proofSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proofSubmitterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proofSubmitterCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proofSubmitterCall { + 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: proofSubmitterReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proofSubmitterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for proofSubmitterCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = proofSubmitterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "proofSubmitter()"; + const SELECTOR: [u8; 4] = [88u8, 117u8, 51u8, 87u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recoverTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setProofSubmitter(address)` and selector `0xd06d5587`. + ```solidity + function setProofSubmitter(address newProofSubmitter) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setProofSubmitterCall { + pub newProofSubmitter: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProofSubmitter(address)`](setProofSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setProofSubmitterReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setProofSubmitterCall) -> Self { + (value.newProofSubmitter,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setProofSubmitterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newProofSubmitter: 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: setProofSubmitterReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setProofSubmitterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProofSubmitterCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProofSubmitterReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProofSubmitter(address)"; + const SELECTOR: [u8; 4] = [208u8, 109u8, 85u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newProofSubmitter, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `startCheckpoint(bool)` and selector `0x88676cad`. + ```solidity + function startCheckpoint(bool revertIfNoBalance) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct startCheckpointCall { + pub revertIfNoBalance: bool, + } + ///Container type for the return parameters of the [`startCheckpoint(bool)`](startCheckpointCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct startCheckpointReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: startCheckpointCall) -> Self { + (value.revertIfNoBalance,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for startCheckpointCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + revertIfNoBalance: 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: startCheckpointReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for startCheckpointReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for startCheckpointCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bool,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = startCheckpointReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "startCheckpoint(bool)"; + const SELECTOR: [u8; 4] = [136u8, 103u8, 108u8, 173u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.revertIfNoBalance, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorPubkeyHashToInfoReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorPubkeyToInfoReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorStatus_0Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct validatorStatus_1Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])` and selector `0xf074ba62`. + ```solidity + function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyCheckpointProofsCall { + pub balanceContainerProof: + ::RustType, + pub proofs: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])`](verifyCheckpointProofsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyCheckpointProofsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + BeaconChainProofs::BalanceContainerProof, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + 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: verifyCheckpointProofsCall) -> Self { + (value.balanceContainerProof, value.proofs) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyCheckpointProofsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + balanceContainerProof: tuple.0, + proofs: 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: verifyCheckpointProofsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyCheckpointProofsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyCheckpointProofsCall { + type Parameters<'a> = ( + BeaconChainProofs::BalanceContainerProof, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyCheckpointProofsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])"; + const SELECTOR: [u8; 4] = [240u8, 116u8, 186u8, 98u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.balanceContainerProof, + ), + as alloy_sol_types::SolType>::tokenize(&self.proofs), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))` and selector `0x039157d2`. + ```solidity + function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyStaleBalanceCall { + pub beaconTimestamp: u64, + pub stateRootProof: + ::RustType, + pub proof: ::RustType, + } + ///Container type for the return parameters of the [`verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))`](verifyStaleBalanceCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyStaleBalanceReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + BeaconChainProofs::ValidatorProof, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + ::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: verifyStaleBalanceCall) -> Self { + (value.beaconTimestamp, value.stateRootProof, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyStaleBalanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconTimestamp: tuple.0, + stateRootProof: tuple.1, + proof: 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: verifyStaleBalanceReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyStaleBalanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyStaleBalanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + BeaconChainProofs::ValidatorProof, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyStaleBalanceReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))"; + const SELECTOR: [u8; 4] = [3u8, 145u8, 87u8, 210u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.beaconTimestamp, + ), + ::tokenize( + &self.stateRootProof, + ), + ::tokenize( + &self.proof, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyWithdrawalCredentialsCall { + pub beaconTimestamp: u64, + pub stateRootProof: + ::RustType, + pub validatorIndices: + alloy::sol_types::private::Vec, + 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 [`verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])`](verifyWithdrawalCredentialsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct verifyWithdrawalCredentialsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.beaconTimestamp, + value.stateRootProof, + value.validatorIndices, + value.validatorFieldsProofs, + value.validatorFields, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyWithdrawalCredentialsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconTimestamp: tuple.0, + stateRootProof: tuple.1, + validatorIndices: 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: 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.beaconTimestamp), + ::tokenize( + &self.stateRootProof, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorIndices), + 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 `withdrawRestakedBeaconChainETH(address,uint256)` and selector `0xc4907442`. + ```solidity + function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawRestakedBeaconChainETHReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawableRestakedExecutionLayerGweiCall {} + ///Container type for the return parameters of the [`withdrawableRestakedExecutionLayerGwei()`](withdrawableRestakedExecutionLayerGweiCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawableRestakedExecutionLayerGweiReturn { + pub _0: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 { + activeValidatorCount(activeValidatorCountCall), + checkpointBalanceExitedGwei(checkpointBalanceExitedGweiCall), + currentCheckpoint(currentCheckpointCall), + currentCheckpointTimestamp(currentCheckpointTimestampCall), + eigenPodManager(eigenPodManagerCall), + getParentBlockRoot(getParentBlockRootCall), + initialize(initializeCall), + lastCheckpointTimestamp(lastCheckpointTimestampCall), + podOwner(podOwnerCall), + proofSubmitter(proofSubmitterCall), + recoverTokens(recoverTokensCall), + setProofSubmitter(setProofSubmitterCall), + stake(stakeCall), + startCheckpoint(startCheckpointCall), + validatorPubkeyHashToInfo(validatorPubkeyHashToInfoCall), + validatorPubkeyToInfo(validatorPubkeyToInfoCall), + validatorStatus_0(validatorStatus_0Call), + validatorStatus_1(validatorStatus_1Call), + verifyCheckpointProofs(verifyCheckpointProofsCall), + verifyStaleBalance(verifyStaleBalanceCall), + verifyWithdrawalCredentials(verifyWithdrawalCredentialsCall), + 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]] = &[ + [3u8, 145u8, 87u8, 210u8], + [11u8, 24u8, 255u8, 102u8], + [35u8, 64u8, 232u8, 211u8], + [52u8, 116u8, 170u8, 22u8], + [63u8, 101u8, 207u8, 25u8], + [66u8, 236u8, 255u8, 42u8], + [70u8, 101u8, 188u8, 218u8], + [71u8, 210u8, 131u8, 114u8], + [82u8, 57u8, 106u8, 89u8], + [88u8, 117u8, 51u8, 87u8], + [88u8, 234u8, 238u8, 121u8], + [108u8, 13u8, 45u8, 90u8], + [111u8, 205u8, 14u8, 83u8], + [116u8, 57u8, 132u8, 31u8], + [136u8, 103u8, 108u8, 173u8], + [155u8, 78u8, 70u8, 52u8], + [181u8, 34u8, 83u8, 138u8], + [196u8, 144u8, 116u8, 66u8], + [196u8, 214u8, 109u8, 232u8], + [208u8, 109u8, 85u8, 135u8], + [221u8, 163u8, 52u8, 108u8], + [238u8, 148u8, 214u8, 124u8], + [240u8, 116u8, 186u8, 98u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IEigenPodCalls { + const NAME: &'static str = "IEigenPodCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 23usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::activeValidatorCount(_) => { + ::SELECTOR + } + Self::checkpointBalanceExitedGwei(_) => { + ::SELECTOR + } + Self::currentCheckpoint(_) => { + ::SELECTOR + } + Self::currentCheckpointTimestamp(_) => { + ::SELECTOR + } + Self::eigenPodManager(_) => { + ::SELECTOR + } + Self::getParentBlockRoot(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::lastCheckpointTimestamp(_) => { + ::SELECTOR + } + Self::podOwner(_) => ::SELECTOR, + Self::proofSubmitter(_) => { + ::SELECTOR + } + Self::recoverTokens(_) => { + ::SELECTOR + } + Self::setProofSubmitter(_) => { + ::SELECTOR + } + Self::stake(_) => ::SELECTOR, + Self::startCheckpoint(_) => { + ::SELECTOR + } + Self::validatorPubkeyHashToInfo(_) => { + ::SELECTOR + } + Self::validatorPubkeyToInfo(_) => { + ::SELECTOR + } + Self::validatorStatus_0(_) => { + ::SELECTOR + } + Self::validatorStatus_1(_) => { + ::SELECTOR + } + Self::verifyCheckpointProofs(_) => { + ::SELECTOR + } + Self::verifyStaleBalance(_) => { + ::SELECTOR + } + Self::verifyWithdrawalCredentials(_) => { + ::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 verifyStaleBalance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::verifyStaleBalance) + } + verifyStaleBalance + }, + { + fn podOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodCalls::podOwner) + } + podOwner + }, + { + fn activeValidatorCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::activeValidatorCount) + } + activeValidatorCount + }, + { + fn withdrawableRestakedExecutionLayerGwei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::withdrawableRestakedExecutionLayerGwei) + } + withdrawableRestakedExecutionLayerGwei + }, + { + fn verifyWithdrawalCredentials( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::verifyWithdrawalCredentials) + } + verifyWithdrawalCredentials + }, + { + fn currentCheckpointTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::currentCheckpointTimestamp) + } + currentCheckpointTimestamp + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn currentCheckpoint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::currentCheckpoint) + } + currentCheckpoint + }, + { + fn checkpointBalanceExitedGwei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::checkpointBalanceExitedGwei) + } + checkpointBalanceExitedGwei + }, + { + fn proofSubmitter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::proofSubmitter) + } + proofSubmitter + }, + { + fn validatorStatus_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::validatorStatus_0) + } + validatorStatus_0 + }, + { + fn getParentBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::getParentBlockRoot) + } + getParentBlockRoot + }, + { + 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 startCheckpoint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::startCheckpoint) + } + startCheckpoint + }, + { + fn stake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodCalls::stake) + } + stake + }, + { + fn validatorPubkeyToInfo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::validatorPubkeyToInfo) + } + validatorPubkeyToInfo + }, + { + 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 setProofSubmitter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::setProofSubmitter) + } + setProofSubmitter + }, + { + fn recoverTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::recoverTokens) + } + recoverTokens + }, + { + fn lastCheckpointTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::lastCheckpointTimestamp) + } + lastCheckpointTimestamp + }, + { + fn verifyCheckpointProofs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::verifyCheckpointProofs) + } + verifyCheckpointProofs + }, + ]; + 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::activeValidatorCount(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::checkpointBalanceExitedGwei(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentCheckpoint(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentCheckpointTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getParentBlockRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::lastCheckpointTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::podOwner(inner) => { + ::abi_encoded_size(inner) + } + Self::proofSubmitter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recoverTokens(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setProofSubmitter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stake(inner) => { + ::abi_encoded_size(inner) + } + Self::startCheckpoint(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::verifyCheckpointProofs(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyStaleBalance(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyWithdrawalCredentials(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::activeValidatorCount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::checkpointBalanceExitedGwei(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currentCheckpoint(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currentCheckpointTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getParentBlockRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::lastCheckpointTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::podOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::proofSubmitter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recoverTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setProofSubmitter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stake(inner) => { + ::abi_encode_raw(inner, out) + } + Self::startCheckpoint(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::verifyCheckpointProofs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyStaleBalance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyWithdrawalCredentials(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 { + CheckpointCreated(CheckpointCreated), + CheckpointFinalized(CheckpointFinalized), + EigenPodStaked(EigenPodStaked), + NonBeaconChainETHReceived(NonBeaconChainETHReceived), + ProofSubmitterUpdated(ProofSubmitterUpdated), + RestakedBeaconChainETHWithdrawn(RestakedBeaconChainETHWithdrawn), + ValidatorBalanceUpdated(ValidatorBalanceUpdated), + ValidatorCheckpointed(ValidatorCheckpointed), + ValidatorRestaked(ValidatorRestaked), + ValidatorWithdrawn(ValidatorWithdrawn), + } + #[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, + ], + [ + 42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8, 44u8, 35u8, + 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8, 230u8, 86u8, 62u8, + 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8, + ], + [ + 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, + ], + [ + 82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8, 111u8, 100u8, + 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8, 59u8, 207u8, 220u8, + 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8, + ], + [ + 87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8, 164u8, + 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8, 244u8, 183u8, + 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8, + ], + [ + 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, + ], + [ + 169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8, 172u8, 236u8, + 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8, 245u8, 244u8, 202u8, 227u8, + 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8, + ], + [ + 251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8, 186u8, 37u8, + 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8, 99u8, 205u8, 202u8, 74u8, + 150u8, 154u8, 209u8, 154u8, 94u8, 172u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IEigenPodEvents { + const NAME: &'static str = "IEigenPodEvents"; + 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::CheckpointCreated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::CheckpointFinalized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EigenPodStaked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::NonBeaconChainETHReceived) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ProofSubmitterUpdated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RestakedBeaconChainETHWithdrawn) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorBalanceUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorCheckpointed) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorRestaked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorWithdrawn) + } + _ => 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::CheckpointCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::CheckpointFinalized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::EigenPodStaked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NonBeaconChainETHReceived(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProofSubmitterUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RestakedBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorBalanceUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorCheckpointed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorRestaked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::CheckpointCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::CheckpointFinalized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::EigenPodStaked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NonBeaconChainETHReceived(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProofSubmitterUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RestakedBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorBalanceUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorCheckpointed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorRestaked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorWithdrawn(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 [`activeValidatorCount`] function. + pub fn activeValidatorCount( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&activeValidatorCountCall {}) + } + ///Creates a new call builder for the [`checkpointBalanceExitedGwei`] function. + pub fn checkpointBalanceExitedGwei( + &self, + _0: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&checkpointBalanceExitedGweiCall { _0 }) + } + ///Creates a new call builder for the [`currentCheckpoint`] function. + pub fn currentCheckpoint( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tCheckpointCall {}) + } + ///Creates a new call builder for the [`currentCheckpointTimestamp`] function. + pub fn currentCheckpointTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tCheckpointTimestampCall {}) + } + ///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 [`getParentBlockRoot`] function. + pub fn getParentBlockRoot( + &self, + timestamp: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getParentBlockRootCall { timestamp }) + } + ///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 [`lastCheckpointTimestamp`] function. + pub fn lastCheckpointTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&lastCheckpointTimestampCall {}) + } + ///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 [`proofSubmitter`] function. + pub fn proofSubmitter( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&proofSubmitterCall {}) + } + ///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 [`setProofSubmitter`] function. + pub fn setProofSubmitter( + &self, + newProofSubmitter: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setProofSubmitterCall { newProofSubmitter }) + } + ///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 [`startCheckpoint`] function. + pub fn startCheckpoint( + &self, + revertIfNoBalance: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&startCheckpointCall { revertIfNoBalance }) + } + ///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 [`verifyCheckpointProofs`] function. + pub fn verifyCheckpointProofs( + &self, + balanceContainerProof: ::RustType, + proofs: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyCheckpointProofsCall { + balanceContainerProof, + proofs, + }) + } + ///Creates a new call builder for the [`verifyStaleBalance`] function. + pub fn verifyStaleBalance( + &self, + beaconTimestamp: u64, + stateRootProof: ::RustType, + proof: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyStaleBalanceCall { + beaconTimestamp, + stateRootProof, + proof, + }) + } + ///Creates a new call builder for the [`verifyWithdrawalCredentials`] function. + pub fn verifyWithdrawalCredentials( + &self, + beaconTimestamp: u64, + stateRootProof: ::RustType, + validatorIndices: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U40, + >, + validatorFieldsProofs: alloy::sol_types::private::Vec, + validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyWithdrawalCredentialsCall { + beaconTimestamp, + stateRootProof, + validatorIndices, + validatorFieldsProofs, + validatorFields, + }) + } + ///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 [`CheckpointCreated`] event. + pub fn CheckpointCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`CheckpointFinalized`] event. + pub fn CheckpointFinalized_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///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 [`NonBeaconChainETHReceived`] event. + pub fn NonBeaconChainETHReceived_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProofSubmitterUpdated`] event. + pub fn ProofSubmitterUpdated_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 [`ValidatorBalanceUpdated`] event. + pub fn ValidatorBalanceUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ValidatorCheckpointed`] event. + pub fn ValidatorCheckpointed_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::() + } + ///Creates a new event filter for the [`ValidatorWithdrawn`] event. + pub fn ValidatorWithdrawn_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/ieigenpodmanager.rs b/crates/utils/src/middleware/ieigenpodmanager.rs new file mode 100644 index 00000000..ced323a6 --- /dev/null +++ b/crates/utils/src/middleware/ieigenpodmanager.rs @@ -0,0 +1,5407 @@ +/** + +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 NewTotalShares(address indexed podOwner, int256 newTotalShares); + 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 createPod() external returns (address); + function eigenPodBeacon() external view returns (address); + function ethPOS() external view returns (address); + 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 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 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": "createPod", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "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": "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": "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": "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": "NewTotalShares", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newTotalShares", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `NewTotalShares(address,int256)` and selector `0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098`. + ```solidity + event NewTotalShares(address indexed podOwner, int256 newTotalShares); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct NewTotalShares { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newTotalShares: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NewTotalShares { + 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 = "NewTotalShares(address,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, + 154u8, 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, + 67u8, 46u8, 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + podOwner: topics.1, + newTotalShares: 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.newTotalShares, + ), + ) + } + #[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 NewTotalShares { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NewTotalShares> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NewTotalShares) -> 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `createPod()` and selector `0x84d81062`. + ```solidity + function createPod() external returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createPodCall {} + ///Container type for the return parameters of the [`createPod()`](createPodCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `eigenPodBeacon()` and selector `0x292b7b2b`. + ```solidity + function eigenPodBeacon() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodBeaconCall {} + ///Container type for the return parameters of the [`eigenPodBeacon()`](eigenPodBeaconCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodBeaconReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSCall {} + ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ethPOSReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `getPod(address)` and selector `0xa38406a3`. + ```solidity + function getPod(address podOwner) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct hasPodReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numPodsCall {} + ///Container type for the return parameters of the [`numPods()`](numPodsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numPodsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerToPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct podOwnerSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)` and selector `0x387b1300`. + ```solidity + function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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), + createPod(createPodCall), + eigenPodBeacon(eigenPodBeaconCall), + ethPOS(ethPOSCall), + 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), + setPauserRegistry(setPauserRegistryCall), + slasher(slasherCall), + stake(stakeCall), + strategyManager(strategyManagerCall), + unpause(unpauseCall), + 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], + [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], + [194u8, 197u8, 28u8, 64u8], + [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 = 23usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::addShares(_) => ::SELECTOR, + Self::beaconChainETHStrategy(_) => { + ::SELECTOR + } + Self::createPod(_) => ::SELECTOR, + Self::eigenPodBeacon(_) => { + ::SELECTOR + } + Self::ethPOS(_) => ::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::setPauserRegistry(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stake(_) => ::SELECTOR, + Self::strategyManager(_) => { + ::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 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 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 recordBeaconChainETHBalanceUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IEigenPodManagerCalls::recordBeaconChainETHBalanceUpdate, + ) + } + recordBeaconChainETHBalanceUpdate + }, + { + 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::createPod(inner) => { + ::abi_encoded_size(inner) + } + Self::eigenPodBeacon(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ethPOS(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::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::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::createPod(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodBeacon(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ethPOS(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::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::withdrawSharesAsTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IEigenPodManager`](self) events. + pub enum IEigenPodManagerEvents { + BeaconChainETHDeposited(BeaconChainETHDeposited), + BeaconChainETHWithdrawalCompleted(BeaconChainETHWithdrawalCompleted), + NewTotalShares(NewTotalShares), + 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]] = &[ + [ + 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, + ], + [ + 212u8, 222u8, 247u8, 109u8, 109u8, 43u8, 237u8, 111u8, 20u8, 213u8, 205u8, 154u8, + 247u8, 60u8, 194u8, 145u8, 61u8, 97u8, 141u8, 0u8, 237u8, 222u8, 66u8, 67u8, 46u8, + 129u8, 192u8, 155u8, 254u8, 7u8, 112u8, 152u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IEigenPodManagerEvents { + const NAME: &'static str = "IEigenPodManagerEvents"; + const COUNT: usize = 8usize; + 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::NewTotalShares) + } + 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::NewTotalShares(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::NewTotalShares(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 [`createPod`] function. + pub fn createPod(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&createPodCall {}) + } + ///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 [`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 [`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 [`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 [`NewTotalShares`] event. + pub fn NewTotalShares_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/ibeaconchainoracle.rs b/crates/utils/src/middleware/ierc1271.rs similarity index 66% rename from crates/utils/src/ibeaconchainoracle.rs rename to crates/utils/src/middleware/ierc1271.rs index be9ab570..a99f1be2 100644 --- a/crates/utils/src/ibeaconchainoracle.rs +++ b/crates/utils/src/middleware/ierc1271.rs @@ -2,8 +2,8 @@ Generated by the following Solidity interface... ```solidity -interface IBeaconChainOracle { - function timestampToBlockRoot(uint256 timestamp) external view returns (bytes32); +interface IERC1271 { + function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); } ``` @@ -12,27 +12,37 @@ interface IBeaconChainOracle { [ { "type": "function", - "name": "timestampToBlockRoot", + "name": "isValidSignature", "inputs": [ { - "name": "timestamp", - "type": "uint256", - "internalType": "uint256" + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" } ], "outputs": [ { - "name": "", - "type": "bytes32", - "internalType": "bytes32" + "name": "magicValue", + "type": "bytes4", + "internalType": "bytes4" } ], "stateMutability": "view" } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] -pub mod IBeaconChainOracle { +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IERC1271 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. @@ -55,29 +65,41 @@ pub mod IBeaconChainOracle { 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`. + /**Function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e`. ```solidity - function timestampToBlockRoot(uint256 timestamp) external view returns (bytes32); + function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct timestampToBlockRootCall { - pub timestamp: alloy::sol_types::private::primitives::aliases::U256, + 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 [`timestampToBlockRoot(uint256)`](timestampToBlockRootCall) function. - #[allow(non_camel_case_types, non_snake_case)] + ///Container type for the return parameters of the [`isValidSignature(bytes32,bytes)`](isValidSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct timestampToBlockRootReturn { - pub _0: alloy::sol_types::private::FixedBytes<32>, + pub struct isValidSignatureReturn { + pub magicValue: alloy::sol_types::private::FixedBytes<4>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + 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::primitives::aliases::U256,); + 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) { @@ -89,24 +111,27 @@ pub mod IBeaconChainOracle { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: timestampToBlockRootCall) -> Self { - (value.timestamp,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureCall) -> Self { + (value.hash, value.signature) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for timestampToBlockRootCall { + impl ::core::convert::From> for isValidSignatureCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { timestamp: tuple.0 } + Self { + hash: tuple.0, + signature: tuple.1, + } } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + 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) { @@ -118,28 +143,33 @@ pub mod IBeaconChainOracle { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: timestampToBlockRootReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureReturn) -> Self { + (value.magicValue,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for timestampToBlockRootReturn { + impl ::core::convert::From> for isValidSignatureReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self { + magicValue: tuple.0, + } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for timestampToBlockRootCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + 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 = timestampToBlockRootReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + 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 = "timestampToBlockRoot(uint256)"; - const SELECTOR: [u8; 4] = [100u8, 53u8, 153u8, 242u8]; + 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, @@ -149,8 +179,11 @@ pub mod IBeaconChainOracle { #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - as alloy_sol_types::SolType>::tokenize( - &self.timestamp, + as alloy_sol_types::SolType>::tokenize(&self.hash), + ::tokenize( + &self.signature, ), ) } @@ -166,30 +199,30 @@ pub mod IBeaconChainOracle { } } }; - ///Container for all the [`IBeaconChainOracle`](self) function calls. - pub enum IBeaconChainOracleCalls { - timestampToBlockRoot(timestampToBlockRootCall), + ///Container for all the [`IERC1271`](self) function calls. + pub enum IERC1271Calls { + isValidSignature(isValidSignatureCall), } #[automatically_derived] - impl IBeaconChainOracleCalls { + 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]] = &[[100u8, 53u8, 153u8, 242u8]]; + pub const SELECTORS: &'static [[u8; 4usize]] = &[[22u8, 38u8, 186u8, 126u8]]; } #[automatically_derived] - impl alloy_sol_types::SolInterface for IBeaconChainOracleCalls { - const NAME: &'static str = "IBeaconChainOracleCalls"; - const MIN_DATA_LENGTH: usize = 32usize; + 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::timestampToBlockRoot(_) => { - ::SELECTOR + Self::isValidSignature(_) => { + ::SELECTOR } } } @@ -208,22 +241,19 @@ pub mod IBeaconChainOracle { 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 - }]; + 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, @@ -235,26 +265,24 @@ pub mod IBeaconChainOracle { #[inline] fn abi_encoded_size(&self) -> usize { match self { - Self::timestampToBlockRoot(inner) => { - ::abi_encoded_size(inner) + Self::isValidSignature(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, - ) + Self::isValidSignature(inner) => { + ::abi_encode_raw(inner, out) } } } } use alloy::contract as alloy_contract; - /**Creates a new wrapper around an on-chain [`IBeaconChainOracle`](self) contract instance. + /**Creates a new wrapper around an on-chain [`IERC1271`](self) contract instance. - See the [wrapper's documentation](`IBeaconChainOracleInstance`) for more details.*/ + See the [wrapper's documentation](`IERC1271Instance`) for more details.*/ #[inline] pub const fn new< T: alloy_contract::private::Transport + ::core::clone::Clone, @@ -263,8 +291,8 @@ pub mod IBeaconChainOracle { >( address: alloy_sol_types::private::Address, provider: P, - ) -> IBeaconChainOracleInstance { - IBeaconChainOracleInstance::::new(address, provider) + ) -> IERC1271Instance { + IERC1271Instance::::new(address, provider) } /**Deploys this contract using the given `provider` and constructor arguments, if any. @@ -278,9 +306,9 @@ pub mod IBeaconChainOracle { N: alloy_contract::private::Network, >( provider: P, - ) -> impl ::core::future::Future>> + ) -> impl ::core::future::Future>> { - IBeaconChainOracleInstance::::deploy(provider) + IERC1271Instance::::deploy(provider) } /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` and constructor arguments, if any. @@ -295,12 +323,12 @@ pub mod IBeaconChainOracle { >( provider: P, ) -> alloy_contract::RawCallBuilder { - IBeaconChainOracleInstance::::deploy_builder(provider) + IERC1271Instance::::deploy_builder(provider) } - /**A [`IBeaconChainOracle`](self) instance. + /**A [`IERC1271`](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 + [`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!) @@ -309,16 +337,16 @@ pub mod IBeaconChainOracle { See the [module-level documentation](self) for all the available methods.*/ #[derive(Clone)] - pub struct IBeaconChainOracleInstance { + 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 IBeaconChainOracleInstance { + impl ::core::fmt::Debug for IERC1271Instance { #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple("IBeaconChainOracleInstance") + f.debug_tuple("IERC1271Instance") .field(&self.address) .finish() } @@ -329,11 +357,11 @@ pub mod IBeaconChainOracle { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IBeaconChainOracleInstance + > IERC1271Instance { - /**Creates a new wrapper around an on-chain [`IBeaconChainOracle`](self) contract instance. + /**Creates a new wrapper around an on-chain [`IERC1271`](self) contract instance. - See the [wrapper's documentation](`IBeaconChainOracleInstance`) for more details.*/ + See the [wrapper's documentation](`IERC1271Instance`) for more details.*/ #[inline] pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { Self { @@ -348,9 +376,7 @@ pub mod IBeaconChainOracle { For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ #[inline] - pub async fn deploy( - provider: P, - ) -> alloy_contract::Result> { + 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)) @@ -388,11 +414,11 @@ pub mod IBeaconChainOracle { &self.provider } } - impl IBeaconChainOracleInstance { + impl IERC1271Instance { /// Clones the provider and returns a new instance with the cloned provider. #[inline] - pub fn with_cloned_provider(self) -> IBeaconChainOracleInstance { - IBeaconChainOracleInstance { + pub fn with_cloned_provider(self) -> IERC1271Instance { + IERC1271Instance { address: self.address, provider: ::core::clone::Clone::clone(&self.provider), _network_transport: ::core::marker::PhantomData, @@ -405,7 +431,7 @@ pub mod IBeaconChainOracle { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IBeaconChainOracleInstance + > IERC1271Instance { /// Creates a new call builder using this contract instance's provider and address. /// @@ -417,12 +443,13 @@ pub mod IBeaconChainOracle { ) -> 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( + ///Creates a new call builder for the [`isValidSignature`] function. + pub fn isValidSignature( &self, - timestamp: alloy::sol_types::private::primitives::aliases::U256, - ) -> alloy_contract::SolCallBuilder { - self.call_builder(×tampToBlockRootCall { timestamp }) + hash: alloy::sol_types::private::FixedBytes<32>, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isValidSignatureCall { hash, signature }) } } /// Event filters. @@ -431,7 +458,7 @@ pub mod IBeaconChainOracle { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > IBeaconChainOracleInstance + > IERC1271Instance { /// Creates a new event filter using this contract instance's provider and address. /// diff --git a/crates/utils/src/ierc1271upgradeable.rs b/crates/utils/src/middleware/ierc1271upgradeable.rs similarity index 97% rename from crates/utils/src/ierc1271upgradeable.rs rename to crates/utils/src/middleware/ierc1271upgradeable.rs index f26e6537..79d55762 100644 --- a/crates/utils/src/ierc1271upgradeable.rs +++ b/crates/utils/src/middleware/ierc1271upgradeable.rs @@ -36,7 +36,12 @@ interface IERC1271Upgradeable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IERC1271Upgradeable { use super::*; use alloy::sol_types as alloy_sol_types; @@ -64,19 +69,24 @@ pub mod IERC1271Upgradeable { ```solidity function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isValidSignatureReturn { pub magicValue: alloy::sol_types::private::FixedBytes<4>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/ierc1822proxiable.rs b/crates/utils/src/middleware/ierc1822proxiable.rs new file mode 100644 index 00000000..ba5622c4 --- /dev/null +++ b/crates/utils/src/middleware/ierc1822proxiable.rs @@ -0,0 +1,435 @@ +/** + +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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxiableUUIDCall {} + ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxiableUUIDReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/ierc20.rs b/crates/utils/src/middleware/ierc20.rs new file mode 100644 index 00000000..a24ced03 --- /dev/null +++ b/crates/utils/src/middleware/ierc20.rs @@ -0,0 +1,1724 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/ierc20metadata.rs b/crates/utils/src/middleware/ierc20metadata.rs new file mode 100644 index 00000000..42110a5f --- /dev/null +++ b/crates/utils/src/middleware/ierc20metadata.rs @@ -0,0 +1,2172 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/ierc20permit.rs b/crates/utils/src/middleware/ierc20permit.rs new file mode 100644 index 00000000..2f1ddda8 --- /dev/null +++ b/crates/utils/src/middleware/ierc20permit.rs @@ -0,0 +1,868 @@ +/** + +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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct noncesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct permitReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/iethposdeposit.rs b/crates/utils/src/middleware/iethposdeposit.rs new file mode 100644 index 00000000..5630fd24 --- /dev/null +++ b/crates/utils/src/middleware/iethposdeposit.rs @@ -0,0 +1,1048 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct get_deposit_countReturn { + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct get_deposit_rootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/iindexregistry.rs b/crates/utils/src/middleware/iindexregistry.rs new file mode 100644 index 00000000..af8f3158 --- /dev/null +++ b/crates/utils/src/middleware/iindexregistry.rs @@ -0,0 +1,2780 @@ +/** + +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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct QuorumUpdate { + pub fromBlockNumber: u32, + pub numOperators: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/iindexregistryevents.rs b/crates/utils/src/middleware/iindexregistryevents.rs new file mode 100644 index 00000000..5be380b5 --- /dev/null +++ b/crates/utils/src/middleware/iindexregistryevents.rs @@ -0,0 +1,442 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IIndexRegistryEvents { + event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "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::pub_underscore_fields, + clippy::style +)] +pub mod IIndexRegistryEvents { + 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 `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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + ///Container for all the [`IIndexRegistryEvents`](self) events. + pub enum IIndexRegistryEventsEvents { + QuorumIndexUpdate(QuorumIndexUpdate), + } + #[automatically_derived] + impl IIndexRegistryEventsEvents { + /// 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 IIndexRegistryEventsEvents { + const NAME: &'static str = "IIndexRegistryEventsEvents"; + 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 IIndexRegistryEventsEvents { + 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 [`IIndexRegistryEvents`](self) contract instance. + + See the [wrapper's documentation](`IIndexRegistryEventsInstance`) 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, + ) -> IIndexRegistryEventsInstance { + IIndexRegistryEventsInstance::::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>, + > { + IIndexRegistryEventsInstance::::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 { + IIndexRegistryEventsInstance::::deploy_builder(provider) + } + /**A [`IIndexRegistryEvents`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IIndexRegistryEvents`](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 IIndexRegistryEventsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IIndexRegistryEventsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IIndexRegistryEventsInstance") + .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, + > IIndexRegistryEventsInstance + { + /**Creates a new wrapper around an on-chain [`IIndexRegistryEvents`](self) contract instance. + + See the [wrapper's documentation](`IIndexRegistryEventsInstance`) 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 IIndexRegistryEventsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IIndexRegistryEventsInstance { + IIndexRegistryEventsInstance { + 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, + > IIndexRegistryEventsInstance + { + /// 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, + > IIndexRegistryEventsInstance + { + /// 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/middleware/indexregistry.rs similarity index 75% rename from crates/utils/src/indexregistry.rs rename to crates/utils/src/middleware/indexregistry.rs index 35a8e3ac..734473c8 100644 --- a/crates/utils/src/indexregistry.rs +++ b/crates/utils/src/middleware/indexregistry.rs @@ -7,20 +7,30 @@ library IIndexRegistry { struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -207,13 +217,18 @@ pub mod IIndexRegistry { /**```solidity struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct QuorumUpdate { pub fromBlockNumber: u32, pub numOperators: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -909,41 +924,56 @@ interface IndexRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IndexRegistry { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b5060405161136138038061136183398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161120361015e60003960008181610142015261085a01526112036000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ebd565b610268565b6040516100d89190610f39565b60405180910390f35b6100f46100ef366004610fad565b61038a565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fe0565b6103d0565b005b6100f4610138366004610ffb565b6104b4565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fe0565b61053a565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fad565b610581565b6040516100d8919061103e565b61018f6101e1366004610fad565b6106eb565b6101286101f4366004610ebd565b610762565b610201600081565b6040519081526020016100d8565b61024061021d366004611076565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fe0565b610830565b606061027261084f565b60008267ffffffffffffffff81111561028d5761028d6110a0565b6040519080825280602002602001820160405280156102b6578160200160208202803683370190505b50905060005b8381101561037f5760008585838181106102d8576102d86110b6565b919091013560f81c60008181526003602052604090205490925090508061031a5760405162461bcd60e51b8152600401610311906110cc565b60405180910390fd5b600061032583610905565b905061033c8984610337600185611137565b6109fe565b8085858151811061034f5761034f6110b6565b602002602001019063ffffffff16908163ffffffff168152505050505080806103779061115c565b9150506102bc565b5090505b9392505050565b60408051808201909152600080825260208201526103a88383610a88565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b6103d861084f565b60ff8116600090815260036020526040902054156104525760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608401610311565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff80881685529252909120805490918416908110610501576105016110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b604080518082019091526000808252602082015261055782610ae0565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061058f8484610b22565b905060008163ffffffff1667ffffffffffffffff8111156105b2576105b26110a0565b6040519080825280602002602001820160405280156105db578160200160208202803683370190505b50905060005b8263ffffffff168110156106e2576105fa868287610c57565b82828151811061060c5761060c6110b6565b6020026020010181815250506000801b82828151811061062e5761062e6110b6565b602002602001015114156106d05760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a401610311565b806106da8161115c565b9150506105e1565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff8416908110610729576107296110b6565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b61076a61084f565b60005b8181101561082a576000838383818110610789576107896110b6565b919091013560f81c6000818152600360205260409020549092509050806107c25760405162461bcd60e51b8152600401610311906110cc565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906107f084610d2e565b905060006107fe8583610d68565b9050808914610812576108128186856109fe565b505050505080806108229061115c565b91505061076d565b50505050565b600061083b82610ae0565b54600160201b900463ffffffff1692915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109035760405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a401610311565b565b60008061091183610ae0565b805490915060009061093190600160201b900463ffffffff166001611177565b905061093e848383610d92565b60ff841660009081526002602052604081209061095c600184611137565b63ffffffff1681526020810191909152604001600020546103835760ff8416600090815260026020526040812090610995600184611137565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a0a8383610a88565b9050610a1883838387610e32565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ab960018361119f565b81548110610ac957610ac96110b6565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0060018361119f565b81548110610b1057610b106110b6565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bca5760ff85166000908152600360205260408120610b5a60018461119f565b81548110610b6a57610b6a6110b6565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bb7576020015192506103ca915050565b5080610bc2816111b6565b915050610b37565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a401610311565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d225760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cb160018461119f565b81548110610cc157610cc16110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d0f57602001519250610383915050565b5080610d1a816111b6565b915050610c7d565b50600095945050505050565b600080610d3a83610ae0565b8054909150600090610d5b90600190600160201b900463ffffffff16611137565b9050610383848383610d92565b600080610d758484610a88565b6001810154909150610d8a8585846000610e32565b949350505050565b81544363ffffffff90811691161415610dc957815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e51576001820181905561082a565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ed257600080fd5b83359250602084013567ffffffffffffffff80821115610ef157600080fd5b818601915086601f830112610f0557600080fd5b813581811115610f1457600080fd5b876020828501011115610f2657600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f7757835163ffffffff1683529284019291840191600101610f55565b50909695505050505050565b803560ff81168114610f9457600080fd5b919050565b803563ffffffff81168114610f9457600080fd5b60008060408385031215610fc057600080fd5b610fc983610f83565b9150610fd760208401610f99565b90509250929050565b600060208284031215610ff257600080fd5b61038382610f83565b60008060006060848603121561101057600080fd5b61101984610f83565b925061102760208501610f99565b915061103560408501610f99565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f775783518352928401929184019160010161105a565b6000806040838503121561108957600080fd5b61109283610f83565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561115457611154611121565b039392505050565b600060001982141561117057611170611121565b5060010190565b600063ffffffff80831681851680830382111561119657611196611121565b01949350505050565b6000828210156111b1576111b1611121565b500390565b6000816111c5576111c5611121565b50600019019056fea26469706673582212200dd424985d748126cfecb042df9778973b6cadcf9f9b71b13b2ee065b53d26c464736f6c634300080c0033 + ///0x60a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c0033 /// ``` #[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", + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\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", + 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\xC7V[a\x02hV[`@Qa\0\xD8\x91\x90a\x0FCV[`@Q\x80\x91\x03\x90\xF3[a\0\xF4a\0\xEF6`\x04a\x0F\xB7V[a\x03\xCAV[`@\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\xEAV[a\x04\x10V[\0[a\0\xF4a\x0186`\x04a\x10\x05V[a\x054V[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\xEAV[a\x05\xBAV[`@\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\xB7V[a\x06\x01V[`@Qa\0\xD8\x91\x90a\x10HV[a\x01\x8Fa\x01\xE16`\x04a\x0F\xB7V[a\x07kV[a\x01(a\x01\xF46`\x04a\x0E\xC7V[a\x07\xE2V[a\x02\x01`\0\x81V[`@Q\x90\x81R` \x01a\0\xD8V[a\x02@a\x02\x1D6`\x04a\x10\x80V[`\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\xEAV[a\x08\xF0V[``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\x02\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB2\x90a\x10\xAAV[`@Q\x80\x91\x03\x90\xFD[`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\xD6Wa\x02\xD6a\x11\x1DV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xFFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x03\xBFW`\0\x85\x85\x83\x81\x81\x10a\x03!Wa\x03!a\x113V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x03ZW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB2\x90a\x11IV[`\0a\x03e\x83a\t\x0FV[\x90Pa\x03|\x89\x84a\x03w`\x01\x85a\x11\xB4V[a\n\x08V[\x80\x85\x85\x81Q\x81\x10a\x03\x8FWa\x03\x8Fa\x113V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPPPP\x80\x80a\x03\xB7\x90a\x11\xD9V[\x91PPa\x03\x05V[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x03\xE8\x83\x83a\n\x92V[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\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\x04XW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB2\x90a\x10\xAAV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x90 T\x15a\x04\xD2W`@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\x02\xB2V[`\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\x81Wa\x05\x81a\x113V[`\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\x05\xD7\x82a\n\xEAV[`@\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\x06\x0F\x84\x84a\x0B,V[\x90P`\0\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x062Wa\x062a\x11\x1DV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06[W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x07bWa\x06z\x86\x82\x87a\x0CaV[\x82\x82\x81Q\x81\x10a\x06\x8CWa\x06\x8Ca\x113V[` \x02` \x01\x01\x81\x81RPP`\0\x80\x1B\x82\x82\x81Q\x81\x10a\x06\xAEWa\x06\xAEa\x113V[` \x02` \x01\x01Q\x14\x15a\x07PW`@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\x02\xB2V[\x80a\x07Z\x81a\x11\xD9V[\x91PPa\x06aV[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\xA9Wa\x07\xA9a\x113V[`\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[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*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB2\x90a\x10\xAAV[`\0[\x81\x81\x10\x15a\x08\xEAW`\0\x83\x83\x83\x81\x81\x10a\x08IWa\x08Ia\x113V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x08\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xB2\x90a\x11IV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x08\xB0\x84a\r8V[\x90P`\0a\x08\xBE\x85\x83a\rrV[\x90P\x80\x89\x14a\x08\xD2Wa\x08\xD2\x81\x86\x85a\n\x08V[PPPPP\x80\x80a\x08\xE2\x90a\x11\xD9V[\x91PPa\x08-V[PPPPV[`\0a\x08\xFB\x82a\n\xEAV[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[`\0\x80a\t\x1B\x83a\n\xEAV[\x80T\x90\x91P`\0\x90a\t;\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11\xF4V[\x90Pa\tH\x84\x83\x83a\r\x9CV[`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\tf`\x01\x84a\x11\xB4V[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta\x03\xC3W`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\x9F`\x01\x84a\x11\xB4V[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\x14\x83\x83a\n\x92V[\x90Pa\n\"\x83\x83\x83\x87a\x0E, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1300,19 +1345,24 @@ pub mod IndexRegistry { ```solidity function currentOperatorIndex(uint8, bytes32) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct currentOperatorIndexReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1424,17 +1474,22 @@ pub mod IndexRegistry { ```solidity function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1549,19 +1604,24 @@ pub mod IndexRegistry { ```solidity function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (IIndexRegistry.OperatorUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestOperatorUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1674,18 +1734,23 @@ pub mod IndexRegistry { ```solidity function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (IIndexRegistry.QuorumUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getLatestQuorumUpdateReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1788,19 +1853,24 @@ pub mod IndexRegistry { ```solidity function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorListAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1915,7 +1985,7 @@ pub mod IndexRegistry { ```solidity function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (IIndexRegistry.OperatorUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorUpdateAtIndexCall { pub quorumNumber: u8, @@ -1923,12 +1993,17 @@ pub mod IndexRegistry { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2047,19 +2122,24 @@ pub mod IndexRegistry { ```solidity function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (IIndexRegistry.QuorumUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumUpdateAtIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2172,16 +2252,21 @@ pub mod IndexRegistry { ```solidity function initializeQuorum(uint8 quorumNumber) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2283,19 +2368,24 @@ pub mod IndexRegistry { ```solidity function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2412,16 +2502,21 @@ pub mod IndexRegistry { ```solidity function registryCoordinator() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorCall {} ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registryCoordinatorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2517,18 +2612,23 @@ pub mod IndexRegistry { ```solidity function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalOperatorsForQuorumReturn { pub _0: u32, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/indexregistrystorage.rs b/crates/utils/src/middleware/indexregistrystorage.rs new file mode 100644 index 00000000..46f37119 --- /dev/null +++ b/crates/utils/src/middleware/indexregistrystorage.rs @@ -0,0 +1,3414 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct QuorumUpdate { + pub fromBlockNumber: u32, + pub numOperators: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct currentOperatorIndexReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/initializable.rs b/crates/utils/src/middleware/initializable.rs new file mode 100644 index 00000000..1d0e7c6a --- /dev/null +++ b/crates/utils/src/middleware/initializable.rs @@ -0,0 +1,405 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/integration_avs_sync_gascosts_ffi.rs b/crates/utils/src/middleware/integration_avs_sync_gascosts_ffi.rs new file mode 100644 index 00000000..27a5f334 --- /dev/null +++ b/crates/utils/src/middleware/integration_avs_sync_gascosts_ffi.rs @@ -0,0 +1,8426 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface Integration_AVS_Sync_GasCosts_FFI { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + constructor(); + + function IS_TEST() external view returns (bool); + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + function operatorAddresses(uint256) external view returns (address); + function operatorIds(uint256) external view returns (bytes32); + function privateKeys(uint256) external view returns (uint256); + function registryCoordinator() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function test_gasCosts_15Strats() external; + function test_gasCosts_20Strats() external; + function test_gasCosts_25Strats() external; + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "g2Point", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorAddresses", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorIds", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "privateKeys", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "test_gasCosts_15Strats", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "test_gasCosts_20Strats", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "test_gasCosts_25Strats", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Integration_AVS_Sync_GasCosts_FFI { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604081905260078054600160ff199182168117909255600b80549091169091179055601c80546000805160206203ec978339815191526001600160a01b0319918216811790925560328054309083161790556033805490911673beb9864e3d6a1ba44e131a462f6328f2d1d6d54d1790557fa3e2a0c4ce206b9c6679ac6361c034f31c8844ae3104108f47ed8c413acf333260348190556001625e79b760e01b031983526084529063ffa186499060a490602090602481865afa158015620000cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f3919062003fd1565b603560006101000a8154816001600160a01b0302191690836001600160a01b031602179055507fb31353c23f66ab4f75dd05996915a67877a178d5129a28d2af871ac1fceb3fd360001c603660006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000603d55600060435560405180617d00016040528061035561ffff1681526020016102b261ffff16815260200161032f61ffff16815260200161018e61ffff1681526020016103db61ffff1681526020016101b061ffff1681526020016103b261ffff1681526020016102cd61ffff1681526020016102f861ffff16815260200161034861ffff1681526020016102cf61ffff1681526020016102ca61ffff168152602001600b61ffff16815260200161022a61ffff16815260200161021061ffff16815260200161017061ffff16815260200160a061ffff168152602001601661ffff16815260200161023261ffff16815260200161010a61ffff16815260200161033b61ffff1681526020016101e861ffff16815260200161014f61ffff16815260200161023661ffff16815260200161016d61ffff168152602001603661ffff168152602001600661ffff1681526020016102dd61ffff16815260200161034361ffff16815260200161029061ffff1681526020016101f061ffff1681526020016101d861ffff168152602001607e61ffff168152602001603261ffff16815260200161028361ffff16815260200161027861ffff1681526020016101a561ffff16815260200161031d61ffff16815260200161026261ffff1681526020016102e161ffff168152602001609a61ffff16815260200161039661ffff16815260200161033361ffff1681526020016102b661ffff16815260200161022c61ffff16815260200161026061ffff16815260200160cb61ffff16815260200161020961ffff16815260200160bc61ffff16815260200161038c61ffff16815260200161019061ffff16815260200161015d61ffff16815260200161012261ffff1681526020016101cf61ffff1681526020016102a861ffff1681526020016103cd61ffff16815260200160cc61ffff1681526020016101b761ffff16815260200161033661ffff16815260200161031f61ffff16815260200161031b61ffff16815260200160fb61ffff1681526020016101e261ffff16815260200161014661ffff16815260200161019b61ffff16815260200161034761ffff16815260200161035361ffff16815260200161028c61ffff1681526020016101ca61ffff168152602001606c61ffff168152602001605c61ffff16815260200161011661ffff168152602001600861ffff16815260200161030561ffff16815260200161012e61ffff1681526020016102bb61ffff1681526020016103a861ffff1681526020016101ab61ffff16815260200161014161ffff1681526020016102bc61ffff1681526020016102ab61ffff168152602001602461ffff16815260200161033c61ffff1681526020016102dc61ffff1681526020016103c361ffff16815260200161029861ffff16815260200161030861ffff16815260200160a161ffff1681526020016101cc61ffff1681526020016101aa61ffff16815260200161036e61ffff168152602001606061ffff16815260200161023c61ffff1681526020016102a661ffff16815260200161038261ffff16815260200161017461ffff1681526020016102fc61ffff16815260200161024361ffff16815260200160d761ffff1681526020016101fb61ffff16815260200161021561ffff1681526020016103c561ffff168152602001604861ffff1681526020016102c461ffff1681526020016102c261ffff16815260200161014e61ffff1681526020016102d261ffff16815260200161029961ffff1681526020016101be61ffff16815260200161018d61ffff168152602001609761ffff16815260200161032261ffff16815260200160e061ffff1681526020016102f161ffff16815260200160ce61ffff16815260200160be61ffff16815260200161023961ffff16815260200160fd61ffff1681526020016102df61ffff16815260200161024261ffff16815260200161035b61ffff1681526020016102c761ffff168152602001608761ffff1681526020016103b061ffff16815260200161015861ffff16815260200161028f61ffff16815260200160ca61ffff1681526020016102e761ffff16815260200161012461ffff16815260200160b061ffff16815260200161010661ffff1681526020016103c161ffff16815260200161010e61ffff168152602001607561ffff1681526020016101f661ffff16815260200161022261ffff16815260200160f761ffff168152602001601f61ffff16815260200161029761ffff16815260200161020361ffff16815260200161035261ffff1681526020016101fd61ffff1681526020016102d861ffff1681526020016101a861ffff16815260200160c561ffff16815260200160ef61ffff16815260200161038961ffff16815260200161022161ffff168152602001607961ffff1681526020016101b661ffff16815260200161020161ffff16815260200161037161ffff16815260200160e961ffff16815260200160dd61ffff16815260200161025161ffff16815260200161033f61ffff1681526020016101eb61ffff16815260200161011a61ffff1681526020016103d361ffff16815260200161019a61ffff16815260200161036961ffff16815260200161013c61ffff16815260200160d261ffff16815260200161017361ffff168152602001602861ffff16815260200160ff61ffff16815260200161014961ffff1681526020016101e361ffff1681526020016103cf61ffff1681526020016102e661ffff16815260200160d661ffff16815260200161032d61ffff1681526020016102b361ffff1681526020016101d361ffff16815260200161033e61ffff16815260200161032861ffff1681526020016103b761ffff16815260200161039c61ffff168152602001609361ffff1681526020016102c161ffff16815260200161030461ffff168152602001601e61ffff1681526020016101e661ffff16815260200161024061ffff1681526020016101d561ffff16815260200161014b61ffff168152602001601b61ffff16815260200161013961ffff16815260200161035161ffff16815260200161032561ffff1681526020016101f361ffff16815260200161019461ffff16815260200160b261ffff168152602001600a61ffff16815260200161018f61ffff1681526020016101e561ffff16815260200161027361ffff168152602001603c61ffff1681526020016102c561ffff16815260200161023a61ffff168152602001606161ffff16815260200161037e61ffff168152602001605861ffff16815260200161010861ffff16815260200160f561ffff168152602001608161ffff16815260200161033261ffff16815260200160da61ffff16815260200161018b61ffff16815260200161018361ffff168152602001606e61ffff1681526020016101c761ffff1681526020016102b761ffff16815260200160c761ffff16815260200161028861ffff1681526020016101bc61ffff1681526020016101b361ffff16815260200160e661ffff168152602001605461ffff1681526020016101e961ffff16815260200161028961ffff16815260200161018161ffff16815260200161011261ffff168152602001605f61ffff1681526020016101ba61ffff16815260200161038361ffff1681526020016103e761ffff16815260200161028b61ffff16815260200161013661ffff16815260200160e361ffff16815260200161033761ffff16815260200161021a61ffff16815260200161015961ffff16815260200160e561ffff16815260200161022761ffff168152602001601861ffff1681526020016102ae61ffff16815260200161036d61ffff1681526020016102c361ffff16815260200161029f61ffff16815260200161024961ffff16815260200161021261ffff1681526020016103b861ffff168152602001601c61ffff1681526020016102b461ffff16815260200161015061ffff1681526020016102a161ffff16815260200161030961ffff16815260200161031561ffff16815260200161016e61ffff16815260200161030d61ffff16815260200161036861ffff16815260200161018261ffff168152602001604061ffff16815260200161015661ffff16815260200160f461ffff1681526020016101bd61ffff16815260200161033061ffff16815260200161014c61ffff1681526020016101b461ffff16815260200161025461ffff168152602001609461ffff1681526020016101a961ffff16815260200161035f61ffff1681526020016103c761ffff16815260200161026361ffff168152602001609961ffff1681526020016102ed61ffff1681526020016103ac61ffff168152602001609661ffff16815260200161011861ffff16815260200161027a61ffff16815260200161027761ffff1681526020016103ba61ffff16815260200161037b61ffff16815260200161029a61ffff16815260200161013f61ffff168152602001605d61ffff16815260200161032761ffff168152602001605261ffff168152602001604f61ffff168152602001605b61ffff168152602001609261ffff16815260200161012361ffff168152602001604e61ffff16815260200161039b61ffff16815260200161038e61ffff16815260200161014061ffff16815260200161021161ffff16815260200161035961ffff1681526020016103b161ffff16815260200160cd61ffff16815260200161025a61ffff1681526020016103ce61ffff168152602001602961ffff1681526020016101f761ffff16815260200161036461ffff16815260200161030f61ffff16815260200161012f61ffff16815260200161021861ffff16815260200161020b61ffff16815260200161016561ffff16815260200161019961ffff16815260200161034061ffff1681526020016101da61ffff16815260200161035e61ffff16815260200161020461ffff168152602001608c61ffff16815260200161026961ffff16815260200161021f61ffff16815260200161016461ffff168152602001604d61ffff16815260200161014861ffff1681526020016103d061ffff168152602001602e61ffff16815260200161034261ffff1681526020016102ee61ffff168152602001606361ffff16815260200161027961ffff1681526020016103b561ffff16815260200161023861ffff16815260200161027c61ffff1681526020016102fe61ffff16815260200161016b61ffff16815260200160ae61ffff168152602001608a61ffff168152602001607061ffff16815260200161023e61ffff16815260200161021d61ffff1681526020016102bf61ffff168152602001605161ffff16815260200161019c61ffff168152602001606261ffff1681526020016101dd61ffff1681526020016101c461ffff1681526020016102f361ffff16815260200161025661ffff1681526020016101d061ffff16815260200161037061ffff16815260200161037461ffff1681526020016101a261ffff16815260200161033d61ffff16815260200161028561ffff16815260200161025f61ffff16815260200161011761ffff16815260200161033461ffff168152602001604261ffff1681526020016101a061ffff16815260200161020561ffff16815260200161018061ffff168152602001601d61ffff16815260200160c061ffff168152602001603b61ffff168152602001600f61ffff16815260200161023d61ffff168152602001605e61ffff16815260200161017f61ffff1681526020016103d561ffff16815260200161037961ffff16815260200161039261ffff16815260200160ac61ffff16815260200161014261ffff16815260200160f861ffff16815260200161034d61ffff16815260200161030761ffff1681526020016103e861ffff16815260200161035661ffff16815260200161033161ffff16815260200161029c61ffff1681526020016102d461ffff16815260200161031261ffff16815260200161023f61ffff1681526020016102c661ffff16815260200161033961ffff16815260200161019761ffff16815260200161025061ffff16815260200161037a61ffff16815260200161038f61ffff16815260200161028161ffff16815260200161022061ffff1681526020016103dd61ffff16815260200161015b61ffff16815260200160c461ffff168152602001607d61ffff16815260200161017261ffff1681526020016101cb61ffff16815260200161032361ffff1681526020016101c661ffff16815260200161023461ffff1681526020016103ab61ffff16815260200161029261ffff16815260200161027061ffff1681526020016103e461ffff168152602001608e61ffff16815260200161020261ffff1681526020016102f661ffff16815260200161035061ffff1681526020016103d461ffff1681526020016103bb61ffff16815260200161035761ffff16815260200161012a61ffff168152602001607761ffff16815260200161018761ffff16815260200161015561ffff168152602001608261ffff16815260200161024161ffff16815260200161031e61ffff16815260200161014361ffff1681526020016103da61ffff168152602001603a61ffff16815260200160ab61ffff168152602001600e61ffff1681526020016103bf61ffff16815260200160ea61ffff16815260200161034661ffff16815260200161032b61ffff1681526020016103be61ffff1681526020016102cb61ffff16815260200161038661ffff16815260200161034e61ffff16815260200161023b61ffff1681526020016101c861ffff16815260200161010c61ffff16815260200161037261ffff16815260200161010161ffff16815260200161024f61ffff1681526020016101f161ffff16815260200161027661ffff168152602001601461ffff168152602001608861ffff1681526020016102a061ffff16815260200161026d61ffff1681526020016102e861ffff16815260200161031761ffff16815260200161013a61ffff16815260200160fc61ffff16815260200161016f61ffff16815260200161034161ffff168152602001601761ffff1681526020016102b561ffff1681526020016102d661ffff16815260200161025361ffff16815260200161011461ffff16815260200161026c61ffff16815260200160a761ffff16815260200161014561ffff16815260200161019161ffff1681526020016101e161ffff168152602001603f61ffff1681526020016102da61ffff16815260200161030361ffff16815260200161026561ffff16815260200161026661ffff1681526020016103af61ffff16815260200161020e61ffff16815260200161025c61ffff168152602001606861ffff1681526020016103a461ffff16815260200161035861ffff16815260200161010761ffff16815260200161028a61ffff16815260200161024e61ffff16815260200160e861ffff1681526020016101ce61ffff1681526020016103a361ffff16815260200160ec61ffff16815260200161039361ffff16815260200161019261ffff16815260200161028461ffff16815260200161013b61ffff16815260200160d561ffff16815260200160f961ffff16815260200161036561ffff16815260200160b361ffff16815260200161013861ffff1681526020016102ce61ffff1681526020016102a361ffff1681526020016101ed61ffff16815260200161038761ffff16815260200161021e61ffff16815260200161011f61ffff1681526020016102f061ffff16815260200161011d61ffff1681526020016101e761ffff16815260200161029561ffff16815260200161026861ffff16815260200160b661ffff16815260200161037861ffff1681526020016103a161ffff16815260200161034a61ffff16815260200161016c61ffff1681526020016102d061ffff1681526020016103a761ffff16815260200161018c61ffff1681526020016102fb61ffff16815260200160eb61ffff16815260200160e261ffff16815260200161036f61ffff16815260200161015a61ffff16815260200161039461ffff16815260200161026761ffff16815260200161032061ffff1681526020016103cc61ffff16815260200161038a61ffff16815260200161022361ffff1681526020016103e561ffff16815260200160c661ffff1681526020016101f461ffff168152602001602761ffff16815260200160c161ffff16815260200161036061ffff16815260200161034561ffff16815260200161012d61ffff1681526020016101e461ffff16815260200161016a61ffff16815260200161034461ffff16815260200161012561ffff16815260200161039161ffff16815260200161014461ffff16815260200161010d61ffff16815260200161020861ffff168152602001601961ffff16815260200160a961ffff1681526020016102e961ffff1681526020016103c061ffff16815260200161037361ffff168152602001603d61ffff1681526020016102e561ffff16815260200161017e61ffff168152602001607361ffff16815260200160dc61ffff1681526020016103b961ffff16815260200161026461ffff1681526020016103ca61ffff16815260200160cf61ffff16815260200161031c61ffff16815260200161038561ffff16815260200161036161ffff168152602001603561ffff16815260200161011361ffff16815260200161019861ffff16815260200161027f61ffff16815260200161036b61ffff16815260200161010961ffff1681526020016102f461ffff16815260200161037761ffff168152602001608561ffff16815260200161024a61ffff16815260200161012861ffff1681526020016101c261ffff1681526020016101b161ffff16815260200160c861ffff168152602001603161ffff16815260200161029661ffff168152602001600261ffff168152602001600461ffff16815260200160b761ffff1681526020016102b961ffff16815260200160de61ffff1681526020016101df61ffff1681526020016101ad61ffff1681526020016102eb61ffff168152602001608f61ffff1681526020016102c961ffff16815260200161031061ffff1681526020016103d661ffff16815260200161021b61ffff16815260200161017c61ffff168152602001604b61ffff16815260200161029b61ffff16815260200161025961ffff1681526020016103e061ffff1681526020016101c961ffff168152602001604661ffff168152602001606761ffff16815260200161024b61ffff16815260200161031161ffff168152602001606b61ffff16815260200160ba61ffff1681526020016102a761ffff16815260200161032461ffff16815260200161033561ffff16815260200161023761ffff16815260200160c961ffff1681526020016103a061ffff1681526020016101cd61ffff16815260200161019d61ffff168152602001607861ffff168152602001604361ffff16815260200160a461ffff1681526020016101b961ffff168152602001605961ffff1681526020016103c261ffff1681526020016102e261ffff16815260200161032161ffff16815260200160f261ffff1681526020016102e461ffff16815260200161017561ffff1681526020016102f761ffff168152602001604461ffff1681526020016101ea61ffff168152602001602b61ffff16815260200161016661ffff1681526020016102a561ffff1681526020016103a961ffff16815260200161030a61ffff16815260200161024d61ffff1681526020016103b361ffff16815260200161023561ffff16815260200161019e61ffff16815260200161035d61ffff1681526020016102c861ffff16815260200161012b61ffff168152602001605361ffff16815260200161038861ffff1681526020016103d261ffff16815260200161037661ffff1681526020016103c961ffff1681526020016102bd61ffff1681526020016101c561ffff1681526020016103a561ffff1681526020016102f561ffff168152602001604c61ffff1681526020016102d161ffff16815260200161011e61ffff16815260200161013761ffff1681526020016103c861ffff168152602001609c61ffff16815260200160b861ffff1681526020016103e661ffff1681526020016103e261ffff16815260200161039961ffff168152602001609f61ffff16815260200161031661ffff1681526020016103a661ffff168152602001600c61ffff168152602001608061ffff16815260200161020761ffff16815260200161013361ffff16815260200161032961ffff1681526020016102af61ffff16815260200160e461ffff16815260200161018961ffff168152602001603461ffff16815260200161039061ffff16815260200160d961ffff168152602001607161ffff1681526020016102e061ffff16815260200160c361ffff16815260200161035a61ffff16815260200161039d61ffff168152602001601561ffff16815260200160aa61ffff16815260200161013161ffff16815260200161037c61ffff1681526020016103d161ffff16815260200161016861ffff168152602001608b61ffff16815260200161032a61ffff168152602001604761ffff1681526020016102d761ffff16815260200161029d61ffff16815260200161026e61ffff16815260200161039761ffff168152602001602061ffff16815260200160ad61ffff16815260200160d061ffff168152602001602261ffff16815260200161021761ffff1681526020016103bd61ffff16815260200161030e61ffff16815260200161031861ffff16815260200161036a61ffff168152602001603061ffff168152602001608461ffff16815260200160b161ffff168152602001603961ffff168152602001600d61ffff1681526020016101db61ffff16815260200160f361ffff16815260200161028761ffff16815260200161016061ffff168152602001600561ffff1681526020016101ee61ffff16815260200161011561ffff1681526020016102a961ffff16815260200161024461ffff16815260200161015261ffff168152602001609e61ffff16815260200161039861ffff16815260200161015e61ffff16815260200161012c61ffff16815260200161011c61ffff16815260200161027261ffff16815260200161012961ffff16815260200161017161ffff16815260200161032661ffff1681526020016101d661ffff16815260200161037f61ffff16815260200161025b61ffff1681526020016101a461ffff16815260200161030061ffff1681526020016102f961ffff168152602001602161ffff16815260200160bf61ffff1681526020016101c161ffff16815260200161016761ffff16815260200161017761ffff16815260200161034c61ffff16815260200161023161ffff168152602001605661ffff16815260200161016361ffff16815260200161025e61ffff1681526020016102a461ffff1681526020016102de61ffff16815260200161010f61ffff16815260200161017d61ffff1681526020016102cc61ffff1681526020016102ff61ffff16815260200161015161ffff1681526020016102b061ffff1681526020016103aa61ffff1681526020016102ea61ffff16815260200161021c61ffff1681526020016103ae61ffff16815260200160d161ffff1681526020016101c361ffff16815260200161010b61ffff16815260200161038b61ffff1681526020016102db61ffff1681526020016102a261ffff16815260200160b461ffff16815260200161026b61ffff16815260200160a661ffff16815260200161037d61ffff168152602001606461ffff1681526020016102c061ffff1681526020016103e161ffff16815260200161012661ffff16815260200161024761ffff16815260200161030261ffff1681526020016102e361ffff16815260200161010061ffff1681526020016101fc61ffff1681526020016101ef61ffff1681526020016101b861ffff16815260200161012161ffff168152602001609161ffff16815260200160ed61ffff16815260200161022d61ffff168152602001606d61ffff16815260200160bb61ffff168152602001606661ffff168152602001605061ffff16815260200161034b61ffff16815260200161011161ffff168152602001602561ffff168152602001602661ffff16815260200161016261ffff16815260200161024861ffff16815260200161031a61ffff168152602001608661ffff16815260200160c261ffff16815260200161039f61ffff16815260200161039a61ffff16815260200161037561ffff168152602001607661ffff168152602001604161ffff1681526020016102ac61ffff168152602001602d61ffff1681526020016101af61ffff1681526020016101a361ffff16815260200161011961ffff16815260200161024661ffff16815260200161021361ffff1681526020016101f861ffff1681526020016101d761ffff16815260200161038461ffff168152602001603361ffff16815260200161038061ffff168152602001607c61ffff16815260200160d861ffff1681526020016101d261ffff168152602001601a61ffff16815260200161017a61ffff168152602001600961ffff168152602001608961ffff168152602001607461ffff16815260200161024c61ffff1681526020016103dc61ffff1681526020016101a761ffff1681526020016102d961ffff168152602001609d61ffff16815260200161025861ffff168152602001609861ffff1681526020016102ba61ffff168152602001606a61ffff16815260200161030661ffff1681526020016101c061ffff1681526020016103b661ffff168152602001603861ffff16815260200161036c61ffff16815260200161017b61ffff1681526020016103bc61ffff16815260200160a361ffff1681526020016102be61ffff1681526020016101ff61ffff168152602001604561ffff168152602001600361ffff1681526020016101d961ffff1681526020016103de61ffff16815260200160b561ffff16815260200161022b61ffff16815260200161023361ffff16815260200160a561ffff16815260200161022561ffff1681526020016101bf61ffff16815260200161023061ffff1681526020016101fe61ffff16815260200161022861ffff16815260200161013061ffff16815260200161027561ffff1681526020016103a261ffff16815260200161020661ffff16815260200161033a61ffff1681526020016103df61ffff168152602001601161ffff168152602001601061ffff168152602001602361ffff1681526020016101f961ffff1681526020016102d361ffff1681526020016101e061ffff1681526020016101de61ffff16815260200161034961ffff16815260200160fe61ffff16815260200161028061ffff16815260200161019561ffff16815260200161036361ffff16815260200161020a61ffff16815260200160af61ffff1681526020016101d461ffff16815260200161039e61ffff16815260200161035461ffff16815260200160f161ffff16815260200161035c61ffff168152602001604a61ffff1681526020016101bb61ffff1681526020016101f561ffff16815260200161030161ffff16815260200161018a61ffff16815260200160f661ffff16815260200160e161ffff1681526020016103c661ffff16815260200161018461ffff168152602001606f61ffff16815260200161011061ffff16815260200161010361ffff16815260200161017861ffff1681526020016103d961ffff1681526020016102fd61ffff1681526020016103d861ffff16815260200160e761ffff16815260200161025561ffff16815260200161022461ffff16815260200161017661ffff16815260200161012761ffff16815260200161036661ffff16815260200161039561ffff16815260200161038161ffff1681526020016102d561ffff16815260200161028261ffff16815260200161030c61ffff1681526020016101a661ffff16815260200161011b61ffff1681526020016103cb61ffff16815260200161019f61ffff16815260200160f061ffff16815260200161031361ffff16815260200160ee61ffff16815260200161015461ffff168152602001609561ffff16815260200161020f61ffff16815260200161022661ffff16815260200161017961ffff1681526020016103c461ffff16815260200161022e61ffff168152602001609061ffff16815260200161022961ffff16815260200161031461ffff16815260200161026a61ffff16815260200161015f61ffff16815260200161014a61ffff16815260200161020d61ffff1681526020016102ad61ffff16815260200161027161ffff168152602001605561ffff168152602001602a61ffff1681526020016101d161ffff1681526020016103ad61ffff1681526020016102fa61ffff168152602001602f61ffff1681526020016101dc61ffff1681526020016102ef61ffff16815260200161036761ffff16815260200160bd61ffff16815260200160d461ffff1681526020016102f261ffff16815260200161033861ffff16815260200160df61ffff1681526020016102ec61ffff168152602001600761ffff16815260200161021461ffff16815260200161029e61ffff16815260200160a261ffff16815260200161019361ffff168152602001600161ffff16815260200161029361ffff16815260200161013261ffff16815260200161029161ffff16815260200161013d61ffff16815260200161026f61ffff16815260200161013e61ffff16815260200161025d61ffff16815260200161021961ffff168152602001608361ffff1681526020016102b161ffff16815260200161013461ffff1681526020016101ae61ffff16815260200160a861ffff16815260200161013561ffff16815260200161025761ffff1681526020016102aa61ffff16815260200161028e61ffff16815260200161036261ffff168152602001605a61ffff16815260200161014761ffff16815260200161024561ffff16815260200161038d61ffff16815260200161027b61ffff168152602001607261ffff16815260200161022f61ffff168152602001607b61ffff168152602001607f61ffff16815260200161029461ffff16815260200161028661ffff16815260200161012061ffff168152602001601361ffff16815260200161018561ffff16815260200161031961ffff16815260200161019661ffff16815260200161027e61ffff16815260200161032c61ffff16815260200161015761ffff168152602001603e61ffff1681526020016101f261ffff1681526020016101b561ffff168152602001602c61ffff16815260200161010461ffff168152602001607a61ffff168152602001606561ffff16815260200161027461ffff16815260200161030b61ffff1681526020016101a161ffff16815260200161034f61ffff1681526020016102b861ffff1681526020016101ec61ffff16815260200160d361ffff1681526020016101b261ffff16815260200161015361ffff16815260200161025261ffff16815260200161014d61ffff16815260200160db61ffff16815260200161015c61ffff168152602001601261ffff16815260200160fa61ffff168152602001606961ffff16815260200161020061ffff16815260200160b961ffff16815260200161020c61ffff1681526020016101fa61ffff168152602001609b61ffff1681526020016103b461ffff168152602001608d61ffff168152602001603761ffff1681526020016101ac61ffff16815260200161027d61ffff16815260200161018861ffff16815260200161026161ffff1681526020016103e361ffff16815260200161016961ffff1681526020016103d761ffff16815260200161010561ffff16815260200161028d61ffff16815260200161010261ffff168152602001605761ffff16815260200161016161ffff16815260200161018661ffff168152602001604961ffff16815260200161021661ffff16815260200161032e61ffff168152506045906103e862002f6b92919062003e7e565b5034801562002f7957600080fd5b5060005b62002f8a60058062004012565b63ffffffff16811015620031765762002fa262003ed4565b600062002fb18360016200403d565b60405160200162002fc491815260200190565b6040516020818303038152906040528051906020012060001c90506200300d8162002ff96200375e60201b620024bd1760201c565b6200378760201b620024e61790919060201c565b82602001819052506200302b816200382760201b620017cf1760201c565b60408301908152603e805460018181019092556000805160206203ecdc83398151915201839055603f805491820181556000528351805160089092027fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd81019283556020918201517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fe8201558186015180517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58ff830155909101517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b59008201559151805185937fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b5901019062003141908290600262003f29565b50602082015162003159906002808401919062003f29565b5050505050505080806200316d9062004058565b91505062002f7d565b5060006040518060600160405280602581526020016203ecb7602591396040516360f9bb1160e01b81529091506000906000805160206203ec97833981519152906360f9bb1190620031cd908590600401620040d7565b600060405180830381865afa158015620031eb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200321591908101906200417e565b905060005b600581101562003755576200322e62003ed4565b600060458381548110620032465762003246620041cb565b60009182526020909120015460405163348051d760e11b815260048101859052909150620033049085906000805160206203ec9783398151915290636900a3ae90602401600060405180830381865afa158015620032a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620032d291908101906200417e565b604051602001620032e49190620041e1565b60405160208183030381529060405262003cdd60201b620025871760201c565b60208301515260405163348051d760e11b815260048101849052620033999085906000805160206203ec9783398151915290636900a3ae90602401600060405180830381865afa1580156200335d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200338791908101906200417e565b604051602001620032e491906200421b565b602083810151015260405163348051d760e11b815260048101849052620034309085906000805160206203ec9783398151915290636900a3ae90602401600060405180830381865afa158015620033f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200341e91908101906200417e565b604051602001620032e491906200423d565b6040830151516001602002015260405163348051d760e11b815260048101849052620034cc9085906000805160206203ec9783398151915290636900a3ae90602401600060405180830381865afa15801562003490573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620034ba91908101906200417e565b604051602001620032e4919062004278565b6040830151602001516001602002015260405163348051d760e11b8152600481018490526200356b9085906000805160206203ec9783398151915290636900a3ae90602401600060405180830381865afa1580156200352f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200355991908101906200417e565b604051602001620032e491906200429b565b60408381015151919091525163348051d760e11b815260048101849052620036039085906000805160206203ec9783398151915290636900a3ae90602401600060405180830381865afa158015620035c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035f191908101906200417e565b604051602001620032e49190620042be565b60408301805160209081015192909252603e805460018082019092556000805160206203ecdc83398151915201849055603f805491820181556000528451805160089092027fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd8101928355908401517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fe8201558386015180517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58ff830155909301517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b59008401559051805185937fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b5901019062003720908290600262003f29565b50602082015162003738906002808401919062003f29565b5050505050505080806200374c9062004058565b9150506200321a565b505050620043f1565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b6040805180820190915260008082526020820152620037a562003f5a565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620037da57620037dc565bfe5b50806200381f5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b6200383162003f78565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200384957905050905060405180604001604052806002815260200161676f60f01b81525081600081518110620038925762003892620041cb565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620038cf57620038cf620041cb565b60200260200101819052506040518060400160405280601481526020017f746573742f6666692f676f2f67326d756c2e676f00000000000000000000000081525081600281518110620039265762003926620041cb565b6020026020010181905250620039478362003d6160201b6200260d1760201c565b816003815181106200395d576200395d620041cb565b6020026020010181905250604051806040016040528060018152602001603160f81b81525081600481518110620039985762003998620041cb565b6020908102919091010152604051638916046760e01b81526000906000805160206203ec9783398151915290638916046790620039da908590600401620042e1565b6000604051808303816000875af1158015620039fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a2491908101906200417e565b90508080602001905181019062003a3c919062004347565b83516001602002018181525050604051806040016040528060018152602001601960f91b8152508260048151811062003a795762003a79620041cb565b6020908102919091010152604051638916046760e01b81526000805160206203ec978339815191529063891604679062003ab8908590600401620042e1565b6000604051808303816000875af115801562003ad8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003b0291908101906200417e565b90508080602001905181019062003b1a919062004347565b8351526040805180820190915260018152603360f81b602082015282518390600490811062003b4d5762003b4d620041cb565b6020908102919091010152604051638916046760e01b81526000805160206203ec978339815191529063891604679062003b8c908590600401620042e1565b6000604051808303816000875af115801562003bac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003bd691908101906200417e565b90508080602001905181019062003bee919062004347565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062003c2e5762003c2e620041cb565b6020908102919091010152604051638916046760e01b81526000805160206203ec978339815191529063891604679062003c6d908590600401620042e1565b6000604051808303816000875af115801562003c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003cb791908101906200417e565b90508080602001905181019062003ccf919062004347565b602084015152509092915050565b6040516356eef15b60e11b81526000906000805160206203ec978339815191529063addde2b69062003d16908690869060040162004361565b602060405180830381865afa15801562003d34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d5a919062004347565b9392505050565b60608162003d865750506040805180820190915260018152600360fc1b602082015290565b8160005b811562003db6578062003d9d8162004058565b915062003dae9050600a83620043a9565b915062003d8a565b6000816001600160401b0381111562003dd35762003dd3620040ec565b6040519080825280601f01601f19166020018201604052801562003dfe576020820181803683370190505b5090505b841562003e765762003e16600183620043c0565b915062003e25600a86620043da565b62003e329060306200403d565b60f81b81838151811062003e4a5762003e4a620041cb565b60200101906001600160f81b031916908160001a90535062003e6e600a86620043a9565b945062003e02565b949350505050565b82805482825590600052602060002090810192821562003ec2579160200282015b8281111562003ec2578251829061ffff1690559160200191906001019062003e9f565b5062003ed092915062003f9c565b5090565b6040805160a0810190915260006060820181815260808301919091528190815260200162003f15604051806040016040528060008152602001600081525090565b815260200162003f2462003f78565b905290565b826002810192821562003ec2579160200282015b8281111562003ec257825182559160200191906001019062003f3d565b60405180606001604052806003906020820280368337509192915050565b604051806040016040528062003f8d62003fb3565b815260200162003f2462003fb3565b5b8082111562003ed0576000815560010162003f9d565b60405180604001604052806002906020820280368337509192915050565b60006020828403121562003fe457600080fd5b81516001600160a01b038116811462003d5a57600080fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681851680830382111562004034576200403462003ffc565b01949350505050565b6000821982111562004053576200405362003ffc565b500190565b60006000198214156200406f576200406f62003ffc565b5060010190565b60005b838110156200409357818101518382015260200162004079565b83811115620040a3576000848401525b50505050565b60008151808452620040c381602086016020860162004076565b601f01601f19169290920160200192915050565b60208152600062003d5a6020830184620040a9565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156200411f576200411f620040ec565b604051601f8501601f19908116603f011681019082821181831017156200414a576200414a620040ec565b816040528093508581528686860111156200416457600080fd5b6200417486602083018762004076565b5050509392505050565b6000602082840312156200419157600080fd5b81516001600160401b03811115620041a857600080fd5b8201601f81018413620041ba57600080fd5b62003e768482516020840162004102565b634e487b7160e01b600052603260045260246000fd5b642e4731785b60d81b8152600082516200420381600585016020870162004076565b605d60f81b6005939091019283015250600601919050565b642e4731795b60d81b8152600082516200420381600585016020870162004076565b652e473278315b60d01b8152600082516200426081600685016020870162004076565b605d60f81b6006939091019283015250600701919050565b652e473279315b60d01b8152600082516200426081600685016020870162004076565b652e473278305b60d01b8152600082516200426081600685016020870162004076565b652e473279305b60d01b8152600082516200426081600685016020870162004076565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200433a57603f1988860301845262004327858351620040a9565b9450928501929085019060010162004308565b5092979650505050505050565b6000602082840312156200435a57600080fd5b5051919050565b604081526000620043766040830185620040a9565b82810360208401526200438a8185620040a9565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b600082620043bb57620043bb62004393565b500490565b600082821015620043d557620043d562003ffc565b500390565b600082620043ec57620043ec62004393565b500690565b6203a89580620044026000396000f3fe60806040523480156200001157600080fd5b5060043610620001925760003560e01c80636d14a98711620000f05780639d8b9cb411620000a3578063ba414fa6116200007a578063ba414fa6146200033b578063bfbdaffd1462000356578063e20c9f71146200036d578063fa7626d4146200037757600080fd5b80639d8b9cb41462000313578063b473389b1462000327578063b5508aa9146200033157600080fd5b80636d14a98714620002a45780637792a03514620002b85780638171750914620002cf57806385226c8114620002e65780638f3350c014620002ff578063916a17c6146200030957600080fd5b80632dbcb04c11620001495780632dbcb04c14620002365780633dfb40e0146200024f5780633e5e3c2314620002635780633f7286f4146200026d57806366d9a9a014620002775780636b3aa72e146200029057600080fd5b8063054310e6146200019757806309d8753814620001c85780630a9254e414620001d4578063131e2f1814620001de5780631ed7831c14620002045780632ade3880146200021d575b600080fd5b603554620001ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001d262000385565b005b620001d2620003c2565b620001f5620001ef36600462006037565b620017cf565b604051620001bf91906200609d565b6200020e62001c71565b604051620001bf9190620060f3565b6200022762001cd5565b604051620001bf919062006165565b6200024060345481565b604051908152602001620001bf565b602e54620001ab906001600160a01b031681565b6200020e62001e23565b6200020e62001e85565b6200028162001ee7565b604051620001bf91906200622b565b601e54620001ab906001600160a01b031681565b602854620001ab906001600160a01b031681565b620001ab620002c936600462006037565b62001fd1565b62000240620002e036600462006037565b62001ffc565b620002f06200201e565b604051620001bf9190620062e2565b620001d2620020f8565b6200028162002129565b603354620001ab906001600160a01b031681565b620001d262002213565b620002f062002243565b620003456200231d565b6040519015158152602001620001bf565b620002406200036736600462006037565b6200244a565b6200020e6200245b565b600754620003459060ff1681565b6040805160808101825260018082526008602083015291810182905260046060820152620003b6919081906200272a565b620003c062002fcc565b565b604051620003d09062005d71565b604051809103906000f080158015620003ed573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b816000815181106200044957620004496200635e565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c6040516200047b9062005d7f565b6200048892919062006374565b604051809103906000f080158015620004a5573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620004d79062005d8d565b604051809103906000f080158015620004f4573d6000803e3d6000fd5b509050604051620005059062005d9a565b604051809103906000f08015801562000522573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b0392909216919091179055604051620005519062005da8565b604051809103906000f0801580156200056e573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005a39062005db6565b620005b0929190620063a0565b604051809103906000f080158015620005cd573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620006029062005db6565b6200060f929190620063a0565b604051809103906000f0801580156200062c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620006619062005db6565b6200066e929190620063a0565b604051809103906000f0801580156200068b573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620006c09062005db6565b620006cd929190620063a0565b604051809103906000f080158015620006ea573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200071f9062005db6565b6200072c929190620063a0565b604051809103906000f08015801562000749573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392831617905560255460205460405191831692169064077359400090620007879062005dc4565b6001600160a01b0393841681529290911660208301526001600160401b03166040820152606001604051809103906000f080158015620007cb573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620007f99062005dd2565b6001600160a01b039091168152602001604051809103906000f08015801562000826573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f54602254602054604051600094938416939283169291909116906200086a9062005de0565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620008a7573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b03938416939283169290911690620008d99062005dee565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000916573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b039283169290911690620009419062005dfc565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000975573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b039586169594851694938416939283169290911690620009b59062005e0a565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000a01573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b039091169062000a259062005e18565b6001600160a01b039091168152602001604051809103906000f08015801562000a52573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b9362000ab8939183169216908b8b8b60648201620063fb565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000b019392916004016200645a565b600060405180830381600087803b15801562000b1c57600080fd5b505af115801562000b31573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000bc49391909216918c916004016200645a565b600060405180830381600087803b15801562000bdf57600080fd5b505af115801562000bf4573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000c809391909216918b916004016200645a565b600060405180830381600087803b15801562000c9b57600080fd5b505af115801562000cb0573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000d46939116918a916004016200645a565b600060405180830381600087803b15801562000d6157600080fd5b505af115801562000d76573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000e0293919092169189916004016200645a565b600060405180830381600087803b15801562000e1d57600080fd5b505af115801562000e32573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000e53915062005e26565b6001600160a01b039091168152602001604051809103906000f08015801562000e80573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000f4657600062000ebb826200260d565b905060008160405160200162000ed2919062006491565b604051602081830303815290604052905060008260405160200162000ef89190620064c8565b604051602081830303815290604052905062000f2d82827502ac3a4edbbfb8014e3ba83411e915e80000000000003062003246565b505050808062000f3d906200650b565b91505062000ea4565b5060405162000f559062005e34565b604051809103906000f08015801562000f72573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000fd157600080fd5b505af115801562000fe6573d6000803e3d6000fd5b50506031546040518c93506001600160a01b039091169150620010099062005db6565b62001016929190620063a0565b604051809103906000f08015801562001033573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620010689062005db6565b62001075929190620063a0565b604051809103906000f08015801562001092573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620010c79062005db6565b620010d4929190620063a0565b604051809103906000f080158015620010f1573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620011269062005db6565b62001133929190620063a0565b604051809103906000f08015801562001150573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620011859062005db6565b62001192929190620063a0565b604051809103906000f080158015620011af573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200120b57600080fd5b505af115801562001220573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b0392831693509116906200124a9062005e42565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200127e573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620012a29062005e50565b6001600160a01b039091168152602001604051809103906000f080158015620012cf573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620012f39062005e5e565b6001600160a01b039091168152602001604051809103906000f08015801562001320573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b03938416939283169290911690620013529062005e6c565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200138f573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81526001600160a01b039182166004820152878216602482015292935016906399a88ec490604401600060405180830381600087803b158015620013e457600080fd5b505af1158015620013f9573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0391821660048201528782166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200144f57600080fd5b505af115801562001464573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0391821660048201528682166024820152911692506399a88ec49150604401600060405180830381600087803b158015620014ba57600080fd5b505af1158015620014cf573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0391821660048201528582166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200152557600080fd5b505af11580156200153a573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b1580156200158857600080fd5b505af11580156200159d573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b0394851695509284169391821692911690620015d59062005e7a565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200161a573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b9690821695908216949082169391169181620016a5565b6040805160608101825260008082526020808301829052928201528252600019909201910181620016775790505b5060408051600080825260208201818152828401909352909190620016db565b6060815260200190600190039081620016c55790505b50604051602401620016f59897969594939291906200660c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b90921682526200173e9392916004016200645a565b600060405180830381600087803b1580156200175957600080fd5b505af11580156200176e573d6000803e3d6000fd5b50505050604051620017809062005e88565b604051809103906000f0801580156200179d573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b620017d962005e96565b60408051600580825260c08201909252600091816020015b6060815260200190600190039081620017f157905050905060405180604001604052806002815260200161676f60f01b815250816000815181106200183a576200183a6200635e565b602002602001018190525060405180604001604052806003815260200162393ab760e91b815250816001815181106200187757620018776200635e565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b81525081600281518110620018c557620018c56200635e565b6020026020010181905250620018db836200260d565b81600381518110620018f157620018f16200635e565b6020026020010181905250604051806040016040528060018152602001603160f81b815250816004815181106200192c576200192c6200635e565b6020908102919091010152604051638916046760e01b81526000906000805160206203a682833981519152906389160467906200196e908590600401620062e2565b6000604051808303816000875af11580156200198e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019b8919081019062006776565b905080806020019051810190620019d09190620067c3565b83516001602002018181525050604051806040016040528060018152602001601960f91b8152508260048151811062001a0d5762001a0d6200635e565b6020908102919091010152604051638916046760e01b81526000805160206203a6828339815191529063891604679062001a4c908590600401620062e2565b6000604051808303816000875af115801562001a6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a96919081019062006776565b90508080602001905181019062001aae9190620067c3565b8351526040805180820190915260018152603360f81b602082015282518390600490811062001ae15762001ae16200635e565b6020908102919091010152604051638916046760e01b81526000805160206203a6828339815191529063891604679062001b20908590600401620062e2565b6000604051808303816000875af115801562001b40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b6a919081019062006776565b90508080602001905181019062001b829190620067c3565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001bc25762001bc26200635e565b6020908102919091010152604051638916046760e01b81526000805160206203a6828339815191529063891604679062001c01908590600401620062e2565b6000604051808303816000875af115801562001c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c4b919081019062006776565b90508080602001905181019062001c639190620067c3565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001ccb57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001cac575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001e0257838290600052602060002001805462001d6e90620067dd565b80601f016020809104026020016040519081016040528092919081815260200182805462001d9c90620067dd565b801562001ded5780601f1062001dc15761010080835404028352916020019162001ded565b820191906000526020600020905b81548152906001019060200180831162001dcf57829003601f168201915b50505050508152602001906001019062001d4c565b50505050815250508152602001906001019062001cf9565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001ccb576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001cac575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001ccb576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001cac575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001fb857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001f795790505b5050505050815250508152602001906001019062001f0b565b6047818154811062001fe257600080fd5b6000918252602090912001546001600160a01b0316905081565b604581815481106200200d57600080fd5b600091825260209091200154905081565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a5783829060005260206000200180546200206490620067dd565b80601f01602080910402602001604051908101604052809291908181526020018280546200209290620067dd565b8015620020e35780601f10620020b757610100808354040283529160200191620020e3565b820191906000526020600020905b815481529060010190602001808311620020c557829003601f168201915b50505050508152602001906001019062002042565b6040805160808101825260018082526010602083015291810182905260046060820152620003b6919081906200272a565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021fa57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620021bb5790505b505050505081525050815260200190600101906200214d565b60408051608081018252600180825260208083015291810182905260046060820152620003b6919081906200272a565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a5783829060005260206000200180546200228990620067dd565b80601f0160208091040260200160405190810160405280929190818152602001828054620022b790620067dd565b8015620023085780601f10620022dc5761010080835404028352916020019162002308565b820191906000526020600020905b815481529060010190602001808311620022ea57829003601f168201915b50505050508152602001906001019062002267565b600754600090610100900460ff1615620023405750600754610100900460ff1690565b60006000805160206203a6828339815191523b156200244557604080516000805160206203a682833981519152602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620023c7917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162006814565b60408051601f1981840301815290829052620023e39162006847565b6000604051808303816000865af19150503d806000811462002422576040519150601f19603f3d011682016040523d82523d6000602084013e62002427565b606091505b509150508080602001905181019062002441919062006865565b9150505b919050565b604681815481106200200d57600080fd5b6060601380548060200260200160405190810160405280929190818152602001828054801562001ccb576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001cac575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b60408051808201909152600080825260208201526200250462005ebf565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801562002539576200253b565bfe5b50806200257f5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b6040516356eef15b60e11b81526000906000805160206203a6828339815191529063addde2b690620025c0908690869060040162006889565b602060405180830381865afa158015620025de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026049190620067c3565b90505b92915050565b606081620026325750506040805180820190915260018152600360fc1b602082015290565b8160005b811562002662578062002649816200650b565b91506200265a9050600a83620068c8565b915062002636565b6000816001600160401b038111156200267f576200267f62006348565b6040519080825280601f01601f191660200182016040528015620026aa576020820181803683370190505b5090505b84156200272257620026c2600183620068df565b9150620026d1600a86620068f9565b620026de90603062006910565b60f81b818381518110620026f657620026f66200635e565b60200101906001600160f81b031916908160001a9053506200271a600a86620068c8565b9450620026ae565b949350505050565b60408051818152601f818301527f5f636f6e66696752616e643a207365742072616e646f6d207365656420746f00606082015262ffffff8516602082015290516000805160206203a8408339815191529181900360800190a16040516001600160e81b031960e885901b16602082015260230160408051601f198184030181529190528051602090910120603755620027c38262003570565b8051620027d99160389160209091019062005edd565b508051620027e79062003570565b8051620027fd9160399160209091019062005edd565b506200280d816020015162003570565b80516200282391603a9160209091019062005edd565b5062002833816040015162003570565b80516200284991603b9160209091019062005edd565b5062002859816060015162003570565b80516200286f91603c9160209091019062005edd565b50620028a9603880546200288390620067dd565b9050600014156040518060600160405280603081526020016203a78f60309139620035d4565b620028e260398054620028bc90620067dd565b9050600014156040518060600160405280603081526020016203a81060309139620035d4565b6200291b603a8054620028f590620067dd565b9050600014156040518060600160405280603381526020016203a73560339139620035d4565b62002954603b80546200292e90620067dd565b9050600014156040518060600160405280603281526020016203a70360329139620035d4565b6200298d603c80546200296790620067dd565b9050600014156040518060600160405280602f81526020016203a6a2602f9139620035d4565b6200299762003622565b6040819055620029ad9060019081901b620068df565b604180546001600160c01b0319166001600160c01b03929092169182179055620029d79062003761565b8051620029ed9160429160209091019062005edd565b506040805481518281526030928101929092527f5f636f6e66696752616e643a206e756d626572206f662071756f72756d73206260608301526f195a5b99c81a5b9a5d1a585b1a5e995960821b608083015260208201526000805160206203a8408339815191529060a00160405180910390a16040805160608101825260058152613a98602082015260969181019190915260005b60405481101562002cff57600062002a996200383c565b9050600062002aa762003a39565b90506000805160206203a8408339815191528360405162002b0291906040808252601c908201527f5f636f6e66696752616e643a206372656174696e672071756f72756d000000006060820152602081019190915260800190565b60405180910390a183516040516000805160206203a8408339815191529162002b61916040808252601490820152730b4813585e081bdc195c985d1bdc8818dbdd5b9d60621b606082015263ffffffff91909116602082015260800190565b60405180910390a16000805160206203a840833981519152825160405162002bc391906040808252601b908201527f2d204e756d207374726174656769657320636f6e7369646572656400000000006060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e2d204d696e696d756d207374616b6560881b60608201526001600160601b038316602082015290516000805160206203a8408339815191529181900360800190a1601c5460335460405163ca669fa760e01b81526001600160a01b03918216600482015291169063ca669fa790602401600060405180830381600087803b15801562002c6457600080fd5b505af115801562002c79573d6000803e3d6000fd5b5050602854604051631aeb699160e31b81526001600160a01b03909116925063d75b4c88915062002cb3908790859087906004016200692b565b600060405180830381600087803b15801562002cce57600080fd5b505af115801562002ce3573d6000803e3d6000fd5b505050505050808062002cf6906200650b565b91505062002a82565b50600062002d0d8262003a77565b90506000805160206203a66283398151915262002d2a826200260d565b60405160200162002d3c919062006981565b60408051601f198184030181529082905262002d5891620069e8565b60405180910390a160005b8181101562002ec257600062002d7862003b49565b60405163208c6d5360e21b81529091506001600160a01b03821690638231b54c9062002daa90604290600401620069fd565b6020604051808303816000875af115801562002dca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002df09190620067c3565b5060005b6042805462002e0390620067dd565b905081101562002eaa576000604282815462002e1f90620067dd565b811062002e305762002e306200635e565b81546001161562002e505790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60009081526044602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b038516179055508062002ea1816200650b565b91505062002df4565b5050808062002eb9906200650b565b91505062002d63565b506000805160206203a66283398151915260405162002f0a906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a16000805160206203a66283398151915260405162002f6e9060208082526024908201527f5f636f6e66696752616e6420636f6d706c6574653b207374617274696e6720746040820152636573742160e01b606082015260800190565b60405180910390a16000805160206203a66283398151915260405162002fbd906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a15050505050565b6000808052604460209081527fff2df0515866d0e5037a04274635c66d5b7f91cd9f7cebf4fde878af347aa26980546040805182850281018501909152818152928301828280156200304857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162003029575b505050505090506200305a8162003d02565b60408051600180825281830190925291925060009190816020015b6060815260200190600190039081620030755790505090508181600081518110620030a457620030a46200635e565b6020026020010181905250600060428054620030c090620067dd565b80601f0160208091040260200160405190810160405280929190818152602001828054620030ee90620067dd565b80156200313f5780601f1062003113576101008083540402835291602001916200313f565b820191906000526020600020905b8154815290600101906020018083116200312157829003601f168201915b5050505050905060005a602854604051630a2814a960e31b81529192506001600160a01b031690635140a548906200317e908690869060040162006aad565b600060405180830381600087803b1580156200319957600080fd5b505af1158015620031ae573d6000803e3d6000fd5b5050505060005a9050620031cd620031c78284620068df565b62003e5f565b6200320f6040518060400160405280601781526020017f4e756d206f70657261746f727320757064617465643a20000000000000000000815250865162003eaa565b6200323f6040518060600160405280602781526020016203a76860279139620032398385620068df565b62003eaa565b5050505050565b6000848484846040516200325a9062005f68565b62003269949392919062006b51565b604051809103906000f08015801562003286573d6000803e3d6000fd5b506027546031546021546040516001600160a01b03808616602483015291821660448201529394506000939281169291169063485cc95560e01b9060640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620033039062005db6565b62003311939291906200645a565b604051809103906000f0801580156200332e573d6000803e3d6000fd5b506040805160018082528183019092529192506000919060208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905082826000815181106200338f576200338f6200635e565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa158015620033f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200341b919062006bb2565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200345d57600080fd5b505af115801562003472573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b35479150620034aa908590859060040162006bd2565b600060405180830381600087803b158015620034c557600080fd5b505af1158015620034da573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b606060005b610100811015620035ce576001811b83811615620035ba57604051620035a89084906001851b60f81b9060200162006c2f565b60405160208183030381529060405292505b50620035c6816200650b565b905062003575565b50919050565b816200361e577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200360b919062006c60565b60405180910390a16200361e8262003ef3565b5050565b600080620036c2603980546200363890620067dd565b80601f01602080910402602001604051908101604052809291908181526020018280546200366690620067dd565b8015620036b75780601f106200368b57610100808354040283529160200191620036b7565b820191906000526020600020905b8154815290600101906020018083116200369957829003601f168201915b505050505062003f5a565b90506001811415620036d657600191505090565b6002811415620036e857600291505090565b60048114156200370657620037006003600a62003fc3565b91505090565b60405162461bcd60e51b815260206004820152602560248201527f5f72616e6451756f72756d436f756e743a20666c6167206e6f74207265636f676044820152641b9a5e995960da1b606482015260840162002576565b5090565b6060600080620037718462004085565b61ffff166001600160401b038111156200378f576200378f62006348565b6040519080825280601f01601f191660200182016040528015620037ba576020820181803683370190505b5090506000805b825182108015620037d3575061010081105b1562003832576001811b9350858416156200381f578060f81b8383815181106200380157620038016200635e565b60200101906001600160f81b031916908160001a9053508160010191505b6200382a816200650b565b9050620037c1565b5090949350505050565b6060600062003853603a80546200363890620067dd565b9050600060018214156200386a5750600162003940565b60028214156200387d5750600262003940565b6004821415620038ae57602f54620038a690600390620038a090600190620068df565b62003fc3565b905062003940565b6008821415620038c15750600f62003940565b6010821415620038d45750601462003940565b6020821415620038e75750601962003940565b60405162461bcd60e51b815260206004820152602760248201527f5f72616e645374726174656779436f756e743a20666c6167206e6f74207265636044820152661bd9db9a5e995960ca1b606482015260840162002576565b6000816001600160401b038111156200395d576200395d62006348565b604051908082528060200260200182016040528015620039a457816020015b60408051808201909152600080825260208201528152602001906001900390816200397c5790505b50905060005b815181101562003a31576040518060400160405280602f8381548110620039d557620039d56200635e565b600091825260209182902001546001600160a01b03168252670de0b6b3a7640000910152825183908390811062003a105762003a106200635e565b6020026020010181905250808062003a28906200650b565b915050620039aa565b509392505050565b60008062003a4f603b80546200363890620067dd565b9050600181141562003a6357600091505090565b60028114156200370657620f424091505090565b60008062003a8d603c80546200363890620067dd565b9050600181141562003aa25750600092915050565b600281141562003ad75762003ad0600180856000015162003ac4919062006c91565b63ffffffff1662003fc3565b9392505050565b600481141562003aed5750505163ffffffff1690565b60405162461bcd60e51b815260206004820152602a60248201527f5f72616e64496e697469616c4f70657261746f72733a20666c6167206e6f74206044820152691c9958dbd9db9a5e995960b21b606482015260840162002576565b60008062003b596043546200260d565b60405160200162003b6b919062006cb9565b60408051601f1981840301815291905260438054919250600062003b8f836200650b565b9190505550600080600062003ba484620040b6565b925092509250826001600160a01b0316632a34ade86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003be657600080fd5b505af115801562003bfb573d6000803e3d6000fd5b5050604051630da66deb60e31b81526001600160a01b0386169250636d336f58915062003c2f908590859060040162006ceb565b600060405180830381600087803b15801562003c4a57600080fd5b505af115801562003c5f573d6000803e3d6000fd5b5050601d546040516336b87bd760e11b81526001600160a01b03878116600483015262003cf994509091169150636d70f7ae90602401602060405180830381865afa15801562003cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cd9919062006865565b6040518060600160405280603181526020016203a7df60319139620035d4565b50909392505050565b805160609060005b8181101562003e5757600062003d2282600162006910565b90505b8281101562003e415784818151811062003d435762003d436200635e565b60200260200101516001600160a01b031685838151811062003d695762003d696200635e565b60200260200101516001600160a01b0316111562003e2c57600085838151811062003d985762003d986200635e565b6020026020010151905085828151811062003db75762003db76200635e565b602002602001015186848151811062003dd45762003dd46200635e565b60200260200101906001600160a01b031690816001600160a01b0316815250508086838151811062003e0a5762003e0a6200635e565b60200260200101906001600160a01b031690816001600160a01b031681525050505b8062003e38816200650b565b91505062003d25565b508062003e4e816200650b565b91505062003d0a565b509192915050565b62003ea78160405160240162003e7791815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b17905262004263565b50565b6200361e828260405160240162003ec392919062006d14565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905262004263565b8062003ea7576000805160206203a66283398151915260405162003f489060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003ea762004284565b600062003f8560008351116040518060600160405280603281526020016203a6d160329139620035d4565b600062003f9d600060018551620038a09190620068df565b905082818151811062003fb45762003fb46200635e565b016020015160f81c9392505050565b60008062003fd28484620068df565b62003fdf90600162006910565b90506000815b801562004004578162003ff8816200650b565b92505060011c62003fe5565b600062004015600180851b620068df565b60375490915081165b8481106200403c5781620040338683620068df565b1690506200401e565b6037546040516020016200405291815260200190565b60408051601f19818403018152919052805160209091012060375562004079818962006910565b98975050505050505050565b6000805b821562002607576200409d600184620068df565b9092169180620040ad8162006d38565b91505062004089565b6000606080600080620040c862004388565b91509150600080620040e2603880546200363890620067dd565b905060018114156200413357878484604051620040ff9062005f76565b6200410d9392919062006d5d565b604051809103906000f0801580156200412a573d6000803e3d6000fd5b509150620041a1565b6002811415620041a1578760405160200162004150919062006dc6565b6040516020818303038152906040529750878484604051620041729062005f84565b620041809392919062006d5d565b604051809103906000f0801580156200419d573d6000803e3d6000fd5b5091505b7f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562004201573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200422b919081019062006776565b6040516200423a919062006df0565b60405180910390a1600080620042508462004559565b949b909a50939850929650505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000805160206203a6828339815191523b1562004377576040516000906000805160206203a682833981519152907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490620042f29083906519985a5b195960d21b9060019060200162006e39565b60408051601f198184030181529082905262004312929160200162006814565b60408051601f19818403018152908290526200432e9162006847565b6000604051808303816000865af19150503d80600081146200436d576040519150601f19603f3d011682016040523d82523d6000602084013e62004372565b606091505b505050505b6007805461ff001916610100179055565b60006200439462005f92565b603e54603d541415620044285760405162461bcd60e51b815260206004820152604f60248201527f5f66657463684b6579706169723a206e6f7420656e6f7567682067656e65726160448201527f746564206b6579732e20436865636b20496e746567726174696f6e4465706c6f60648201526e3cb2b91731b7b739ba393ab1ba37b960891b608482015260a40162002576565b6000603e603d54815481106200444257620044426200635e565b906000526020600020015490506000603f603d54815481106200446957620044696200635e565b60009182526020918290206040805160a0810182526008939093029091018054606084019081526001820154608080860191909152908452825180840184526002808401548252600384015482880152958501528251908101808452939491938584019391926004860192849290830191849182845b815481526020019060010190808311620044df57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311620045165750505091909252505050905250603d805491925060006200454b836200650b565b909155509194909350915050565b6060806000602f805490506001600160401b038111156200457e576200457e62006348565b604051908082528060200260200182016040528015620045a8578160200160208202803683370190505b50602f549091506000906001600160401b03811115620045cc57620045cc62006348565b604051908082528060200260200182016040528015620045f6578160200160208202803683370190505b5090507f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562004659573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004683919081019062006776565b60405162004692919062006e5a565b60405180910390a160005b602f54811015620047cf576000602f8281548110620046c057620046c06200635e565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa15801562004713573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004739919062006bb2565b905060006200474f620f4240624c4b4062003fc3565b90506200475e828a83620047da565b828685815181106200477457620047746200635e565b60200260200101906001600160a01b031690816001600160a01b03168152505080858581518110620047aa57620047aa6200635e565b6020026020010181815250505050508080620047c6906200650b565b9150506200469d565b509094909350915050565b620047e98383836000620047ee565b505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620048449162006847565b600060405180830381855afa9150503d806000811462004881576040519150601f19603f3d011682016040523d82523d6000602084013e62004886565b606091505b50915050600081806020019051810190620048a29190620067c3565b9050620048dc84620048d587620048ce6370a0823160e01b620048c7600c8d620049f4565b9062004a1a565b9062004a38565b9062004a61565b8215620049ec5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162004927919062006847565b600060405180830381855afa9150503d806000811462004964576040519150601f19603f3d011682016040523d82523d6000602084013e62004969565b606091505b50915050600081806020019051810190620049859190620067c3565b905082861015620049b0576200499c8684620068df565b620049a89082620068df565b9050620049cb565b620049bc8387620068df565b620049c8908262006910565b90505b620049e981620048d56318160ddd60e01b620048c7600c8d620049f4565b50505b505050505050565b6005820180546001600160a01b0319166001600160a01b03831617905560008262002604565b60038201805463ffffffff191660e083901c17905560008262002604565b6002820180546001810182556000918252602082206001600160a01b0384169101558262002604565b6200361e8282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562004ada57602002820191906000526020600020905b81548152602001906001019080831162004ac5575b5050505050905060008362004aef8362004dd5565b60405160200162004b0292919062006814565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162004b5691869188910162006eae565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662004b915762004b8f8762004e88565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162004bd291879189910162006eae565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162004c19919062006847565b600060405180830381855afa9150503d806000811462004c56576040519150601f19603f3d011682016040523d82523d6000602084013e62004c5b565b606091505b50915062004c7890508162004c7288602062006eea565b62004e95565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206203a6828339815191529063667f9d7090604401602060405180830381865afa15801562004cda573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d009190620067c3565b905080821462004d245760405162461bcd60e51b8152600401620025769062006f0c565b6040516370ca10bb60e01b81526000805160206203a682833981519152906370ca10bb9062004d5c908b9087908e9060040162006e39565b600060405180830381600087803b15801562004d7757600080fd5b505af115801562004d8c573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562004dc160028b01600062005fe2565b896004016000905550505050505050505050565b606060008251602062004de9919062006eea565b6001600160401b0381111562004e035762004e0362006348565b6040519080825280601f01601f19166020018201604052801562004e2e576020820181803683370190505b50905060005b835181101562004e8157600084828151811062004e555762004e556200635e565b60200260200101519050808260200260200184015250808062004e78906200650b565b91505062004e34565b5092915050565b6000620026078262004f15565b6000806000602085511162004eac57845162004eaf565b60205b905060005b81811015620038325762004eca81600862006eea565b8662004ed7838862006910565b8151811062004eea5762004eea6200635e565b01602001516001600160f81b031916901c92909217918062004f0c816200650b565b91505062004eb4565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562004f8757602002820191906000526020600020905b81548152602001906001019080831162004f72575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062004fd39250859187910162006eae565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562005072576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200504291859187910162006eae565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620050808362005c45565b6040516020016200509392919062006814565b60405160208183030381529060405290506000805160206203a7bf83398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620050f257600080fd5b505af115801562005107573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005128919062006847565b600060405180830381855afa9150503d806000811462005165576040519150601f19603f3d011682016040523d82523d6000602084013e6200516a565b606091505b509150620051879050816200518187602062006eea565b62005cf1565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206203a682833981519152906365bc9481906024016000604051808303816000875af1158015620051e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200520e91908101906200702f565b509050805160011415620054f05760006000805160206203a7bf83398151915260001c6001600160a01b031663667f9d7089846000815181106200525657620052566200635e565b60200260200101516040518363ffffffff1660e01b8152600401620052909291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620052ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052d49190620067c3565b9050806200533f577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200531457620053146200635e565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620053615760405162461bcd60e51b8152600401620025769062006f0c565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200539992919062006eae565b6040516020818303038152906040528051906020012085600081518110620053c557620053c56200635e565b602002602001015160001c604051620053e2949392919062007099565b60405180910390a1816000815181106200540057620054006200635e565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200544b918a918c910162006eae565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c16855282528284209251909391620054b5918a918c910162006eae565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062005ac8565b60018151111562005a575760005b815181101562005a505760006000805160206203a7bf83398151915260001c6001600160a01b031663667f9d708a8585815181106200554157620055416200635e565b60200260200101516040518363ffffffff1660e01b81526004016200557b9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005599573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620055bf9190620067c3565b90508062005629577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620055fe57620055fe6200635e565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462005638575062005a3b565b82518119906000805160206203a682833981519152906370ca10bb908c908790879081106200566b576200566b6200635e565b6020026020010151846040518463ffffffff1660e01b8152600401620056949392919062006e39565b600060405180830381600087803b158015620056af57600080fd5b505af1158015620056c4573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620056e6919062006847565b600060405180830381855afa9150503d806000811462005723576040519150601f19603f3d011682016040523d82523d6000602084013e62005728565b606091505b5090925090506200574081620051818c602062006eea565b9650508080156200575057508186145b15620059a3577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200578e92919062006eae565b60405160208183030381529060405280519060200120888881518110620057b957620057b96200635e565b602002602001015160001c604051620057d6949392919062007099565b60405180910390a1848481518110620057f357620057f36200635e565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200583e918d918f910162006eae565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c604051602001620058cb92919062006eae565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206203a7bf83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200593d576200593d6200635e565b6020026020010151866040518463ffffffff1660e01b8152600401620059669392919062006e39565b600060405180830381600087803b1580156200598157600080fd5b505af115801562005996573d6000803e3d6000fd5b5050505050505062005a50565b6000805160206203a7bf83398151915260001c6001600160a01b03166370ca10bb8c878781518110620059da57620059da6200635e565b6020026020010151866040518463ffffffff1660e01b815260040162005a039392919062006e39565b600060405180830381600087803b15801562005a1e57600080fd5b505af115801562005a33573d6000803e3d6000fd5b505050505050505b8062005a47816200650b565b915050620054fe565b5062005ac8565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002576565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162005b0c9188918a910162006eae565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005b9b5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b606482015260840162002576565b6005890180546001600160a01b031916905560038901805463ffffffff1916905562005bcc60028a01600062005fe2565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a1684528252808320905190929162005c129188918a910162006eae565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062005c59919062006eea565b6001600160401b0381111562005c735762005c7362006348565b6040519080825280601f01601f19166020018201604052801562005c9e576020820181803683370190505b50905060005b835181101562004e8157600084828151811062005cc55762005cc56200635e565b60200260200101519050808260200260200184015250808062005ce8906200650b565b91505062005ca4565b6000806000602085511162005d0857845162005d0b565b60205b905060005b81811015620038325762005d2681600862006eea565b8662005d33838862006910565b8151811062005d465762005d466200635e565b01602001516001600160f81b031916901c92909217918062005d68816200650b565b91505062005d10565b61071880620070ca83390190565b61077880620077e283390190565b60948062007f5a83390190565b61022a8062007fee83390190565b6103f3806200821883390190565b610e81806200860b83390190565b614ad0806200948c83390190565b6104e4806200df5c83390190565b615c46806200e44083390190565b61338a806201408683390190565b610efe806201741083390190565b613169806201830e83390190565b611f78806201b47783390190565b611ab4806201d3ef83390190565b61117d806201eea383390190565b613958806202002083390190565b61210b806202397883390190565b6113ec8062025a8383390190565b6116e08062026e6f83390190565b616187806202854f83390190565b611a25806202e6d683390190565b604051806040016040528062005eab62006002565b815260200162005eba62006002565b905290565b60405180606001604052806003906020820280368337509192915050565b82805462005eeb90620067dd565b90600052602060002090601f01602090048101928262005f0f576000855562005f5a565b82601f1062005f2a57805160ff191683800117855562005f5a565b8280016001018555821562005f5a579182015b8281111562005f5a57825182559160200191906001019062005f3d565b506200375d92915062006020565b610e6080620300fb83390190565b6146f48062030f5b83390190565b615013806203564f83390190565b6040805160a0810190915260006060820181815260808301919091528190815260200162005fd3604051806040016040528060008152602001600081525090565b815260200162005eba62005e96565b508054600082559060005260206000209081019062003ea7919062006020565b60405180604001604052806002906020820280368337509192915050565b5b808211156200375d576000815560010162006021565b6000602082840312156200604a57600080fd5b5035919050565b8060005b60028110156200607657815184526020938401939091019060010162006055565b50505050565b6200608982825162006051565b6020810151620047e9604084018262006051565b608081016200260782846200607c565b600081518084526020808501945080840160005b83811015620060e85781516001600160a01b031687529582019590820190600101620060c1565b509495945050505050565b602081526000620026046020830184620060ad565b60005b83811015620061255781810151838201526020016200610b565b83811115620060765750506000910152565b600081518084526200615181602086016020860162006108565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200621b57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200620457605f19898503018352620061f184865162006137565b948e01949350918d0191600101620061d2565b505050978a0197945050918801916001016200618c565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620062d357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620062bd5783516001600160e01b0319168252928b019260019290920191908b019062006291565b50978a0197955050509187019160010162006253565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200633b57603f198886030184526200632885835162006137565b9450928501929085019060010162006309565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604081526000620063896040830185620060ad565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b600081518084526020808501945080840160005b83811015620060e857815187529582019590820190600101620063dd565b6001600160a01b0387811682528616602082015260ff851660408201526060810184905260c0608082018190526000906200643990830185620060ad565b82810360a08401526200644d8185620063c9565b9998505050505050505050565b6001600160a01b03848116825283166020820152606060408201819052600090620064889083018462006137565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b815260008251620064bb81600d85016020870162006108565b91909101600d0192915050565b6214d51560ea1b815260008251620064e881600385016020870162006108565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415620065225762006522620064f5565b5060010190565b600081518084526020808501945080840160005b83811015620060e85781516001600160601b0316875295820195908201906001016200653d565b600081518084526020808501945080840160005b83811015620060e857815180516001600160a01b031688528301516001600160601b0316838801526040909601959082019060010162006578565b600081518084526020808501808196508360051b8101915082860160005b85811015620065ff578284038952620065ec84835162006564565b98850198935090840190600101620065d1565b5091979650505050505050565b6001600160a01b038981168252888116602080840191909152888216604084015290871660608084019190915260ff8716608084015261010060a084018190528651908401819052600092610120850192888201929190855b83811015620066af576200669e868651805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b948101949382019360010162006665565b505050505082810360c0840152620066c8818662006529565b905082810360e0840152620066de8185620065b3565b9b9a5050505050505050505050565b604051601f8201601f191681016001600160401b038111828210171562006718576200671862006348565b604052919050565b60006001600160401b038311156200673c576200673c62006348565b62006751601f8401601f1916602001620066ed565b90508281528383830111156200676657600080fd5b62003ad083602083018462006108565b6000602082840312156200678957600080fd5b81516001600160401b03811115620067a057600080fd5b8201601f81018413620067b257600080fd5b620027228482516020840162006720565b600060208284031215620067d657600080fd5b5051919050565b600181811c90821680620067f257607f821691505b60208210811415620035ce57634e487b7160e01b600052602260045260246000fd5b6001600160e01b03198316815281516000906200683981600485016020870162006108565b919091016004019392505050565b600082516200685b81846020870162006108565b9190910192915050565b6000602082840312156200687857600080fd5b8151801515811462003ad057600080fd5b6040815260006200689e604083018562006137565b828103602084015262006488818562006137565b634e487b7160e01b600052601260045260246000fd5b600082620068da57620068da620068b2565b500490565b600082821015620068f457620068f4620064f5565b500390565b6000826200690b576200690b620068b2565b500690565b60008219821115620069265762006926620064f5565b500190565b6200695a8185805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b6001600160601b038316606082015260a0608082015260006200648860a083018462006564565b6b02932b3b4b9ba32b934b733960a51b815260008251620069aa81600c85016020870162006108565b7f20696e697469616c206f70657261746f727320696e20656163682071756f7275600c939091019283015250606d60f81b602c820152602d01919050565b60208152600062002604602083018462006137565b600060208083526000845481600182811c91508083168062006a2057607f831692505b85831081141562006a3f57634e487b7160e01b85526022600452602485fd5b87860183815260200181801562006a5f576001811462006a715762006a9e565b60ff1986168252878201965062006a9e565b60008b81526020902060005b8681101562006a985781548482015290850190890162006a7d565b83019750505b50949998505050505050505050565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b8481101562006b3857888703605f19018652825180518089529085019085890190845b8181101562006b215783516001600160a01b03168352928701929187019160010162006afa565b509098505050948301949183019160010162006ad7565b5050508584038187015250505062006488818562006137565b60808152600062006b66608083018762006137565b828103602084015262006b7a818762006137565b604084019590955250506001600160a01b039190911660609091015292915050565b6001600160a01b038116811462003ea757600080fd5b60006020828403121562006bc557600080fd5b815162003ad08162006b9c565b60408152600062006be76040830185620060ad565b82810360208481019190915284518083528582019282019060005b8181101562006c2257845115158352938301939183019160010162006c02565b5090979650505050505050565b6000835162006c4381846020880162006108565b6001600160f81b0319939093169190920190815260010192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002604608083018462006137565b600063ffffffff8381169083168181101562006cb15762006cb1620064f5565b039392505050565b6727b832b930ba37b960c11b81526000825162006cde81600885016020870162006108565b9190910160080192915050565b60408152600062006d006040830185620060ad565b8281036020840152620064888185620063c9565b60408152600062006d29604083018562006137565b90508260208301529392505050565b600061ffff8083168181141562006d535762006d53620064f5565b6001019392505050565b600061014080835262006d738184018762006137565b91505083602083015262006d9560408301845180518252602090810151910152565b60208381015180516080850152015160a0830152604083015162006dbd60c08401826200607c565b50949350505050565b6000825162006dda81846020870162006108565b6317d05b1d60e21b920191825250600401919050565b60408152601760408201527f5f72616e64557365723a20437265617465642075736572000000000000000000606082015260806020820152600062002604608083018462006137565b6001600160a01b039390931683526020830191909152604082015260600190565b60408152602260408201527f5f6465616c52616e64546f6b656e733a206465616c696e672061737365747320606082015261746f60f01b608082015260a0602082015260006200260460a083018462006137565b825160009082906020808701845b8381101562006eda5781518552938201939082019060010162006ebc565b5050948252509092019392505050565b600081600019048311821515161562006f075762006f07620064f5565b500290565b6020808252606f908201527f73746453746f726167652066696e642853746453746f72616765293a2050616360408201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560608201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960808201526e39b713ba1039bab83837b93a32b21760891b60a082015260c00190565b600082601f83011262006fb957600080fd5b815160206001600160401b0382111562006fd75762006fd762006348565b8160051b62006fe8828201620066ed565b92835284810182019282810190878511156200700357600080fd5b83870192505b84831015620070245782518252918301919083019062007009565b979650505050505050565b600080604083850312156200704357600080fd5b82516001600160401b03808211156200705b57600080fd5b620070698683870162006fa7565b935060208501519150808211156200708057600080fd5b506200708f8582860162006fa7565b9150509250929050565b6001600160a01b039490941684526001600160e01b0319929092166020840152604083015260608201526080019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c003341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f500000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d5f636f6e66696752616e643a20696e76616c69642066696c6c54797065732c206e6f20666c616773207061737365645f72616e6456616c75653a20747269656420746f2073656c6563742076616c75652066726f6d20656d7074792061727261795f636f6e66696752616e643a20696e76616c6964206d696e696d756d5374616b652c206e6f20666c616773207061737365645f636f6e66696752616e643a20696e76616c6964206e756d537472617465676965732c206e6f20666c61677320706173736564476173207573656420666f72207570646174654f70657261746f7273466f7251756f72756d3a205f636f6e66696752616e643a20696e76616c6964205f7573657254797065732c206e6f20666c61677320706173736564885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f6e657752616e646f6d4f70657261746f723a206f70657261746f722073686f756c6420626520726567697374657265645f636f6e66696752616e643a20696e76616c6964206e756d51756f72756d732c206e6f20666c61677320706173736564b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8a2646970667358221220b36eb72b001a76a05f8795bd59eb682efcd36d5c1722f5e22d3e8b4682d8b3d464736f6c634300080c00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573742f6666692f636f6e666967732f6f70657261746f72424c534b6579732e6a736f6e8d800d6614d35eed73733ee453164a3b48076eb3138f466adeeb9dec7bb31f70 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@\x81\x90R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x81\x17\x90\x92U`2\x80T0\x90\x83\x16\x17\x90U`3\x80T\x90\x91\x16s\xBE\xB9\x86N=j\x1B\xA4N\x13\x1AF/c(\xF2\xD1\xD6\xD5M\x17\x90U\x7F\xA3\xE2\xA0\xC4\xCE k\x9Cfy\xACca\xC04\xF3\x1C\x88D\xAE1\x04\x10\x8FG\xED\x8CA:\xCF32`4\x81\x90U`\x01b^y\xB7`\xE0\x1B\x03\x19\x83R`\x84R\x90c\xFF\xA1\x86I\x90`\xA4\x90` \x90`$\x81\x86Z\xFA\x15\x80\x15b\0\0\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF3\x91\x90b\0?\xD1V[`5`\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\x7F\xB3\x13S\xC2?f\xABOu\xDD\x05\x99i\x15\xA6xw\xA1x\xD5\x12\x9A(\xD2\xAF\x87\x1A\xC1\xFC\xEB?\xD3`\0\x1C`6`\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`\0`=U`\0`CU`@Q\x80a}\0\x01`@R\x80a\x03Ua\xFF\xFF\x16\x81R` \x01a\x02\xB2a\xFF\xFF\x16\x81R` \x01a\x03/a\xFF\xFF\x16\x81R` \x01a\x01\x8Ea\xFF\xFF\x16\x81R` \x01a\x03\xDBa\xFF\xFF\x16\x81R` \x01a\x01\xB0a\xFF\xFF\x16\x81R` \x01a\x03\xB2a\xFF\xFF\x16\x81R` \x01a\x02\xCDa\xFF\xFF\x16\x81R` \x01a\x02\xF8a\xFF\xFF\x16\x81R` \x01a\x03Ha\xFF\xFF\x16\x81R` \x01a\x02\xCFa\xFF\xFF\x16\x81R` \x01a\x02\xCAa\xFF\xFF\x16\x81R` \x01`\x0Ba\xFF\xFF\x16\x81R` \x01a\x02*a\xFF\xFF\x16\x81R` \x01a\x02\x10a\xFF\xFF\x16\x81R` \x01a\x01pa\xFF\xFF\x16\x81R` \x01`\xA0a\xFF\xFF\x16\x81R` \x01`\x16a\xFF\xFF\x16\x81R` \x01a\x022a\xFF\xFF\x16\x81R` \x01a\x01\na\xFF\xFF\x16\x81R` \x01a\x03;a\xFF\xFF\x16\x81R` \x01a\x01\xE8a\xFF\xFF\x16\x81R` \x01a\x01Oa\xFF\xFF\x16\x81R` \x01a\x026a\xFF\xFF\x16\x81R` \x01a\x01ma\xFF\xFF\x16\x81R` \x01`6a\xFF\xFF\x16\x81R` \x01`\x06a\xFF\xFF\x16\x81R` \x01a\x02\xDDa\xFF\xFF\x16\x81R` \x01a\x03Ca\xFF\xFF\x16\x81R` \x01a\x02\x90a\xFF\xFF\x16\x81R` \x01a\x01\xF0a\xFF\xFF\x16\x81R` \x01a\x01\xD8a\xFF\xFF\x16\x81R` \x01`~a\xFF\xFF\x16\x81R` \x01`2a\xFF\xFF\x16\x81R` \x01a\x02\x83a\xFF\xFF\x16\x81R` \x01a\x02xa\xFF\xFF\x16\x81R` \x01a\x01\xA5a\xFF\xFF\x16\x81R` \x01a\x03\x1Da\xFF\xFF\x16\x81R` \x01a\x02ba\xFF\xFF\x16\x81R` \x01a\x02\xE1a\xFF\xFF\x16\x81R` \x01`\x9Aa\xFF\xFF\x16\x81R` \x01a\x03\x96a\xFF\xFF\x16\x81R` \x01a\x033a\xFF\xFF\x16\x81R` \x01a\x02\xB6a\xFF\xFF\x16\x81R` \x01a\x02,a\xFF\xFF\x16\x81R` \x01a\x02`a\xFF\xFF\x16\x81R` \x01`\xCBa\xFF\xFF\x16\x81R` \x01a\x02\ta\xFF\xFF\x16\x81R` \x01`\xBCa\xFF\xFF\x16\x81R` \x01a\x03\x8Ca\xFF\xFF\x16\x81R` \x01a\x01\x90a\xFF\xFF\x16\x81R` \x01a\x01]a\xFF\xFF\x16\x81R` \x01a\x01\"a\xFF\xFF\x16\x81R` \x01a\x01\xCFa\xFF\xFF\x16\x81R` \x01a\x02\xA8a\xFF\xFF\x16\x81R` \x01a\x03\xCDa\xFF\xFF\x16\x81R` \x01`\xCCa\xFF\xFF\x16\x81R` \x01a\x01\xB7a\xFF\xFF\x16\x81R` \x01a\x036a\xFF\xFF\x16\x81R` \x01a\x03\x1Fa\xFF\xFF\x16\x81R` \x01a\x03\x1Ba\xFF\xFF\x16\x81R` \x01`\xFBa\xFF\xFF\x16\x81R` \x01a\x01\xE2a\xFF\xFF\x16\x81R` \x01a\x01Fa\xFF\xFF\x16\x81R` \x01a\x01\x9Ba\xFF\xFF\x16\x81R` \x01a\x03Ga\xFF\xFF\x16\x81R` \x01a\x03Sa\xFF\xFF\x16\x81R` \x01a\x02\x8Ca\xFF\xFF\x16\x81R` \x01a\x01\xCAa\xFF\xFF\x16\x81R` \x01`la\xFF\xFF\x16\x81R` \x01`\\a\xFF\xFF\x16\x81R` \x01a\x01\x16a\xFF\xFF\x16\x81R` \x01`\x08a\xFF\xFF\x16\x81R` \x01a\x03\x05a\xFF\xFF\x16\x81R` \x01a\x01.a\xFF\xFF\x16\x81R` \x01a\x02\xBBa\xFF\xFF\x16\x81R` \x01a\x03\xA8a\xFF\xFF\x16\x81R` \x01a\x01\xABa\xFF\xFF\x16\x81R` \x01a\x01Aa\xFF\xFF\x16\x81R` \x01a\x02\xBCa\xFF\xFF\x16\x81R` \x01a\x02\xABa\xFF\xFF\x16\x81R` \x01`$a\xFF\xFF\x16\x81R` \x01a\x03a\xFF\xFF\x16\x81R` \x01a\x03(a\xFF\xFF\x16\x81R` \x01a\x03\xB7a\xFF\xFF\x16\x81R` \x01a\x03\x9Ca\xFF\xFF\x16\x81R` \x01`\x93a\xFF\xFF\x16\x81R` \x01a\x02\xC1a\xFF\xFF\x16\x81R` \x01a\x03\x04a\xFF\xFF\x16\x81R` \x01`\x1Ea\xFF\xFF\x16\x81R` \x01a\x01\xE6a\xFF\xFF\x16\x81R` \x01a\x02@a\xFF\xFF\x16\x81R` \x01a\x01\xD5a\xFF\xFF\x16\x81R` \x01a\x01Ka\xFF\xFF\x16\x81R` \x01`\x1Ba\xFF\xFF\x16\x81R` \x01a\x019a\xFF\xFF\x16\x81R` \x01a\x03Qa\xFF\xFF\x16\x81R` \x01a\x03%a\xFF\xFF\x16\x81R` \x01a\x01\xF3a\xFF\xFF\x16\x81R` \x01a\x01\x94a\xFF\xFF\x16\x81R` \x01`\xB2a\xFF\xFF\x16\x81R` \x01`\na\xFF\xFF\x16\x81R` \x01a\x01\x8Fa\xFF\xFF\x16\x81R` \x01a\x01\xE5a\xFF\xFF\x16\x81R` \x01a\x02sa\xFF\xFF\x16\x81R` \x01`a\xFF\xFF\x16\x81R` \x01a\x02\x1Da\xFF\xFF\x16\x81R` \x01a\x02\xBFa\xFF\xFF\x16\x81R` \x01`Qa\xFF\xFF\x16\x81R` \x01a\x01\x9Ca\xFF\xFF\x16\x81R` \x01`ba\xFF\xFF\x16\x81R` \x01a\x01\xDDa\xFF\xFF\x16\x81R` \x01a\x01\xC4a\xFF\xFF\x16\x81R` \x01a\x02\xF3a\xFF\xFF\x16\x81R` \x01a\x02Va\xFF\xFF\x16\x81R` \x01a\x01\xD0a\xFF\xFF\x16\x81R` \x01a\x03pa\xFF\xFF\x16\x81R` \x01a\x03ta\xFF\xFF\x16\x81R` \x01a\x01\xA2a\xFF\xFF\x16\x81R` \x01a\x03=a\xFF\xFF\x16\x81R` \x01a\x02\x85a\xFF\xFF\x16\x81R` \x01a\x02_a\xFF\xFF\x16\x81R` \x01a\x01\x17a\xFF\xFF\x16\x81R` \x01a\x034a\xFF\xFF\x16\x81R` \x01`Ba\xFF\xFF\x16\x81R` \x01a\x01\xA0a\xFF\xFF\x16\x81R` \x01a\x02\x05a\xFF\xFF\x16\x81R` \x01a\x01\x80a\xFF\xFF\x16\x81R` \x01`\x1Da\xFF\xFF\x16\x81R` \x01`\xC0a\xFF\xFF\x16\x81R` \x01`;a\xFF\xFF\x16\x81R` \x01`\x0Fa\xFF\xFF\x16\x81R` \x01a\x02=a\xFF\xFF\x16\x81R` \x01`^a\xFF\xFF\x16\x81R` \x01a\x01\x7Fa\xFF\xFF\x16\x81R` \x01a\x03\xD5a\xFF\xFF\x16\x81R` \x01a\x03ya\xFF\xFF\x16\x81R` \x01a\x03\x92a\xFF\xFF\x16\x81R` \x01`\xACa\xFF\xFF\x16\x81R` \x01a\x01Ba\xFF\xFF\x16\x81R` \x01`\xF8a\xFF\xFF\x16\x81R` \x01a\x03Ma\xFF\xFF\x16\x81R` \x01a\x03\x07a\xFF\xFF\x16\x81R` \x01a\x03\xE8a\xFF\xFF\x16\x81R` \x01a\x03Va\xFF\xFF\x16\x81R` \x01a\x031a\xFF\xFF\x16\x81R` \x01a\x02\x9Ca\xFF\xFF\x16\x81R` \x01a\x02\xD4a\xFF\xFF\x16\x81R` \x01a\x03\x12a\xFF\xFF\x16\x81R` \x01a\x02?a\xFF\xFF\x16\x81R` \x01a\x02\xC6a\xFF\xFF\x16\x81R` \x01a\x039a\xFF\xFF\x16\x81R` \x01a\x01\x97a\xFF\xFF\x16\x81R` \x01a\x02Pa\xFF\xFF\x16\x81R` \x01a\x03za\xFF\xFF\x16\x81R` \x01a\x03\x8Fa\xFF\xFF\x16\x81R` \x01a\x02\x81a\xFF\xFF\x16\x81R` \x01a\x02 a\xFF\xFF\x16\x81R` \x01a\x03\xDDa\xFF\xFF\x16\x81R` \x01a\x01[a\xFF\xFF\x16\x81R` \x01`\xC4a\xFF\xFF\x16\x81R` \x01`}a\xFF\xFF\x16\x81R` \x01a\x01ra\xFF\xFF\x16\x81R` \x01a\x01\xCBa\xFF\xFF\x16\x81R` \x01a\x03#a\xFF\xFF\x16\x81R` \x01a\x01\xC6a\xFF\xFF\x16\x81R` \x01a\x024a\xFF\xFF\x16\x81R` \x01a\x03\xABa\xFF\xFF\x16\x81R` \x01a\x02\x92a\xFF\xFF\x16\x81R` \x01a\x02pa\xFF\xFF\x16\x81R` \x01a\x03\xE4a\xFF\xFF\x16\x81R` \x01`\x8Ea\xFF\xFF\x16\x81R` \x01a\x02\x02a\xFF\xFF\x16\x81R` \x01a\x02\xF6a\xFF\xFF\x16\x81R` \x01a\x03Pa\xFF\xFF\x16\x81R` \x01a\x03\xD4a\xFF\xFF\x16\x81R` \x01a\x03\xBBa\xFF\xFF\x16\x81R` \x01a\x03Wa\xFF\xFF\x16\x81R` \x01a\x01*a\xFF\xFF\x16\x81R` \x01`wa\xFF\xFF\x16\x81R` \x01a\x01\x87a\xFF\xFF\x16\x81R` \x01a\x01Ua\xFF\xFF\x16\x81R` \x01`\x82a\xFF\xFF\x16\x81R` \x01a\x02Aa\xFF\xFF\x16\x81R` \x01a\x03\x1Ea\xFF\xFF\x16\x81R` \x01a\x01Ca\xFF\xFF\x16\x81R` \x01a\x03\xDAa\xFF\xFF\x16\x81R` \x01`:a\xFF\xFF\x16\x81R` \x01`\xABa\xFF\xFF\x16\x81R` \x01`\x0Ea\xFF\xFF\x16\x81R` \x01a\x03\xBFa\xFF\xFF\x16\x81R` \x01`\xEAa\xFF\xFF\x16\x81R` \x01a\x03Fa\xFF\xFF\x16\x81R` \x01a\x03+a\xFF\xFF\x16\x81R` \x01a\x03\xBEa\xFF\xFF\x16\x81R` \x01a\x02\xCBa\xFF\xFF\x16\x81R` \x01a\x03\x86a\xFF\xFF\x16\x81R` \x01a\x03Na\xFF\xFF\x16\x81R` \x01a\x02;a\xFF\xFF\x16\x81R` \x01a\x01\xC8a\xFF\xFF\x16\x81R` \x01a\x01\x0Ca\xFF\xFF\x16\x81R` \x01a\x03ra\xFF\xFF\x16\x81R` \x01a\x01\x01a\xFF\xFF\x16\x81R` \x01a\x02Oa\xFF\xFF\x16\x81R` \x01a\x01\xF1a\xFF\xFF\x16\x81R` \x01a\x02va\xFF\xFF\x16\x81R` \x01`\x14a\xFF\xFF\x16\x81R` \x01`\x88a\xFF\xFF\x16\x81R` \x01a\x02\xA0a\xFF\xFF\x16\x81R` \x01a\x02ma\xFF\xFF\x16\x81R` \x01a\x02\xE8a\xFF\xFF\x16\x81R` \x01a\x03\x17a\xFF\xFF\x16\x81R` \x01a\x01:a\xFF\xFF\x16\x81R` \x01`\xFCa\xFF\xFF\x16\x81R` \x01a\x01oa\xFF\xFF\x16\x81R` \x01a\x03Aa\xFF\xFF\x16\x81R` \x01`\x17a\xFF\xFF\x16\x81R` \x01a\x02\xB5a\xFF\xFF\x16\x81R` \x01a\x02\xD6a\xFF\xFF\x16\x81R` \x01a\x02Sa\xFF\xFF\x16\x81R` \x01a\x01\x14a\xFF\xFF\x16\x81R` \x01a\x02la\xFF\xFF\x16\x81R` \x01`\xA7a\xFF\xFF\x16\x81R` \x01a\x01Ea\xFF\xFF\x16\x81R` \x01a\x01\x91a\xFF\xFF\x16\x81R` \x01a\x01\xE1a\xFF\xFF\x16\x81R` \x01`?a\xFF\xFF\x16\x81R` \x01a\x02\xDAa\xFF\xFF\x16\x81R` \x01a\x03\x03a\xFF\xFF\x16\x81R` \x01a\x02ea\xFF\xFF\x16\x81R` \x01a\x02fa\xFF\xFF\x16\x81R` \x01a\x03\xAFa\xFF\xFF\x16\x81R` \x01a\x02\x0Ea\xFF\xFF\x16\x81R` \x01a\x02\\a\xFF\xFF\x16\x81R` \x01`ha\xFF\xFF\x16\x81R` \x01a\x03\xA4a\xFF\xFF\x16\x81R` \x01a\x03Xa\xFF\xFF\x16\x81R` \x01a\x01\x07a\xFF\xFF\x16\x81R` \x01a\x02\x8Aa\xFF\xFF\x16\x81R` \x01a\x02Na\xFF\xFF\x16\x81R` \x01`\xE8a\xFF\xFF\x16\x81R` \x01a\x01\xCEa\xFF\xFF\x16\x81R` \x01a\x03\xA3a\xFF\xFF\x16\x81R` \x01`\xECa\xFF\xFF\x16\x81R` \x01a\x03\x93a\xFF\xFF\x16\x81R` \x01a\x01\x92a\xFF\xFF\x16\x81R` \x01a\x02\x84a\xFF\xFF\x16\x81R` \x01a\x01;a\xFF\xFF\x16\x81R` \x01`\xD5a\xFF\xFF\x16\x81R` \x01`\xF9a\xFF\xFF\x16\x81R` \x01a\x03ea\xFF\xFF\x16\x81R` \x01`\xB3a\xFF\xFF\x16\x81R` \x01a\x018a\xFF\xFF\x16\x81R` \x01a\x02\xCEa\xFF\xFF\x16\x81R` \x01a\x02\xA3a\xFF\xFF\x16\x81R` \x01a\x01\xEDa\xFF\xFF\x16\x81R` \x01a\x03\x87a\xFF\xFF\x16\x81R` \x01a\x02\x1Ea\xFF\xFF\x16\x81R` \x01a\x01\x1Fa\xFF\xFF\x16\x81R` \x01a\x02\xF0a\xFF\xFF\x16\x81R` \x01a\x01\x1Da\xFF\xFF\x16\x81R` \x01a\x01\xE7a\xFF\xFF\x16\x81R` \x01a\x02\x95a\xFF\xFF\x16\x81R` \x01a\x02ha\xFF\xFF\x16\x81R` \x01`\xB6a\xFF\xFF\x16\x81R` \x01a\x03xa\xFF\xFF\x16\x81R` \x01a\x03\xA1a\xFF\xFF\x16\x81R` \x01a\x03Ja\xFF\xFF\x16\x81R` \x01a\x01la\xFF\xFF\x16\x81R` \x01a\x02\xD0a\xFF\xFF\x16\x81R` \x01a\x03\xA7a\xFF\xFF\x16\x81R` \x01a\x01\x8Ca\xFF\xFF\x16\x81R` \x01a\x02\xFBa\xFF\xFF\x16\x81R` \x01`\xEBa\xFF\xFF\x16\x81R` \x01`\xE2a\xFF\xFF\x16\x81R` \x01a\x03oa\xFF\xFF\x16\x81R` \x01a\x01Za\xFF\xFF\x16\x81R` \x01a\x03\x94a\xFF\xFF\x16\x81R` \x01a\x02ga\xFF\xFF\x16\x81R` \x01a\x03 a\xFF\xFF\x16\x81R` \x01a\x03\xCCa\xFF\xFF\x16\x81R` \x01a\x03\x8Aa\xFF\xFF\x16\x81R` \x01a\x02#a\xFF\xFF\x16\x81R` \x01a\x03\xE5a\xFF\xFF\x16\x81R` \x01`\xC6a\xFF\xFF\x16\x81R` \x01a\x01\xF4a\xFF\xFF\x16\x81R` \x01`'a\xFF\xFF\x16\x81R` \x01`\xC1a\xFF\xFF\x16\x81R` \x01a\x03`a\xFF\xFF\x16\x81R` \x01a\x03Ea\xFF\xFF\x16\x81R` \x01a\x01-a\xFF\xFF\x16\x81R` \x01a\x01\xE4a\xFF\xFF\x16\x81R` \x01a\x01ja\xFF\xFF\x16\x81R` \x01a\x03Da\xFF\xFF\x16\x81R` \x01a\x01%a\xFF\xFF\x16\x81R` \x01a\x03\x91a\xFF\xFF\x16\x81R` \x01a\x01Da\xFF\xFF\x16\x81R` \x01a\x01\ra\xFF\xFF\x16\x81R` \x01a\x02\x08a\xFF\xFF\x16\x81R` \x01`\x19a\xFF\xFF\x16\x81R` \x01`\xA9a\xFF\xFF\x16\x81R` \x01a\x02\xE9a\xFF\xFF\x16\x81R` \x01a\x03\xC0a\xFF\xFF\x16\x81R` \x01a\x03sa\xFF\xFF\x16\x81R` \x01`=a\xFF\xFF\x16\x81R` \x01a\x02\xE5a\xFF\xFF\x16\x81R` \x01a\x01~a\xFF\xFF\x16\x81R` \x01`sa\xFF\xFF\x16\x81R` \x01`\xDCa\xFF\xFF\x16\x81R` \x01a\x03\xB9a\xFF\xFF\x16\x81R` \x01a\x02da\xFF\xFF\x16\x81R` \x01a\x03\xCAa\xFF\xFF\x16\x81R` \x01`\xCFa\xFF\xFF\x16\x81R` \x01a\x03\x1Ca\xFF\xFF\x16\x81R` \x01a\x03\x85a\xFF\xFF\x16\x81R` \x01a\x03aa\xFF\xFF\x16\x81R` \x01`5a\xFF\xFF\x16\x81R` \x01a\x01\x13a\xFF\xFF\x16\x81R` \x01a\x01\x98a\xFF\xFF\x16\x81R` \x01a\x02\x7Fa\xFF\xFF\x16\x81R` \x01a\x03ka\xFF\xFF\x16\x81R` \x01a\x01\ta\xFF\xFF\x16\x81R` \x01a\x02\xF4a\xFF\xFF\x16\x81R` \x01a\x03wa\xFF\xFF\x16\x81R` \x01`\x85a\xFF\xFF\x16\x81R` \x01a\x02Ja\xFF\xFF\x16\x81R` \x01a\x01(a\xFF\xFF\x16\x81R` \x01a\x01\xC2a\xFF\xFF\x16\x81R` \x01a\x01\xB1a\xFF\xFF\x16\x81R` \x01`\xC8a\xFF\xFF\x16\x81R` \x01`1a\xFF\xFF\x16\x81R` \x01a\x02\x96a\xFF\xFF\x16\x81R` \x01`\x02a\xFF\xFF\x16\x81R` \x01`\x04a\xFF\xFF\x16\x81R` \x01`\xB7a\xFF\xFF\x16\x81R` \x01a\x02\xB9a\xFF\xFF\x16\x81R` \x01`\xDEa\xFF\xFF\x16\x81R` \x01a\x01\xDFa\xFF\xFF\x16\x81R` \x01a\x01\xADa\xFF\xFF\x16\x81R` \x01a\x02\xEBa\xFF\xFF\x16\x81R` \x01`\x8Fa\xFF\xFF\x16\x81R` \x01a\x02\xC9a\xFF\xFF\x16\x81R` \x01a\x03\x10a\xFF\xFF\x16\x81R` \x01a\x03\xD6a\xFF\xFF\x16\x81R` \x01a\x02\x1Ba\xFF\xFF\x16\x81R` \x01a\x01|a\xFF\xFF\x16\x81R` \x01`Ka\xFF\xFF\x16\x81R` \x01a\x02\x9Ba\xFF\xFF\x16\x81R` \x01a\x02Ya\xFF\xFF\x16\x81R` \x01a\x03\xE0a\xFF\xFF\x16\x81R` \x01a\x01\xC9a\xFF\xFF\x16\x81R` \x01`Fa\xFF\xFF\x16\x81R` \x01`ga\xFF\xFF\x16\x81R` \x01a\x02Ka\xFF\xFF\x16\x81R` \x01a\x03\x11a\xFF\xFF\x16\x81R` \x01`ka\xFF\xFF\x16\x81R` \x01`\xBAa\xFF\xFF\x16\x81R` \x01a\x02\xA7a\xFF\xFF\x16\x81R` \x01a\x03$a\xFF\xFF\x16\x81R` \x01a\x035a\xFF\xFF\x16\x81R` \x01a\x027a\xFF\xFF\x16\x81R` \x01`\xC9a\xFF\xFF\x16\x81R` \x01a\x03\xA0a\xFF\xFF\x16\x81R` \x01a\x01\xCDa\xFF\xFF\x16\x81R` \x01a\x01\x9Da\xFF\xFF\x16\x81R` \x01`xa\xFF\xFF\x16\x81R` \x01`Ca\xFF\xFF\x16\x81R` \x01`\xA4a\xFF\xFF\x16\x81R` \x01a\x01\xB9a\xFF\xFF\x16\x81R` \x01`Ya\xFF\xFF\x16\x81R` \x01a\x03\xC2a\xFF\xFF\x16\x81R` \x01a\x02\xE2a\xFF\xFF\x16\x81R` \x01a\x03!a\xFF\xFF\x16\x81R` \x01`\xF2a\xFF\xFF\x16\x81R` \x01a\x02\xE4a\xFF\xFF\x16\x81R` \x01a\x01ua\xFF\xFF\x16\x81R` \x01a\x02\xF7a\xFF\xFF\x16\x81R` \x01`Da\xFF\xFF\x16\x81R` \x01a\x01\xEAa\xFF\xFF\x16\x81R` \x01`+a\xFF\xFF\x16\x81R` \x01a\x01fa\xFF\xFF\x16\x81R` \x01a\x02\xA5a\xFF\xFF\x16\x81R` \x01a\x03\xA9a\xFF\xFF\x16\x81R` \x01a\x03\na\xFF\xFF\x16\x81R` \x01a\x02Ma\xFF\xFF\x16\x81R` \x01a\x03\xB3a\xFF\xFF\x16\x81R` \x01a\x025a\xFF\xFF\x16\x81R` \x01a\x01\x9Ea\xFF\xFF\x16\x81R` \x01a\x03]a\xFF\xFF\x16\x81R` \x01a\x02\xC8a\xFF\xFF\x16\x81R` \x01a\x01+a\xFF\xFF\x16\x81R` \x01`Sa\xFF\xFF\x16\x81R` \x01a\x03\x88a\xFF\xFF\x16\x81R` \x01a\x03\xD2a\xFF\xFF\x16\x81R` \x01a\x03va\xFF\xFF\x16\x81R` \x01a\x03\xC9a\xFF\xFF\x16\x81R` \x01a\x02\xBDa\xFF\xFF\x16\x81R` \x01a\x01\xC5a\xFF\xFF\x16\x81R` \x01a\x03\xA5a\xFF\xFF\x16\x81R` \x01a\x02\xF5a\xFF\xFF\x16\x81R` \x01`La\xFF\xFF\x16\x81R` \x01a\x02\xD1a\xFF\xFF\x16\x81R` \x01a\x01\x1Ea\xFF\xFF\x16\x81R` \x01a\x017a\xFF\xFF\x16\x81R` \x01a\x03\xC8a\xFF\xFF\x16\x81R` \x01`\x9Ca\xFF\xFF\x16\x81R` \x01`\xB8a\xFF\xFF\x16\x81R` \x01a\x03\xE6a\xFF\xFF\x16\x81R` \x01a\x03\xE2a\xFF\xFF\x16\x81R` \x01a\x03\x99a\xFF\xFF\x16\x81R` \x01`\x9Fa\xFF\xFF\x16\x81R` \x01a\x03\x16a\xFF\xFF\x16\x81R` \x01a\x03\xA6a\xFF\xFF\x16\x81R` \x01`\x0Ca\xFF\xFF\x16\x81R` \x01`\x80a\xFF\xFF\x16\x81R` \x01a\x02\x07a\xFF\xFF\x16\x81R` \x01a\x013a\xFF\xFF\x16\x81R` \x01a\x03)a\xFF\xFF\x16\x81R` \x01a\x02\xAFa\xFF\xFF\x16\x81R` \x01`\xE4a\xFF\xFF\x16\x81R` \x01a\x01\x89a\xFF\xFF\x16\x81R` \x01`4a\xFF\xFF\x16\x81R` \x01a\x03\x90a\xFF\xFF\x16\x81R` \x01`\xD9a\xFF\xFF\x16\x81R` \x01`qa\xFF\xFF\x16\x81R` \x01a\x02\xE0a\xFF\xFF\x16\x81R` \x01`\xC3a\xFF\xFF\x16\x81R` \x01a\x03Za\xFF\xFF\x16\x81R` \x01a\x03\x9Da\xFF\xFF\x16\x81R` \x01`\x15a\xFF\xFF\x16\x81R` \x01`\xAAa\xFF\xFF\x16\x81R` \x01a\x011a\xFF\xFF\x16\x81R` \x01a\x03|a\xFF\xFF\x16\x81R` \x01a\x03\xD1a\xFF\xFF\x16\x81R` \x01a\x01ha\xFF\xFF\x16\x81R` \x01`\x8Ba\xFF\xFF\x16\x81R` \x01a\x03*a\xFF\xFF\x16\x81R` \x01`Ga\xFF\xFF\x16\x81R` \x01a\x02\xD7a\xFF\xFF\x16\x81R` \x01a\x02\x9Da\xFF\xFF\x16\x81R` \x01a\x02na\xFF\xFF\x16\x81R` \x01a\x03\x97a\xFF\xFF\x16\x81R` \x01` a\xFF\xFF\x16\x81R` \x01`\xADa\xFF\xFF\x16\x81R` \x01`\xD0a\xFF\xFF\x16\x81R` \x01`\"a\xFF\xFF\x16\x81R` \x01a\x02\x17a\xFF\xFF\x16\x81R` \x01a\x03\xBDa\xFF\xFF\x16\x81R` \x01a\x03\x0Ea\xFF\xFF\x16\x81R` \x01a\x03\x18a\xFF\xFF\x16\x81R` \x01a\x03ja\xFF\xFF\x16\x81R` \x01`0a\xFF\xFF\x16\x81R` \x01`\x84a\xFF\xFF\x16\x81R` \x01`\xB1a\xFF\xFF\x16\x81R` \x01`9a\xFF\xFF\x16\x81R` \x01`\ra\xFF\xFF\x16\x81R` \x01a\x01\xDBa\xFF\xFF\x16\x81R` \x01`\xF3a\xFF\xFF\x16\x81R` \x01a\x02\x87a\xFF\xFF\x16\x81R` \x01a\x01`a\xFF\xFF\x16\x81R` \x01`\x05a\xFF\xFF\x16\x81R` \x01a\x01\xEEa\xFF\xFF\x16\x81R` \x01a\x01\x15a\xFF\xFF\x16\x81R` \x01a\x02\xA9a\xFF\xFF\x16\x81R` \x01a\x02Da\xFF\xFF\x16\x81R` \x01a\x01Ra\xFF\xFF\x16\x81R` \x01`\x9Ea\xFF\xFF\x16\x81R` \x01a\x03\x98a\xFF\xFF\x16\x81R` \x01a\x01^a\xFF\xFF\x16\x81R` \x01a\x01,a\xFF\xFF\x16\x81R` \x01a\x01\x1Ca\xFF\xFF\x16\x81R` \x01a\x02ra\xFF\xFF\x16\x81R` \x01a\x01)a\xFF\xFF\x16\x81R` \x01a\x01qa\xFF\xFF\x16\x81R` \x01a\x03&a\xFF\xFF\x16\x81R` \x01a\x01\xD6a\xFF\xFF\x16\x81R` \x01a\x03\x7Fa\xFF\xFF\x16\x81R` \x01a\x02[a\xFF\xFF\x16\x81R` \x01a\x01\xA4a\xFF\xFF\x16\x81R` \x01a\x03\0a\xFF\xFF\x16\x81R` \x01a\x02\xF9a\xFF\xFF\x16\x81R` \x01`!a\xFF\xFF\x16\x81R` \x01`\xBFa\xFF\xFF\x16\x81R` \x01a\x01\xC1a\xFF\xFF\x16\x81R` \x01a\x01ga\xFF\xFF\x16\x81R` \x01a\x01wa\xFF\xFF\x16\x81R` \x01a\x03La\xFF\xFF\x16\x81R` \x01a\x021a\xFF\xFF\x16\x81R` \x01`Va\xFF\xFF\x16\x81R` \x01a\x01ca\xFF\xFF\x16\x81R` \x01a\x02^a\xFF\xFF\x16\x81R` \x01a\x02\xA4a\xFF\xFF\x16\x81R` \x01a\x02\xDEa\xFF\xFF\x16\x81R` \x01a\x01\x0Fa\xFF\xFF\x16\x81R` \x01a\x01}a\xFF\xFF\x16\x81R` \x01a\x02\xCCa\xFF\xFF\x16\x81R` \x01a\x02\xFFa\xFF\xFF\x16\x81R` \x01a\x01Qa\xFF\xFF\x16\x81R` \x01a\x02\xB0a\xFF\xFF\x16\x81R` \x01a\x03\xAAa\xFF\xFF\x16\x81R` \x01a\x02\xEAa\xFF\xFF\x16\x81R` \x01a\x02\x1Ca\xFF\xFF\x16\x81R` \x01a\x03\xAEa\xFF\xFF\x16\x81R` \x01`\xD1a\xFF\xFF\x16\x81R` \x01a\x01\xC3a\xFF\xFF\x16\x81R` \x01a\x01\x0Ba\xFF\xFF\x16\x81R` \x01a\x03\x8Ba\xFF\xFF\x16\x81R` \x01a\x02\xDBa\xFF\xFF\x16\x81R` \x01a\x02\xA2a\xFF\xFF\x16\x81R` \x01`\xB4a\xFF\xFF\x16\x81R` \x01a\x02ka\xFF\xFF\x16\x81R` \x01`\xA6a\xFF\xFF\x16\x81R` \x01a\x03}a\xFF\xFF\x16\x81R` \x01`da\xFF\xFF\x16\x81R` \x01a\x02\xC0a\xFF\xFF\x16\x81R` \x01a\x03\xE1a\xFF\xFF\x16\x81R` \x01a\x01&a\xFF\xFF\x16\x81R` \x01a\x02Ga\xFF\xFF\x16\x81R` \x01a\x03\x02a\xFF\xFF\x16\x81R` \x01a\x02\xE3a\xFF\xFF\x16\x81R` \x01a\x01\0a\xFF\xFF\x16\x81R` \x01a\x01\xFCa\xFF\xFF\x16\x81R` \x01a\x01\xEFa\xFF\xFF\x16\x81R` \x01a\x01\xB8a\xFF\xFF\x16\x81R` \x01a\x01!a\xFF\xFF\x16\x81R` \x01`\x91a\xFF\xFF\x16\x81R` \x01`\xEDa\xFF\xFF\x16\x81R` \x01a\x02-a\xFF\xFF\x16\x81R` \x01`ma\xFF\xFF\x16\x81R` \x01`\xBBa\xFF\xFF\x16\x81R` \x01`fa\xFF\xFF\x16\x81R` \x01`Pa\xFF\xFF\x16\x81R` \x01a\x03Ka\xFF\xFF\x16\x81R` \x01a\x01\x11a\xFF\xFF\x16\x81R` \x01`%a\xFF\xFF\x16\x81R` \x01`&a\xFF\xFF\x16\x81R` \x01a\x01ba\xFF\xFF\x16\x81R` \x01a\x02Ha\xFF\xFF\x16\x81R` \x01a\x03\x1Aa\xFF\xFF\x16\x81R` \x01`\x86a\xFF\xFF\x16\x81R` \x01`\xC2a\xFF\xFF\x16\x81R` \x01a\x03\x9Fa\xFF\xFF\x16\x81R` \x01a\x03\x9Aa\xFF\xFF\x16\x81R` \x01a\x03ua\xFF\xFF\x16\x81R` \x01`va\xFF\xFF\x16\x81R` \x01`Aa\xFF\xFF\x16\x81R` \x01a\x02\xACa\xFF\xFF\x16\x81R` \x01`-a\xFF\xFF\x16\x81R` \x01a\x01\xAFa\xFF\xFF\x16\x81R` \x01a\x01\xA3a\xFF\xFF\x16\x81R` \x01a\x01\x19a\xFF\xFF\x16\x81R` \x01a\x02Fa\xFF\xFF\x16\x81R` \x01a\x02\x13a\xFF\xFF\x16\x81R` \x01a\x01\xF8a\xFF\xFF\x16\x81R` \x01a\x01\xD7a\xFF\xFF\x16\x81R` \x01a\x03\x84a\xFF\xFF\x16\x81R` \x01`3a\xFF\xFF\x16\x81R` \x01a\x03\x80a\xFF\xFF\x16\x81R` \x01`|a\xFF\xFF\x16\x81R` \x01`\xD8a\xFF\xFF\x16\x81R` \x01a\x01\xD2a\xFF\xFF\x16\x81R` \x01`\x1Aa\xFF\xFF\x16\x81R` \x01a\x01za\xFF\xFF\x16\x81R` \x01`\ta\xFF\xFF\x16\x81R` \x01`\x89a\xFF\xFF\x16\x81R` \x01`ta\xFF\xFF\x16\x81R` \x01a\x02La\xFF\xFF\x16\x81R` \x01a\x03\xDCa\xFF\xFF\x16\x81R` \x01a\x01\xA7a\xFF\xFF\x16\x81R` \x01a\x02\xD9a\xFF\xFF\x16\x81R` \x01`\x9Da\xFF\xFF\x16\x81R` \x01a\x02Xa\xFF\xFF\x16\x81R` \x01`\x98a\xFF\xFF\x16\x81R` \x01a\x02\xBAa\xFF\xFF\x16\x81R` \x01`ja\xFF\xFF\x16\x81R` \x01a\x03\x06a\xFF\xFF\x16\x81R` \x01a\x01\xC0a\xFF\xFF\x16\x81R` \x01a\x03\xB6a\xFF\xFF\x16\x81R` \x01`8a\xFF\xFF\x16\x81R` \x01a\x03la\xFF\xFF\x16\x81R` \x01a\x01{a\xFF\xFF\x16\x81R` \x01a\x03\xBCa\xFF\xFF\x16\x81R` \x01`\xA3a\xFF\xFF\x16\x81R` \x01a\x02\xBEa\xFF\xFF\x16\x81R` \x01a\x01\xFFa\xFF\xFF\x16\x81R` \x01`Ea\xFF\xFF\x16\x81R` \x01`\x03a\xFF\xFF\x16\x81R` \x01a\x01\xD9a\xFF\xFF\x16\x81R` \x01a\x03\xDEa\xFF\xFF\x16\x81R` \x01`\xB5a\xFF\xFF\x16\x81R` \x01a\x02+a\xFF\xFF\x16\x81R` \x01a\x023a\xFF\xFF\x16\x81R` \x01`\xA5a\xFF\xFF\x16\x81R` \x01a\x02%a\xFF\xFF\x16\x81R` \x01a\x01\xBFa\xFF\xFF\x16\x81R` \x01a\x020a\xFF\xFF\x16\x81R` \x01a\x01\xFEa\xFF\xFF\x16\x81R` \x01a\x02(a\xFF\xFF\x16\x81R` \x01a\x010a\xFF\xFF\x16\x81R` \x01a\x02ua\xFF\xFF\x16\x81R` \x01a\x03\xA2a\xFF\xFF\x16\x81R` \x01a\x02\x06a\xFF\xFF\x16\x81R` \x01a\x03:a\xFF\xFF\x16\x81R` \x01a\x03\xDFa\xFF\xFF\x16\x81R` \x01`\x11a\xFF\xFF\x16\x81R` \x01`\x10a\xFF\xFF\x16\x81R` \x01`#a\xFF\xFF\x16\x81R` \x01a\x01\xF9a\xFF\xFF\x16\x81R` \x01a\x02\xD3a\xFF\xFF\x16\x81R` \x01a\x01\xE0a\xFF\xFF\x16\x81R` \x01a\x01\xDEa\xFF\xFF\x16\x81R` \x01a\x03Ia\xFF\xFF\x16\x81R` \x01`\xFEa\xFF\xFF\x16\x81R` \x01a\x02\x80a\xFF\xFF\x16\x81R` \x01a\x01\x95a\xFF\xFF\x16\x81R` \x01a\x03ca\xFF\xFF\x16\x81R` \x01a\x02\na\xFF\xFF\x16\x81R` \x01`\xAFa\xFF\xFF\x16\x81R` \x01a\x01\xD4a\xFF\xFF\x16\x81R` \x01a\x03\x9Ea\xFF\xFF\x16\x81R` \x01a\x03Ta\xFF\xFF\x16\x81R` \x01`\xF1a\xFF\xFF\x16\x81R` \x01a\x03\\a\xFF\xFF\x16\x81R` \x01`Ja\xFF\xFF\x16\x81R` \x01a\x01\xBBa\xFF\xFF\x16\x81R` \x01a\x01\xF5a\xFF\xFF\x16\x81R` \x01a\x03\x01a\xFF\xFF\x16\x81R` \x01a\x01\x8Aa\xFF\xFF\x16\x81R` \x01`\xF6a\xFF\xFF\x16\x81R` \x01`\xE1a\xFF\xFF\x16\x81R` \x01a\x03\xC6a\xFF\xFF\x16\x81R` \x01a\x01\x84a\xFF\xFF\x16\x81R` \x01`oa\xFF\xFF\x16\x81R` \x01a\x01\x10a\xFF\xFF\x16\x81R` \x01a\x01\x03a\xFF\xFF\x16\x81R` \x01a\x01xa\xFF\xFF\x16\x81R` \x01a\x03\xD9a\xFF\xFF\x16\x81R` \x01a\x02\xFDa\xFF\xFF\x16\x81R` \x01a\x03\xD8a\xFF\xFF\x16\x81R` \x01`\xE7a\xFF\xFF\x16\x81R` \x01a\x02Ua\xFF\xFF\x16\x81R` \x01a\x02$a\xFF\xFF\x16\x81R` \x01a\x01va\xFF\xFF\x16\x81R` \x01a\x01'a\xFF\xFF\x16\x81R` \x01a\x03fa\xFF\xFF\x16\x81R` \x01a\x03\x95a\xFF\xFF\x16\x81R` \x01a\x03\x81a\xFF\xFF\x16\x81R` \x01a\x02\xD5a\xFF\xFF\x16\x81R` \x01a\x02\x82a\xFF\xFF\x16\x81R` \x01a\x03\x0Ca\xFF\xFF\x16\x81R` \x01a\x01\xA6a\xFF\xFF\x16\x81R` \x01a\x01\x1Ba\xFF\xFF\x16\x81R` \x01a\x03\xCBa\xFF\xFF\x16\x81R` \x01a\x01\x9Fa\xFF\xFF\x16\x81R` \x01`\xF0a\xFF\xFF\x16\x81R` \x01a\x03\x13a\xFF\xFF\x16\x81R` \x01`\xEEa\xFF\xFF\x16\x81R` \x01a\x01Ta\xFF\xFF\x16\x81R` \x01`\x95a\xFF\xFF\x16\x81R` \x01a\x02\x0Fa\xFF\xFF\x16\x81R` \x01a\x02&a\xFF\xFF\x16\x81R` \x01a\x01ya\xFF\xFF\x16\x81R` \x01a\x03\xC4a\xFF\xFF\x16\x81R` \x01a\x02.a\xFF\xFF\x16\x81R` \x01`\x90a\xFF\xFF\x16\x81R` \x01a\x02)a\xFF\xFF\x16\x81R` \x01a\x03\x14a\xFF\xFF\x16\x81R` \x01a\x02ja\xFF\xFF\x16\x81R` \x01a\x01_a\xFF\xFF\x16\x81R` \x01a\x01Ja\xFF\xFF\x16\x81R` \x01a\x02\ra\xFF\xFF\x16\x81R` \x01a\x02\xADa\xFF\xFF\x16\x81R` \x01a\x02qa\xFF\xFF\x16\x81R` \x01`Ua\xFF\xFF\x16\x81R` \x01`*a\xFF\xFF\x16\x81R` \x01a\x01\xD1a\xFF\xFF\x16\x81R` \x01a\x03\xADa\xFF\xFF\x16\x81R` \x01a\x02\xFAa\xFF\xFF\x16\x81R` \x01`/a\xFF\xFF\x16\x81R` \x01a\x01\xDCa\xFF\xFF\x16\x81R` \x01a\x02\xEFa\xFF\xFF\x16\x81R` \x01a\x03ga\xFF\xFF\x16\x81R` \x01`\xBDa\xFF\xFF\x16\x81R` \x01`\xD4a\xFF\xFF\x16\x81R` \x01a\x02\xF2a\xFF\xFF\x16\x81R` \x01a\x038a\xFF\xFF\x16\x81R` \x01`\xDFa\xFF\xFF\x16\x81R` \x01a\x02\xECa\xFF\xFF\x16\x81R` \x01`\x07a\xFF\xFF\x16\x81R` \x01a\x02\x14a\xFF\xFF\x16\x81R` \x01a\x02\x9Ea\xFF\xFF\x16\x81R` \x01`\xA2a\xFF\xFF\x16\x81R` \x01a\x01\x93a\xFF\xFF\x16\x81R` \x01`\x01a\xFF\xFF\x16\x81R` \x01a\x02\x93a\xFF\xFF\x16\x81R` \x01a\x012a\xFF\xFF\x16\x81R` \x01a\x02\x91a\xFF\xFF\x16\x81R` \x01a\x01=a\xFF\xFF\x16\x81R` \x01a\x02oa\xFF\xFF\x16\x81R` \x01a\x01>a\xFF\xFF\x16\x81R` \x01a\x02]a\xFF\xFF\x16\x81R` \x01a\x02\x19a\xFF\xFF\x16\x81R` \x01`\x83a\xFF\xFF\x16\x81R` \x01a\x02\xB1a\xFF\xFF\x16\x81R` \x01a\x014a\xFF\xFF\x16\x81R` \x01a\x01\xAEa\xFF\xFF\x16\x81R` \x01`\xA8a\xFF\xFF\x16\x81R` \x01a\x015a\xFF\xFF\x16\x81R` \x01a\x02Wa\xFF\xFF\x16\x81R` \x01a\x02\xAAa\xFF\xFF\x16\x81R` \x01a\x02\x8Ea\xFF\xFF\x16\x81R` \x01a\x03ba\xFF\xFF\x16\x81R` \x01`Za\xFF\xFF\x16\x81R` \x01a\x01Ga\xFF\xFF\x16\x81R` \x01a\x02Ea\xFF\xFF\x16\x81R` \x01a\x03\x8Da\xFF\xFF\x16\x81R` \x01a\x02{a\xFF\xFF\x16\x81R` \x01`ra\xFF\xFF\x16\x81R` \x01a\x02/a\xFF\xFF\x16\x81R` \x01`{a\xFF\xFF\x16\x81R` \x01`\x7Fa\xFF\xFF\x16\x81R` \x01a\x02\x94a\xFF\xFF\x16\x81R` \x01a\x02\x86a\xFF\xFF\x16\x81R` \x01a\x01 a\xFF\xFF\x16\x81R` \x01`\x13a\xFF\xFF\x16\x81R` \x01a\x01\x85a\xFF\xFF\x16\x81R` \x01a\x03\x19a\xFF\xFF\x16\x81R` \x01a\x01\x96a\xFF\xFF\x16\x81R` \x01a\x02~a\xFF\xFF\x16\x81R` \x01a\x03,a\xFF\xFF\x16\x81R` \x01a\x01Wa\xFF\xFF\x16\x81R` \x01`>a\xFF\xFF\x16\x81R` \x01a\x01\xF2a\xFF\xFF\x16\x81R` \x01a\x01\xB5a\xFF\xFF\x16\x81R` \x01`,a\xFF\xFF\x16\x81R` \x01a\x01\x04a\xFF\xFF\x16\x81R` \x01`za\xFF\xFF\x16\x81R` \x01`ea\xFF\xFF\x16\x81R` \x01a\x02ta\xFF\xFF\x16\x81R` \x01a\x03\x0Ba\xFF\xFF\x16\x81R` \x01a\x01\xA1a\xFF\xFF\x16\x81R` \x01a\x03Oa\xFF\xFF\x16\x81R` \x01a\x02\xB8a\xFF\xFF\x16\x81R` \x01a\x01\xECa\xFF\xFF\x16\x81R` \x01`\xD3a\xFF\xFF\x16\x81R` \x01a\x01\xB2a\xFF\xFF\x16\x81R` \x01a\x01Sa\xFF\xFF\x16\x81R` \x01a\x02Ra\xFF\xFF\x16\x81R` \x01a\x01Ma\xFF\xFF\x16\x81R` \x01`\xDBa\xFF\xFF\x16\x81R` \x01a\x01\\a\xFF\xFF\x16\x81R` \x01`\x12a\xFF\xFF\x16\x81R` \x01`\xFAa\xFF\xFF\x16\x81R` \x01`ia\xFF\xFF\x16\x81R` \x01a\x02\0a\xFF\xFF\x16\x81R` \x01`\xB9a\xFF\xFF\x16\x81R` \x01a\x02\x0Ca\xFF\xFF\x16\x81R` \x01a\x01\xFAa\xFF\xFF\x16\x81R` \x01`\x9Ba\xFF\xFF\x16\x81R` \x01a\x03\xB4a\xFF\xFF\x16\x81R` \x01`\x8Da\xFF\xFF\x16\x81R` \x01`7a\xFF\xFF\x16\x81R` \x01a\x01\xACa\xFF\xFF\x16\x81R` \x01a\x02}a\xFF\xFF\x16\x81R` \x01a\x01\x88a\xFF\xFF\x16\x81R` \x01a\x02aa\xFF\xFF\x16\x81R` \x01a\x03\xE3a\xFF\xFF\x16\x81R` \x01a\x01ia\xFF\xFF\x16\x81R` \x01a\x03\xD7a\xFF\xFF\x16\x81R` \x01a\x01\x05a\xFF\xFF\x16\x81R` \x01a\x02\x8Da\xFF\xFF\x16\x81R` \x01a\x01\x02a\xFF\xFF\x16\x81R` \x01`Wa\xFF\xFF\x16\x81R` \x01a\x01aa\xFF\xFF\x16\x81R` \x01a\x01\x86a\xFF\xFF\x16\x81R` \x01`Ia\xFF\xFF\x16\x81R` \x01a\x02\x16a\xFF\xFF\x16\x81R` \x01a\x03.a\xFF\xFF\x16\x81RP`E\x90a\x03\xE8b\0/k\x92\x91\x90b\0>~V[P4\x80\x15b\0/yW`\0\x80\xFD[P`\0[b\0/\x8A`\x05\x80b\0@\x12V[c\xFF\xFF\xFF\xFF\x16\x81\x10\x15b\x001vWb\0/\xA2b\0>\xD4V[`\0b\0/\xB1\x83`\x01b\0@=V[`@Q` \x01b\0/\xC4\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1C\x90Pb\x000\r\x81b\0/\xF9b\x007^` \x1Bb\0$\xBD\x17` \x1CV[b\x007\x87` \x1Bb\0$\xE6\x17\x90\x91\x90` \x1CV[\x82` \x01\x81\x90RPb\x000+\x81b\08'` \x1Bb\0\x17\xCF\x17` \x1CV[`@\x83\x01\x90\x81R`>\x80T`\x01\x81\x81\x01\x90\x92U`\0\x80Q` b\x03\xEC\xDC\x839\x81Q\x91R\x01\x83\x90U`?\x80T\x91\x82\x01\x81U`\0R\x83Q\x80Q`\x08\x90\x92\x02\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFD\x81\x01\x92\x83U` \x91\x82\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFE\x82\x01U\x81\x86\x01Q\x80Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFF\x83\x01U\x90\x91\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\0\x82\x01U\x91Q\x80Q\x85\x93\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\x01\x01\x90b\x001A\x90\x82\x90`\x02b\0?)V[P` \x82\x01Qb\x001Y\x90`\x02\x80\x84\x01\x91\x90b\0?)V[PPPPPPP\x80\x80b\x001m\x90b\0@XV[\x91PPb\0/}V[P`\0`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x03\xEC\xB7`%\x919`@Qc`\xF9\xBB\x11`\xE0\x1B\x81R\x90\x91P`\0\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90c`\xF9\xBB\x11\x90b\x001\xCD\x90\x85\x90`\x04\x01b\0@\xD7V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\x001\xEBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\x002\x15\x91\x90\x81\x01\x90b\0A~V[\x90P`\0[`\x05\x81\x10\x15b\x007UWb\x002.b\0>\xD4V[`\0`E\x83\x81T\x81\x10b\x002FWb\x002Fb\0A\xCBV[`\0\x91\x82R` \x90\x91 \x01T`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R\x90\x91Pb\x003\x04\x90\x85\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\x002\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\x002\xD2\x91\x90\x81\x01\x90b\0A~V[`@Q` \x01b\x002\xE4\x91\x90b\0A\xE1V[`@Q` \x81\x83\x03\x03\x81R\x90`@Rb\0<\xDD` \x1Bb\0%\x87\x17` \x1CV[` \x83\x01QR`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x84\x90Rb\x003\x99\x90\x85\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\x003]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\x003\x87\x91\x90\x81\x01\x90b\0A~V[`@Q` \x01b\x002\xE4\x91\x90b\0B\x1BV[` \x83\x81\x01Q\x01R`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x84\x90Rb\x0040\x90\x85\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\x003\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\x004\x1E\x91\x90\x81\x01\x90b\0A~V[`@Q` \x01b\x002\xE4\x91\x90b\0B=V[`@\x83\x01QQ`\x01` \x02\x01R`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x84\x90Rb\x004\xCC\x90\x85\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\x004\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\x004\xBA\x91\x90\x81\x01\x90b\0A~V[`@Q` \x01b\x002\xE4\x91\x90b\0BxV[`@\x83\x01Q` \x01Q`\x01` \x02\x01R`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x84\x90Rb\x005k\x90\x85\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\x005/W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\x005Y\x91\x90\x81\x01\x90b\0A~V[`@Q` \x01b\x002\xE4\x91\x90b\0B\x9BV[`@\x83\x81\x01QQ\x91\x90\x91RQc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x84\x90Rb\x006\x03\x90\x85\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\x005\xC7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\x005\xF1\x91\x90\x81\x01\x90b\0A~V[`@Q` \x01b\x002\xE4\x91\x90b\0B\xBEV[`@\x83\x01\x80Q` \x90\x81\x01Q\x92\x90\x92R`>\x80T`\x01\x80\x82\x01\x90\x92U`\0\x80Q` b\x03\xEC\xDC\x839\x81Q\x91R\x01\x84\x90U`?\x80T\x91\x82\x01\x81U`\0R\x84Q\x80Q`\x08\x90\x92\x02\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFD\x81\x01\x92\x83U\x90\x84\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFE\x82\x01U\x83\x86\x01Q\x80Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFF\x83\x01U\x90\x93\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\0\x84\x01U\x90Q\x80Q\x85\x93\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\x01\x01\x90b\x007 \x90\x82\x90`\x02b\0?)V[P` \x82\x01Qb\x0078\x90`\x02\x80\x84\x01\x91\x90b\0?)V[PPPPPPP\x80\x80b\x007L\x90b\0@XV[\x91PPb\x002\x1AV[PPPb\0C\xF1V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\x007\xA5b\0?ZV[\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\x15b\x007\xDAWb\x007\xDCV[\xFE[P\x80b\08\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[b\081b\0?xV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\08IW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\08\x92Wb\08\x92b\0A\xCBV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\08\xCFWb\08\xCFb\0A\xCBV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7Ftest/ffi/go/g2mul.go\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81`\x02\x81Q\x81\x10b\09&Wb\09&b\0A\xCBV[` \x02` \x01\x01\x81\x90RPb\09G\x83b\0=a` \x1Bb\0&\r\x17` \x1CV[\x81`\x03\x81Q\x81\x10b\09]Wb\09]b\0A\xCBV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\09\x98Wb\09\x98b\0A\xCBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\09\xDA\x90\x85\x90`\x04\x01b\0B\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\09\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0:$\x91\x90\x81\x01\x90b\0A~V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0:<\x91\x90b\0CGV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0:yWb\0:yb\0A\xCBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0:\xB8\x90\x85\x90`\x04\x01b\0B\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0:\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0;\x02\x91\x90\x81\x01\x90b\0A~V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0;\x1A\x91\x90b\0CGV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0;MWb\0;Mb\0A\xCBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0;\x8C\x90\x85\x90`\x04\x01b\0B\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0;\xACW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0;\xD6\x91\x90\x81\x01\x90b\0A~V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0;\xEE\x91\x90b\0CGV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0<.Wb\0<.b\0A\xCBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0<\xB7\x91\x90\x81\x01\x90b\0A~V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0<\xCF\x91\x90b\0CGV[` \x84\x01QRP\x90\x92\x91PPV[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90`\0\x80Q` b\x03\xEC\x97\x839\x81Q\x91R\x90c\xAD\xDD\xE2\xB6\x90b\0=\x16\x90\x86\x90\x86\x90`\x04\x01b\0CaV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0=4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0=Z\x91\x90b\0CGV[\x93\x92PPPV[``\x81b\0=\x86WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0=\xB6W\x80b\0=\x9D\x81b\0@XV[\x91Pb\0=\xAE\x90P`\n\x83b\0C\xA9V[\x91Pb\0=\x8AV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0=\xD3Wb\0=\xD3b\0@\xECV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0=\xFEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0>vWb\0>\x16`\x01\x83b\0C\xC0V[\x91Pb\0>%`\n\x86b\0C\xDAV[b\0>2\x90`0b\0@=V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0>JWb\0>Jb\0A\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0>n`\n\x86b\0C\xA9V[\x94Pb\0>\x02V[\x94\x93PPPPV[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15b\0>\xC2W\x91` \x02\x82\x01[\x82\x81\x11\x15b\0>\xC2W\x82Q\x82\x90a\xFF\xFF\x16\x90U\x91` \x01\x91\x90`\x01\x01\x90b\0>\x9FV[Pb\0>\xD0\x92\x91Pb\0?\x9CV[P\x90V[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0?\x15`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0?$b\0?xV[\x90R\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0>\xC2W\x91` \x02\x82\x01[\x82\x81\x11\x15b\0>\xC2W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0?=V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80b\0?\x8Db\0?\xB3V[\x81R` \x01b\0?$b\0?\xB3V[[\x80\x82\x11\x15b\0>\xD0W`\0\x81U`\x01\x01b\0?\x9DV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0?\xE4W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0=ZW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15b\0@4Wb\0@4b\0?\xFCV[\x01\x94\x93PPPPV[`\0\x82\x19\x82\x11\x15b\0@SWb\0@Sb\0?\xFCV[P\x01\x90V[`\0`\0\x19\x82\x14\x15b\0@oWb\0@ob\0?\xFCV[P`\x01\x01\x90V[`\0[\x83\x81\x10\x15b\0@\x93W\x81\x81\x01Q\x83\x82\x01R` \x01b\0@yV[\x83\x81\x11\x15b\0@\xA3W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Rb\0@\xC3\x81` \x86\x01` \x86\x01b\0@vV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0b\0=Z` \x83\x01\x84b\0@\xA9V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0`\x01`\x01`@\x1B\x03\x80\x84\x11\x15b\0A\x1FWb\0A\x1Fb\0@\xECV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0AJWb\0AJb\0@\xECV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15b\0AdW`\0\x80\xFD[b\0At\x86` \x83\x01\x87b\0@vV[PPP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0A\x91W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0A\xA8W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13b\0A\xBAW`\0\x80\xFD[b\0>v\x84\x82Q` \x84\x01b\0A\x02V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[d.G1x[`\xD8\x1B\x81R`\0\x82Qb\0B\x03\x81`\x05\x85\x01` \x87\x01b\0@vV[`]`\xF8\x1B`\x05\x93\x90\x91\x01\x92\x83\x01RP`\x06\x01\x91\x90PV[d.G1y[`\xD8\x1B\x81R`\0\x82Qb\0B\x03\x81`\x05\x85\x01` \x87\x01b\0@vV[e.G2x1[`\xD0\x1B\x81R`\0\x82Qb\0B`\x81`\x06\x85\x01` \x87\x01b\0@vV[`]`\xF8\x1B`\x06\x93\x90\x91\x01\x92\x83\x01RP`\x07\x01\x91\x90PV[e.G2y1[`\xD0\x1B\x81R`\0\x82Qb\0B`\x81`\x06\x85\x01` \x87\x01b\0@vV[e.G2x0[`\xD0\x1B\x81R`\0\x82Qb\0B`\x81`\x06\x85\x01` \x87\x01b\0@vV[e.G2y0[`\xD0\x1B\x81R`\0\x82Qb\0B`\x81`\x06\x85\x01` \x87\x01b\0@vV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0C:W`?\x19\x88\x86\x03\x01\x84Rb\0C'\x85\x83Qb\0@\xA9V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0C\x08V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15b\0CZW`\0\x80\xFD[PQ\x91\x90PV[`@\x81R`\0b\0Cv`@\x83\x01\x85b\0@\xA9V[\x82\x81\x03` \x84\x01Rb\0C\x8A\x81\x85b\0@\xA9V[\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82b\0C\xBBWb\0C\xBBb\0C\x93V[P\x04\x90V[`\0\x82\x82\x10\x15b\0C\xD5Wb\0C\xD5b\0?\xFCV[P\x03\x90V[`\0\x82b\0C\xECWb\0C\xECb\0C\x93V[P\x06\x90V[b\x03\xA8\x95\x80b\0D\x02`\09`\0\xF3\xFE`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\x01\x92W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11b\0\0\xF0W\x80c\x9D\x8B\x9C\xB4\x11b\0\0\xA3W\x80c\xBAAO\xA6\x11b\0\0zW\x80c\xBAAO\xA6\x14b\0\x03;W\x80c\xBF\xBD\xAF\xFD\x14b\0\x03VW\x80c\xE2\x0C\x9Fq\x14b\0\x03mW\x80c\xFAv&\xD4\x14b\0\x03wW`\0\x80\xFD[\x80c\x9D\x8B\x9C\xB4\x14b\0\x03\x13W\x80c\xB4s8\x9B\x14b\0\x03'W\x80c\xB5P\x8A\xA9\x14b\0\x031W`\0\x80\xFD[\x80cm\x14\xA9\x87\x14b\0\x02\xA4W\x80cw\x92\xA05\x14b\0\x02\xB8W\x80c\x81qu\t\x14b\0\x02\xCFW\x80c\x85\"l\x81\x14b\0\x02\xE6W\x80c\x8F3P\xC0\x14b\0\x02\xFFW\x80c\x91j\x17\xC6\x14b\0\x03\tW`\0\x80\xFD[\x80c-\xBC\xB0L\x11b\0\x01IW\x80c-\xBC\xB0L\x14b\0\x026W\x80c=\xFB@\xE0\x14b\0\x02OW\x80c>^<#\x14b\0\x02cW\x80c?r\x86\xF4\x14b\0\x02mW\x80cf\xD9\xA9\xA0\x14b\0\x02wW\x80ck:\xA7.\x14b\0\x02\x90W`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01\x97W\x80c\t\xD8u8\x14b\0\x01\xC8W\x80c\n\x92T\xE4\x14b\0\x01\xD4W\x80c\x13\x1E/\x18\x14b\0\x01\xDEW\x80c\x1E\xD7\x83\x1C\x14b\0\x02\x04W\x80c*\xDE8\x80\x14b\0\x02\x1DW[`\0\x80\xFD[`5Tb\0\x01\xAB\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[b\0\x01\xD2b\0\x03\x85V[\0[b\0\x01\xD2b\0\x03\xC2V[b\0\x01\xF5b\0\x01\xEF6`\x04b\0`7V[b\0\x17\xCFV[`@Qb\0\x01\xBF\x91\x90b\0`\x9DV[b\0\x02\x0Eb\0\x1CqV[`@Qb\0\x01\xBF\x91\x90b\0`\xF3V[b\0\x02'b\0\x1C\xD5V[`@Qb\0\x01\xBF\x91\x90b\0aeV[b\0\x02@`4T\x81V[`@Q\x90\x81R` \x01b\0\x01\xBFV[`.Tb\0\x01\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\x0Eb\0\x1E#V[b\0\x02\x0Eb\0\x1E\x85V[b\0\x02\x81b\0\x1E\xE7V[`@Qb\0\x01\xBF\x91\x90b\0b+V[`\x1ETb\0\x01\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xABb\0\x02\xC96`\x04b\0`7V[b\0\x1F\xD1V[b\0\x02@b\0\x02\xE06`\x04b\0`7V[b\0\x1F\xFCV[b\0\x02\xF0b\0 \x1EV[`@Qb\0\x01\xBF\x91\x90b\0b\xE2V[b\0\x01\xD2b\0 \xF8V[b\0\x02\x81b\0!)V[`3Tb\0\x01\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xD2b\0\"\x13V[b\0\x02\xF0b\0\"CV[b\0\x03Eb\0#\x1DV[`@Q\x90\x15\x15\x81R` \x01b\0\x01\xBFV[b\0\x02@b\0\x03g6`\x04b\0`7V[b\0$JV[b\0\x02\x0Eb\0$[V[`\x07Tb\0\x03E\x90`\xFF\x16\x81V[`@\x80Q`\x80\x81\x01\x82R`\x01\x80\x82R`\x08` \x83\x01R\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0\x03\xB6\x91\x90\x81\x90b\0'*V[b\0\x03\xC0b\0/\xCCV[V[`@Qb\0\x03\xD0\x90b\0]qV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xEDW=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x04IWb\0\x04Ib\0c^V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x04{\x90b\0]\x7FV[b\0\x04\x88\x92\x91\x90b\0ctV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xA5W=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x04\xD7\x90b\0]\x8DV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xF4W=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x05\x05\x90b\0]\x9AV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\"W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x05Q\x90b\0]\xA8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05nW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xA3\x90b\0]\xB6V[b\0\x05\xB0\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\xCDW=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06\x02\x90b\0]\xB6V[b\0\x06\x0F\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06,W=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06a\x90b\0]\xB6V[b\0\x06n\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\x8BW=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06\xC0\x90b\0]\xB6V[b\0\x06\xCD\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xEAW=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x07\x1F\x90b\0]\xB6V[b\0\x07,\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07IW=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x07\x87\x90b\0]\xC4V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\xCBW=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07\xF9\x90b\0]\xD2V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08&W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x08j\x90b\0]\xE0V[`\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\x08\xA7W=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xD9\x90b\0]\xEEV[`\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\t\x16W=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\tA\x90b\0]\xFCV[`\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\tuW=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\t\xB5\x90b\0^\nV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\n\x01W=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\n%\x90b\0^\x18V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\nRW=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\n\xB8\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0c\xFBV[`@\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\x0B\x01\x93\x92\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0B\x1CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0B1W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\xC4\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0B\xDFW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0B\xF4W=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0C\x80\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\x9BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\xB0W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\rF\x93\x91\x16\x91\x8A\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\raW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\rvW=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0E\x02\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\x1DW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E2W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x0ES\x91Pb\0^&V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0E\x80W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0FFW`\0b\0\x0E\xBB\x82b\0&\rV[\x90P`\0\x81`@Q` \x01b\0\x0E\xD2\x91\x90b\0d\x91V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E\xF8\x91\x90b\0d\xC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0F-\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\x002FV[PPP\x80\x80b\0\x0F=\x90b\0e\x0BV[\x91PPb\0\x0E\xA4V[P`@Qb\0\x0FU\x90b\0^4V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0FrW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0F\xD1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0F\xE6W=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x10\t\x90b\0]\xB6V[b\0\x10\x16\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x103W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10h\x90b\0]\xB6V[b\0\x10u\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\x92W=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\xC7\x90b\0]\xB6V[b\0\x10\xD4\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\xF1W=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x11&\x90b\0]\xB6V[b\0\x113\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11PW=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x11\x85\x90b\0]\xB6V[b\0\x11\x92\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xAFW=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x12\x0BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x12 W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x12J\x90b\0^BV[`\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\x12~W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x12\xA2\x90b\0^PV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12\xCFW=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x12\xF3\x90b\0^^V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x13 W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x13R\x90b\0^lV[`\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\x13\x8FW=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x92\x93P\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xE4W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xF9W=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14OW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14dW=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x86\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\xBAW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\xCFW=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x85\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x15%W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15:W=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x15\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15\x9DW=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x15\xD5\x90b\0^zV[`\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\x16\x1AW=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x16\xA5V[`@\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\x16wW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x16\xDBV[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16\xC5W\x90P[P`@Q`$\x01b\0\x16\xF5\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0f\x0CV[`@\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\x17>\x93\x92\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x17YW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x17nW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x17\x80\x90b\0^\x88V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x17\x9DW=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x17\xD9b\0^\x96V[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x17\xF1W\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x18:Wb\0\x18:b\0c^V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x18wWb\0\x18wb\0c^V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10b\0\x18\xC5Wb\0\x18\xC5b\0c^V[` \x02` \x01\x01\x81\x90RPb\0\x18\xDB\x83b\0&\rV[\x81`\x03\x81Q\x81\x10b\0\x18\xF1Wb\0\x18\xF1b\0c^V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x19,Wb\0\x19,b\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x19n\x90\x85\x90`\x04\x01b\0b\xE2V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19\xB8\x91\x90\x81\x01\x90b\0gvV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x19\xD0\x91\x90b\0g\xC3V[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1A\rWb\0\x1A\rb\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x1AL\x90\x85\x90`\x04\x01b\0b\xE2V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1AlW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x96\x91\x90\x81\x01\x90b\0gvV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\xAE\x91\x90b\0g\xC3V[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x1A\xE1Wb\0\x1A\xE1b\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x1B \x90\x85\x90`\x04\x01b\0b\xE2V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B@W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1Bj\x91\x90\x81\x01\x90b\0gvV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\x82\x91\x90b\0g\xC3V[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1B\xC2Wb\0\x1B\xC2b\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x1C\x01\x90\x85\x90`\x04\x01b\0b\xE2V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1C!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1CK\x91\x90\x81\x01\x90b\0gvV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1Cc\x91\x90b\0g\xC3V[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1C\xCBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C\xACW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1E\x02W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1Dn\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1D\x9C\x90b\0g\xDDV[\x80\x15b\0\x1D\xEDW\x80`\x1F\x10b\0\x1D\xC1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1D\xEDV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1D\xCFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1DLV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\xF9V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1C\xCBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C\xACWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1C\xCBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C\xACWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\x1F\xB8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\x1FyW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\x0BV[`G\x81\x81T\x81\x10b\0\x1F\xE2W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`E\x81\x81T\x81\x10b\0 \rW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T\x90P\x81V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0 d\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0 \x92\x90b\0g\xDDV[\x80\x15b\0 \xE3W\x80`\x1F\x10b\0 \xB7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0 \xE3V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0 \xC5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0 BV[`@\x80Q`\x80\x81\x01\x82R`\x01\x80\x82R`\x10` \x83\x01R\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0\x03\xB6\x91\x90\x81\x90b\0'*V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0!\xFAW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0!\xBBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0!MV[`@\x80Q`\x80\x81\x01\x82R`\x01\x80\x82R` \x80\x83\x01R\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0\x03\xB6\x91\x90\x81\x90b\0'*V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\"\x89\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\"\xB7\x90b\0g\xDDV[\x80\x15b\0#\x08W\x80`\x1F\x10b\0\"\xDCWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0#\x08V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\"\xEAW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\"gV[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0#@WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R;\x15b\0$EW`@\x80Q`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0#\xC7\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0h\x14V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0#\xE3\x91b\0hGV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0$\"W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0$'V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0$A\x91\x90b\0heV[\x91PP[\x91\x90PV[`F\x81\x81T\x81\x10b\0 \rW`\0\x80\xFD[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1C\xCBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C\xACWPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0%\x04b\0^\xBFV[\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\x15b\0%9Wb\0%;V[\xFE[P\x80b\0%\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\xAD\xDD\xE2\xB6\x90b\0%\xC0\x90\x86\x90\x86\x90`\x04\x01b\0h\x89V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0%\xDEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0&\x04\x91\x90b\0g\xC3V[\x90P[\x92\x91PPV[``\x81b\0&2WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0&bW\x80b\0&I\x81b\0e\x0BV[\x91Pb\0&Z\x90P`\n\x83b\0h\xC8V[\x91Pb\0&6V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0&\x7FWb\0&\x7Fb\0cHV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0&\xAAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0'\"Wb\0&\xC2`\x01\x83b\0h\xDFV[\x91Pb\0&\xD1`\n\x86b\0h\xF9V[b\0&\xDE\x90`0b\0i\x10V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0&\xF6Wb\0&\xF6b\0c^V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0'\x1A`\n\x86b\0h\xC8V[\x94Pb\0&\xAEV[\x94\x93PPPPV[`@\x80Q\x81\x81R`\x1F\x81\x83\x01R\x7F_configRand: set random seed to\0``\x82\x01Rb\xFF\xFF\xFF\x85\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xA8@\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`@Q`\x01`\x01`\xE8\x1B\x03\x19`\xE8\x85\x90\x1B\x16` \x82\x01R`#\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0'\xC3\x82b\x005pV[\x80Qb\0'\xD9\x91`8\x91` \x90\x91\x01\x90b\0^\xDDV[P\x80Qb\0'\xE7\x90b\x005pV[\x80Qb\0'\xFD\x91`9\x91` \x90\x91\x01\x90b\0^\xDDV[Pb\0(\r\x81` \x01Qb\x005pV[\x80Qb\0(#\x91`:\x91` \x90\x91\x01\x90b\0^\xDDV[Pb\0(3\x81`@\x01Qb\x005pV[\x80Qb\0(I\x91`;\x91` \x90\x91\x01\x90b\0^\xDDV[Pb\0(Y\x81``\x01Qb\x005pV[\x80Qb\0(o\x91`<\x91` \x90\x91\x01\x90b\0^\xDDV[Pb\0(\xA9`8\x80Tb\0(\x83\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xA7\x8F`0\x919b\x005\xD4V[b\0(\xE2`9\x80Tb\0(\xBC\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xA8\x10`0\x919b\x005\xD4V[b\0)\x1B`:\x80Tb\0(\xF5\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xA75`3\x919b\x005\xD4V[b\0)T`;\x80Tb\0).\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xA7\x03`2\x919b\x005\xD4V[b\0)\x8D`<\x80Tb\0)g\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xA6\xA2`/\x919b\x005\xD4V[b\0)\x97b\x006\"V[`@\x81\x90Ub\0)\xAD\x90`\x01\x90\x81\x90\x1Bb\0h\xDFV[`A\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0)\xD7\x90b\x007aV[\x80Qb\0)\xED\x91`B\x91` \x90\x91\x01\x90b\0^\xDDV[P`@\x80T\x81Q\x82\x81R`0\x92\x81\x01\x92\x90\x92R\x7F_configRand: number of quorums b``\x83\x01Ro\x19Z[\x99\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`\x82\x1B`\x80\x83\x01R` \x82\x01R`\0\x80Q` b\x03\xA8@\x839\x81Q\x91R\x90`\xA0\x01`@Q\x80\x91\x03\x90\xA1`@\x80Q``\x81\x01\x82R`\x05\x81Ra:\x98` \x82\x01R`\x96\x91\x81\x01\x91\x90\x91R`\0[`@T\x81\x10\x15b\0,\xFFW`\0b\0*\x99b\08=`\0\xFD[PP`(T`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xD7[L\x88\x91Pb\0,\xB3\x90\x87\x90\x85\x90\x87\x90`\x04\x01b\0i+V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0,\xCEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0,\xE3W=`\0\x80>=`\0\xFD[PPPPPP\x80\x80b\0,\xF6\x90b\0e\x0BV[\x91PPb\0*\x82V[P`\0b\0-\r\x82b\0:wV[\x90P`\0\x80Q` b\x03\xA6b\x839\x81Q\x91Rb\0-*\x82b\0&\rV[`@Q` \x01b\0-<\x91\x90b\0i\x81V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0-X\x91b\0i\xE8V[`@Q\x80\x91\x03\x90\xA1`\0[\x81\x81\x10\x15b\0.\xC2W`\0b\0-xb\0;IV[`@Qc \x8CmS`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x821\xB5L\x90b\0-\xAA\x90`B\x90`\x04\x01b\0i\xFDV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0-\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0-\xF0\x91\x90b\0g\xC3V[P`\0[`B\x80Tb\0.\x03\x90b\0g\xDDV[\x90P\x81\x10\x15b\0.\xAAW`\0`B\x82\x81Tb\0.\x1F\x90b\0g\xDDV[\x81\x10b\0.0Wb\0.0b\0c^V[\x81T`\x01\x16\x15b\0.PW\x90`\0R` `\0 \x90` \x91\x82\x82\x04\x01\x91\x90\x06[\x90T\x90\x1A`\x01`\xF8\x1B\x02`\xF8\x1C`\0\x90\x81R`D` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90UP\x80b\0.\xA1\x81b\0e\x0BV[\x91PPb\0-\xF4V[PP\x80\x80b\0.\xB9\x90b\0e\x0BV[\x91PPb\0-cV[P`\0\x80Q` b\x03\xA6b\x839\x81Q\x91R`@Qb\0/\n\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xA6b\x839\x81Q\x91R`@Qb\0/n\x90` \x80\x82R`$\x90\x82\x01R\x7F_configRand complete; starting t`@\x82\x01Rcest!`\xE0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xA6b\x839\x81Q\x91R`@Qb\0/\xBD\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0\x80\x80R`D` \x90\x81R\x7F\xFF-\xF0QXf\xD0\xE5\x03z\x04'F5\xC6m[\x7F\x91\xCD\x9F|\xEB\xF4\xFD\xE8x\xAF4z\xA2i\x80T`@\x80Q\x82\x85\x02\x81\x01\x85\x01\x90\x91R\x81\x81R\x92\x83\x01\x82\x82\x80\x15b\x000HW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\x000)W[PPPPP\x90Pb\x000Z\x81b\0=\x02V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\x000uW\x90PP\x90P\x81\x81`\0\x81Q\x81\x10b\x000\xA4Wb\x000\xA4b\0c^V[` \x02` \x01\x01\x81\x90RP`\0`B\x80Tb\x000\xC0\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\x000\xEE\x90b\0g\xDDV[\x80\x15b\x001?W\x80`\x1F\x10b\x001\x13Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\x001?V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\x001!W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P`\0Z`(T`@Qc\n(\x14\xA9`\xE3\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cQ@\xA5H\x90b\x001~\x90\x86\x90\x86\x90`\x04\x01b\0j\xADV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x001\x99W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x001\xAEW=`\0\x80>=`\0\xFD[PPPP`\0Z\x90Pb\x001\xCDb\x001\xC7\x82\x84b\0h\xDFV[b\0>_V[b\x002\x0F`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7FNum operators updated: \0\0\0\0\0\0\0\0\0\x81RP\x86Qb\0>\xAAV[b\x002?`@Q\x80``\x01`@R\x80`'\x81R` \x01b\x03\xA7h`'\x919b\x0029\x83\x85b\0h\xDFV[b\0>\xAAV[PPPPPV[`\0\x84\x84\x84\x84`@Qb\x002Z\x90b\0_hV[b\x002i\x94\x93\x92\x91\x90b\0kQV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\x002\x86W=`\0\x80>=`\0\xFD[P`'T`1T`!T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`$\x83\x01R\x91\x82\x16`D\x82\x01R\x93\x94P`\0\x93\x92\x81\x16\x92\x91\x16\x90cH\\\xC9U`\xE0\x1B\x90`d\x01`@\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\x90Qb\x003\x03\x90b\0]\xB6V[b\x003\x11\x93\x92\x91\x90b\0dZV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\x003.W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\x003\x8FWb\x003\x8Fb\0c^V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\x003\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\x004\x1B\x91\x90b\0k\xB2V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x004]W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x004rW=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\x004\xAA\x90\x85\x90\x85\x90`\x04\x01b\0k\xD2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x004\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x004\xDAW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[```\0[a\x01\0\x81\x10\x15b\x005\xCEW`\x01\x81\x1B\x83\x81\x16\x15b\x005\xBAW`@Qb\x005\xA8\x90\x84\x90`\x01\x85\x1B`\xF8\x1B\x90` \x01b\0l/V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x92P[Pb\x005\xC6\x81b\0e\x0BV[\x90Pb\x005uV[P\x91\x90PV[\x81b\x006\x1EW\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qb\x006\x0B\x91\x90b\0l`V[`@Q\x80\x91\x03\x90\xA1b\x006\x1E\x82b\0>\xF3V[PPV[`\0\x80b\x006\xC2`9\x80Tb\x0068\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\x006f\x90b\0g\xDDV[\x80\x15b\x006\xB7W\x80`\x1F\x10b\x006\x8BWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\x006\xB7V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\x006\x99W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\0?ZV[\x90P`\x01\x81\x14\x15b\x006\xD6W`\x01\x91PP\x90V[`\x02\x81\x14\x15b\x006\xE8W`\x02\x91PP\x90V[`\x04\x81\x14\x15b\x007\x06Wb\x007\0`\x03`\nb\0?\xC3V[\x91PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7F_randQuorumCount: flag not recog`D\x82\x01Rd\x1B\x9A^\x99Y`\xDA\x1B`d\x82\x01R`\x84\x01b\0%vV[P\x90V[```\0\x80b\x007q\x84b\0@\x85V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15b\x007\x8FWb\x007\x8Fb\0cHV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\x007\xBAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15b\x007\xD3WPa\x01\0\x81\x10[\x15b\082W`\x01\x81\x1B\x93P\x85\x84\x16\x15b\08\x1FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10b\08\x01Wb\08\x01b\0c^V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[b\08*\x81b\0e\x0BV[\x90Pb\x007\xC1V[P\x90\x94\x93PPPPV[```\0b\08S`:\x80Tb\x0068\x90b\0g\xDDV[\x90P`\0`\x01\x82\x14\x15b\08jWP`\x01b\09@V[`\x02\x82\x14\x15b\08}WP`\x02b\09@V[`\x04\x82\x14\x15b\08\xAEW`/Tb\08\xA6\x90`\x03\x90b\08\xA0\x90`\x01\x90b\0h\xDFV[b\0?\xC3V[\x90Pb\09@V[`\x08\x82\x14\x15b\08\xC1WP`\x0Fb\09@V[`\x10\x82\x14\x15b\08\xD4WP`\x14b\09@V[` \x82\x14\x15b\08\xE7WP`\x19b\09@V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7F_randStrategyCount: flag not rec`D\x82\x01Rf\x1B\xD9\xDB\x9A^\x99Y`\xCA\x1B`d\x82\x01R`\x84\x01b\0%vV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\09]Wb\09]b\0cHV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\09\xA4W\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\09|W\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0:1W`@Q\x80`@\x01`@R\x80`/\x83\x81T\x81\x10b\09\xD5Wb\09\xD5b\0c^V[`\0\x91\x82R` \x91\x82\x90 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x82Rg\r\xE0\xB6\xB3\xA7d\0\0\x91\x01R\x82Q\x83\x90\x83\x90\x81\x10b\0:\x10Wb\0:\x10b\0c^V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0:(\x90b\0e\x0BV[\x91PPb\09\xAAV[P\x93\x92PPPV[`\0\x80b\0:O`;\x80Tb\x0068\x90b\0g\xDDV[\x90P`\x01\x81\x14\x15b\0:cW`\0\x91PP\x90V[`\x02\x81\x14\x15b\x007\x06Wb\x0FB@\x91PP\x90V[`\0\x80b\0:\x8D`<\x80Tb\x0068\x90b\0g\xDDV[\x90P`\x01\x81\x14\x15b\0:\xA2WP`\0\x92\x91PPV[`\x02\x81\x14\x15b\0:\xD7Wb\0:\xD0`\x01\x80\x85`\0\x01Qb\0:\xC4\x91\x90b\0l\x91V[c\xFF\xFF\xFF\xFF\x16b\0?\xC3V[\x93\x92PPPV[`\x04\x81\x14\x15b\0:\xEDWPPQc\xFF\xFF\xFF\xFF\x16\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7F_randInitialOperators: flag not `D\x82\x01Ri\x1C\x99X\xDB\xD9\xDB\x9A^\x99Y`\xB2\x1B`d\x82\x01R`\x84\x01b\0%vV[`\0\x80b\0;Y`CTb\0&\rV[`@Q` \x01b\0;k\x91\x90b\0l\xB9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R`C\x80T\x91\x92P`\0b\0;\x8F\x83b\0e\x0BV[\x91\x90PUP`\0\x80`\0b\0;\xA4\x84b\0@\xB6V[\x92P\x92P\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16c*4\xAD\xE8`@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;\xE6W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0;\xFBW=`\0\x80>=`\0\xFD[PP`@Qc\r\xA6m\xEB`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x92Pcm3oX\x91Pb\0=`\0\xFD[PP`\x1DT`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rb\0<\xF9\x94P\x90\x91\x16\x91Pcmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0<\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0<\xD9\x91\x90b\0heV[`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xA7\xDF`1\x919b\x005\xD4V[P\x90\x93\x92PPPV[\x80Q``\x90`\0[\x81\x81\x10\x15b\0>WW`\0b\0=\"\x82`\x01b\0i\x10V[\x90P[\x82\x81\x10\x15b\0>AW\x84\x81\x81Q\x81\x10b\0=CWb\0=Cb\0c^V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x85\x83\x81Q\x81\x10b\0=iWb\0=ib\0c^V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15b\0>,W`\0\x85\x83\x81Q\x81\x10b\0=\x98Wb\0=\x98b\0c^V[` \x02` \x01\x01Q\x90P\x85\x82\x81Q\x81\x10b\0=\xB7Wb\0=\xB7b\0c^V[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0=\xD4Wb\0=\xD4b\0c^V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x86\x83\x81Q\x81\x10b\0>\nWb\0>\nb\0c^V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPP[\x80b\0>8\x81b\0e\x0BV[\x91PPb\0=%V[P\x80b\0>N\x81b\0e\x0BV[\x91PPb\0=\nV[P\x91\x92\x91PPV[b\0>\xA7\x81`@Q`$\x01b\0>w\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xF5\xB1\xBB\xA9`\xE0\x1B\x17\x90Rb\0BcV[PV[b\x006\x1E\x82\x82`@Q`$\x01b\0>\xC3\x92\x91\x90b\0m\x14V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\tq\n\x9D`\xE4\x1B\x17\x90Rb\0BcV[\x80b\0>\xA7W`\0\x80Q` b\x03\xA6b\x839\x81Q\x91R`@Qb\0?H\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1b\0>\xA7b\0B\x84V[`\0b\0?\x85`\0\x83Q\x11`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xA6\xD1`2\x919b\x005\xD4V[`\0b\0?\x9D`\0`\x01\x85Qb\08\xA0\x91\x90b\0h\xDFV[\x90P\x82\x81\x81Q\x81\x10b\0?\xB4Wb\0?\xB4b\0c^V[\x01` \x01Q`\xF8\x1C\x93\x92PPPV[`\0\x80b\0?\xD2\x84\x84b\0h\xDFV[b\0?\xDF\x90`\x01b\0i\x10V[\x90P`\0\x81[\x80\x15b\0@\x04W\x81b\0?\xF8\x81b\0e\x0BV[\x92PP`\x01\x1Cb\0?\xE5V[`\0b\0@\x15`\x01\x80\x85\x1Bb\0h\xDFV[`7T\x90\x91P\x81\x16[\x84\x81\x10b\0@=`\0\xFD[P\x91Pb\0A\xA1V[`\x02\x81\x14\x15b\0A\xA1W\x87`@Q` \x01b\0AP\x91\x90b\0m\xC6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x97P\x87\x84\x84`@Qb\0Ar\x90b\0_\x84V[b\0A\x80\x93\x92\x91\x90b\0m]V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0A\x9DW=`\0\x80>=`\0\xFD[P\x91P[\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0B\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0B+\x91\x90\x81\x01\x90b\0gvV[`@Qb\0B:\x91\x90b\0m\xF0V[`@Q\x80\x91\x03\x90\xA1`\0\x80b\0BP\x84b\0EYV[\x94\x9B\x90\x9AP\x93\x98P\x92\x96PPPPPPPV[\x80Qjconsole.log` \x83\x01`\0\x80\x84\x83\x85Z\xFAPPPPPV[`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R;\x15b\0CwW`@Q`\0\x90`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90b\0B\xF2\x90\x83\x90e\x19\x98Z[\x19Y`\xD2\x1B\x90`\x01\x90` \x01b\0n9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0C\x12\x92\x91` \x01b\0h\x14V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0C.\x91b\0hGV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0CmW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0CrV[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`\0b\0C\x94b\0_\x92V[`>T`=T\x14\x15b\0D(W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7F_fetchKeypair: not enough genera`D\x82\x01R\x7Fted keys. Check IntegrationDeplo`d\x82\x01Rn<\xB2\xB9\x171\xB7\xB79\xBA9:\xB1\xBA7\xB9`\x89\x1B`\x84\x82\x01R`\xA4\x01b\0%vV[`\0`>`=T\x81T\x81\x10b\0DBWb\0DBb\0c^V[\x90`\0R` `\0 \x01T\x90P`\0`?`=T\x81T\x81\x10b\0DiWb\0Dib\0c^V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q`\xA0\x81\x01\x82R`\x08\x93\x90\x93\x02\x90\x91\x01\x80T``\x84\x01\x90\x81R`\x01\x82\x01T`\x80\x80\x86\x01\x91\x90\x91R\x90\x84R\x82Q\x80\x84\x01\x84R`\x02\x80\x84\x01T\x82R`\x03\x84\x01T\x82\x88\x01R\x95\x85\x01R\x82Q\x90\x81\x01\x80\x84R\x93\x94\x91\x93\x85\x84\x01\x93\x91\x92`\x04\x86\x01\x92\x84\x92\x90\x83\x01\x91\x84\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0D\xDFWPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0E\x16WPPP\x91\x90\x92RPPP\x90RP`=\x80T\x91\x92P`\0b\0EK\x83b\0e\x0BV[\x90\x91UP\x91\x94\x90\x93P\x91PPV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0E~Wb\0E~b\0cHV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0E\xA8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`/T\x90\x91P`\0\x90`\x01`\x01`@\x1B\x03\x81\x11\x15b\0E\xCCWb\0E\xCCb\0cHV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0E\xF6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x85`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0FYW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0F\x83\x91\x90\x81\x01\x90b\0gvV[`@Qb\0F\x92\x91\x90b\0nZV[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0G\xCFW`\0`/\x82\x81T\x81\x10b\0F\xC0Wb\0F\xC0b\0c^V[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0G\x13W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0G9\x91\x90b\0k\xB2V[\x90P`\0b\0GOb\x0FB@bLK@b\0?\xC3V[\x90Pb\0G^\x82\x8A\x83b\0G\xDAV[\x82\x86\x85\x81Q\x81\x10b\0GtWb\0Gtb\0c^V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85\x85\x81Q\x81\x10b\0G\xAAWb\0G\xAAb\0c^V[` \x02` \x01\x01\x81\x81RPPPPP\x80\x80b\0G\xC6\x90b\0e\x0BV[\x91PPb\0F\x9DV[P\x90\x94\x90\x93P\x91PPV[b\0G\xE9\x83\x83\x83`\0b\0G\xEEV[PPPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cp\xA0\x821`\xE0\x1B\x17\x90R\x91Q`\0\x92\x87\x16\x91b\0HD\x91b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0H\x81W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0H\x86V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0H\xA2\x91\x90b\0g\xC3V[\x90Pb\0H\xDC\x84b\0H\xD5\x87b\0H\xCEcp\xA0\x821`\xE0\x1Bb\0H\xC7`\x0C\x8Db\0I\xF4V[\x90b\0J\x1AV[\x90b\0J8V[\x90b\0JaV[\x82\x15b\0I\xECW`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x16\r\xDD`\xE0\x1B\x17\x90R\x90Q`\0\x91`\x01`\x01`\xA0\x1B\x03\x89\x16\x91b\0I'\x91\x90b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0IdW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0IiV[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0I\x85\x91\x90b\0g\xC3V[\x90P\x82\x86\x10\x15b\0I\xB0Wb\0I\x9C\x86\x84b\0h\xDFV[b\0I\xA8\x90\x82b\0h\xDFV[\x90Pb\0I\xCBV[b\0I\xBC\x83\x87b\0h\xDFV[b\0I\xC8\x90\x82b\0i\x10V[\x90P[b\0I\xE9\x81b\0H\xD5c\x18\x16\r\xDD`\xE0\x1Bb\0H\xC7`\x0C\x8Db\0I\xF4V[PP[PPPPPPV[`\x05\x82\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`\0\x82b\0&\x04V[`\x03\x82\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16`\xE0\x83\x90\x1C\x17\x90U`\0\x82b\0&\x04V[`\x02\x82\x01\x80T`\x01\x81\x01\x82U`\0\x91\x82R` \x82 `\x01`\x01`\xA0\x1B\x03\x84\x16\x91\x01U\x82b\0&\x04V[b\x006\x1E\x82\x82`\x05\x82\x01T`\x03\x83\x01T`\x04\x84\x01T`\x02\x85\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\x01`\x01`\xA0\x1B\x03\x90\x96\x16\x95`\xE0\x95\x90\x95\x1B\x94`\0\x93\x90\x92\x90\x91\x83\x01\x82\x82\x80\x15b\0J\xDAW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0J\xC5W[PPPPP\x90P`\0\x83b\0J\xEF\x83b\0M\xD5V[`@Q` \x01b\0K\x02\x92\x91\x90b\0h\x14V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x01\x8B\x01` \x90\x81R\x83\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x83R\x81R\x92\x81 \x91\x94P\x90\x92\x90\x91b\0KV\x91\x86\x91\x88\x91\x01b\0n\xAEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0K\x91Wb\0K\x8F\x87b\0N\x88V[P[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R` \x88\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x88\x16\x84R\x82R\x80\x83 \x90Q\x90\x91\x83\x91b\0K\xD2\x91\x87\x91\x89\x91\x01b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T`\0\x1B\x90P`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qb\0L\x19\x91\x90b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0LVW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0L[V[``\x91P[P\x91Pb\0Lx\x90P\x81b\0Lr\x88` b\0n\xEAV[b\0N\x95V[`@Qc\x06g\xF9\xD7`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x92P`\0\x91P`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0L\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0M\0\x91\x90b\0g\xC3V[\x90P\x80\x82\x14b\0M$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0%v\x90b\0o\x0CV[`@Qcp\xCA\x10\xBB`\xE0\x1B\x81R`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90cp\xCA\x10\xBB\x90b\0M\\\x90\x8B\x90\x87\x90\x8E\x90`\x04\x01b\0n9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0MwW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0M\x8CW=`\0\x80>=`\0\xFD[PPP`\x05\x8B\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UP`\x03\x8A\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0M\xC1`\x02\x8B\x01`\0b\0_\xE2V[\x89`\x04\x01`\0\x90UPPPPPPPPPPV[```\0\x82Q` b\0M\xE9\x91\x90b\0n\xEAV[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0N\x03Wb\0N\x03b\0cHV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0N.W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0N\x81W`\0\x84\x82\x81Q\x81\x10b\0NUWb\0NUb\0c^V[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0Nx\x90b\0e\x0BV[\x91PPb\0N4V[P\x92\x91PPV[`\0b\0&\x07\x82b\0O\x15V[`\0\x80`\0` \x85Q\x11b\0N\xACW\x84Qb\0N\xAFV[` [\x90P`\0[\x81\x81\x10\x15b\082Wb\0N\xCA\x81`\x08b\0n\xEAV[\x86b\0N\xD7\x83\x88b\0i\x10V[\x81Q\x81\x10b\0N\xEAWb\0N\xEAb\0c^V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0O\x0C\x81b\0e\x0BV[\x91PPb\0N\xB4V[`\x05\x81\x01T`\x03\x82\x01T`\x04\x83\x01T`\x02\x84\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\0\x96`\x01`\x01`\xA0\x1B\x03\x16\x95`\xE0\x1B\x94\x93\x87\x93\x91\x92\x90\x91\x90\x83\x01\x82\x82\x80\x15b\0O\x87W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0OrW[PPP`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x95\x96P\x94\x91\x93Pb\0O\xD3\x92P\x85\x91\x87\x91\x01b\0n\xAEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16\x15b\0PrW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R` \x87\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x87\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0PB\x91\x85\x91\x87\x91\x01b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x94PPPPP\x91\x90PV[`\0\x83b\0P\x80\x83b\0\\EV[`@Q` \x01b\0P\x93\x92\x91\x90b\0h\x14V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` b\x03\xA7\xBF\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c&l\xF1\t`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0P\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0Q\x07W=`\0\x80>=`\0\xFD[PPPP`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qb\0Q(\x91\x90b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0QeW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0QjV[``\x91P[P\x91Pb\0Q\x87\x90P\x81b\0Q\x81\x87` b\0n\xEAV[b\0\\\xF1V[`@Qce\xBC\x94\x81`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16`\x04\x82\x01R\x90\x92P`\0\x91P`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90ce\xBC\x94\x81\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0Q\xE4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0R\x0E\x91\x90\x81\x01\x90b\0p/V[P\x90P\x80Q`\x01\x14\x15b\0T\xF0W`\0`\0\x80Q` b\x03\xA7\xBF\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cf\x7F\x9Dp\x89\x84`\0\x81Q\x81\x10b\0RVWb\0RVb\0c^V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0R\x90\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0R\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0R\xD4\x91\x90b\0g\xC3V[\x90P\x80b\0S?W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0U\xBF\x91\x90b\0g\xC3V[\x90P\x80b\0V)W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`\0``\x8B`\x01`\x01`\xA0\x1B\x03\x16\x88`@Qb\0V\xE6\x91\x90b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0W#W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0W(V[``\x91P[P\x90\x92P\x90Pb\0W@\x81b\0Q\x81\x8C` b\0n\xEAV[\x96PP\x80\x80\x15b\0WPWP\x81\x86\x14[\x15b\0Y\xA3W\x7F\x9C\x95U\xB1\xE3\x10.<\xF4\x8FB}y\xCBg\x8F]\x9B\xD1\xED\n\xD5t8\x94a\xE2U\xF9Qp\xED\x8B\x8B\x8A\x8C`@Q` \x01b\0W\x8E\x92\x91\x90b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x88\x88\x81Q\x81\x10b\0W\xB9Wb\0W\xB9b\0c^V[` \x02` \x01\x01Q`\0\x1C`@Qb\0W\xD6\x94\x93\x92\x91\x90b\0p\x99V[`@Q\x80\x91\x03\x90\xA1\x84\x84\x81Q\x81\x10b\0W\xF3Wb\0W\xF3b\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x8D\x16`\0\x90\x81R\x8F\x83R`@\x80\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8F\x16\x83R\x84R\x80\x82 \x90Q\x92\x93\x90\x92b\0X>\x91\x8D\x91\x8F\x91\x01b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 \x81\x90UP`\x01\x8D`\x01\x01`\0\x8D`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8C`\x01`\x01`\xE0\x1B\x03\x19\x16`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8A\x8C`@Q` \x01b\0X\xCB\x92\x91\x90b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\0\x80Q` b\x03\xA7\xBF\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0Y=Wb\0Y=b\0c^V[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0Yf\x93\x92\x91\x90b\0n9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0Y\x81W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0Y\x96W=`\0\x80>=`\0\xFD[PPPPPPPb\0ZPV[`\0\x80Q` b\x03\xA7\xBF\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0Y\xDAWb\0Y\xDAb\0c^V[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0Z\x03\x93\x92\x91\x90b\0n9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0Z\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0Z3W=`\0\x80>=`\0\xFD[PPPPPPP[\x80b\0ZG\x81b\0e\x0BV[\x91PPb\0T\xFEV[Pb\0Z\xC8V[`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FstdStorage find(StdStorage): No `D\x82\x01R\x7Fstorage use detected for target.`d\x82\x01R`\x84\x01b\0%vV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0[\x0C\x91\x88\x91\x8A\x91\x01b\0n\xAEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0[\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FstdStorage find(StdStorage): Slo`D\x82\x01Rn:\x149\x94\x9077\xBA\x1037\xBA\xB72\x17`\x89\x1B`d\x82\x01R`\x84\x01b\0%vV[`\x05\x89\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`\x03\x89\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0[\xCC`\x02\x8A\x01`\0b\0_\xE2V[`\0`\x04\x8A\x01\x81\x90U`\x01`\x01`\xA0\x1B\x03\x88\x16\x81R` \x8A\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\\\x12\x91\x88\x91\x8A\x91\x01b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x97PPPPPPPP\x91\x90PV[```\0\x82Q` b\0\\Y\x91\x90b\0n\xEAV[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\\sWb\0\\sb\0cHV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\\\x9EW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0N\x81W`\0\x84\x82\x81Q\x81\x10b\0\\\xC5Wb\0\\\xC5b\0c^V[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\\\xE8\x90b\0e\x0BV[\x91PPb\0\\\xA4V[`\0\x80`\0` \x85Q\x11b\0]\x08W\x84Qb\0]\x0BV[` [\x90P`\0[\x81\x81\x10\x15b\082Wb\0]&\x81`\x08b\0n\xEAV[\x86b\0]3\x83\x88b\0i\x10V[\x81Q\x81\x10b\0]FWb\0]Fb\0c^V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0]h\x81b\0e\x0BV[\x91PPb\0]\x10V[a\x07\x18\x80b\0p\xCA\x839\x01\x90V[a\x07x\x80b\0w\xE2\x839\x01\x90V[`\x94\x80b\0\x7FZ\x839\x01\x90V[a\x02*\x80b\0\x7F\xEE\x839\x01\x90V[a\x03\xF3\x80b\0\x82\x18\x839\x01\x90V[a\x0E\x81\x80b\0\x86\x0B\x839\x01\x90V[aJ\xD0\x80b\0\x94\x8C\x839\x01\x90V[a\x04\xE4\x80b\0\xDF\\\x839\x01\x90V[a\\F\x80b\0\xE4@\x839\x01\x90V[a3\x8A\x80b\x01@\x86\x839\x01\x90V[a\x0E\xFE\x80b\x01t\x10\x839\x01\x90V[a1i\x80b\x01\x83\x0E\x839\x01\x90V[a\x1Fx\x80b\x01\xB4w\x839\x01\x90V[a\x1A\xB4\x80b\x01\xD3\xEF\x839\x01\x90V[a\x11}\x80b\x01\xEE\xA3\x839\x01\x90V[a9X\x80b\x02\0 \x839\x01\x90V[a!\x0B\x80b\x029x\x839\x01\x90V[a\x13\xEC\x80b\x02Z\x83\x839\x01\x90V[a\x16\xE0\x80b\x02no\x839\x01\x90V[aa\x87\x80b\x02\x85O\x839\x01\x90V[a\x1A%\x80b\x02\xE6\xD6\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0^\xABb\0`\x02V[\x81R` \x01b\0^\xBAb\0`\x02V[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x82\x80Tb\0^\xEB\x90b\0g\xDDV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0_\x0FW`\0\x85Ub\0_ZV[\x82`\x1F\x10b\0_*W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0_ZV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0_ZW\x91\x82\x01[\x82\x81\x11\x15b\0_ZW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0_=V[Pb\x007]\x92\x91Pb\0` V[a\x0E`\x80b\x03\0\xFB\x839\x01\x90V[aF\xF4\x80b\x03\x0F[\x839\x01\x90V[aP\x13\x80b\x03VO\x839\x01\x90V[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0_\xD3`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0^\xBAb\0^\x96V[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90b\0>\xA7\x91\x90b\0` V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\x007]W`\0\x81U`\x01\x01b\0`!V[`\0` \x82\x84\x03\x12\x15b\0`JW`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15b\0`vW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01b\0`UV[PPPPV[b\0`\x89\x82\x82Qb\0`QV[` \x81\x01Qb\0G\xE9`@\x84\x01\x82b\0`QV[`\x80\x81\x01b\0&\x07\x82\x84b\0`|V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0`\xE8W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0`\xC1V[P\x94\x95\x94PPPPPV[` \x81R`\0b\0&\x04` \x83\x01\x84b\0`\xADV[`\0[\x83\x81\x10\x15b\0a%W\x81\x81\x01Q\x83\x82\x01R` \x01b\0a\x0BV[\x83\x81\x11\x15b\0`vWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Rb\0aQ\x81` \x86\x01` \x86\x01b\0a\x08V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0b\x1BW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0b\x04W`_\x19\x89\x85\x03\x01\x83Rb\0a\xF1\x84\x86Qb\0a7V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0a\xD2V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0a\x8CV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0b\xD3W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0b\xBDW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0b\x91V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0bSV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0c;W`?\x19\x88\x86\x03\x01\x84Rb\0c(\x85\x83Qb\0a7V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0c\tV[P\x92\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0c\x89`@\x83\x01\x85b\0`\xADV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\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\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0`\xE8W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0c\xDDV[`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x82R\x86\x16` \x82\x01R`\xFF\x85\x16`@\x82\x01R``\x81\x01\x84\x90R`\xC0`\x80\x82\x01\x81\x90R`\0\x90b\0d9\x90\x83\x01\x85b\0`\xADV[\x82\x81\x03`\xA0\x84\x01Rb\0dM\x81\x85b\0c\xC9V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0d\x88\x90\x83\x01\x84b\0a7V[\x95\x94PPPPPV[l)\xBA90\xBA2\xB3\xBC\xAA7\xB5\xB2\xB7`\x99\x1B\x81R`\0\x82Qb\0d\xBB\x81`\r\x85\x01` \x87\x01b\0a\x08V[\x91\x90\x91\x01`\r\x01\x92\x91PPV[b\x14\xD5\x15`\xEA\x1B\x81R`\0\x82Qb\0d\xE8\x81`\x03\x85\x01` \x87\x01b\0a\x08V[\x91\x90\x91\x01`\x03\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15b\0e\"Wb\0e\"b\0d\xF5V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0`\xE8W\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0e=V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0`\xE8W\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x88R\x83\x01Q`\x01`\x01``\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01b\0exV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15b\0e\xFFW\x82\x84\x03\x89Rb\0e\xEC\x84\x83Qb\0edV[\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01b\0e\xD1V[P\x91\x97\x96PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x89\x81\x16\x82R\x88\x81\x16` \x80\x84\x01\x91\x90\x91R\x88\x82\x16`@\x84\x01R\x90\x87\x16``\x80\x84\x01\x91\x90\x91R`\xFF\x87\x16`\x80\x84\x01Ra\x01\0`\xA0\x84\x01\x81\x90R\x86Q\x90\x84\x01\x81\x90R`\0\x92a\x01 \x85\x01\x92\x88\x82\x01\x92\x91\x90\x85[\x83\x81\x10\x15b\0f\xAFWb\0f\x9E\x86\x86Q\x80Qc\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Qa\xFF\xFF\x90\x81\x16\x91\x84\x01\x91\x90\x91R`@\x91\x82\x01Q\x16\x91\x01RV[\x94\x81\x01\x94\x93\x82\x01\x93`\x01\x01b\0feV[PPPPP\x82\x81\x03`\xC0\x84\x01Rb\0f\xC8\x81\x86b\0e)V[\x90P\x82\x81\x03`\xE0\x84\x01Rb\0f\xDE\x81\x85b\0e\xB3V[\x9B\x9APPPPPPPPPPPV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0g\x18Wb\0g\x18b\0cHV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15b\0g\xA7W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15b\0k\xC5W`\0\x80\xFD[\x81Qb\0:\xD0\x81b\0k\x9CV[`@\x81R`\0b\0k\xE7`@\x83\x01\x85b\0`\xADV[\x82\x81\x03` \x84\x81\x01\x91\x90\x91R\x84Q\x80\x83R\x85\x82\x01\x92\x82\x01\x90`\0[\x81\x81\x10\x15b\0l\"W\x84Q\x15\x15\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01b\0l\x02V[P\x90\x97\x96PPPPPPPV[`\0\x83Qb\0lC\x81\x84` \x88\x01b\0a\x08V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x01\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0b\0&\x04`\x80\x83\x01\x84b\0a7V[`\0c\xFF\xFF\xFF\xFF\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15b\0l\xB1Wb\0l\xB1b\0d\xF5V[\x03\x93\x92PPPV[g'\xB82\xB90\xBA7\xB9`\xC1\x1B\x81R`\0\x82Qb\0l\xDE\x81`\x08\x85\x01` \x87\x01b\0a\x08V[\x91\x90\x91\x01`\x08\x01\x92\x91PPV[`@\x81R`\0b\0m\0`@\x83\x01\x85b\0`\xADV[\x82\x81\x03` \x84\x01Rb\0d\x88\x81\x85b\0c\xC9V[`@\x81R`\0b\0m)`@\x83\x01\x85b\0a7V[\x90P\x82` \x83\x01R\x93\x92PPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15b\0mSWb\0mSb\0d\xF5V[`\x01\x01\x93\x92PPPV[`\0a\x01@\x80\x83Rb\0ms\x81\x84\x01\x87b\0a7V[\x91PP\x83` \x83\x01Rb\0m\x95`@\x83\x01\x84Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x83\x81\x01Q\x80Q`\x80\x85\x01R\x01Q`\xA0\x83\x01R`@\x83\x01Qb\0m\xBD`\xC0\x84\x01\x82b\0`|V[P\x94\x93PPPPV[`\0\x82Qb\0m\xDA\x81\x84` \x87\x01b\0a\x08V[c\x17\xD0[\x1D`\xE2\x1B\x92\x01\x91\x82RP`\x04\x01\x91\x90PV[`@\x81R`\x17`@\x82\x01R\x7F_randUser: Created user\0\0\0\0\0\0\0\0\0``\x82\x01R`\x80` \x82\x01R`\0b\0&\x04`\x80\x83\x01\x84b\0a7V[`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[`@\x81R`\"`@\x82\x01R\x7F_dealRandTokens: dealing assets ``\x82\x01Rato`\xF0\x1B`\x80\x82\x01R`\xA0` \x82\x01R`\0b\0&\x04`\xA0\x83\x01\x84b\0a7V[\x82Q`\0\x90\x82\x90` \x80\x87\x01\x84[\x83\x81\x10\x15b\0n\xDAW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01b\0n\xBCV[PP\x94\x82RP\x90\x92\x01\x93\x92PPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15b\0o\x07Wb\0o\x07b\0d\xF5V[P\x02\x90V[` \x80\x82R`o\x90\x82\x01R\x7FstdStorage find(StdStorage): Pac`@\x82\x01R\x7Fked slot. This would cause dange``\x82\x01R\x7Frous overwriting and currently i`\x80\x82\x01Rn9\xB7\x13\xBA\x109\xBA\xB887\xB9:2\xB2\x17`\x89\x1B`\xA0\x82\x01R`\xC0\x01\x90V[`\0\x82`\x1F\x83\x01\x12b\0o\xB9W`\0\x80\xFD[\x81Q` `\x01`\x01`@\x1B\x03\x82\x11\x15b\0o\xD7Wb\0o\xD7b\0cHV[\x81`\x05\x1Bb\0o\xE8\x82\x82\x01b\0f\xEDV[\x92\x83R\x84\x81\x01\x82\x01\x92\x82\x81\x01\x90\x87\x85\x11\x15b\0p\x03W`\0\x80\xFD[\x83\x87\x01\x92P[\x84\x83\x10\x15b\0p$W\x82Q\x82R\x91\x83\x01\x91\x90\x83\x01\x90b\0p\tV[\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15b\0pCW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0p[W`\0\x80\xFD[b\0pi\x86\x83\x87\x01b\0o\xA7V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15b\0p\x80W`\0\x80\xFD[Pb\0p\x8F\x85\x82\x86\x01b\0o\xA7V[\x91PP\x92P\x92\x90PV[`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16\x84R`\x01`\x01`\xE0\x1B\x03\x19\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V\xFE`\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003A0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_configRand: invalid fillTypes, no flags passed_randValue: tried to select value from empty array_configRand: invalid minimumStake, no flags passed_configRand: invalid numStrategies, no flags passedGas used for updateOperatorsForQuorum: _configRand: invalid _userTypes, no flags passed\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_newRandomOperator: operator should be registered_configRand: invalid numQuorums, no flags passed\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\xA2dipfsX\"\x12 \xB3n\xB7+\0\x1Av\xA0_\x87\x95\xBDY\xEBh.\xFC\xD3m\\\x17\"\xF5\xE2->\x8BF\x82\xD8\xB3\xD4dsolcC\0\x08\x0C\x003\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-test/ffi/configs/operatorBLSKeys.json\x8D\x80\rf\x14\xD3^\xEDss>\xE4S\x16J;H\x07n\xB3\x13\x8FFj\xDE\xEB\x9D\xEC{\xB3\x1Fp", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060043610620001925760003560e01c80636d14a98711620000f05780639d8b9cb411620000a3578063ba414fa6116200007a578063ba414fa6146200033b578063bfbdaffd1462000356578063e20c9f71146200036d578063fa7626d4146200037757600080fd5b80639d8b9cb41462000313578063b473389b1462000327578063b5508aa9146200033157600080fd5b80636d14a98714620002a45780637792a03514620002b85780638171750914620002cf57806385226c8114620002e65780638f3350c014620002ff578063916a17c6146200030957600080fd5b80632dbcb04c11620001495780632dbcb04c14620002365780633dfb40e0146200024f5780633e5e3c2314620002635780633f7286f4146200026d57806366d9a9a014620002775780636b3aa72e146200029057600080fd5b8063054310e6146200019757806309d8753814620001c85780630a9254e414620001d4578063131e2f1814620001de5780631ed7831c14620002045780632ade3880146200021d575b600080fd5b603554620001ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001d262000385565b005b620001d2620003c2565b620001f5620001ef36600462006037565b620017cf565b604051620001bf91906200609d565b6200020e62001c71565b604051620001bf9190620060f3565b6200022762001cd5565b604051620001bf919062006165565b6200024060345481565b604051908152602001620001bf565b602e54620001ab906001600160a01b031681565b6200020e62001e23565b6200020e62001e85565b6200028162001ee7565b604051620001bf91906200622b565b601e54620001ab906001600160a01b031681565b602854620001ab906001600160a01b031681565b620001ab620002c936600462006037565b62001fd1565b62000240620002e036600462006037565b62001ffc565b620002f06200201e565b604051620001bf9190620062e2565b620001d2620020f8565b6200028162002129565b603354620001ab906001600160a01b031681565b620001d262002213565b620002f062002243565b620003456200231d565b6040519015158152602001620001bf565b620002406200036736600462006037565b6200244a565b6200020e6200245b565b600754620003459060ff1681565b6040805160808101825260018082526008602083015291810182905260046060820152620003b6919081906200272a565b620003c062002fcc565b565b604051620003d09062005d71565b604051809103906000f080158015620003ed573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b816000815181106200044957620004496200635e565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c6040516200047b9062005d7f565b6200048892919062006374565b604051809103906000f080158015620004a5573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620004d79062005d8d565b604051809103906000f080158015620004f4573d6000803e3d6000fd5b509050604051620005059062005d9a565b604051809103906000f08015801562000522573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b0392909216919091179055604051620005519062005da8565b604051809103906000f0801580156200056e573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005a39062005db6565b620005b0929190620063a0565b604051809103906000f080158015620005cd573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620006029062005db6565b6200060f929190620063a0565b604051809103906000f0801580156200062c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620006619062005db6565b6200066e929190620063a0565b604051809103906000f0801580156200068b573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620006c09062005db6565b620006cd929190620063a0565b604051809103906000f080158015620006ea573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200071f9062005db6565b6200072c929190620063a0565b604051809103906000f08015801562000749573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392831617905560255460205460405191831692169064077359400090620007879062005dc4565b6001600160a01b0393841681529290911660208301526001600160401b03166040820152606001604051809103906000f080158015620007cb573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620007f99062005dd2565b6001600160a01b039091168152602001604051809103906000f08015801562000826573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f54602254602054604051600094938416939283169291909116906200086a9062005de0565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620008a7573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b03938416939283169290911690620008d99062005dee565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000916573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b039283169290911690620009419062005dfc565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000975573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b039586169594851694938416939283169290911690620009b59062005e0a565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000a01573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b039091169062000a259062005e18565b6001600160a01b039091168152602001604051809103906000f08015801562000a52573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b9362000ab8939183169216908b8b8b60648201620063fb565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000b019392916004016200645a565b600060405180830381600087803b15801562000b1c57600080fd5b505af115801562000b31573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000bc49391909216918c916004016200645a565b600060405180830381600087803b15801562000bdf57600080fd5b505af115801562000bf4573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000c809391909216918b916004016200645a565b600060405180830381600087803b15801562000c9b57600080fd5b505af115801562000cb0573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000d46939116918a916004016200645a565b600060405180830381600087803b15801562000d6157600080fd5b505af115801562000d76573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000e0293919092169189916004016200645a565b600060405180830381600087803b15801562000e1d57600080fd5b505af115801562000e32573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000e53915062005e26565b6001600160a01b039091168152602001604051809103906000f08015801562000e80573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000f4657600062000ebb826200260d565b905060008160405160200162000ed2919062006491565b604051602081830303815290604052905060008260405160200162000ef89190620064c8565b604051602081830303815290604052905062000f2d82827502ac3a4edbbfb8014e3ba83411e915e80000000000003062003246565b505050808062000f3d906200650b565b91505062000ea4565b5060405162000f559062005e34565b604051809103906000f08015801562000f72573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000fd157600080fd5b505af115801562000fe6573d6000803e3d6000fd5b50506031546040518c93506001600160a01b039091169150620010099062005db6565b62001016929190620063a0565b604051809103906000f08015801562001033573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620010689062005db6565b62001075929190620063a0565b604051809103906000f08015801562001092573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620010c79062005db6565b620010d4929190620063a0565b604051809103906000f080158015620010f1573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620011269062005db6565b62001133929190620063a0565b604051809103906000f08015801562001150573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620011859062005db6565b62001192929190620063a0565b604051809103906000f080158015620011af573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200120b57600080fd5b505af115801562001220573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b0392831693509116906200124a9062005e42565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200127e573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620012a29062005e50565b6001600160a01b039091168152602001604051809103906000f080158015620012cf573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620012f39062005e5e565b6001600160a01b039091168152602001604051809103906000f08015801562001320573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b03938416939283169290911690620013529062005e6c565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200138f573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81526001600160a01b039182166004820152878216602482015292935016906399a88ec490604401600060405180830381600087803b158015620013e457600080fd5b505af1158015620013f9573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0391821660048201528782166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200144f57600080fd5b505af115801562001464573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0391821660048201528682166024820152911692506399a88ec49150604401600060405180830381600087803b158015620014ba57600080fd5b505af1158015620014cf573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0391821660048201528582166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200152557600080fd5b505af11580156200153a573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b1580156200158857600080fd5b505af11580156200159d573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b0394851695509284169391821692911690620015d59062005e7a565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200161a573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b9690821695908216949082169391169181620016a5565b6040805160608101825260008082526020808301829052928201528252600019909201910181620016775790505b5060408051600080825260208201818152828401909352909190620016db565b6060815260200190600190039081620016c55790505b50604051602401620016f59897969594939291906200660c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b90921682526200173e9392916004016200645a565b600060405180830381600087803b1580156200175957600080fd5b505af11580156200176e573d6000803e3d6000fd5b50505050604051620017809062005e88565b604051809103906000f0801580156200179d573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b620017d962005e96565b60408051600580825260c08201909252600091816020015b6060815260200190600190039081620017f157905050905060405180604001604052806002815260200161676f60f01b815250816000815181106200183a576200183a6200635e565b602002602001018190525060405180604001604052806003815260200162393ab760e91b815250816001815181106200187757620018776200635e565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b81525081600281518110620018c557620018c56200635e565b6020026020010181905250620018db836200260d565b81600381518110620018f157620018f16200635e565b6020026020010181905250604051806040016040528060018152602001603160f81b815250816004815181106200192c576200192c6200635e565b6020908102919091010152604051638916046760e01b81526000906000805160206203a682833981519152906389160467906200196e908590600401620062e2565b6000604051808303816000875af11580156200198e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019b8919081019062006776565b905080806020019051810190620019d09190620067c3565b83516001602002018181525050604051806040016040528060018152602001601960f91b8152508260048151811062001a0d5762001a0d6200635e565b6020908102919091010152604051638916046760e01b81526000805160206203a6828339815191529063891604679062001a4c908590600401620062e2565b6000604051808303816000875af115801562001a6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a96919081019062006776565b90508080602001905181019062001aae9190620067c3565b8351526040805180820190915260018152603360f81b602082015282518390600490811062001ae15762001ae16200635e565b6020908102919091010152604051638916046760e01b81526000805160206203a6828339815191529063891604679062001b20908590600401620062e2565b6000604051808303816000875af115801562001b40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b6a919081019062006776565b90508080602001905181019062001b829190620067c3565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001bc25762001bc26200635e565b6020908102919091010152604051638916046760e01b81526000805160206203a6828339815191529063891604679062001c01908590600401620062e2565b6000604051808303816000875af115801562001c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c4b919081019062006776565b90508080602001905181019062001c639190620067c3565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001ccb57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001cac575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001e0257838290600052602060002001805462001d6e90620067dd565b80601f016020809104026020016040519081016040528092919081815260200182805462001d9c90620067dd565b801562001ded5780601f1062001dc15761010080835404028352916020019162001ded565b820191906000526020600020905b81548152906001019060200180831162001dcf57829003601f168201915b50505050508152602001906001019062001d4c565b50505050815250508152602001906001019062001cf9565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001ccb576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001cac575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001ccb576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001cac575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001fb857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001f795790505b5050505050815250508152602001906001019062001f0b565b6047818154811062001fe257600080fd5b6000918252602090912001546001600160a01b0316905081565b604581815481106200200d57600080fd5b600091825260209091200154905081565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a5783829060005260206000200180546200206490620067dd565b80601f01602080910402602001604051908101604052809291908181526020018280546200209290620067dd565b8015620020e35780601f10620020b757610100808354040283529160200191620020e3565b820191906000526020600020905b815481529060010190602001808311620020c557829003601f168201915b50505050508152602001906001019062002042565b6040805160808101825260018082526010602083015291810182905260046060820152620003b6919081906200272a565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021fa57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620021bb5790505b505050505081525050815260200190600101906200214d565b60408051608081018252600180825260208083015291810182905260046060820152620003b6919081906200272a565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001e1a5783829060005260206000200180546200228990620067dd565b80601f0160208091040260200160405190810160405280929190818152602001828054620022b790620067dd565b8015620023085780601f10620022dc5761010080835404028352916020019162002308565b820191906000526020600020905b815481529060010190602001808311620022ea57829003601f168201915b50505050508152602001906001019062002267565b600754600090610100900460ff1615620023405750600754610100900460ff1690565b60006000805160206203a6828339815191523b156200244557604080516000805160206203a682833981519152602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620023c7917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162006814565b60408051601f1981840301815290829052620023e39162006847565b6000604051808303816000865af19150503d806000811462002422576040519150601f19603f3d011682016040523d82523d6000602084013e62002427565b606091505b509150508080602001905181019062002441919062006865565b9150505b919050565b604681815481106200200d57600080fd5b6060601380548060200260200160405190810160405280929190818152602001828054801562001ccb576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001cac575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b60408051808201909152600080825260208201526200250462005ebf565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801562002539576200253b565bfe5b50806200257f5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b6040516356eef15b60e11b81526000906000805160206203a6828339815191529063addde2b690620025c0908690869060040162006889565b602060405180830381865afa158015620025de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026049190620067c3565b90505b92915050565b606081620026325750506040805180820190915260018152600360fc1b602082015290565b8160005b811562002662578062002649816200650b565b91506200265a9050600a83620068c8565b915062002636565b6000816001600160401b038111156200267f576200267f62006348565b6040519080825280601f01601f191660200182016040528015620026aa576020820181803683370190505b5090505b84156200272257620026c2600183620068df565b9150620026d1600a86620068f9565b620026de90603062006910565b60f81b818381518110620026f657620026f66200635e565b60200101906001600160f81b031916908160001a9053506200271a600a86620068c8565b9450620026ae565b949350505050565b60408051818152601f818301527f5f636f6e66696752616e643a207365742072616e646f6d207365656420746f00606082015262ffffff8516602082015290516000805160206203a8408339815191529181900360800190a16040516001600160e81b031960e885901b16602082015260230160408051601f198184030181529190528051602090910120603755620027c38262003570565b8051620027d99160389160209091019062005edd565b508051620027e79062003570565b8051620027fd9160399160209091019062005edd565b506200280d816020015162003570565b80516200282391603a9160209091019062005edd565b5062002833816040015162003570565b80516200284991603b9160209091019062005edd565b5062002859816060015162003570565b80516200286f91603c9160209091019062005edd565b50620028a9603880546200288390620067dd565b9050600014156040518060600160405280603081526020016203a78f60309139620035d4565b620028e260398054620028bc90620067dd565b9050600014156040518060600160405280603081526020016203a81060309139620035d4565b6200291b603a8054620028f590620067dd565b9050600014156040518060600160405280603381526020016203a73560339139620035d4565b62002954603b80546200292e90620067dd565b9050600014156040518060600160405280603281526020016203a70360329139620035d4565b6200298d603c80546200296790620067dd565b9050600014156040518060600160405280602f81526020016203a6a2602f9139620035d4565b6200299762003622565b6040819055620029ad9060019081901b620068df565b604180546001600160c01b0319166001600160c01b03929092169182179055620029d79062003761565b8051620029ed9160429160209091019062005edd565b506040805481518281526030928101929092527f5f636f6e66696752616e643a206e756d626572206f662071756f72756d73206260608301526f195a5b99c81a5b9a5d1a585b1a5e995960821b608083015260208201526000805160206203a8408339815191529060a00160405180910390a16040805160608101825260058152613a98602082015260969181019190915260005b60405481101562002cff57600062002a996200383c565b9050600062002aa762003a39565b90506000805160206203a8408339815191528360405162002b0291906040808252601c908201527f5f636f6e66696752616e643a206372656174696e672071756f72756d000000006060820152602081019190915260800190565b60405180910390a183516040516000805160206203a8408339815191529162002b61916040808252601490820152730b4813585e081bdc195c985d1bdc8818dbdd5b9d60621b606082015263ffffffff91909116602082015260800190565b60405180910390a16000805160206203a840833981519152825160405162002bc391906040808252601b908201527f2d204e756d207374726174656769657320636f6e7369646572656400000000006060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e2d204d696e696d756d207374616b6560881b60608201526001600160601b038316602082015290516000805160206203a8408339815191529181900360800190a1601c5460335460405163ca669fa760e01b81526001600160a01b03918216600482015291169063ca669fa790602401600060405180830381600087803b15801562002c6457600080fd5b505af115801562002c79573d6000803e3d6000fd5b5050602854604051631aeb699160e31b81526001600160a01b03909116925063d75b4c88915062002cb3908790859087906004016200692b565b600060405180830381600087803b15801562002cce57600080fd5b505af115801562002ce3573d6000803e3d6000fd5b505050505050808062002cf6906200650b565b91505062002a82565b50600062002d0d8262003a77565b90506000805160206203a66283398151915262002d2a826200260d565b60405160200162002d3c919062006981565b60408051601f198184030181529082905262002d5891620069e8565b60405180910390a160005b8181101562002ec257600062002d7862003b49565b60405163208c6d5360e21b81529091506001600160a01b03821690638231b54c9062002daa90604290600401620069fd565b6020604051808303816000875af115801562002dca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002df09190620067c3565b5060005b6042805462002e0390620067dd565b905081101562002eaa576000604282815462002e1f90620067dd565b811062002e305762002e306200635e565b81546001161562002e505790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60009081526044602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b038516179055508062002ea1816200650b565b91505062002df4565b5050808062002eb9906200650b565b91505062002d63565b506000805160206203a66283398151915260405162002f0a906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a16000805160206203a66283398151915260405162002f6e9060208082526024908201527f5f636f6e66696752616e6420636f6d706c6574653b207374617274696e6720746040820152636573742160e01b606082015260800190565b60405180910390a16000805160206203a66283398151915260405162002fbd906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a15050505050565b6000808052604460209081527fff2df0515866d0e5037a04274635c66d5b7f91cd9f7cebf4fde878af347aa26980546040805182850281018501909152818152928301828280156200304857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162003029575b505050505090506200305a8162003d02565b60408051600180825281830190925291925060009190816020015b6060815260200190600190039081620030755790505090508181600081518110620030a457620030a46200635e565b6020026020010181905250600060428054620030c090620067dd565b80601f0160208091040260200160405190810160405280929190818152602001828054620030ee90620067dd565b80156200313f5780601f1062003113576101008083540402835291602001916200313f565b820191906000526020600020905b8154815290600101906020018083116200312157829003601f168201915b5050505050905060005a602854604051630a2814a960e31b81529192506001600160a01b031690635140a548906200317e908690869060040162006aad565b600060405180830381600087803b1580156200319957600080fd5b505af1158015620031ae573d6000803e3d6000fd5b5050505060005a9050620031cd620031c78284620068df565b62003e5f565b6200320f6040518060400160405280601781526020017f4e756d206f70657261746f727320757064617465643a20000000000000000000815250865162003eaa565b6200323f6040518060600160405280602781526020016203a76860279139620032398385620068df565b62003eaa565b5050505050565b6000848484846040516200325a9062005f68565b62003269949392919062006b51565b604051809103906000f08015801562003286573d6000803e3d6000fd5b506027546031546021546040516001600160a01b03808616602483015291821660448201529394506000939281169291169063485cc95560e01b9060640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620033039062005db6565b62003311939291906200645a565b604051809103906000f0801580156200332e573d6000803e3d6000fd5b506040805160018082528183019092529192506000919060208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905082826000815181106200338f576200338f6200635e565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa158015620033f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200341b919062006bb2565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200345d57600080fd5b505af115801562003472573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b35479150620034aa908590859060040162006bd2565b600060405180830381600087803b158015620034c557600080fd5b505af1158015620034da573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b606060005b610100811015620035ce576001811b83811615620035ba57604051620035a89084906001851b60f81b9060200162006c2f565b60405160208183030381529060405292505b50620035c6816200650b565b905062003575565b50919050565b816200361e577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200360b919062006c60565b60405180910390a16200361e8262003ef3565b5050565b600080620036c2603980546200363890620067dd565b80601f01602080910402602001604051908101604052809291908181526020018280546200366690620067dd565b8015620036b75780601f106200368b57610100808354040283529160200191620036b7565b820191906000526020600020905b8154815290600101906020018083116200369957829003601f168201915b505050505062003f5a565b90506001811415620036d657600191505090565b6002811415620036e857600291505090565b60048114156200370657620037006003600a62003fc3565b91505090565b60405162461bcd60e51b815260206004820152602560248201527f5f72616e6451756f72756d436f756e743a20666c6167206e6f74207265636f676044820152641b9a5e995960da1b606482015260840162002576565b5090565b6060600080620037718462004085565b61ffff166001600160401b038111156200378f576200378f62006348565b6040519080825280601f01601f191660200182016040528015620037ba576020820181803683370190505b5090506000805b825182108015620037d3575061010081105b1562003832576001811b9350858416156200381f578060f81b8383815181106200380157620038016200635e565b60200101906001600160f81b031916908160001a9053508160010191505b6200382a816200650b565b9050620037c1565b5090949350505050565b6060600062003853603a80546200363890620067dd565b9050600060018214156200386a5750600162003940565b60028214156200387d5750600262003940565b6004821415620038ae57602f54620038a690600390620038a090600190620068df565b62003fc3565b905062003940565b6008821415620038c15750600f62003940565b6010821415620038d45750601462003940565b6020821415620038e75750601962003940565b60405162461bcd60e51b815260206004820152602760248201527f5f72616e645374726174656779436f756e743a20666c6167206e6f74207265636044820152661bd9db9a5e995960ca1b606482015260840162002576565b6000816001600160401b038111156200395d576200395d62006348565b604051908082528060200260200182016040528015620039a457816020015b60408051808201909152600080825260208201528152602001906001900390816200397c5790505b50905060005b815181101562003a31576040518060400160405280602f8381548110620039d557620039d56200635e565b600091825260209182902001546001600160a01b03168252670de0b6b3a7640000910152825183908390811062003a105762003a106200635e565b6020026020010181905250808062003a28906200650b565b915050620039aa565b509392505050565b60008062003a4f603b80546200363890620067dd565b9050600181141562003a6357600091505090565b60028114156200370657620f424091505090565b60008062003a8d603c80546200363890620067dd565b9050600181141562003aa25750600092915050565b600281141562003ad75762003ad0600180856000015162003ac4919062006c91565b63ffffffff1662003fc3565b9392505050565b600481141562003aed5750505163ffffffff1690565b60405162461bcd60e51b815260206004820152602a60248201527f5f72616e64496e697469616c4f70657261746f72733a20666c6167206e6f74206044820152691c9958dbd9db9a5e995960b21b606482015260840162002576565b60008062003b596043546200260d565b60405160200162003b6b919062006cb9565b60408051601f1981840301815291905260438054919250600062003b8f836200650b565b9190505550600080600062003ba484620040b6565b925092509250826001600160a01b0316632a34ade86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003be657600080fd5b505af115801562003bfb573d6000803e3d6000fd5b5050604051630da66deb60e31b81526001600160a01b0386169250636d336f58915062003c2f908590859060040162006ceb565b600060405180830381600087803b15801562003c4a57600080fd5b505af115801562003c5f573d6000803e3d6000fd5b5050601d546040516336b87bd760e11b81526001600160a01b03878116600483015262003cf994509091169150636d70f7ae90602401602060405180830381865afa15801562003cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cd9919062006865565b6040518060600160405280603181526020016203a7df60319139620035d4565b50909392505050565b805160609060005b8181101562003e5757600062003d2282600162006910565b90505b8281101562003e415784818151811062003d435762003d436200635e565b60200260200101516001600160a01b031685838151811062003d695762003d696200635e565b60200260200101516001600160a01b0316111562003e2c57600085838151811062003d985762003d986200635e565b6020026020010151905085828151811062003db75762003db76200635e565b602002602001015186848151811062003dd45762003dd46200635e565b60200260200101906001600160a01b031690816001600160a01b0316815250508086838151811062003e0a5762003e0a6200635e565b60200260200101906001600160a01b031690816001600160a01b031681525050505b8062003e38816200650b565b91505062003d25565b508062003e4e816200650b565b91505062003d0a565b509192915050565b62003ea78160405160240162003e7791815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b17905262004263565b50565b6200361e828260405160240162003ec392919062006d14565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905262004263565b8062003ea7576000805160206203a66283398151915260405162003f489060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003ea762004284565b600062003f8560008351116040518060600160405280603281526020016203a6d160329139620035d4565b600062003f9d600060018551620038a09190620068df565b905082818151811062003fb45762003fb46200635e565b016020015160f81c9392505050565b60008062003fd28484620068df565b62003fdf90600162006910565b90506000815b801562004004578162003ff8816200650b565b92505060011c62003fe5565b600062004015600180851b620068df565b60375490915081165b8481106200403c5781620040338683620068df565b1690506200401e565b6037546040516020016200405291815260200190565b60408051601f19818403018152919052805160209091012060375562004079818962006910565b98975050505050505050565b6000805b821562002607576200409d600184620068df565b9092169180620040ad8162006d38565b91505062004089565b6000606080600080620040c862004388565b91509150600080620040e2603880546200363890620067dd565b905060018114156200413357878484604051620040ff9062005f76565b6200410d9392919062006d5d565b604051809103906000f0801580156200412a573d6000803e3d6000fd5b509150620041a1565b6002811415620041a1578760405160200162004150919062006dc6565b6040516020818303038152906040529750878484604051620041729062005f84565b620041809392919062006d5d565b604051809103906000f0801580156200419d573d6000803e3d6000fd5b5091505b7f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562004201573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200422b919081019062006776565b6040516200423a919062006df0565b60405180910390a1600080620042508462004559565b949b909a50939850929650505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000805160206203a6828339815191523b1562004377576040516000906000805160206203a682833981519152907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490620042f29083906519985a5b195960d21b9060019060200162006e39565b60408051601f198184030181529082905262004312929160200162006814565b60408051601f19818403018152908290526200432e9162006847565b6000604051808303816000865af19150503d80600081146200436d576040519150601f19603f3d011682016040523d82523d6000602084013e62004372565b606091505b505050505b6007805461ff001916610100179055565b60006200439462005f92565b603e54603d541415620044285760405162461bcd60e51b815260206004820152604f60248201527f5f66657463684b6579706169723a206e6f7420656e6f7567682067656e65726160448201527f746564206b6579732e20436865636b20496e746567726174696f6e4465706c6f60648201526e3cb2b91731b7b739ba393ab1ba37b960891b608482015260a40162002576565b6000603e603d54815481106200444257620044426200635e565b906000526020600020015490506000603f603d54815481106200446957620044696200635e565b60009182526020918290206040805160a0810182526008939093029091018054606084019081526001820154608080860191909152908452825180840184526002808401548252600384015482880152958501528251908101808452939491938584019391926004860192849290830191849182845b815481526020019060010190808311620044df57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311620045165750505091909252505050905250603d805491925060006200454b836200650b565b909155509194909350915050565b6060806000602f805490506001600160401b038111156200457e576200457e62006348565b604051908082528060200260200182016040528015620045a8578160200160208202803683370190505b50602f549091506000906001600160401b03811115620045cc57620045cc62006348565b604051908082528060200260200182016040528015620045f6578160200160208202803683370190505b5090507f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562004659573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004683919081019062006776565b60405162004692919062006e5a565b60405180910390a160005b602f54811015620047cf576000602f8281548110620046c057620046c06200635e565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa15801562004713573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004739919062006bb2565b905060006200474f620f4240624c4b4062003fc3565b90506200475e828a83620047da565b828685815181106200477457620047746200635e565b60200260200101906001600160a01b031690816001600160a01b03168152505080858581518110620047aa57620047aa6200635e565b6020026020010181815250505050508080620047c6906200650b565b9150506200469d565b509094909350915050565b620047e98383836000620047ee565b505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620048449162006847565b600060405180830381855afa9150503d806000811462004881576040519150601f19603f3d011682016040523d82523d6000602084013e62004886565b606091505b50915050600081806020019051810190620048a29190620067c3565b9050620048dc84620048d587620048ce6370a0823160e01b620048c7600c8d620049f4565b9062004a1a565b9062004a38565b9062004a61565b8215620049ec5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162004927919062006847565b600060405180830381855afa9150503d806000811462004964576040519150601f19603f3d011682016040523d82523d6000602084013e62004969565b606091505b50915050600081806020019051810190620049859190620067c3565b905082861015620049b0576200499c8684620068df565b620049a89082620068df565b9050620049cb565b620049bc8387620068df565b620049c8908262006910565b90505b620049e981620048d56318160ddd60e01b620048c7600c8d620049f4565b50505b505050505050565b6005820180546001600160a01b0319166001600160a01b03831617905560008262002604565b60038201805463ffffffff191660e083901c17905560008262002604565b6002820180546001810182556000918252602082206001600160a01b0384169101558262002604565b6200361e8282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562004ada57602002820191906000526020600020905b81548152602001906001019080831162004ac5575b5050505050905060008362004aef8362004dd5565b60405160200162004b0292919062006814565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162004b5691869188910162006eae565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662004b915762004b8f8762004e88565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162004bd291879189910162006eae565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162004c19919062006847565b600060405180830381855afa9150503d806000811462004c56576040519150601f19603f3d011682016040523d82523d6000602084013e62004c5b565b606091505b50915062004c7890508162004c7288602062006eea565b62004e95565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206203a6828339815191529063667f9d7090604401602060405180830381865afa15801562004cda573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d009190620067c3565b905080821462004d245760405162461bcd60e51b8152600401620025769062006f0c565b6040516370ca10bb60e01b81526000805160206203a682833981519152906370ca10bb9062004d5c908b9087908e9060040162006e39565b600060405180830381600087803b15801562004d7757600080fd5b505af115801562004d8c573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562004dc160028b01600062005fe2565b896004016000905550505050505050505050565b606060008251602062004de9919062006eea565b6001600160401b0381111562004e035762004e0362006348565b6040519080825280601f01601f19166020018201604052801562004e2e576020820181803683370190505b50905060005b835181101562004e8157600084828151811062004e555762004e556200635e565b60200260200101519050808260200260200184015250808062004e78906200650b565b91505062004e34565b5092915050565b6000620026078262004f15565b6000806000602085511162004eac57845162004eaf565b60205b905060005b81811015620038325762004eca81600862006eea565b8662004ed7838862006910565b8151811062004eea5762004eea6200635e565b01602001516001600160f81b031916901c92909217918062004f0c816200650b565b91505062004eb4565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562004f8757602002820191906000526020600020905b81548152602001906001019080831162004f72575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062004fd39250859187910162006eae565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562005072576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200504291859187910162006eae565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620050808362005c45565b6040516020016200509392919062006814565b60405160208183030381529060405290506000805160206203a7bf83398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620050f257600080fd5b505af115801562005107573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005128919062006847565b600060405180830381855afa9150503d806000811462005165576040519150601f19603f3d011682016040523d82523d6000602084013e6200516a565b606091505b509150620051879050816200518187602062006eea565b62005cf1565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206203a682833981519152906365bc9481906024016000604051808303816000875af1158015620051e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200520e91908101906200702f565b509050805160011415620054f05760006000805160206203a7bf83398151915260001c6001600160a01b031663667f9d7089846000815181106200525657620052566200635e565b60200260200101516040518363ffffffff1660e01b8152600401620052909291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620052ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052d49190620067c3565b9050806200533f577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200531457620053146200635e565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620053615760405162461bcd60e51b8152600401620025769062006f0c565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200539992919062006eae565b6040516020818303038152906040528051906020012085600081518110620053c557620053c56200635e565b602002602001015160001c604051620053e2949392919062007099565b60405180910390a1816000815181106200540057620054006200635e565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200544b918a918c910162006eae565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c16855282528284209251909391620054b5918a918c910162006eae565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062005ac8565b60018151111562005a575760005b815181101562005a505760006000805160206203a7bf83398151915260001c6001600160a01b031663667f9d708a8585815181106200554157620055416200635e565b60200260200101516040518363ffffffff1660e01b81526004016200557b9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005599573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620055bf9190620067c3565b90508062005629577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620055fe57620055fe6200635e565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462005638575062005a3b565b82518119906000805160206203a682833981519152906370ca10bb908c908790879081106200566b576200566b6200635e565b6020026020010151846040518463ffffffff1660e01b8152600401620056949392919062006e39565b600060405180830381600087803b158015620056af57600080fd5b505af1158015620056c4573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620056e6919062006847565b600060405180830381855afa9150503d806000811462005723576040519150601f19603f3d011682016040523d82523d6000602084013e62005728565b606091505b5090925090506200574081620051818c602062006eea565b9650508080156200575057508186145b15620059a3577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200578e92919062006eae565b60405160208183030381529060405280519060200120888881518110620057b957620057b96200635e565b602002602001015160001c604051620057d6949392919062007099565b60405180910390a1848481518110620057f357620057f36200635e565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200583e918d918f910162006eae565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c604051602001620058cb92919062006eae565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206203a7bf83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200593d576200593d6200635e565b6020026020010151866040518463ffffffff1660e01b8152600401620059669392919062006e39565b600060405180830381600087803b1580156200598157600080fd5b505af115801562005996573d6000803e3d6000fd5b5050505050505062005a50565b6000805160206203a7bf83398151915260001c6001600160a01b03166370ca10bb8c878781518110620059da57620059da6200635e565b6020026020010151866040518463ffffffff1660e01b815260040162005a039392919062006e39565b600060405180830381600087803b15801562005a1e57600080fd5b505af115801562005a33573d6000803e3d6000fd5b505050505050505b8062005a47816200650b565b915050620054fe565b5062005ac8565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002576565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162005b0c9188918a910162006eae565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005b9b5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b606482015260840162002576565b6005890180546001600160a01b031916905560038901805463ffffffff1916905562005bcc60028a01600062005fe2565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a1684528252808320905190929162005c129188918a910162006eae565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062005c59919062006eea565b6001600160401b0381111562005c735762005c7362006348565b6040519080825280601f01601f19166020018201604052801562005c9e576020820181803683370190505b50905060005b835181101562004e8157600084828151811062005cc55762005cc56200635e565b60200260200101519050808260200260200184015250808062005ce8906200650b565b91505062005ca4565b6000806000602085511162005d0857845162005d0b565b60205b905060005b81811015620038325762005d2681600862006eea565b8662005d33838862006910565b8151811062005d465762005d466200635e565b01602001516001600160f81b031916901c92909217918062005d68816200650b565b91505062005d10565b61071880620070ca83390190565b61077880620077e283390190565b60948062007f5a83390190565b61022a8062007fee83390190565b6103f3806200821883390190565b610e81806200860b83390190565b614ad0806200948c83390190565b6104e4806200df5c83390190565b615c46806200e44083390190565b61338a806201408683390190565b610efe806201741083390190565b613169806201830e83390190565b611f78806201b47783390190565b611ab4806201d3ef83390190565b61117d806201eea383390190565b613958806202002083390190565b61210b806202397883390190565b6113ec8062025a8383390190565b6116e08062026e6f83390190565b616187806202854f83390190565b611a25806202e6d683390190565b604051806040016040528062005eab62006002565b815260200162005eba62006002565b905290565b60405180606001604052806003906020820280368337509192915050565b82805462005eeb90620067dd565b90600052602060002090601f01602090048101928262005f0f576000855562005f5a565b82601f1062005f2a57805160ff191683800117855562005f5a565b8280016001018555821562005f5a579182015b8281111562005f5a57825182559160200191906001019062005f3d565b506200375d92915062006020565b610e6080620300fb83390190565b6146f48062030f5b83390190565b615013806203564f83390190565b6040805160a0810190915260006060820181815260808301919091528190815260200162005fd3604051806040016040528060008152602001600081525090565b815260200162005eba62005e96565b508054600082559060005260206000209081019062003ea7919062006020565b60405180604001604052806002906020820280368337509192915050565b5b808211156200375d576000815560010162006021565b6000602082840312156200604a57600080fd5b5035919050565b8060005b60028110156200607657815184526020938401939091019060010162006055565b50505050565b6200608982825162006051565b6020810151620047e9604084018262006051565b608081016200260782846200607c565b600081518084526020808501945080840160005b83811015620060e85781516001600160a01b031687529582019590820190600101620060c1565b509495945050505050565b602081526000620026046020830184620060ad565b60005b83811015620061255781810151838201526020016200610b565b83811115620060765750506000910152565b600081518084526200615181602086016020860162006108565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200621b57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200620457605f19898503018352620061f184865162006137565b948e01949350918d0191600101620061d2565b505050978a0197945050918801916001016200618c565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620062d357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620062bd5783516001600160e01b0319168252928b019260019290920191908b019062006291565b50978a0197955050509187019160010162006253565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200633b57603f198886030184526200632885835162006137565b9450928501929085019060010162006309565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604081526000620063896040830185620060ad565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b600081518084526020808501945080840160005b83811015620060e857815187529582019590820190600101620063dd565b6001600160a01b0387811682528616602082015260ff851660408201526060810184905260c0608082018190526000906200643990830185620060ad565b82810360a08401526200644d8185620063c9565b9998505050505050505050565b6001600160a01b03848116825283166020820152606060408201819052600090620064889083018462006137565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b815260008251620064bb81600d85016020870162006108565b91909101600d0192915050565b6214d51560ea1b815260008251620064e881600385016020870162006108565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415620065225762006522620064f5565b5060010190565b600081518084526020808501945080840160005b83811015620060e85781516001600160601b0316875295820195908201906001016200653d565b600081518084526020808501945080840160005b83811015620060e857815180516001600160a01b031688528301516001600160601b0316838801526040909601959082019060010162006578565b600081518084526020808501808196508360051b8101915082860160005b85811015620065ff578284038952620065ec84835162006564565b98850198935090840190600101620065d1565b5091979650505050505050565b6001600160a01b038981168252888116602080840191909152888216604084015290871660608084019190915260ff8716608084015261010060a084018190528651908401819052600092610120850192888201929190855b83811015620066af576200669e868651805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b948101949382019360010162006665565b505050505082810360c0840152620066c8818662006529565b905082810360e0840152620066de8185620065b3565b9b9a5050505050505050505050565b604051601f8201601f191681016001600160401b038111828210171562006718576200671862006348565b604052919050565b60006001600160401b038311156200673c576200673c62006348565b62006751601f8401601f1916602001620066ed565b90508281528383830111156200676657600080fd5b62003ad083602083018462006108565b6000602082840312156200678957600080fd5b81516001600160401b03811115620067a057600080fd5b8201601f81018413620067b257600080fd5b620027228482516020840162006720565b600060208284031215620067d657600080fd5b5051919050565b600181811c90821680620067f257607f821691505b60208210811415620035ce57634e487b7160e01b600052602260045260246000fd5b6001600160e01b03198316815281516000906200683981600485016020870162006108565b919091016004019392505050565b600082516200685b81846020870162006108565b9190910192915050565b6000602082840312156200687857600080fd5b8151801515811462003ad057600080fd5b6040815260006200689e604083018562006137565b828103602084015262006488818562006137565b634e487b7160e01b600052601260045260246000fd5b600082620068da57620068da620068b2565b500490565b600082821015620068f457620068f4620064f5565b500390565b6000826200690b576200690b620068b2565b500690565b60008219821115620069265762006926620064f5565b500190565b6200695a8185805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b6001600160601b038316606082015260a0608082015260006200648860a083018462006564565b6b02932b3b4b9ba32b934b733960a51b815260008251620069aa81600c85016020870162006108565b7f20696e697469616c206f70657261746f727320696e20656163682071756f7275600c939091019283015250606d60f81b602c820152602d01919050565b60208152600062002604602083018462006137565b600060208083526000845481600182811c91508083168062006a2057607f831692505b85831081141562006a3f57634e487b7160e01b85526022600452602485fd5b87860183815260200181801562006a5f576001811462006a715762006a9e565b60ff1986168252878201965062006a9e565b60008b81526020902060005b8681101562006a985781548482015290850190890162006a7d565b83019750505b50949998505050505050505050565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b8481101562006b3857888703605f19018652825180518089529085019085890190845b8181101562006b215783516001600160a01b03168352928701929187019160010162006afa565b509098505050948301949183019160010162006ad7565b5050508584038187015250505062006488818562006137565b60808152600062006b66608083018762006137565b828103602084015262006b7a818762006137565b604084019590955250506001600160a01b039190911660609091015292915050565b6001600160a01b038116811462003ea757600080fd5b60006020828403121562006bc557600080fd5b815162003ad08162006b9c565b60408152600062006be76040830185620060ad565b82810360208481019190915284518083528582019282019060005b8181101562006c2257845115158352938301939183019160010162006c02565b5090979650505050505050565b6000835162006c4381846020880162006108565b6001600160f81b0319939093169190920190815260010192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002604608083018462006137565b600063ffffffff8381169083168181101562006cb15762006cb1620064f5565b039392505050565b6727b832b930ba37b960c11b81526000825162006cde81600885016020870162006108565b9190910160080192915050565b60408152600062006d006040830185620060ad565b8281036020840152620064888185620063c9565b60408152600062006d29604083018562006137565b90508260208301529392505050565b600061ffff8083168181141562006d535762006d53620064f5565b6001019392505050565b600061014080835262006d738184018762006137565b91505083602083015262006d9560408301845180518252602090810151910152565b60208381015180516080850152015160a0830152604083015162006dbd60c08401826200607c565b50949350505050565b6000825162006dda81846020870162006108565b6317d05b1d60e21b920191825250600401919050565b60408152601760408201527f5f72616e64557365723a20437265617465642075736572000000000000000000606082015260806020820152600062002604608083018462006137565b6001600160a01b039390931683526020830191909152604082015260600190565b60408152602260408201527f5f6465616c52616e64546f6b656e733a206465616c696e672061737365747320606082015261746f60f01b608082015260a0602082015260006200260460a083018462006137565b825160009082906020808701845b8381101562006eda5781518552938201939082019060010162006ebc565b5050948252509092019392505050565b600081600019048311821515161562006f075762006f07620064f5565b500290565b6020808252606f908201527f73746453746f726167652066696e642853746453746f72616765293a2050616360408201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560608201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960808201526e39b713ba1039bab83837b93a32b21760891b60a082015260c00190565b600082601f83011262006fb957600080fd5b815160206001600160401b0382111562006fd75762006fd762006348565b8160051b62006fe8828201620066ed565b92835284810182019282810190878511156200700357600080fd5b83870192505b84831015620070245782518252918301919083019062007009565b979650505050505050565b600080604083850312156200704357600080fd5b82516001600160401b03808211156200705b57600080fd5b620070698683870162006fa7565b935060208501519150808211156200708057600080fd5b506200708f8582860162006fa7565b9150509250929050565b6001600160a01b039490941684526001600160e01b0319929092166020840152604083015260608201526080019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c003341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f500000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d5f636f6e66696752616e643a20696e76616c69642066696c6c54797065732c206e6f20666c616773207061737365645f72616e6456616c75653a20747269656420746f2073656c6563742076616c75652066726f6d20656d7074792061727261795f636f6e66696752616e643a20696e76616c6964206d696e696d756d5374616b652c206e6f20666c616773207061737365645f636f6e66696752616e643a20696e76616c6964206e756d537472617465676965732c206e6f20666c61677320706173736564476173207573656420666f72207570646174654f70657261746f7273466f7251756f72756d3a205f636f6e66696752616e643a20696e76616c6964205f7573657254797065732c206e6f20666c61677320706173736564885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f6e657752616e646f6d4f70657261746f723a206f70657261746f722073686f756c6420626520726567697374657265645f636f6e66696752616e643a20696e76616c6964206e756d51756f72756d732c206e6f20666c61677320706173736564b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8a2646970667358221220b36eb72b001a76a05f8795bd59eb682efcd36d5c1722f5e22d3e8b4682d8b3d464736f6c634300080c0033 + /// ``` + #[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\x92W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11b\0\0\xF0W\x80c\x9D\x8B\x9C\xB4\x11b\0\0\xA3W\x80c\xBAAO\xA6\x11b\0\0zW\x80c\xBAAO\xA6\x14b\0\x03;W\x80c\xBF\xBD\xAF\xFD\x14b\0\x03VW\x80c\xE2\x0C\x9Fq\x14b\0\x03mW\x80c\xFAv&\xD4\x14b\0\x03wW`\0\x80\xFD[\x80c\x9D\x8B\x9C\xB4\x14b\0\x03\x13W\x80c\xB4s8\x9B\x14b\0\x03'W\x80c\xB5P\x8A\xA9\x14b\0\x031W`\0\x80\xFD[\x80cm\x14\xA9\x87\x14b\0\x02\xA4W\x80cw\x92\xA05\x14b\0\x02\xB8W\x80c\x81qu\t\x14b\0\x02\xCFW\x80c\x85\"l\x81\x14b\0\x02\xE6W\x80c\x8F3P\xC0\x14b\0\x02\xFFW\x80c\x91j\x17\xC6\x14b\0\x03\tW`\0\x80\xFD[\x80c-\xBC\xB0L\x11b\0\x01IW\x80c-\xBC\xB0L\x14b\0\x026W\x80c=\xFB@\xE0\x14b\0\x02OW\x80c>^<#\x14b\0\x02cW\x80c?r\x86\xF4\x14b\0\x02mW\x80cf\xD9\xA9\xA0\x14b\0\x02wW\x80ck:\xA7.\x14b\0\x02\x90W`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01\x97W\x80c\t\xD8u8\x14b\0\x01\xC8W\x80c\n\x92T\xE4\x14b\0\x01\xD4W\x80c\x13\x1E/\x18\x14b\0\x01\xDEW\x80c\x1E\xD7\x83\x1C\x14b\0\x02\x04W\x80c*\xDE8\x80\x14b\0\x02\x1DW[`\0\x80\xFD[`5Tb\0\x01\xAB\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[b\0\x01\xD2b\0\x03\x85V[\0[b\0\x01\xD2b\0\x03\xC2V[b\0\x01\xF5b\0\x01\xEF6`\x04b\0`7V[b\0\x17\xCFV[`@Qb\0\x01\xBF\x91\x90b\0`\x9DV[b\0\x02\x0Eb\0\x1CqV[`@Qb\0\x01\xBF\x91\x90b\0`\xF3V[b\0\x02'b\0\x1C\xD5V[`@Qb\0\x01\xBF\x91\x90b\0aeV[b\0\x02@`4T\x81V[`@Q\x90\x81R` \x01b\0\x01\xBFV[`.Tb\0\x01\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\x0Eb\0\x1E#V[b\0\x02\x0Eb\0\x1E\x85V[b\0\x02\x81b\0\x1E\xE7V[`@Qb\0\x01\xBF\x91\x90b\0b+V[`\x1ETb\0\x01\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xABb\0\x02\xC96`\x04b\0`7V[b\0\x1F\xD1V[b\0\x02@b\0\x02\xE06`\x04b\0`7V[b\0\x1F\xFCV[b\0\x02\xF0b\0 \x1EV[`@Qb\0\x01\xBF\x91\x90b\0b\xE2V[b\0\x01\xD2b\0 \xF8V[b\0\x02\x81b\0!)V[`3Tb\0\x01\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xD2b\0\"\x13V[b\0\x02\xF0b\0\"CV[b\0\x03Eb\0#\x1DV[`@Q\x90\x15\x15\x81R` \x01b\0\x01\xBFV[b\0\x02@b\0\x03g6`\x04b\0`7V[b\0$JV[b\0\x02\x0Eb\0$[V[`\x07Tb\0\x03E\x90`\xFF\x16\x81V[`@\x80Q`\x80\x81\x01\x82R`\x01\x80\x82R`\x08` \x83\x01R\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0\x03\xB6\x91\x90\x81\x90b\0'*V[b\0\x03\xC0b\0/\xCCV[V[`@Qb\0\x03\xD0\x90b\0]qV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xEDW=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x04IWb\0\x04Ib\0c^V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x04{\x90b\0]\x7FV[b\0\x04\x88\x92\x91\x90b\0ctV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xA5W=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x04\xD7\x90b\0]\x8DV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xF4W=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x05\x05\x90b\0]\x9AV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\"W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x05Q\x90b\0]\xA8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05nW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xA3\x90b\0]\xB6V[b\0\x05\xB0\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\xCDW=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06\x02\x90b\0]\xB6V[b\0\x06\x0F\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06,W=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06a\x90b\0]\xB6V[b\0\x06n\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\x8BW=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06\xC0\x90b\0]\xB6V[b\0\x06\xCD\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xEAW=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x07\x1F\x90b\0]\xB6V[b\0\x07,\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07IW=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x07\x87\x90b\0]\xC4V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\xCBW=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07\xF9\x90b\0]\xD2V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08&W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x08j\x90b\0]\xE0V[`\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\x08\xA7W=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xD9\x90b\0]\xEEV[`\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\t\x16W=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\tA\x90b\0]\xFCV[`\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\tuW=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\t\xB5\x90b\0^\nV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\n\x01W=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\n%\x90b\0^\x18V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\nRW=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\n\xB8\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0c\xFBV[`@\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\x0B\x01\x93\x92\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0B\x1CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0B1W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\xC4\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0B\xDFW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0B\xF4W=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0C\x80\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\x9BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\xB0W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\rF\x93\x91\x16\x91\x8A\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\raW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\rvW=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0E\x02\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\x1DW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E2W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x0ES\x91Pb\0^&V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0E\x80W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0FFW`\0b\0\x0E\xBB\x82b\0&\rV[\x90P`\0\x81`@Q` \x01b\0\x0E\xD2\x91\x90b\0d\x91V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E\xF8\x91\x90b\0d\xC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0F-\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\x002FV[PPP\x80\x80b\0\x0F=\x90b\0e\x0BV[\x91PPb\0\x0E\xA4V[P`@Qb\0\x0FU\x90b\0^4V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0FrW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0F\xD1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0F\xE6W=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x10\t\x90b\0]\xB6V[b\0\x10\x16\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x103W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10h\x90b\0]\xB6V[b\0\x10u\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\x92W=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\xC7\x90b\0]\xB6V[b\0\x10\xD4\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\xF1W=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x11&\x90b\0]\xB6V[b\0\x113\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11PW=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x11\x85\x90b\0]\xB6V[b\0\x11\x92\x92\x91\x90b\0c\xA0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xAFW=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x12\x0BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x12 W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x12J\x90b\0^BV[`\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\x12~W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x12\xA2\x90b\0^PV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12\xCFW=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x12\xF3\x90b\0^^V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x13 W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x13R\x90b\0^lV[`\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\x13\x8FW=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x92\x93P\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xE4W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xF9W=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14OW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14dW=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x86\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\xBAW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\xCFW=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x85\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x15%W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15:W=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x15\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15\x9DW=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x15\xD5\x90b\0^zV[`\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\x16\x1AW=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x16\xA5V[`@\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\x16wW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x16\xDBV[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16\xC5W\x90P[P`@Q`$\x01b\0\x16\xF5\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0f\x0CV[`@\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\x17>\x93\x92\x91`\x04\x01b\0dZV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x17YW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x17nW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x17\x80\x90b\0^\x88V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x17\x9DW=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x17\xD9b\0^\x96V[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x17\xF1W\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x18:Wb\0\x18:b\0c^V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x18wWb\0\x18wb\0c^V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10b\0\x18\xC5Wb\0\x18\xC5b\0c^V[` \x02` \x01\x01\x81\x90RPb\0\x18\xDB\x83b\0&\rV[\x81`\x03\x81Q\x81\x10b\0\x18\xF1Wb\0\x18\xF1b\0c^V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x19,Wb\0\x19,b\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x19n\x90\x85\x90`\x04\x01b\0b\xE2V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19\xB8\x91\x90\x81\x01\x90b\0gvV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x19\xD0\x91\x90b\0g\xC3V[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1A\rWb\0\x1A\rb\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x1AL\x90\x85\x90`\x04\x01b\0b\xE2V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1AlW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x96\x91\x90\x81\x01\x90b\0gvV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\xAE\x91\x90b\0g\xC3V[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x1A\xE1Wb\0\x1A\xE1b\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x1B \x90\x85\x90`\x04\x01b\0b\xE2V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B@W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1Bj\x91\x90\x81\x01\x90b\0gvV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\x82\x91\x90b\0g\xC3V[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1B\xC2Wb\0\x1B\xC2b\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x1C\x01\x90\x85\x90`\x04\x01b\0b\xE2V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1C!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1CK\x91\x90\x81\x01\x90b\0gvV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1Cc\x91\x90b\0g\xC3V[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1C\xCBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C\xACW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1E\x02W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1Dn\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1D\x9C\x90b\0g\xDDV[\x80\x15b\0\x1D\xEDW\x80`\x1F\x10b\0\x1D\xC1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1D\xEDV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1D\xCFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1DLV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\xF9V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1C\xCBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C\xACWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1C\xCBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C\xACWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\x1F\xB8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\x1FyW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\x0BV[`G\x81\x81T\x81\x10b\0\x1F\xE2W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`E\x81\x81T\x81\x10b\0 \rW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T\x90P\x81V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0 d\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0 \x92\x90b\0g\xDDV[\x80\x15b\0 \xE3W\x80`\x1F\x10b\0 \xB7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0 \xE3V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0 \xC5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0 BV[`@\x80Q`\x80\x81\x01\x82R`\x01\x80\x82R`\x10` \x83\x01R\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0\x03\xB6\x91\x90\x81\x90b\0'*V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0!\xFAW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0!\xBBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0!MV[`@\x80Q`\x80\x81\x01\x82R`\x01\x80\x82R` \x80\x83\x01R\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0\x03\xB6\x91\x90\x81\x90b\0'*V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1E\x1AW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\"\x89\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\"\xB7\x90b\0g\xDDV[\x80\x15b\0#\x08W\x80`\x1F\x10b\0\"\xDCWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0#\x08V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\"\xEAW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\"gV[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0#@WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R;\x15b\0$EW`@\x80Q`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0#\xC7\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0h\x14V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0#\xE3\x91b\0hGV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0$\"W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0$'V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0$A\x91\x90b\0heV[\x91PP[\x91\x90PV[`F\x81\x81T\x81\x10b\0 \rW`\0\x80\xFD[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1C\xCBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C\xACWPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0%\x04b\0^\xBFV[\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\x15b\0%9Wb\0%;V[\xFE[P\x80b\0%\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90c\xAD\xDD\xE2\xB6\x90b\0%\xC0\x90\x86\x90\x86\x90`\x04\x01b\0h\x89V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0%\xDEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0&\x04\x91\x90b\0g\xC3V[\x90P[\x92\x91PPV[``\x81b\0&2WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0&bW\x80b\0&I\x81b\0e\x0BV[\x91Pb\0&Z\x90P`\n\x83b\0h\xC8V[\x91Pb\0&6V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0&\x7FWb\0&\x7Fb\0cHV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0&\xAAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0'\"Wb\0&\xC2`\x01\x83b\0h\xDFV[\x91Pb\0&\xD1`\n\x86b\0h\xF9V[b\0&\xDE\x90`0b\0i\x10V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0&\xF6Wb\0&\xF6b\0c^V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0'\x1A`\n\x86b\0h\xC8V[\x94Pb\0&\xAEV[\x94\x93PPPPV[`@\x80Q\x81\x81R`\x1F\x81\x83\x01R\x7F_configRand: set random seed to\0``\x82\x01Rb\xFF\xFF\xFF\x85\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xA8@\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`@Q`\x01`\x01`\xE8\x1B\x03\x19`\xE8\x85\x90\x1B\x16` \x82\x01R`#\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0'\xC3\x82b\x005pV[\x80Qb\0'\xD9\x91`8\x91` \x90\x91\x01\x90b\0^\xDDV[P\x80Qb\0'\xE7\x90b\x005pV[\x80Qb\0'\xFD\x91`9\x91` \x90\x91\x01\x90b\0^\xDDV[Pb\0(\r\x81` \x01Qb\x005pV[\x80Qb\0(#\x91`:\x91` \x90\x91\x01\x90b\0^\xDDV[Pb\0(3\x81`@\x01Qb\x005pV[\x80Qb\0(I\x91`;\x91` \x90\x91\x01\x90b\0^\xDDV[Pb\0(Y\x81``\x01Qb\x005pV[\x80Qb\0(o\x91`<\x91` \x90\x91\x01\x90b\0^\xDDV[Pb\0(\xA9`8\x80Tb\0(\x83\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xA7\x8F`0\x919b\x005\xD4V[b\0(\xE2`9\x80Tb\0(\xBC\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xA8\x10`0\x919b\x005\xD4V[b\0)\x1B`:\x80Tb\0(\xF5\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xA75`3\x919b\x005\xD4V[b\0)T`;\x80Tb\0).\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xA7\x03`2\x919b\x005\xD4V[b\0)\x8D`<\x80Tb\0)g\x90b\0g\xDDV[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xA6\xA2`/\x919b\x005\xD4V[b\0)\x97b\x006\"V[`@\x81\x90Ub\0)\xAD\x90`\x01\x90\x81\x90\x1Bb\0h\xDFV[`A\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0)\xD7\x90b\x007aV[\x80Qb\0)\xED\x91`B\x91` \x90\x91\x01\x90b\0^\xDDV[P`@\x80T\x81Q\x82\x81R`0\x92\x81\x01\x92\x90\x92R\x7F_configRand: number of quorums b``\x83\x01Ro\x19Z[\x99\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`\x82\x1B`\x80\x83\x01R` \x82\x01R`\0\x80Q` b\x03\xA8@\x839\x81Q\x91R\x90`\xA0\x01`@Q\x80\x91\x03\x90\xA1`@\x80Q``\x81\x01\x82R`\x05\x81Ra:\x98` \x82\x01R`\x96\x91\x81\x01\x91\x90\x91R`\0[`@T\x81\x10\x15b\0,\xFFW`\0b\0*\x99b\08=`\0\xFD[PP`(T`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xD7[L\x88\x91Pb\0,\xB3\x90\x87\x90\x85\x90\x87\x90`\x04\x01b\0i+V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0,\xCEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0,\xE3W=`\0\x80>=`\0\xFD[PPPPPP\x80\x80b\0,\xF6\x90b\0e\x0BV[\x91PPb\0*\x82V[P`\0b\0-\r\x82b\0:wV[\x90P`\0\x80Q` b\x03\xA6b\x839\x81Q\x91Rb\0-*\x82b\0&\rV[`@Q` \x01b\0-<\x91\x90b\0i\x81V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0-X\x91b\0i\xE8V[`@Q\x80\x91\x03\x90\xA1`\0[\x81\x81\x10\x15b\0.\xC2W`\0b\0-xb\0;IV[`@Qc \x8CmS`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x821\xB5L\x90b\0-\xAA\x90`B\x90`\x04\x01b\0i\xFDV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0-\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0-\xF0\x91\x90b\0g\xC3V[P`\0[`B\x80Tb\0.\x03\x90b\0g\xDDV[\x90P\x81\x10\x15b\0.\xAAW`\0`B\x82\x81Tb\0.\x1F\x90b\0g\xDDV[\x81\x10b\0.0Wb\0.0b\0c^V[\x81T`\x01\x16\x15b\0.PW\x90`\0R` `\0 \x90` \x91\x82\x82\x04\x01\x91\x90\x06[\x90T\x90\x1A`\x01`\xF8\x1B\x02`\xF8\x1C`\0\x90\x81R`D` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90UP\x80b\0.\xA1\x81b\0e\x0BV[\x91PPb\0-\xF4V[PP\x80\x80b\0.\xB9\x90b\0e\x0BV[\x91PPb\0-cV[P`\0\x80Q` b\x03\xA6b\x839\x81Q\x91R`@Qb\0/\n\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xA6b\x839\x81Q\x91R`@Qb\0/n\x90` \x80\x82R`$\x90\x82\x01R\x7F_configRand complete; starting t`@\x82\x01Rcest!`\xE0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xA6b\x839\x81Q\x91R`@Qb\0/\xBD\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0\x80\x80R`D` \x90\x81R\x7F\xFF-\xF0QXf\xD0\xE5\x03z\x04'F5\xC6m[\x7F\x91\xCD\x9F|\xEB\xF4\xFD\xE8x\xAF4z\xA2i\x80T`@\x80Q\x82\x85\x02\x81\x01\x85\x01\x90\x91R\x81\x81R\x92\x83\x01\x82\x82\x80\x15b\x000HW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\x000)W[PPPPP\x90Pb\x000Z\x81b\0=\x02V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\x000uW\x90PP\x90P\x81\x81`\0\x81Q\x81\x10b\x000\xA4Wb\x000\xA4b\0c^V[` \x02` \x01\x01\x81\x90RP`\0`B\x80Tb\x000\xC0\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\x000\xEE\x90b\0g\xDDV[\x80\x15b\x001?W\x80`\x1F\x10b\x001\x13Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\x001?V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\x001!W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P`\0Z`(T`@Qc\n(\x14\xA9`\xE3\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cQ@\xA5H\x90b\x001~\x90\x86\x90\x86\x90`\x04\x01b\0j\xADV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x001\x99W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x001\xAEW=`\0\x80>=`\0\xFD[PPPP`\0Z\x90Pb\x001\xCDb\x001\xC7\x82\x84b\0h\xDFV[b\0>_V[b\x002\x0F`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7FNum operators updated: \0\0\0\0\0\0\0\0\0\x81RP\x86Qb\0>\xAAV[b\x002?`@Q\x80``\x01`@R\x80`'\x81R` \x01b\x03\xA7h`'\x919b\x0029\x83\x85b\0h\xDFV[b\0>\xAAV[PPPPPV[`\0\x84\x84\x84\x84`@Qb\x002Z\x90b\0_hV[b\x002i\x94\x93\x92\x91\x90b\0kQV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\x002\x86W=`\0\x80>=`\0\xFD[P`'T`1T`!T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`$\x83\x01R\x91\x82\x16`D\x82\x01R\x93\x94P`\0\x93\x92\x81\x16\x92\x91\x16\x90cH\\\xC9U`\xE0\x1B\x90`d\x01`@\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\x90Qb\x003\x03\x90b\0]\xB6V[b\x003\x11\x93\x92\x91\x90b\0dZV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\x003.W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\x003\x8FWb\x003\x8Fb\0c^V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\x003\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\x004\x1B\x91\x90b\0k\xB2V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x004]W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x004rW=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\x004\xAA\x90\x85\x90\x85\x90`\x04\x01b\0k\xD2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x004\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x004\xDAW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[```\0[a\x01\0\x81\x10\x15b\x005\xCEW`\x01\x81\x1B\x83\x81\x16\x15b\x005\xBAW`@Qb\x005\xA8\x90\x84\x90`\x01\x85\x1B`\xF8\x1B\x90` \x01b\0l/V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x92P[Pb\x005\xC6\x81b\0e\x0BV[\x90Pb\x005uV[P\x91\x90PV[\x81b\x006\x1EW\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qb\x006\x0B\x91\x90b\0l`V[`@Q\x80\x91\x03\x90\xA1b\x006\x1E\x82b\0>\xF3V[PPV[`\0\x80b\x006\xC2`9\x80Tb\x0068\x90b\0g\xDDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\x006f\x90b\0g\xDDV[\x80\x15b\x006\xB7W\x80`\x1F\x10b\x006\x8BWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\x006\xB7V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\x006\x99W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\0?ZV[\x90P`\x01\x81\x14\x15b\x006\xD6W`\x01\x91PP\x90V[`\x02\x81\x14\x15b\x006\xE8W`\x02\x91PP\x90V[`\x04\x81\x14\x15b\x007\x06Wb\x007\0`\x03`\nb\0?\xC3V[\x91PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7F_randQuorumCount: flag not recog`D\x82\x01Rd\x1B\x9A^\x99Y`\xDA\x1B`d\x82\x01R`\x84\x01b\0%vV[P\x90V[```\0\x80b\x007q\x84b\0@\x85V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15b\x007\x8FWb\x007\x8Fb\0cHV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\x007\xBAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15b\x007\xD3WPa\x01\0\x81\x10[\x15b\082W`\x01\x81\x1B\x93P\x85\x84\x16\x15b\08\x1FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10b\08\x01Wb\08\x01b\0c^V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[b\08*\x81b\0e\x0BV[\x90Pb\x007\xC1V[P\x90\x94\x93PPPPV[```\0b\08S`:\x80Tb\x0068\x90b\0g\xDDV[\x90P`\0`\x01\x82\x14\x15b\08jWP`\x01b\09@V[`\x02\x82\x14\x15b\08}WP`\x02b\09@V[`\x04\x82\x14\x15b\08\xAEW`/Tb\08\xA6\x90`\x03\x90b\08\xA0\x90`\x01\x90b\0h\xDFV[b\0?\xC3V[\x90Pb\09@V[`\x08\x82\x14\x15b\08\xC1WP`\x0Fb\09@V[`\x10\x82\x14\x15b\08\xD4WP`\x14b\09@V[` \x82\x14\x15b\08\xE7WP`\x19b\09@V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7F_randStrategyCount: flag not rec`D\x82\x01Rf\x1B\xD9\xDB\x9A^\x99Y`\xCA\x1B`d\x82\x01R`\x84\x01b\0%vV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\09]Wb\09]b\0cHV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\09\xA4W\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\09|W\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0:1W`@Q\x80`@\x01`@R\x80`/\x83\x81T\x81\x10b\09\xD5Wb\09\xD5b\0c^V[`\0\x91\x82R` \x91\x82\x90 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x82Rg\r\xE0\xB6\xB3\xA7d\0\0\x91\x01R\x82Q\x83\x90\x83\x90\x81\x10b\0:\x10Wb\0:\x10b\0c^V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0:(\x90b\0e\x0BV[\x91PPb\09\xAAV[P\x93\x92PPPV[`\0\x80b\0:O`;\x80Tb\x0068\x90b\0g\xDDV[\x90P`\x01\x81\x14\x15b\0:cW`\0\x91PP\x90V[`\x02\x81\x14\x15b\x007\x06Wb\x0FB@\x91PP\x90V[`\0\x80b\0:\x8D`<\x80Tb\x0068\x90b\0g\xDDV[\x90P`\x01\x81\x14\x15b\0:\xA2WP`\0\x92\x91PPV[`\x02\x81\x14\x15b\0:\xD7Wb\0:\xD0`\x01\x80\x85`\0\x01Qb\0:\xC4\x91\x90b\0l\x91V[c\xFF\xFF\xFF\xFF\x16b\0?\xC3V[\x93\x92PPPV[`\x04\x81\x14\x15b\0:\xEDWPPQc\xFF\xFF\xFF\xFF\x16\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7F_randInitialOperators: flag not `D\x82\x01Ri\x1C\x99X\xDB\xD9\xDB\x9A^\x99Y`\xB2\x1B`d\x82\x01R`\x84\x01b\0%vV[`\0\x80b\0;Y`CTb\0&\rV[`@Q` \x01b\0;k\x91\x90b\0l\xB9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R`C\x80T\x91\x92P`\0b\0;\x8F\x83b\0e\x0BV[\x91\x90PUP`\0\x80`\0b\0;\xA4\x84b\0@\xB6V[\x92P\x92P\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16c*4\xAD\xE8`@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;\xE6W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0;\xFBW=`\0\x80>=`\0\xFD[PP`@Qc\r\xA6m\xEB`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x92Pcm3oX\x91Pb\0=`\0\xFD[PP`\x1DT`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rb\0<\xF9\x94P\x90\x91\x16\x91Pcmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0<\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0<\xD9\x91\x90b\0heV[`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xA7\xDF`1\x919b\x005\xD4V[P\x90\x93\x92PPPV[\x80Q``\x90`\0[\x81\x81\x10\x15b\0>WW`\0b\0=\"\x82`\x01b\0i\x10V[\x90P[\x82\x81\x10\x15b\0>AW\x84\x81\x81Q\x81\x10b\0=CWb\0=Cb\0c^V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x85\x83\x81Q\x81\x10b\0=iWb\0=ib\0c^V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15b\0>,W`\0\x85\x83\x81Q\x81\x10b\0=\x98Wb\0=\x98b\0c^V[` \x02` \x01\x01Q\x90P\x85\x82\x81Q\x81\x10b\0=\xB7Wb\0=\xB7b\0c^V[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0=\xD4Wb\0=\xD4b\0c^V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x86\x83\x81Q\x81\x10b\0>\nWb\0>\nb\0c^V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPP[\x80b\0>8\x81b\0e\x0BV[\x91PPb\0=%V[P\x80b\0>N\x81b\0e\x0BV[\x91PPb\0=\nV[P\x91\x92\x91PPV[b\0>\xA7\x81`@Q`$\x01b\0>w\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xF5\xB1\xBB\xA9`\xE0\x1B\x17\x90Rb\0BcV[PV[b\x006\x1E\x82\x82`@Q`$\x01b\0>\xC3\x92\x91\x90b\0m\x14V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\tq\n\x9D`\xE4\x1B\x17\x90Rb\0BcV[\x80b\0>\xA7W`\0\x80Q` b\x03\xA6b\x839\x81Q\x91R`@Qb\0?H\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1b\0>\xA7b\0B\x84V[`\0b\0?\x85`\0\x83Q\x11`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xA6\xD1`2\x919b\x005\xD4V[`\0b\0?\x9D`\0`\x01\x85Qb\08\xA0\x91\x90b\0h\xDFV[\x90P\x82\x81\x81Q\x81\x10b\0?\xB4Wb\0?\xB4b\0c^V[\x01` \x01Q`\xF8\x1C\x93\x92PPPV[`\0\x80b\0?\xD2\x84\x84b\0h\xDFV[b\0?\xDF\x90`\x01b\0i\x10V[\x90P`\0\x81[\x80\x15b\0@\x04W\x81b\0?\xF8\x81b\0e\x0BV[\x92PP`\x01\x1Cb\0?\xE5V[`\0b\0@\x15`\x01\x80\x85\x1Bb\0h\xDFV[`7T\x90\x91P\x81\x16[\x84\x81\x10b\0@=`\0\xFD[P\x91Pb\0A\xA1V[`\x02\x81\x14\x15b\0A\xA1W\x87`@Q` \x01b\0AP\x91\x90b\0m\xC6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x97P\x87\x84\x84`@Qb\0Ar\x90b\0_\x84V[b\0A\x80\x93\x92\x91\x90b\0m]V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0A\x9DW=`\0\x80>=`\0\xFD[P\x91P[\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0B\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0B+\x91\x90\x81\x01\x90b\0gvV[`@Qb\0B:\x91\x90b\0m\xF0V[`@Q\x80\x91\x03\x90\xA1`\0\x80b\0BP\x84b\0EYV[\x94\x9B\x90\x9AP\x93\x98P\x92\x96PPPPPPPV[\x80Qjconsole.log` \x83\x01`\0\x80\x84\x83\x85Z\xFAPPPPPV[`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R;\x15b\0CwW`@Q`\0\x90`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90b\0B\xF2\x90\x83\x90e\x19\x98Z[\x19Y`\xD2\x1B\x90`\x01\x90` \x01b\0n9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0C\x12\x92\x91` \x01b\0h\x14V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0C.\x91b\0hGV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0CmW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0CrV[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`\0b\0C\x94b\0_\x92V[`>T`=T\x14\x15b\0D(W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7F_fetchKeypair: not enough genera`D\x82\x01R\x7Fted keys. Check IntegrationDeplo`d\x82\x01Rn<\xB2\xB9\x171\xB7\xB79\xBA9:\xB1\xBA7\xB9`\x89\x1B`\x84\x82\x01R`\xA4\x01b\0%vV[`\0`>`=T\x81T\x81\x10b\0DBWb\0DBb\0c^V[\x90`\0R` `\0 \x01T\x90P`\0`?`=T\x81T\x81\x10b\0DiWb\0Dib\0c^V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q`\xA0\x81\x01\x82R`\x08\x93\x90\x93\x02\x90\x91\x01\x80T``\x84\x01\x90\x81R`\x01\x82\x01T`\x80\x80\x86\x01\x91\x90\x91R\x90\x84R\x82Q\x80\x84\x01\x84R`\x02\x80\x84\x01T\x82R`\x03\x84\x01T\x82\x88\x01R\x95\x85\x01R\x82Q\x90\x81\x01\x80\x84R\x93\x94\x91\x93\x85\x84\x01\x93\x91\x92`\x04\x86\x01\x92\x84\x92\x90\x83\x01\x91\x84\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0D\xDFWPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0E\x16WPPP\x91\x90\x92RPPP\x90RP`=\x80T\x91\x92P`\0b\0EK\x83b\0e\x0BV[\x90\x91UP\x91\x94\x90\x93P\x91PPV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0E~Wb\0E~b\0cHV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0E\xA8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`/T\x90\x91P`\0\x90`\x01`\x01`@\x1B\x03\x81\x11\x15b\0E\xCCWb\0E\xCCb\0cHV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0E\xF6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x85`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0FYW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0F\x83\x91\x90\x81\x01\x90b\0gvV[`@Qb\0F\x92\x91\x90b\0nZV[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0G\xCFW`\0`/\x82\x81T\x81\x10b\0F\xC0Wb\0F\xC0b\0c^V[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0G\x13W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0G9\x91\x90b\0k\xB2V[\x90P`\0b\0GOb\x0FB@bLK@b\0?\xC3V[\x90Pb\0G^\x82\x8A\x83b\0G\xDAV[\x82\x86\x85\x81Q\x81\x10b\0GtWb\0Gtb\0c^V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85\x85\x81Q\x81\x10b\0G\xAAWb\0G\xAAb\0c^V[` \x02` \x01\x01\x81\x81RPPPPP\x80\x80b\0G\xC6\x90b\0e\x0BV[\x91PPb\0F\x9DV[P\x90\x94\x90\x93P\x91PPV[b\0G\xE9\x83\x83\x83`\0b\0G\xEEV[PPPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cp\xA0\x821`\xE0\x1B\x17\x90R\x91Q`\0\x92\x87\x16\x91b\0HD\x91b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0H\x81W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0H\x86V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0H\xA2\x91\x90b\0g\xC3V[\x90Pb\0H\xDC\x84b\0H\xD5\x87b\0H\xCEcp\xA0\x821`\xE0\x1Bb\0H\xC7`\x0C\x8Db\0I\xF4V[\x90b\0J\x1AV[\x90b\0J8V[\x90b\0JaV[\x82\x15b\0I\xECW`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x16\r\xDD`\xE0\x1B\x17\x90R\x90Q`\0\x91`\x01`\x01`\xA0\x1B\x03\x89\x16\x91b\0I'\x91\x90b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0IdW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0IiV[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0I\x85\x91\x90b\0g\xC3V[\x90P\x82\x86\x10\x15b\0I\xB0Wb\0I\x9C\x86\x84b\0h\xDFV[b\0I\xA8\x90\x82b\0h\xDFV[\x90Pb\0I\xCBV[b\0I\xBC\x83\x87b\0h\xDFV[b\0I\xC8\x90\x82b\0i\x10V[\x90P[b\0I\xE9\x81b\0H\xD5c\x18\x16\r\xDD`\xE0\x1Bb\0H\xC7`\x0C\x8Db\0I\xF4V[PP[PPPPPPV[`\x05\x82\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`\0\x82b\0&\x04V[`\x03\x82\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16`\xE0\x83\x90\x1C\x17\x90U`\0\x82b\0&\x04V[`\x02\x82\x01\x80T`\x01\x81\x01\x82U`\0\x91\x82R` \x82 `\x01`\x01`\xA0\x1B\x03\x84\x16\x91\x01U\x82b\0&\x04V[b\x006\x1E\x82\x82`\x05\x82\x01T`\x03\x83\x01T`\x04\x84\x01T`\x02\x85\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\x01`\x01`\xA0\x1B\x03\x90\x96\x16\x95`\xE0\x95\x90\x95\x1B\x94`\0\x93\x90\x92\x90\x91\x83\x01\x82\x82\x80\x15b\0J\xDAW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0J\xC5W[PPPPP\x90P`\0\x83b\0J\xEF\x83b\0M\xD5V[`@Q` \x01b\0K\x02\x92\x91\x90b\0h\x14V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x01\x8B\x01` \x90\x81R\x83\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x83R\x81R\x92\x81 \x91\x94P\x90\x92\x90\x91b\0KV\x91\x86\x91\x88\x91\x01b\0n\xAEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0K\x91Wb\0K\x8F\x87b\0N\x88V[P[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R` \x88\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x88\x16\x84R\x82R\x80\x83 \x90Q\x90\x91\x83\x91b\0K\xD2\x91\x87\x91\x89\x91\x01b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T`\0\x1B\x90P`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qb\0L\x19\x91\x90b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0LVW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0L[V[``\x91P[P\x91Pb\0Lx\x90P\x81b\0Lr\x88` b\0n\xEAV[b\0N\x95V[`@Qc\x06g\xF9\xD7`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x92P`\0\x91P`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0L\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0M\0\x91\x90b\0g\xC3V[\x90P\x80\x82\x14b\0M$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0%v\x90b\0o\x0CV[`@Qcp\xCA\x10\xBB`\xE0\x1B\x81R`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90cp\xCA\x10\xBB\x90b\0M\\\x90\x8B\x90\x87\x90\x8E\x90`\x04\x01b\0n9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0MwW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0M\x8CW=`\0\x80>=`\0\xFD[PPP`\x05\x8B\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UP`\x03\x8A\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0M\xC1`\x02\x8B\x01`\0b\0_\xE2V[\x89`\x04\x01`\0\x90UPPPPPPPPPPV[```\0\x82Q` b\0M\xE9\x91\x90b\0n\xEAV[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0N\x03Wb\0N\x03b\0cHV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0N.W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0N\x81W`\0\x84\x82\x81Q\x81\x10b\0NUWb\0NUb\0c^V[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0Nx\x90b\0e\x0BV[\x91PPb\0N4V[P\x92\x91PPV[`\0b\0&\x07\x82b\0O\x15V[`\0\x80`\0` \x85Q\x11b\0N\xACW\x84Qb\0N\xAFV[` [\x90P`\0[\x81\x81\x10\x15b\082Wb\0N\xCA\x81`\x08b\0n\xEAV[\x86b\0N\xD7\x83\x88b\0i\x10V[\x81Q\x81\x10b\0N\xEAWb\0N\xEAb\0c^V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0O\x0C\x81b\0e\x0BV[\x91PPb\0N\xB4V[`\x05\x81\x01T`\x03\x82\x01T`\x04\x83\x01T`\x02\x84\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\0\x96`\x01`\x01`\xA0\x1B\x03\x16\x95`\xE0\x1B\x94\x93\x87\x93\x91\x92\x90\x91\x90\x83\x01\x82\x82\x80\x15b\0O\x87W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0OrW[PPP`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x95\x96P\x94\x91\x93Pb\0O\xD3\x92P\x85\x91\x87\x91\x01b\0n\xAEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16\x15b\0PrW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R` \x87\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x87\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0PB\x91\x85\x91\x87\x91\x01b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x94PPPPP\x91\x90PV[`\0\x83b\0P\x80\x83b\0\\EV[`@Q` \x01b\0P\x93\x92\x91\x90b\0h\x14V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` b\x03\xA7\xBF\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c&l\xF1\t`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0P\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0Q\x07W=`\0\x80>=`\0\xFD[PPPP`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qb\0Q(\x91\x90b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0QeW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0QjV[``\x91P[P\x91Pb\0Q\x87\x90P\x81b\0Q\x81\x87` b\0n\xEAV[b\0\\\xF1V[`@Qce\xBC\x94\x81`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16`\x04\x82\x01R\x90\x92P`\0\x91P`\0\x80Q` b\x03\xA6\x82\x839\x81Q\x91R\x90ce\xBC\x94\x81\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0Q\xE4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0R\x0E\x91\x90\x81\x01\x90b\0p/V[P\x90P\x80Q`\x01\x14\x15b\0T\xF0W`\0`\0\x80Q` b\x03\xA7\xBF\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cf\x7F\x9Dp\x89\x84`\0\x81Q\x81\x10b\0RVWb\0RVb\0c^V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0R\x90\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0R\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0R\xD4\x91\x90b\0g\xC3V[\x90P\x80b\0S?W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0U\xBF\x91\x90b\0g\xC3V[\x90P\x80b\0V)W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`\0``\x8B`\x01`\x01`\xA0\x1B\x03\x16\x88`@Qb\0V\xE6\x91\x90b\0hGV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0W#W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0W(V[``\x91P[P\x90\x92P\x90Pb\0W@\x81b\0Q\x81\x8C` b\0n\xEAV[\x96PP\x80\x80\x15b\0WPWP\x81\x86\x14[\x15b\0Y\xA3W\x7F\x9C\x95U\xB1\xE3\x10.<\xF4\x8FB}y\xCBg\x8F]\x9B\xD1\xED\n\xD5t8\x94a\xE2U\xF9Qp\xED\x8B\x8B\x8A\x8C`@Q` \x01b\0W\x8E\x92\x91\x90b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x88\x88\x81Q\x81\x10b\0W\xB9Wb\0W\xB9b\0c^V[` \x02` \x01\x01Q`\0\x1C`@Qb\0W\xD6\x94\x93\x92\x91\x90b\0p\x99V[`@Q\x80\x91\x03\x90\xA1\x84\x84\x81Q\x81\x10b\0W\xF3Wb\0W\xF3b\0c^V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x8D\x16`\0\x90\x81R\x8F\x83R`@\x80\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8F\x16\x83R\x84R\x80\x82 \x90Q\x92\x93\x90\x92b\0X>\x91\x8D\x91\x8F\x91\x01b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 \x81\x90UP`\x01\x8D`\x01\x01`\0\x8D`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8C`\x01`\x01`\xE0\x1B\x03\x19\x16`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8A\x8C`@Q` \x01b\0X\xCB\x92\x91\x90b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\0\x80Q` b\x03\xA7\xBF\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0Y=Wb\0Y=b\0c^V[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0Yf\x93\x92\x91\x90b\0n9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0Y\x81W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0Y\x96W=`\0\x80>=`\0\xFD[PPPPPPPb\0ZPV[`\0\x80Q` b\x03\xA7\xBF\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0Y\xDAWb\0Y\xDAb\0c^V[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0Z\x03\x93\x92\x91\x90b\0n9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0Z\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0Z3W=`\0\x80>=`\0\xFD[PPPPPPP[\x80b\0ZG\x81b\0e\x0BV[\x91PPb\0T\xFEV[Pb\0Z\xC8V[`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FstdStorage find(StdStorage): No `D\x82\x01R\x7Fstorage use detected for target.`d\x82\x01R`\x84\x01b\0%vV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0[\x0C\x91\x88\x91\x8A\x91\x01b\0n\xAEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0[\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FstdStorage find(StdStorage): Slo`D\x82\x01Rn:\x149\x94\x9077\xBA\x1037\xBA\xB72\x17`\x89\x1B`d\x82\x01R`\x84\x01b\0%vV[`\x05\x89\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`\x03\x89\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0[\xCC`\x02\x8A\x01`\0b\0_\xE2V[`\0`\x04\x8A\x01\x81\x90U`\x01`\x01`\xA0\x1B\x03\x88\x16\x81R` \x8A\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\\\x12\x91\x88\x91\x8A\x91\x01b\0n\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x97PPPPPPPP\x91\x90PV[```\0\x82Q` b\0\\Y\x91\x90b\0n\xEAV[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\\sWb\0\\sb\0cHV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\\\x9EW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0N\x81W`\0\x84\x82\x81Q\x81\x10b\0\\\xC5Wb\0\\\xC5b\0c^V[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\\\xE8\x90b\0e\x0BV[\x91PPb\0\\\xA4V[`\0\x80`\0` \x85Q\x11b\0]\x08W\x84Qb\0]\x0BV[` [\x90P`\0[\x81\x81\x10\x15b\082Wb\0]&\x81`\x08b\0n\xEAV[\x86b\0]3\x83\x88b\0i\x10V[\x81Q\x81\x10b\0]FWb\0]Fb\0c^V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0]h\x81b\0e\x0BV[\x91PPb\0]\x10V[a\x07\x18\x80b\0p\xCA\x839\x01\x90V[a\x07x\x80b\0w\xE2\x839\x01\x90V[`\x94\x80b\0\x7FZ\x839\x01\x90V[a\x02*\x80b\0\x7F\xEE\x839\x01\x90V[a\x03\xF3\x80b\0\x82\x18\x839\x01\x90V[a\x0E\x81\x80b\0\x86\x0B\x839\x01\x90V[aJ\xD0\x80b\0\x94\x8C\x839\x01\x90V[a\x04\xE4\x80b\0\xDF\\\x839\x01\x90V[a\\F\x80b\0\xE4@\x839\x01\x90V[a3\x8A\x80b\x01@\x86\x839\x01\x90V[a\x0E\xFE\x80b\x01t\x10\x839\x01\x90V[a1i\x80b\x01\x83\x0E\x839\x01\x90V[a\x1Fx\x80b\x01\xB4w\x839\x01\x90V[a\x1A\xB4\x80b\x01\xD3\xEF\x839\x01\x90V[a\x11}\x80b\x01\xEE\xA3\x839\x01\x90V[a9X\x80b\x02\0 \x839\x01\x90V[a!\x0B\x80b\x029x\x839\x01\x90V[a\x13\xEC\x80b\x02Z\x83\x839\x01\x90V[a\x16\xE0\x80b\x02no\x839\x01\x90V[aa\x87\x80b\x02\x85O\x839\x01\x90V[a\x1A%\x80b\x02\xE6\xD6\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0^\xABb\0`\x02V[\x81R` \x01b\0^\xBAb\0`\x02V[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x82\x80Tb\0^\xEB\x90b\0g\xDDV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0_\x0FW`\0\x85Ub\0_ZV[\x82`\x1F\x10b\0_*W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0_ZV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0_ZW\x91\x82\x01[\x82\x81\x11\x15b\0_ZW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0_=V[Pb\x007]\x92\x91Pb\0` V[a\x0E`\x80b\x03\0\xFB\x839\x01\x90V[aF\xF4\x80b\x03\x0F[\x839\x01\x90V[aP\x13\x80b\x03VO\x839\x01\x90V[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0_\xD3`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0^\xBAb\0^\x96V[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90b\0>\xA7\x91\x90b\0` V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\x007]W`\0\x81U`\x01\x01b\0`!V[`\0` \x82\x84\x03\x12\x15b\0`JW`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15b\0`vW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01b\0`UV[PPPPV[b\0`\x89\x82\x82Qb\0`QV[` \x81\x01Qb\0G\xE9`@\x84\x01\x82b\0`QV[`\x80\x81\x01b\0&\x07\x82\x84b\0`|V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0`\xE8W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0`\xC1V[P\x94\x95\x94PPPPPV[` \x81R`\0b\0&\x04` \x83\x01\x84b\0`\xADV[`\0[\x83\x81\x10\x15b\0a%W\x81\x81\x01Q\x83\x82\x01R` \x01b\0a\x0BV[\x83\x81\x11\x15b\0`vWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Rb\0aQ\x81` \x86\x01` \x86\x01b\0a\x08V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0b\x1BW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0b\x04W`_\x19\x89\x85\x03\x01\x83Rb\0a\xF1\x84\x86Qb\0a7V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0a\xD2V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0a\x8CV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0b\xD3W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0b\xBDW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0b\x91V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0bSV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0c;W`?\x19\x88\x86\x03\x01\x84Rb\0c(\x85\x83Qb\0a7V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0c\tV[P\x92\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0c\x89`@\x83\x01\x85b\0`\xADV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\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\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0`\xE8W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0c\xDDV[`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x82R\x86\x16` \x82\x01R`\xFF\x85\x16`@\x82\x01R``\x81\x01\x84\x90R`\xC0`\x80\x82\x01\x81\x90R`\0\x90b\0d9\x90\x83\x01\x85b\0`\xADV[\x82\x81\x03`\xA0\x84\x01Rb\0dM\x81\x85b\0c\xC9V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0d\x88\x90\x83\x01\x84b\0a7V[\x95\x94PPPPPV[l)\xBA90\xBA2\xB3\xBC\xAA7\xB5\xB2\xB7`\x99\x1B\x81R`\0\x82Qb\0d\xBB\x81`\r\x85\x01` \x87\x01b\0a\x08V[\x91\x90\x91\x01`\r\x01\x92\x91PPV[b\x14\xD5\x15`\xEA\x1B\x81R`\0\x82Qb\0d\xE8\x81`\x03\x85\x01` \x87\x01b\0a\x08V[\x91\x90\x91\x01`\x03\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15b\0e\"Wb\0e\"b\0d\xF5V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0`\xE8W\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0e=V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0`\xE8W\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x88R\x83\x01Q`\x01`\x01``\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01b\0exV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15b\0e\xFFW\x82\x84\x03\x89Rb\0e\xEC\x84\x83Qb\0edV[\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01b\0e\xD1V[P\x91\x97\x96PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x89\x81\x16\x82R\x88\x81\x16` \x80\x84\x01\x91\x90\x91R\x88\x82\x16`@\x84\x01R\x90\x87\x16``\x80\x84\x01\x91\x90\x91R`\xFF\x87\x16`\x80\x84\x01Ra\x01\0`\xA0\x84\x01\x81\x90R\x86Q\x90\x84\x01\x81\x90R`\0\x92a\x01 \x85\x01\x92\x88\x82\x01\x92\x91\x90\x85[\x83\x81\x10\x15b\0f\xAFWb\0f\x9E\x86\x86Q\x80Qc\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Qa\xFF\xFF\x90\x81\x16\x91\x84\x01\x91\x90\x91R`@\x91\x82\x01Q\x16\x91\x01RV[\x94\x81\x01\x94\x93\x82\x01\x93`\x01\x01b\0feV[PPPPP\x82\x81\x03`\xC0\x84\x01Rb\0f\xC8\x81\x86b\0e)V[\x90P\x82\x81\x03`\xE0\x84\x01Rb\0f\xDE\x81\x85b\0e\xB3V[\x9B\x9APPPPPPPPPPPV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0g\x18Wb\0g\x18b\0cHV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15b\0g\xA7W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15b\0k\xC5W`\0\x80\xFD[\x81Qb\0:\xD0\x81b\0k\x9CV[`@\x81R`\0b\0k\xE7`@\x83\x01\x85b\0`\xADV[\x82\x81\x03` \x84\x81\x01\x91\x90\x91R\x84Q\x80\x83R\x85\x82\x01\x92\x82\x01\x90`\0[\x81\x81\x10\x15b\0l\"W\x84Q\x15\x15\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01b\0l\x02V[P\x90\x97\x96PPPPPPPV[`\0\x83Qb\0lC\x81\x84` \x88\x01b\0a\x08V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x01\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0b\0&\x04`\x80\x83\x01\x84b\0a7V[`\0c\xFF\xFF\xFF\xFF\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15b\0l\xB1Wb\0l\xB1b\0d\xF5V[\x03\x93\x92PPPV[g'\xB82\xB90\xBA7\xB9`\xC1\x1B\x81R`\0\x82Qb\0l\xDE\x81`\x08\x85\x01` \x87\x01b\0a\x08V[\x91\x90\x91\x01`\x08\x01\x92\x91PPV[`@\x81R`\0b\0m\0`@\x83\x01\x85b\0`\xADV[\x82\x81\x03` \x84\x01Rb\0d\x88\x81\x85b\0c\xC9V[`@\x81R`\0b\0m)`@\x83\x01\x85b\0a7V[\x90P\x82` \x83\x01R\x93\x92PPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15b\0mSWb\0mSb\0d\xF5V[`\x01\x01\x93\x92PPPV[`\0a\x01@\x80\x83Rb\0ms\x81\x84\x01\x87b\0a7V[\x91PP\x83` \x83\x01Rb\0m\x95`@\x83\x01\x84Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x83\x81\x01Q\x80Q`\x80\x85\x01R\x01Q`\xA0\x83\x01R`@\x83\x01Qb\0m\xBD`\xC0\x84\x01\x82b\0`|V[P\x94\x93PPPPV[`\0\x82Qb\0m\xDA\x81\x84` \x87\x01b\0a\x08V[c\x17\xD0[\x1D`\xE2\x1B\x92\x01\x91\x82RP`\x04\x01\x91\x90PV[`@\x81R`\x17`@\x82\x01R\x7F_randUser: Created user\0\0\0\0\0\0\0\0\0``\x82\x01R`\x80` \x82\x01R`\0b\0&\x04`\x80\x83\x01\x84b\0a7V[`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[`@\x81R`\"`@\x82\x01R\x7F_dealRandTokens: dealing assets ``\x82\x01Rato`\xF0\x1B`\x80\x82\x01R`\xA0` \x82\x01R`\0b\0&\x04`\xA0\x83\x01\x84b\0a7V[\x82Q`\0\x90\x82\x90` \x80\x87\x01\x84[\x83\x81\x10\x15b\0n\xDAW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01b\0n\xBCV[PP\x94\x82RP\x90\x92\x01\x93\x92PPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15b\0o\x07Wb\0o\x07b\0d\xF5V[P\x02\x90V[` \x80\x82R`o\x90\x82\x01R\x7FstdStorage find(StdStorage): Pac`@\x82\x01R\x7Fked slot. This would cause dange``\x82\x01R\x7Frous overwriting and currently i`\x80\x82\x01Rn9\xB7\x13\xBA\x109\xBA\xB887\xB9:2\xB2\x17`\x89\x1B`\xA0\x82\x01R`\xC0\x01\x90V[`\0\x82`\x1F\x83\x01\x12b\0o\xB9W`\0\x80\xFD[\x81Q` `\x01`\x01`@\x1B\x03\x82\x11\x15b\0o\xD7Wb\0o\xD7b\0cHV[\x81`\x05\x1Bb\0o\xE8\x82\x82\x01b\0f\xEDV[\x92\x83R\x84\x81\x01\x82\x01\x92\x82\x81\x01\x90\x87\x85\x11\x15b\0p\x03W`\0\x80\xFD[\x83\x87\x01\x92P[\x84\x83\x10\x15b\0p$W\x82Q\x82R\x91\x83\x01\x91\x90\x83\x01\x90b\0p\tV[\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15b\0pCW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0p[W`\0\x80\xFD[b\0pi\x86\x83\x87\x01b\0o\xA7V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15b\0p\x80W`\0\x80\xFD[Pb\0p\x8F\x85\x82\x86\x01b\0o\xA7V[\x91PP\x92P\x92\x90PV[`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16\x84R`\x01`\x01`\xE0\x1B\x03\x19\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V\xFE`\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003A0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_configRand: invalid fillTypes, no flags passed_randValue: tried to select value from empty array_configRand: invalid minimumStake, no flags passed_configRand: invalid numStrategies, no flags passedGas used for updateOperatorsForQuorum: _configRand: invalid _userTypes, no flags passed\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_newRandomOperator: operator should be registered_configRand: invalid numQuorums, no flags passed\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\xA2dipfsX\"\x12 \xB3n\xB7+\0\x1Av\xA0_\x87\x95\xBDY\xEBh.\xFC\xD3m\\\x17\"\xF5\xE2->\x8BF\x82\xD8\xB3\xD4dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall {} + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (); + 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<'_> { + () + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mul(uint256)` and selector `0x131e2f18`. + ```solidity + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulCall { + pub x: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mul(uint256)`](mulCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulReturn { + pub g2Point: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: mulCall) -> Self { + (value.x,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { x: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: mulReturn) -> Self { + (value.g2Point,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { g2Point: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mulCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mulReturn; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mul(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 30u8, 47u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.x, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorAddresses(uint256)` and selector `0x7792a035`. + ```solidity + function operatorAddresses(uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorAddressesCall { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`operatorAddresses(uint256)`](operatorAddressesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorAddressesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: operatorAddressesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorAddressesCall { + 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: operatorAddressesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorAddressesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorAddressesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorAddressesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorAddresses(uint256)"; + const SELECTOR: [u8; 4] = [119u8, 146u8, 160u8, 53u8]; + #[inline] + fn new<'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 `operatorIds(uint256)` and selector `0xbfbdaffd`. + ```solidity + function operatorIds(uint256) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorIdsCall { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`operatorIds(uint256)`](operatorIdsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorIdsReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: operatorIdsCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorIdsCall { + 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: operatorIdsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorIdsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorIdsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorIdsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorIds(uint256)"; + const SELECTOR: [u8; 4] = [191u8, 189u8, 175u8, 253u8]; + #[inline] + fn new<'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 `privateKeys(uint256)` and selector `0x81717509`. + ```solidity + function privateKeys(uint256) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct privateKeysCall { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`privateKeys(uint256)`](privateKeysCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct privateKeysReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: privateKeysCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for privateKeysCall { + 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: privateKeysReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for privateKeysReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for privateKeysCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = privateKeysReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "privateKeys(uint256)"; + const SELECTOR: [u8; 4] = [129u8, 113u8, 117u8, 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._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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `test_gasCosts_15Strats()` and selector `0x09d87538`. + ```solidity + function test_gasCosts_15Strats() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct test_gasCosts_15StratsCall {} + ///Container type for the return parameters of the [`test_gasCosts_15Strats()`](test_gasCosts_15StratsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct test_gasCosts_15StratsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: test_gasCosts_15StratsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for test_gasCosts_15StratsCall { + 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: test_gasCosts_15StratsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for test_gasCosts_15StratsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for test_gasCosts_15StratsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = test_gasCosts_15StratsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "test_gasCosts_15Strats()"; + const SELECTOR: [u8; 4] = [9u8, 216u8, 117u8, 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 `test_gasCosts_20Strats()` and selector `0x8f3350c0`. + ```solidity + function test_gasCosts_20Strats() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct test_gasCosts_20StratsCall {} + ///Container type for the return parameters of the [`test_gasCosts_20Strats()`](test_gasCosts_20StratsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct test_gasCosts_20StratsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: test_gasCosts_20StratsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for test_gasCosts_20StratsCall { + 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: test_gasCosts_20StratsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for test_gasCosts_20StratsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for test_gasCosts_20StratsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = test_gasCosts_20StratsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "test_gasCosts_20Strats()"; + const SELECTOR: [u8; 4] = [143u8, 51u8, 80u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `test_gasCosts_25Strats()` and selector `0xb473389b`. + ```solidity + function test_gasCosts_25Strats() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct test_gasCosts_25StratsCall {} + ///Container type for the return parameters of the [`test_gasCosts_25Strats()`](test_gasCosts_25StratsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct test_gasCosts_25StratsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: test_gasCosts_25StratsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for test_gasCosts_25StratsCall { + 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: test_gasCosts_25StratsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for test_gasCosts_25StratsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for test_gasCosts_25StratsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = test_gasCosts_25StratsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "test_gasCosts_25Strats()"; + const SELECTOR: [u8; 4] = [180u8, 115u8, 56u8, 155u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`Integration_AVS_Sync_GasCosts_FFI`](self) function calls. + pub enum Integration_AVS_Sync_GasCosts_FFICalls { + IS_TEST(IS_TESTCall), + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mul(mulCall), + operatorAddresses(operatorAddressesCall), + operatorIds(operatorIdsCall), + privateKeys(privateKeysCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + test_gasCosts_15Strats(test_gasCosts_15StratsCall), + test_gasCosts_20Strats(test_gasCosts_20StratsCall), + test_gasCosts_25Strats(test_gasCosts_25StratsCall), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl Integration_AVS_Sync_GasCosts_FFICalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [9u8, 216u8, 117u8, 56u8], + [10u8, 146u8, 84u8, 228u8], + [19u8, 30u8, 47u8, 24u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [45u8, 188u8, 176u8, 76u8], + [61u8, 251u8, 64u8, 224u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [119u8, 146u8, 160u8, 53u8], + [129u8, 113u8, 117u8, 9u8], + [133u8, 34u8, 108u8, 129u8], + [143u8, 51u8, 80u8, 192u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [180u8, 115u8, 56u8, 155u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [191u8, 189u8, 175u8, 253u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for Integration_AVS_Sync_GasCosts_FFICalls { + const NAME: &'static str = "Integration_AVS_Sync_GasCosts_FFICalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 25usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::avsDirectory(_) => ::SELECTOR, + Self::churnApprover(_) => ::SELECTOR, + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mul(_) => ::SELECTOR, + Self::operatorAddresses(_) => { + ::SELECTOR + } + Self::operatorIds(_) => ::SELECTOR, + Self::privateKeys(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::test_gasCosts_15Strats(_) => { + ::SELECTOR + } + Self::test_gasCosts_20Strats(_) => { + ::SELECTOR + } + Self::test_gasCosts_25Strats(_) => { + ::SELECTOR + } + Self::timeMachine(_) => ::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< + Integration_AVS_Sync_GasCosts_FFICalls, + >] = &[ + { + fn churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::churnApprover) + } + churnApprover + }, + { + fn test_gasCosts_15Strats( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::test_gasCosts_15Strats) + } + test_gasCosts_15Strats + }, + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_AVS_Sync_GasCosts_FFICalls::setUp) + } + setUp + }, + { + fn mul( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_AVS_Sync_GasCosts_FFICalls::mul) + } + mul + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::targetInterfaces) + } + targetInterfaces + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::churnApproverPrivateKey) + } + churnApproverPrivateKey + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::timeMachine) + } + timeMachine + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::registryCoordinator) + } + registryCoordinator + }, + { + fn operatorAddresses( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::operatorAddresses) + } + operatorAddresses + }, + { + fn privateKeys( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::privateKeys) + } + privateKeys + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::targetArtifacts) + } + targetArtifacts + }, + { + fn test_gasCosts_20Strats( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::test_gasCosts_20Strats) + } + test_gasCosts_20Strats + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::targetSelectors) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn test_gasCosts_25Strats( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::test_gasCosts_25Strats) + } + test_gasCosts_25Strats + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_AVS_Sync_GasCosts_FFICalls::failed) + } + failed + }, + { + fn operatorIds( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::operatorIds) + } + operatorIds + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_AVS_Sync_GasCosts_FFICalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_AVS_Sync_GasCosts_FFICalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApprover(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mul(inner) => ::abi_encoded_size(inner), + Self::operatorAddresses(inner) => { + ::abi_encoded_size(inner) + } + Self::operatorIds(inner) => { + ::abi_encoded_size(inner) + } + Self::privateKeys(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::test_gasCosts_15Strats(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::test_gasCosts_20Strats(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::test_gasCosts_25Strats(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::timeMachine(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApprover(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mul(inner) => { + ::abi_encode_raw(inner, out) + } + Self::operatorAddresses(inner) => { + ::abi_encode_raw(inner, out) + } + Self::operatorIds(inner) => { + ::abi_encode_raw(inner, out) + } + Self::privateKeys(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::test_gasCosts_15Strats(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::test_gasCosts_20Strats(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::test_gasCosts_25Strats(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::timeMachine(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`Integration_AVS_Sync_GasCosts_FFI`](self) events. + pub enum Integration_AVS_Sync_GasCosts_FFIEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl Integration_AVS_Sync_GasCosts_FFIEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for Integration_AVS_Sync_GasCosts_FFIEvents { + const NAME: &'static str = "Integration_AVS_Sync_GasCosts_FFIEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 Integration_AVS_Sync_GasCosts_FFIEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Integration_AVS_Sync_GasCosts_FFI`](self) contract instance. + + See the [wrapper's documentation](`Integration_AVS_Sync_GasCosts_FFIInstance`) 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, + ) -> Integration_AVS_Sync_GasCosts_FFIInstance { + Integration_AVS_Sync_GasCosts_FFIInstance::::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>, + > { + Integration_AVS_Sync_GasCosts_FFIInstance::::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 { + Integration_AVS_Sync_GasCosts_FFIInstance::::deploy_builder(provider) + } + /**A [`Integration_AVS_Sync_GasCosts_FFI`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Integration_AVS_Sync_GasCosts_FFI`](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 Integration_AVS_Sync_GasCosts_FFIInstance< + 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 Integration_AVS_Sync_GasCosts_FFIInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("Integration_AVS_Sync_GasCosts_FFIInstance") + .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, + > Integration_AVS_Sync_GasCosts_FFIInstance + { + /**Creates a new wrapper around an on-chain [`Integration_AVS_Sync_GasCosts_FFI`](self) contract instance. + + See the [wrapper's documentation](`Integration_AVS_Sync_GasCosts_FFIInstance`) 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 Integration_AVS_Sync_GasCosts_FFIInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> Integration_AVS_Sync_GasCosts_FFIInstance { + Integration_AVS_Sync_GasCosts_FFIInstance { + 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, + > Integration_AVS_Sync_GasCosts_FFIInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mul`] function. + pub fn mul( + &self, + x: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mulCall { x }) + } + ///Creates a new call builder for the [`operatorAddresses`] function. + pub fn operatorAddresses( + &self, + _0: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorAddressesCall { _0 }) + } + ///Creates a new call builder for the [`operatorIds`] function. + pub fn operatorIds( + &self, + _0: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorIdsCall { _0 }) + } + ///Creates a new call builder for the [`privateKeys`] function. + pub fn privateKeys( + &self, + _0: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&privateKeysCall { _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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`test_gasCosts_15Strats`] function. + pub fn test_gasCosts_15Strats( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&test_gasCosts_15StratsCall {}) + } + ///Creates a new call builder for the [`test_gasCosts_20Strats`] function. + pub fn test_gasCosts_20Strats( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&test_gasCosts_20StratsCall {}) + } + ///Creates a new call builder for the [`test_gasCosts_25Strats`] function. + pub fn test_gasCosts_25Strats( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&test_gasCosts_25StratsCall {}) + } + ///Creates a new call builder for the [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Integration_AVS_Sync_GasCosts_FFIInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/integration_full_register_deregister.rs b/crates/utils/src/middleware/integration_full_register_deregister.rs new file mode 100644 index 00000000..3e14cff6 --- /dev/null +++ b/crates/utils/src/middleware/integration_full_register_deregister.rs @@ -0,0 +1,8041 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface Integration_Full_Register_Deregister { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + function registryCoordinator() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function testFuzz_churnAll_deregisterAll_oldReregisterAll(uint24 _random) external; + function testFuzz_churnAll_deregisterAll_reregisterAll(uint24 _random) external; + function testFuzz_churnSome_deregisterSome_deregisterRemaining(uint24 _random) external; + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "g2Point", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "testFuzz_churnAll_deregisterAll_oldReregisterAll", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "testFuzz_churnAll_deregisterAll_reregisterAll", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "testFuzz_churnSome_deregisterSome_deregisterRemaining", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Integration_Full_Register_Deregister { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604081905260078054600160ff199182168117909255600b80549091169091179055601c8054600080516020620414428339815191526001600160a01b0319918216811790925560328054309083161790556033805490911673beb9864e3d6a1ba44e131a462f6328f2d1d6d54d1790557fa3e2a0c4ce206b9c6679ac6361c034f31c8844ae3104108f47ed8c413acf333260348190556001625e79b760e01b031983526084529063ffa186499060a490602090602481865afa158015620000cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f3919062000b0a565b603580546001600160a01b03929092166001600160a01b031992831617905560368054736915a67877a178d5129a28d2af871ac1fceb3fd392169190911790556000603d8190556043553480156200014a57600080fd5b5060005b6200015b60058062000b52565b63ffffffff16811015620003585762000173620009fb565b60006200018283600162000b7d565b6040516020016200019591815260200190565b6040516020818303038152906040528051906020012060001c9050620001de81620001ca6200035f60201b62002cf81760201c565b6200038860201b62002d211790919060201c565b8260200181905250620001fc816200042860201b620017321760201c565b60408301908152603e805460018181019092557f8d800d6614d35eed73733ee453164a3b48076eb3138f466adeeb9dec7bb31f7001839055603f805491820181556000528351805160089092027fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd81019283556020918201517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fe8201558186015180517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58ff830155909101517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b59008201559151805185937fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b5901019062000323908290600262000a50565b5060208201516200033b906002808401919062000a50565b5050505050505080806200034f9062000b98565b9150506200014e565b5062000dc3565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b6040805180820190915260008082526020820152620003a662000a93565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620003db57620003dd565bfe5b5080620004205760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b6200043262000ab1565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200044a57905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062000493576200049362000bb6565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620004d057620004d062000bb6565b60200260200101819052506040518060400160405280601481526020017f746573742f6666692f676f2f67326d756c2e676f0000000000000000000000008152508160028151811062000527576200052762000bb6565b60200260200101819052506200054883620008de60201b62002dc21760201c565b816003815181106200055e576200055e62000bb6565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062000599576200059962000bb6565b6020908102919091010152604051638916046760e01b81526000906000805160206204144283398151915290638916046790620005db90859060040162000c15565b6000604051808303816000875af1158015620005fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000625919081019062000c93565b9050808060200190518101906200063d919062000d4b565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200067a576200067a62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206204144283398151915290638916046790620006b990859060040162000c15565b6000604051808303816000875af1158015620006d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000703919081019062000c93565b9050808060200190518101906200071b919062000d4b565b8351526040805180820190915260018152603360f81b60208201528251839060049081106200074e576200074e62000bb6565b6020908102919091010152604051638916046760e01b815260008051602062041442833981519152906389160467906200078d90859060040162000c15565b6000604051808303816000875af1158015620007ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007d7919081019062000c93565b905080806020019051810190620007ef919062000d4b565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b815250826004815181106200082f576200082f62000bb6565b6020908102919091010152604051638916046760e01b815260008051602062041442833981519152906389160467906200086e90859060040162000c15565b6000604051808303816000875af11580156200088e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008b8919081019062000c93565b905080806020019051810190620008d0919062000d4b565b602084015152509092915050565b606081620009035750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200093357806200091a8162000b98565b91506200092b9050600a8362000d7b565b915062000907565b6000816001600160401b0381111562000950576200095062000bcc565b6040519080825280601f01601f1916602001820160405280156200097b576020820181803683370190505b5090505b8415620009f3576200099360018362000d92565b9150620009a2600a8662000dac565b620009af90603062000b7d565b60f81b818381518110620009c757620009c762000bb6565b60200101906001600160f81b031916908160001a905350620009eb600a8662000d7b565b94506200097f565b949350505050565b6040805160a0810190915260006060820181815260808301919091528190815260200162000a3c604051806040016040528060008152602001600081525090565b815260200162000a4b62000ab1565b905290565b826002810192821562000a81579160200282015b8281111562000a8157825182559160200191906001019062000a64565b5062000a8f92915062000ad5565b5090565b60405180606001604052806003906020820280368337509192915050565b604051806040016040528062000ac662000aec565b815260200162000a4b62000aec565b5b8082111562000a8f576000815560010162000ad6565b60405180604001604052806002906020820280368337509192915050565b60006020828403121562000b1d57600080fd5b81516001600160a01b038116811462000b3557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681851680830382111562000b745762000b7462000b3c565b01949350505050565b6000821982111562000b935762000b9362000b3c565b500190565b600060001982141562000baf5762000baf62000b3c565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000bff57818101518382015260200162000be5565b8381111562000c0f576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562000c8657878503603f190184528151805180875262000c66818989018a850162000be2565b601f01601f19169590950186019450928501929085019060010162000c3c565b5092979650505050505050565b60006020828403121562000ca657600080fd5b81516001600160401b038082111562000cbe57600080fd5b818401915084601f83011262000cd357600080fd5b81518181111562000ce85762000ce862000bcc565b604051601f8201601f19908116603f0116810190838211818310171562000d135762000d1362000bcc565b8160405282815287602084870101111562000d2d57600080fd5b62000d4083602083016020880162000be2565b979650505050505050565b60006020828403121562000d5e57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008262000d8d5762000d8d62000d65565b500490565b60008282101562000da75762000da762000b3c565b500390565b60008262000dbe5762000dbe62000d65565b500690565b6204066e8062000dd46000396000f3fe60806040523480156200001157600080fd5b50600436106200015d5760003560e01c80636b3aa72e11620000c7578063af51f4fe1162000086578063af51f4fe14620002c7578063b5508aa914620002de578063ba414fa614620002e8578063caf549071462000303578063e20c9f71146200031a578063fa7626d4146200032457600080fd5b80636b3aa72e14620002685780636d14a987146200027c57806385226c811462000290578063916a17c614620002a95780639d8b9cb414620002b357600080fd5b80632dbcb04c11620001205780632dbcb04c14620001f75780632deac5e514620002105780633dfb40e014620002275780633e5e3c23146200023b5780633f7286f4146200024557806366d9a9a0146200024f57600080fd5b8063054310e614620001625780630a9254e41462000193578063131e2f18146200019f5780631ed7831c14620001c55780632ade388014620001de575b600080fd5b60355462000176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6200019d62000332565b005b620001b6620001b03660046200adfb565b62001732565b6040516200018a91906200ae5b565b620001cf62001be8565b6040516200018a91906200aeb1565b620001e862001c4c565b6040516200018a91906200af23565b6200020160345481565b6040519081526020016200018a565b6200019d620002213660046200afe9565b62001d9a565b602e5462000176906001600160a01b031681565b620001cf62002084565b620001cf620020e6565b6200025962002148565b6040516200018a91906200b010565b601e5462000176906001600160a01b031681565b60285462000176906001600160a01b031681565b6200029a62002232565b6040516200018a91906200b0c7565b620002596200230c565b60335462000176906001600160a01b031681565b6200019d620002d83660046200afe9565b620023f6565b6200029a620027e0565b620002f2620028ba565b60405190151581526020016200018a565b6200019d620003143660046200afe9565b620029f1565b620001cf62002c96565b600754620002f29060ff1681565b60405162000340906200ab17565b604051809103906000f0801580156200035d573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b81600081518110620003b957620003b96200b143565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c604051620003eb906200ab25565b620003f89291906200b159565b604051809103906000f08015801562000415573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405160009062000447906200ab33565b604051809103906000f08015801562000464573d6000803e3d6000fd5b50905060405162000475906200ab40565b604051809103906000f08015801562000492573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b0392909216919091179055604051620004c1906200ab4e565b604051809103906000f080158015620004de573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000513906200ab5c565b620005209291906200b185565b604051809103906000f0801580156200053d573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000572906200ab5c565b6200057f9291906200b185565b604051809103906000f0801580156200059c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005d1906200ab5c565b620005de9291906200b185565b604051809103906000f080158015620005fb573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000630906200ab5c565b6200063d9291906200b185565b604051809103906000f0801580156200065a573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200068f906200ab5c565b6200069c9291906200b185565b604051809103906000f080158015620006b9573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392831617905560255460205460405191831692169064077359400090620006f7906200ab6a565b6001600160a01b0393841681529290911660208301526001600160401b03166040820152606001604051809103906000f0801580156200073b573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162000769906200ab78565b6001600160a01b039091168152602001604051809103906000f08015801562000796573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f5460225460205460405160009493841693928316929190911690620007da906200ab86565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000817573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b0393841693928316929091169062000849906200ab94565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000886573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b039283169290911690620008b1906200aba2565b620008be9291906200b1ae565b604051809103906000f080158015620008db573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b0395861695948516949384169392831692909116906200091b906200abb0565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000967573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b03909116906200098b906200abbe565b6001600160a01b039091168152602001604051809103906000f080158015620009b8573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b9362000a1e939183169216908b8b8b606482016200b1fa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000a679392916004016200b259565b600060405180830381600087803b15801562000a8257600080fd5b505af115801562000a97573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000b2a9391909216918c916004016200b259565b600060405180830381600087803b15801562000b4557600080fd5b505af115801562000b5a573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000be69391909216918b916004016200b259565b600060405180830381600087803b15801562000c0157600080fd5b505af115801562000c16573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000cac939116918a916004016200b259565b600060405180830381600087803b15801562000cc757600080fd5b505af115801562000cdc573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000d6893919092169189916004016200b259565b600060405180830381600087803b15801562000d8357600080fd5b505af115801562000d98573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000db991506200abcc565b6001600160a01b039091168152602001604051809103906000f08015801562000de6573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000eac57600062000e218262002dc2565b905060008160405160200162000e3891906200b290565b604051602081830303815290604052905060008260405160200162000e5e91906200b2c7565b604051602081830303815290604052905062000e9382827502ac3a4edbbfb8014e3ba83411e915e80000000000003062002edf565b505050808062000ea3906200b30a565b91505062000e0a565b5060405162000ebb906200abda565b604051809103906000f08015801562000ed8573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000f3757600080fd5b505af115801562000f4c573d6000803e3d6000fd5b50506031546040518c93506001600160a01b03909116915062000f6f906200ab5c565b62000f7c9291906200b185565b604051809103906000f08015801562000f99573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000fce906200ab5c565b62000fdb9291906200b185565b604051809103906000f08015801562000ff8573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200102d906200ab5c565b6200103a9291906200b185565b604051809103906000f08015801562001057573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200108c906200ab5c565b620010999291906200b185565b604051809103906000f080158015620010b6573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620010eb906200ab5c565b620010f89291906200b185565b604051809103906000f08015801562001115573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200117157600080fd5b505af115801562001186573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b039283169350911690620011b0906200abe8565b620011bd9291906200b1ae565b604051809103906000f080158015620011da573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011fe906200abf6565b6001600160a01b039091168152602001604051809103906000f0801580156200122b573d6000803e3d6000fd5b506028546040519192506000916001600160a01b03909116906200124f906200ac04565b6001600160a01b039091168152602001604051809103906000f0801580156200127c573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b03938416939283169290911690620012ae906200ac12565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620012eb573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81529293506001600160a01b03918216926399a88ec4926200132692169088906004016200b1ae565b600060405180830381600087803b1580156200134157600080fd5b505af115801562001356573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec4935062001393929091169087906004016200b1ae565b600060405180830381600087803b158015620013ae57600080fd5b505af1158015620013c3573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec4935062001400929091169086906004016200b1ae565b600060405180830381600087803b1580156200141b57600080fd5b505af115801562001430573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200146d929091169085906004016200b1ae565b600060405180830381600087803b1580156200148857600080fd5b505af11580156200149d573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b158015620014eb57600080fd5b505af115801562001500573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b039485169550928416939182169291169062001538906200ac20565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200157d573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b969082169590821694908216939116918162001608565b6040805160608101825260008082526020808301829052928201528252600019909201910181620015da5790505b50604080516000808252602082018181528284019093529091906200163e565b6060815260200190600190039081620016285790505b50604051602401620016589897969594939291906200b40b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b9092168252620016a19392916004016200b259565b600060405180830381600087803b158015620016bc57600080fd5b505af1158015620016d1573d6000803e3d6000fd5b50505050604051620016e3906200ac2e565b604051809103906000f08015801562001700573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b6200173c6200ac3c565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200175457905050905060405180604001604052806002815260200161676f60f01b815250816000815181106200179d576200179d6200b143565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620017da57620017da6200b143565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b815250816002815181106200182857620018286200b143565b60200260200101819052506200183e8362002dc2565b816003815181106200185457620018546200b143565b6020026020010181905250604051806040016040528060018152602001603160f81b815250816004815181106200188f576200188f6200b143565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790620018d69085906004016200b0c7565b6000604051808303816000875af1158015620018f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200192091908101906200b5a0565b9050808060200190518101906200193891906200b5ed565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200197557620019756200b143565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790620019b99085906004016200b0c7565b6000604051808303816000875af1158015620019d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a0391908101906200b5a0565b90508080602001905181019062001a1b91906200b5ed565b8351526040805180820190915260018152603360f81b602082015282518390600490811062001a4e5762001a4e6200b143565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001a929085906004016200b0c7565b6000604051808303816000875af115801562001ab2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001adc91908101906200b5a0565b90508080602001905181019062001af491906200b5ed565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001b345762001b346200b143565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b789085906004016200b0c7565b6000604051808303816000875af115801562001b98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001bc291908101906200b5a0565b90508080602001905181019062001bda91906200b5ed565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001c4257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001c23575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d9157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001d7957838290600052602060002001805462001ce5906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462001d13906200b607565b801562001d645780601f1062001d385761010080835404028352916020019162001d64565b820191906000526020600020905b81548152906001019060200180831162001d4657829003601f168201915b50505050508152602001906001019062001cc3565b50505050815250508152602001906001019062001c70565b50505050905090565b604080516080810182526007808252602082015260039181018290526004606082015262001dca9183916200320b565b600062001dd662003aad565b905060006042805462001de9906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462001e17906200b607565b801562001e685780601f1062001e3c5761010080835404028352916020019162001e68565b820191906000526020600020905b81548152906001019060200180831162001e4a57829003601f168201915b50505050509050600062001ec5838360006001600160401b0381111562001e935762001e936200b12d565b6040519080825280601f01601f19166020018201604052801562001ebe576020820181803683370190505b5062003c66565b905062001ed283620042bb565b604080516000815260208101918290526352fb660d60e11b9091526001600160a01b0384169063a5f6cc1a9062001f119085908590602481016200b63e565b600060405180830381600087803b15801562001f2c57600080fd5b505af115801562001f41573d6000803e3d6000fd5b5062001f8492508591508390508460005b6040519080825280601f01601f19166020018201604052801562001f7d576020820181803683370190505b506200438c565b60405163ca4f2d9760e01b81526001600160a01b0384169063ca4f2d979062001fb29085906004016200b6ab565b600060405180830381600087803b15801562001fcd57600080fd5b505af115801562001fe2573d6000803e3d6000fd5b5050505062001ff28383620047bb565b62001ffd836200494c565b60405163208c6d5360e21b81526001600160a01b03841690638231b54c906200202b9085906004016200b6ab565b6020604051808303816000875af11580156200204b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200207191906200b5ed565b506200207e8383620049fc565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001d915760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200221957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620021da5790505b505050505081525050815260200190600101906200216c565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001d9157838290600052602060002001805462002278906200b607565b80601f0160208091040260200160405190810160405280929190818152602001828054620022a6906200b607565b8015620022f75780601f10620022cb57610100808354040283529160200191620022f7565b820191906000526020600020905b815481529060010190602001808311620022d957829003601f168201915b50505050508152602001906001019062002256565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001d915760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620023dd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200239e5790505b5050505050815250508152602001906001019062002330565b6040805160808101825260078082526020820152600391810182905260046060820152620024269183916200320b565b60006200243262003aad565b905060006042805462002445906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462002473906200b607565b8015620024c45780601f106200249857610100808354040283529160200191620024c4565b820191906000526020600020905b815481529060010190602001808311620024a657829003601f168201915b505050505090506000620024ef838360006001600160401b0381111562001e935762001e936200b12d565b9050620024fc83620042bb565b604080516000815260208101918290526352fb660d60e11b9091526001600160a01b0384169063a5f6cc1a906200253b9085908590602481016200b63e565b600060405180830381600087803b1580156200255657600080fd5b505af11580156200256b573d6000803e3d6000fd5b5062002581925085915083905084600062001f52565b60405163ca4f2d9760e01b81526001600160a01b0384169063ca4f2d9790620025af9085906004016200b6ab565b600060405180830381600087803b158015620025ca57600080fd5b505af1158015620025df573d6000803e3d6000fd5b50505050620025ef8383620047bb565b620025fa836200494c565b60005b81518110156200275a5760008282815181106200261e576200261e6200b143565b60200260200101519050600060016001600160401b038111156200264657620026466200b12d565b6040519080825280601f01601f19166020018201604052801562002671576020820181803683370190505b5090508483815181106200268957620026896200b143565b602001015160f81c60f81b81600081518110620026aa57620026aa6200b143565b60200101906001600160f81b031916908160001a90535060405163208c6d5360e21b81526001600160a01b03831690638231b54c90620026ef9084906004016200b6ab565b6020604051808303816000875af11580156200270f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200273591906200b5ed565b50620027428282620049fc565b5050808062002751906200b30a565b915050620025fd565b50604080516000815260208101918290526352fb660d60e11b9091526001600160a01b0384169063a5f6cc1a906200279a9085908590602481016200b63e565b600060405180830381600087803b158015620027b557600080fd5b505af1158015620027ca573d6000803e3d6000fd5b506200207e925085915083905084600062001f52565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001d9157838290600052602060002001805462002826906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462002854906200b607565b8015620028a55780601f106200287957610100808354040283529160200191620028a5565b820191906000526020600020905b8154815290600101906020018083116200288757829003601f168201915b50505050508152602001906001019062002804565b600754600090610100900460ff1615620028dd5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620029ec5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200296e917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200b6c0565b60408051601f19818403018152908290526200298a916200b6f3565b6000604051808303816000865af19150503d8060008114620029c9576040519150601f19603f3d011682016040523d82523d6000602084013e620029ce565b606091505b5091505080806020019051810190620029e891906200b711565b9150505b919050565b604080516080810182526007808252602082015260039181018290526004606082015262002a219183916200320b565b600062002a2d62003aad565b905060006042805462002a40906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462002a6e906200b607565b801562002abf5780601f1062002a935761010080835404028352916020019162002abf565b820191906000526020600020905b81548152906001019060200180831162002aa157829003601f168201915b50505050509050600062002ad38262004bd1565b9050600062002b0262002afc62002aea8462004da1565b62002af58662004da1565b9062004f34565b62004f3f565b9050600062002b1385848462003c66565b905062002b2085620042bb565b6040516352fb660d60e11b81526001600160a01b0386169063a5f6cc1a9062002b52908690859087906004016200b63e565b600060405180830381600087803b15801562002b6d57600080fd5b505af115801562002b82573d6000803e3d6000fd5b5050505062002b94858285856200438c565b60405163ca4f2d9760e01b81526001600160a01b0386169063ca4f2d979062002bc29087906004016200b6ab565b600060405180830381600087803b15801562002bdd57600080fd5b505af115801562002bf2573d6000803e3d6000fd5b5050505062002c028585620047bb565b62002c0d856200494c565b60405163208c6d5360e21b81526001600160a01b03861690638231b54c9062002c3b9087906004016200b6ab565b6020604051808303816000875af115801562002c5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c8191906200b5ed565b5062002c8e8585620049fc565b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b604080518082019091526000808252602082015262002d3f6200ac65565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801562002d745762002d76565bfe5b508062002dba5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b60608162002de75750506040805180820190915260018152600360fc1b602082015290565b8160005b811562002e17578062002dfe816200b30a565b915062002e0f9050600a836200b74b565b915062002deb565b6000816001600160401b0381111562002e345762002e346200b12d565b6040519080825280601f01601f19166020018201604052801562002e5f576020820181803683370190505b5090505b841562002ed75762002e776001836200b762565b915062002e86600a866200b77c565b62002e939060306200b793565b60f81b81838151811062002eab5762002eab6200b143565b60200101906001600160f81b031916908160001a90535062002ecf600a866200b74b565b945062002e63565b949350505050565b60008484848460405162002ef3906200ac83565b62002f0294939291906200b7ae565b604051809103906000f08015801562002f1f573d6000803e3d6000fd5b506027546031546021546040519394506000936001600160a01b03938416939283169263485cc95560e01b9262002f5f928892909116906024016200b1ae565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905162002f9e906200ab5c565b62002fac939291906200b259565b604051809103906000f08015801562002fc9573d6000803e3d6000fd5b506040805160018082528183019092529192506000919060208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905082826000815181106200302a576200302a6200b143565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa15801562003090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030b691906200b80f565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620030f857600080fd5b505af11580156200310d573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b354791506200314590859085906004016200b82f565b600060405180830381600087803b1580156200316057600080fd5b505af115801562003175573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b60408051818152601f818301527f5f636f6e66696752616e643a207365742072616e646f6d207365656420746f00606082015262ffffff851660208201529051600080516020620404548339815191529181900360800190a16040516001600160e81b031960e885901b16602082015260230160408051601f198184030181529190528051602090910120603755620032a4826200501a565b8051620032ba916038916020909101906200ac91565b508051620032c8906200501a565b8051620032de916039916020909101906200ac91565b50620032ee81602001516200501a565b80516200330491603a916020909101906200ac91565b506200331481604001516200501a565b80516200332a91603b916020909101906200ac91565b506200333a81606001516200501a565b80516200335091603c916020909101906200ac91565b506200338a6038805462003364906200b607565b905060001415604051806060016040528060308152602001620400dd603091396200507e565b620033c3603980546200339d906200b607565b90506000141560405180606001604052806030815260200162040321603091396200507e565b620033fc603a8054620033d6906200b607565b9050600014156040518060600160405280603381526020016203ff89603391396200507e565b62003435603b80546200340f906200b607565b9050600014156040518060600160405280603281526020016203fea7603291396200507e565b6200346e603c805462003448906200b607565b9050600014156040518060600160405280602f81526020016203fdae602f91396200507e565b62003478620050b7565b60408190556200348e9060019081901b6200b762565b604180546001600160c01b0319166001600160c01b03929092169182179055620034b89062004f3f565b8051620034ce916042916020909101906200ac91565b506040805481518281526030928101929092527f5f636f6e66696752616e643a206e756d626572206f662071756f72756d73206260608301526f195a5b99c81a5b9a5d1a585b1a5e995960821b60808301526020820152600080516020620404548339815191529060a00160405180910390a16040805160608101825260058152613a98602082015260969181019190915260005b604054811015620037e05760006200357a620051f6565b9050600062003588620053f3565b90506000805160206204045483398151915283604051620035e391906040808252601c908201527f5f636f6e66696752616e643a206372656174696e672071756f72756d000000006060820152602081019190915260800190565b60405180910390a18351604051600080516020620404548339815191529162003642916040808252601490820152730b4813585e081bdc195c985d1bdc8818dbdd5b9d60621b606082015263ffffffff91909116602082015260800190565b60405180910390a1600080516020620404548339815191528251604051620036a491906040808252601b908201527f2d204e756d207374726174656769657320636f6e7369646572656400000000006060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e2d204d696e696d756d207374616b6560881b60608201526001600160601b03831660208201529051600080516020620404548339815191529181900360800190a1601c5460335460405163ca669fa760e01b81526001600160a01b03918216600482015291169063ca669fa790602401600060405180830381600087803b1580156200374557600080fd5b505af11580156200375a573d6000803e3d6000fd5b5050602854604051631aeb699160e31b81526001600160a01b03909116925063d75b4c88915062003794908790859087906004016200b88c565b600060405180830381600087803b158015620037af57600080fd5b505af1158015620037c4573d6000803e3d6000fd5b5050505050508080620037d7906200b30a565b91505062003563565b506000620037ee8262005431565b90506000805160206203fc3d8339815191526200380b8262002dc2565b6040516020016200381d91906200b8e2565b60408051601f198184030181529082905262003839916200b6ab565b60405180910390a160005b81811015620039a35760006200385962003aad565b60405163208c6d5360e21b81529091506001600160a01b03821690638231b54c906200388b906042906004016200b949565b6020604051808303816000875af1158015620038ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038d191906200b5ed565b5060005b60428054620038e4906200b607565b90508110156200398b576000604282815462003900906200b607565b81106200391157620039116200b143565b815460011615620039315790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60009081526044602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b038516179055508062003982816200b30a565b915050620038d5565b505080806200399a906200b30a565b91505062003844565b506000805160206203fc3d833981519152604051620039eb906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a16000805160206203fc3d83398151915260405162003a4f9060208082526024908201527f5f636f6e66696752616e6420636f6d706c6574653b207374617274696e6720746040820152636573742160e01b606082015260800190565b60405180910390a16000805160206203fc3d83398151915260405162003a9e906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a15050505050565b60008062003abd60435462002dc2565b60405160200162003acf91906200b9f9565b60408051601f1981840301815291905260438054919250600062003af3836200b30a565b9190505550600080600062003b0884620054fc565b925092509250826001600160a01b0316632a34ade86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003b4a57600080fd5b505af115801562003b5f573d6000803e3d6000fd5b5050604051630da66deb60e31b81526001600160a01b0386169250636d336f58915062003b9390859085906004016200ba2b565b600060405180830381600087803b15801562003bae57600080fd5b505af115801562003bc3573d6000803e3d6000fd5b5050601d546040516336b87bd760e11b81526001600160a01b03878116600483015262003c5d94509091169150636d70f7ae90602401602060405180830381865afa15801562003c17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c3d91906200b711565b60405180606001604052806031815260200162040262603191396200507e565b50909392505050565b60606000805160206203ff0c833981519152846001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562003cb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003ce191908101906200b5a0565b60405162003cf091906200ba54565b60405180910390a16000805160206203ff0c83398151915262003d138462005698565b60405162003d2291906200baa9565b60405180910390a16000805160206203ff0c83398151915262003d458362005698565b60405162003d5491906200baf2565b60405180910390a162003d6782620057a9565b600083516001600160401b0381111562003d855762003d856200b12d565b60405190808252806020026020018201604052801562003daf578160200160208202803683370190505b50905060005b8451811015620042b057600085828151811062003dd65762003dd66200b143565b016020015160285460405163e65797ad60e01b815260f89290921c6004830181905292506000916001600160a01b039091169063e65797ad90602401606060405180830381865afa15801562003e30573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e5691906200bb6d565b602c546040516379a0849160e11b815260ff851660048201529192506000916001600160a01b039091169063f341092290602401602060405180830381865afa15801562003ea8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ece91906200bbe2565b905062003f08826000015163ffffffff168263ffffffff16101560405180606001604052806033815260200162040351603391396200507e565b62003f1383620059ec565b85858151811062003f285762003f286200b143565b60200260200101906001600160a01b031690816001600160a01b0316815250506000805160206203ff0c83398151915262003f668460ff1662002dc2565b60405160200162003f7891906200bc00565b60405160208183030381529060405286868151811062003f9c5762003f9c6200b143565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562003fe2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200400c91908101906200b5a0565b6040516200401c9291906200bc63565b60405180910390a1602b5460405163d5eccc0560e01b815260ff851660048201526000916001600160a01b03169063d5eccc0590602401602060405180830381865afa15801562004071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200409791906200bc8c565b602b5487519192506000916001600160a01b0390911690635401ed2790899089908110620040c957620040c96200b143565b60200260200101516001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200410f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200413591906200b5ed565b6040516001600160e01b031960e084901b168152600481019190915260ff88166024820152604401602060405180830381865afa1580156200417b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041a191906200bc8c565b90505b620041b0818562005b71565b6001600160601b0316620041c5868d62005b99565b6001600160601b0316111580620042105750620041fa620041e7868d62005b99565b620041f390846200bcb7565b8562005c13565b6001600160601b0316816001600160601b031610155b156200429557600080620042248d62005c2f565b604051630da66deb60e31b815291935091506001600160a01b038e1690636d336f58906200425990859085906004016200ba2b565b600060405180830381600087803b1580156200427457600080fd5b505af115801562004289573d6000803e3d6000fd5b505050505050620041a4565b50505050508080620042a7906200b30a565b91505062003db5565b5090505b9392505050565b620042f56040518060400160405280601681526020017518da1958dad7d3995d995c97d49959da5cdd195c995960521b8152508262005e9d565b6200431a81604051806060016040528060398152602001620400226039913962005f52565b6200433f816040518060600160405280602a81526020016203fbbc602a913962005f9e565b62004364816040518060600160405280602881526020016203fddd60289139620060a4565b62004389816040518060600160405280602c81526020016204060d602c9139620061c1565b50565b620043c360405180604001604052806013815260200172636865636b5f436875726e65645f537461746560681b8152508562005e9d565b6000620043e762002afc620043d88462004da1565b620043e38662004da1565b1790565b90506200440e856040518060600160405280602381526020016203ff66602391396200625f565b6200443385604051806060016040528060288152602001620405c1602891396200634c565b6200445985826040518060600160405280602e815260200162040555602e9139620063dc565b6200447f8582604051806060016040528060298152602001620404b560299139620064fe565b620044a4856040518060600160405280602881526020016204029360289139620065bf565b620044ca85836040518060600160405280603e81526020016203fc5d603e9139620067e8565b620044f18585856040518060a0016040528060668152602001620402bb6066913962006928565b6200451785826040518060600160405280603e815260200162040583603e913962006b15565b6200453d85836040518060800160405280604c815260200162040509604c913962006cdd565b620045648585856040518060800160405280604881526020016203fd2d6048913962006cfb565b62004589826040518060600160405280603e81526020016203ffe4603e913962006f9e565b620045ae836040518060600160405280603a81526020016203fb4f603a91396200703d565b620045d485836040518060600160405280603b8152602001620401de603b9139620070ce565b620045fb8585856040518060800160405280605781526020016203fbe660579139620071ba565b6200462085604051806060016040528060248152602001620405e96024913962007317565b60005b845181101562002c8e5760008582815181106200464457620046446200b143565b60200260200101519050600060016001600160401b038111156200466c576200466c6200b12d565b6040519080825280601f01601f19166020018201604052801562004697576020820181803683370190505b509050858381518110620046af57620046af6200b143565b602001015160f81c60f81b81600081518110620046d057620046d06200b143565b60200101906001600160f81b031916908160001a9053506200470c82604051806060016040528060318152602001620403b0603191396200625f565b6200473282826040518060600160405280603a81526020016203ff2c603a9139620073a5565b6200475882826040518060600160405280603781526020016203fccd60379139620074f5565b6200477d826040518060600160405280603681526020016203fe7160369139620065bf565b620047a382826040518060600160405280603381526020016203fb8960339139620075bc565b50508080620047b2906200b30a565b91505062004623565b620047f560405180604001604052806016815260200175636865636b5f446572656769737465725f537461746560501b8152508362005e9d565b6200481a8260405180606001604052806029815260200162040219602991396200625f565b6200484082826040518060600160405280603281526020016203fc9b60329139620073a5565b6200486682826040518060600160405280602c815260200162040384602c9139620074f5565b6200488b826040518060600160405280602e81526020016204010d602e9139620065bf565b620048b182826040518060600160405280604081526020016204019e6040913962007701565b620048d782826040518060600160405280603381526020016203fb8960339139620075bc565b620048fd828260405180608001604052806041815260200162040474604191396200780e565b62004922816040518060600160405280603a8152602001620400a3603a9139620078de565b6200494882826040518060600160405280602981526020016203fd046029913962007970565b5050565b6200498d6040518060400160405280601e81526020017f636865636b5f436f6d706c657465446572656769737465725f537461746500008152508262005e9d565b620049b2816040518060600160405280602b8152602001620404de602b913962005f9e565b620049d78160405180606001604052806029815260200162040219602991396200625f565b62004364816040518060600160405280602a81526020016204013b602a913962007a38565b62004a3460405180604001604052806014815260200173636865636b5f52656769737465725f537461746560601b8152508362005e9d565b62004a59826040518060600160405280602381526020016203ff66602391396200625f565b62004a7e82604051806060016040528060288152602001620405c1602891396200634c565b62004aa482826040518060600160405280602e815260200162040555602e9139620063dc565b62004aca8282604051806060016040528060298152602001620404b560299139620064fe565b62004aef826040518060600160405280602881526020016204029360289139620065bf565b62004b1582826040518060600160405280603981526020016204016560399139620067e8565b62004b3b82826040518060600160405280603e815260200162040583603e913962006b15565b62004b6182826040518060800160405280604881526020016204005b6048913962006cdd565b62004b86816040518060600160405280603a81526020016203fe37603a913962006f9e565b62004bac82826040518060600160405280602881526020016203ffbc60289139620070ce565b6200494882604051806060016040528060248152602001620405e96024913962007317565b606062004bfd8251600014156040518060600160405280603381526020016203fed9603391396200507e565b6000805b835181101562004c695762004c1562007ab8565b1562004c545762004c5184828151811062004c345762004c346200b143565b602091010151600160f89190911c1b6001600160c01b0384161790565b91505b8062004c60816200b30a565b91505062004c01565b506001600160c01b03811662004cb35762004cb08360008151811062004c935762004c936200b143565b602091010151600160f89190911c1b6001600160c01b0383161790565b90505b600062004cc9826001600160c01b031662004f3f565b905060008051602062040454833981519152845160405162004d2591906040808252601f908201527f5f73656c65637452616e643a20696e7075742071756f72756d20636f756e74006060820152602081019190915260800190565b60405180910390a160008051602062040454833981519152815160405162004d92919060408082526022908201527f5f73656c65637452616e643a2073656c65637465642071756f72756d20636f756060820152611b9d60f21b6080820152602081019190915260a00190565b60405180910390a19392505050565b60006101008251111562004e2c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40162002db1565b815162004e3b57506000919050565b6000808360008151811062004e545762004e546200b143565b0160200151600160f89190911c81901b92505b845181101562003c5d5784818151811062004e865762004e866200b143565b0160200151600160f89190911c1b915082821162004f1d5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40162002db1565b9181179162004f2c816200b30a565b905062004e67565b801982165b92915050565b606060008062004f4f8462007ace565b61ffff166001600160401b0381111562004f6d5762004f6d6200b12d565b6040519080825280601f01601f19166020018201604052801562004f98576020820181803683370190505b5090506000805b82518210801562004fb1575061010081105b1562005010576001811b93508584161562004ffd578060f81b83838151811062004fdf5762004fdf6200b143565b60200101906001600160f81b031916908160001a9053508160010191505b62005008816200b30a565b905062004f9f565b5090949350505050565b606060005b61010081101562005078576001811b838116156200506457604051620050529084906001851b60f81b906020016200bce5565b60405160208183030381529060405292505b5062005070816200b30a565b90506200501f565b50919050565b8162004948576000805160206203ff0c83398151915281604051620050a491906200bd16565b60405180910390a1620049488262007aff565b6000806200515760398054620050cd906200b607565b80601f0160208091040260200160405190810160405280929190818152602001828054620050fb906200b607565b80156200514c5780601f1062005120576101008083540402835291602001916200514c565b820191906000526020600020905b8154815290600101906020018083116200512e57829003601f168201915b505050505062007b66565b905060018114156200516b57600191505090565b60028114156200517d57600291505090565b60048114156200519b57620051956003600a62007bcf565b91505090565b60405162461bcd60e51b815260206004820152602560248201527f5f72616e6451756f72756d436f756e743a20666c6167206e6f74207265636f676044820152641b9a5e995960da1b606482015260840162002db1565b5090565b606060006200520d603a8054620050cd906200b607565b9050600060018214156200522457506001620052fa565b60028214156200523757506002620052fa565b60048214156200526857602f5462005260906003906200525a906001906200b762565b62007bcf565b9050620052fa565b60088214156200527b5750600f620052fa565b60108214156200528e57506014620052fa565b6020821415620052a157506019620052fa565b60405162461bcd60e51b815260206004820152602760248201527f5f72616e645374726174656779436f756e743a20666c6167206e6f74207265636044820152661bd9db9a5e995960ca1b606482015260840162002db1565b6000816001600160401b038111156200531757620053176200b12d565b6040519080825280602002602001820160405280156200535e57816020015b6040805180820190915260008082526020820152815260200190600190039081620053365790505b50905060005b8151811015620053eb576040518060400160405280602f83815481106200538f576200538f6200b143565b600091825260209182902001546001600160a01b03168252670de0b6b3a76400009101528251839083908110620053ca57620053ca6200b143565b60200260200101819052508080620053e2906200b30a565b91505062005364565b509392505050565b60008062005409603b8054620050cd906200b607565b905060018114156200541d57600091505090565b60028114156200519b57620f424091505090565b60008062005447603c8054620050cd906200b607565b905060018114156200545c5750600092915050565b60028114156200548a57620042b460018085600001516200547e91906200bd47565b63ffffffff1662007bcf565b6004811415620054a05750505163ffffffff1690565b60405162461bcd60e51b815260206004820152602a60248201527f5f72616e64496e697469616c4f70657261746f72733a20666c6167206e6f74206044820152691c9958dbd9db9a5e995960b21b606482015260840162002db1565b60006060806000806200550e62007c91565b915091506000806200552860388054620050cd906200b607565b90506001811415620055795787848460405162005545906200ad1c565b62005553939291906200bd6f565b604051809103906000f08015801562005570573d6000803e3d6000fd5b509150620055e7565b6002811415620055e757876040516020016200559691906200bdcf565b6040516020818303038152906040529750878484604051620055b8906200ad2a565b620055c6939291906200bd6f565b604051809103906000f080158015620055e3573d6000803e3d6000fd5b5091505b6000805160206203ff0c833981519152826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005636573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200566091908101906200b5a0565b6040516200566f91906200bdf9565b60405180910390a1600080620056858462007e62565b949b909a50939850929650505050505050565b6040805180820190915260018152605b60f81b602082015260609060005b83518110156200577e5760018451620056d091906200b762565b8114156200572a578162005700858381518110620056f257620056f26200b143565b016020015160f81c62002dc2565b604051602001620057139291906200be42565b604051602081830303815290604052915062005769565b8162005744858381518110620056f257620056f26200b143565b604051602001620057579291906200be6c565b60405160208183030381529060405291505b8062005775816200b30a565b915050620056b6565b50806040516020016200579291906200beac565b60408051601f198184030181529190529392505050565b6000805160206203ff0c833981519152620057c48262005698565b604051620057d391906200bed3565b60405180910390a160005b815181101562004948576000828281518110620057ff57620057ff6200b143565b016020015160285460405163e65797ad60e01b815260f89290921c6004830181905292506000916001600160a01b039091169063e65797ad90602401606060405180830381865afa15801562005859573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200587f91906200bb6d565b5190505b602c546040516379a0849160e11b815260ff8416600482015263ffffffff8316916001600160a01b03169063f341092290602401602060405180830381865afa158015620058d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058fb91906200bbe2565b63ffffffff1610620059d45760006200591483620059ec565b604080516001808252818301909252919250600091906020820181803683370190505090508360f81b816000815181106200595357620059536200b143565b60200101906001600160f81b031916908160001a90535060405163ca4f2d9760e01b81526001600160a01b0383169063ca4f2d9790620059989084906004016200b6ab565b600060405180830381600087803b158015620059b357600080fd5b505af1158015620059c8573d6000803e3d6000fd5b50505050505062005883565b50508080620059e3906200b30a565b915050620057de565b602c546040516379a0849160e11b815260ff8316600482015260009182916001600160a01b039091169063f341092290602401602060405180830381865afa15801562005a3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a6391906200bbe2565b602c549091506000906001600160a01b03166312d1d74d8562005a8d846200547e6001886200bd47565b6040516001600160e01b031960e085901b16815260ff909216600483015263ffffffff1660248201526044016040805180830381865afa15801562005ad6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005afc91906200bf41565b60200151602a546040516308f6629d60e31b8152600481018390529192506001600160a01b0316906347b314e890602401602060405180830381865afa15801562005b4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ed791906200b80f565b60208101516000906127109062005b8d9061ffff16856200bf7f565b620042b491906200bfb1565b602b5460405162fcdba760e51b815260ff841660048201526001600160a01b0383811660248301526000921690631f9b74e090604401602060405180830381865afa15801562005bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042b491906200bc8c565b60408101516000906127109062005b8d9061ffff16856200bf7f565b6060806000602f805490506001600160401b0381111562005c545762005c546200b12d565b60405190808252806020026020018201604052801562005c7e578160200160208202803683370190505b50602f549091506000906001600160401b0381111562005ca25762005ca26200b12d565b60405190808252806020026020018201604052801562005ccc578160200160208202803683370190505b5090506000805160206203ff0c833981519152856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005d1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005d4891908101906200b5a0565b60405162005d5791906200bfda565b60405180910390a160005b602f5481101562005e92576000602f828154811062005d855762005d856200b143565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa15801562005dd8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005dfe91906200b80f565b9050600062005e12624c4b4060646200c02d565b905062005e21828a83620080c7565b8286858151811062005e375762005e376200b143565b60200260200101906001600160a01b031690816001600160a01b0316815250508085858151811062005e6d5762005e6d6200b143565b602002602001018181525050505050808062005e89906200b30a565b91505062005d62565b509094909350915050565b6000805160206203fc3d83398151915282826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005f1791908101906200b5a0565b60405160200162005f2a9291906200c04f565b60408051601f198184030181529082905262005f46916200b6ab565b60405180910390a15050565b600062005f5f83620080d6565b805190915062005f72906000846200815a565b62005f9960008260200151600281111562005f915762005f916200c0ab565b14836200507e565b505050565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049846001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200602991906200b5ed565b6040518263ffffffff1660e01b81526004016200604891815260200190565b602060405180830381865afa15801562006066573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200608c91906200c0c1565b905062005f996001600160c01b03821615836200507e565b602a5460405162a1f4cb60e01b81526001600160a01b038481166004830152600092839291169062a1f4cb906024016040805180830381865afa158015620060f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200611691906200c0ec565b602a54604051630378a7eb60e61b81526001600160a01b038881166004830152939550919350600092169063de29fac090602401602060405180830381865afa15801562006168573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200618e91906200b5ed565b90506200619e8360008662008196565b620061ac8260008662008196565b620061ba816000866200815a565b5050505050565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da392620061fd929091169087906004016200b1ae565b602060405180830381865afa1580156200621b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200624191906200c111565b905062005f9960005b82600181111562005f915762005f916200c0ab565b6000826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620062a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062c691906200b5ed565b6028546040516309aa152760e11b81526001600160a01b038681166004830152929350600092909116906313542a4e90602401602060405180830381865afa15801562006317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200633d91906200b5ed565b90506200207e8282856200815a565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562006398573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620063be91906200c144565b905062005f9960015b82600281111562005f915762005f916200c0ab565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200646791906200b5ed565b6040518263ffffffff1660e01b81526004016200648691815260200190565b602060405180830381865afa158015620064a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620064ca91906200c0c1565b90506000620064d98462004da1565b9050620061ba620064f76001600160c01b0380841690851681161490565b846200507e565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200653f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200656591906200b5ed565b90506000620065748462004da1565b905060006200658383620081d2565b90506000620065928462008243565b9050620065b66001600160c01b0382168417836001600160c01b031614866200507e565b50505050505050565b6000826001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa158015620065ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200662591906200c162565b602a5460405162a1f4cb60e01b81526001600160a01b0386811660048301529293506000928392169062a1f4cb906024016040805180830381865afa15801562006673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200669991906200c0ec565b8451600090815260208087015190526040812092945090925090602a54604051630378a7eb60e61b81526001600160a01b0389811660048301529293506000929091169063de29fac090602401602060405180830381865afa15801562006704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200672a91906200b5ed565b602a5460405163745dcd7360e11b8152600481018590529192506000916001600160a01b039091169063e8bb9ae690602401602060405180830381865afa1580156200677a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620067a091906200b80f565b9050620067b38660000151868962008196565b620067c48660200151858962008196565b620067d18383896200815a565b620067de88828962008336565b5050505050505050565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006828573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200684e91906200c162565b905060006200685d8462008384565b905060006200686c85620084ce565b905060005b8551811015620065b6576000620068ae858484815181106200689757620068976200b143565b60200260200101516200855b90919063ffffffff16565b9050620068e18160000151858481518110620068ce57620068ce6200b143565b6020026020010151600001518862008196565b620069128160200151858481518110620068ff57620068ff6200b143565b6020026020010151602001518862008196565b50806200691f816200b30a565b91505062006871565b6200695083518351604051806060016040528060348152602001620403e16034913962008196565b6000846001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006990573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069b691906200c162565b90506000620069c58462008384565b90506000620069d485620084ce565b905060005b8551811015620067de576000878281518110620069fa57620069fa6200b143565b60200260200101516001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006a3f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a6591906200c162565b9050600062006a998662006a9262006a7d85620085f4565b8787815181106200689757620068976200b143565b906200855b565b905062006acc816000015186858151811062006ab95762006ab96200b143565b6020026020010151600001518962008196565b62006afd816020015186858151811062006aea5762006aea6200b143565b6020026020010151602001518962008196565b5050808062006b0c906200b30a565b915050620069d9565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006b56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b7c91906200b5ed565b905060005b8351811015620061ba57600084828151811062006ba25762006ba26200b143565b0160200151602b5460405163c46778a560e01b815260f89290921c6004830181905292506000916001600160a01b039091169063c46778a590602401602060405180830381865afa15801562006bfc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c2291906200bc8c565b602b54604051635401ed2760e01b81526004810187905260ff851660248201529192506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562006c7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ca191906200bc8c565b905062006cc4826001600160601b0316826001600160601b03161015876200507e565b505050808062006cd4906200b30a565b91505062006b81565b600062006ceb8484620086b4565b90506200207e84848385620087f6565b62006d23835183516040518060600160405280603981526020016203fd756039913962008196565b600062006d318584620086b4565b9050600084516001600160401b0381111562006d515762006d516200b12d565b60405190808252806020026020018201604052801562006d7b578160200160208202803683370190505b50905060005b855181101562006e175762006dd585828151811062006da45762006da46200b143565b602001015160f81c60f81b60f81c87838151811062006dc75762006dc76200b143565b602002602001015162005b99565b82828151811062006dea5762006dea6200b143565b6001600160601b03909216602092830291909101909101528062006e0e816200b30a565b91505062006d81565b50600062006e2687866200893d565b9050600062006e36888762008ae9565b9050600062006e458762008bdf565b9050600062006e548862008d12565b905060005b885181101562006f915762006ee385828151811062006e7c5762006e7c6200b143565b60200260200101516001600160601b031688838151811062006ea25762006ea26200b143565b602002602001015186848151811062006ebf5762006ebf6200b143565b602002602001015162006ed391906200bcb7565b6001600160601b03168a62008196565b62006f7c83828151811062006efc5762006efc6200b143565b60200260200101516001600160601b031687838151811062006f225762006f226200b143565b602002602001015189848151811062006f3f5762006f3f6200b143565b602002602001015185858151811062006f5c5762006f5c6200b143565b602002602001015162006f7091906200bcb7565b62006ed391906200c197565b8062006f88816200b30a565b91505062006e59565b5050505050505050505050565b600062006fab8362008d9f565b9050600062006fba8462008ecf565b905060005b8451811015620061ba576200702883828151811062006fe25762006fe26200b143565b602002602001015163ffffffff168383815181106200700557620070056200b143565b602002602001015160016200701b91906200c1ba565b63ffffffff168662008196565b8062007034816200b30a565b91505062006fbf565b60006200704a8362008d9f565b90506000620070598462008ecf565b905060005b8451811015620061ba57620070b98382815181106200708157620070816200b143565b602002602001015163ffffffff16838381518110620070a457620070a46200b143565b602002602001015163ffffffff168662008196565b80620070c5816200b30a565b9150506200705e565b6000620070db8362008f5c565b90506000620070ea846200909e565b905060005b845181101562002c8e576200714e8382815181106200711257620071126200b143565b6020026020010151518383815181106200713057620071306200b143565b60200260200101515160016200714791906200b793565b8662008196565b620071816200717a8483815181106200716b576200716b6200b143565b6020026020010151886200912b565b856200507e565b620071a56200719e8383815181106200716b576200716b6200b143565b85620091f3565b80620071b1816200b30a565b915050620070ef565b620071e2835183516040518060600160405280603f815260200162040415603f913962008196565b6000620071ef8362008f5c565b90506000620071fe846200909e565b905060005b8451811015620065b657620072548382815181106200722657620072266200b143565b6020026020010151518383815181106200724457620072446200b143565b6020026020010151518662008196565b620072806200717a8483815181106200727157620072716200b143565b6020026020010151896200912b565b6200729d6200719e8383815181106200727157620072716200b143565b620072e56200719e848381518110620072ba57620072ba6200b143565b6020026020010151888481518110620072d757620072d76200b143565b60200260200101516200912b565b620073026200717a838381518110620072ba57620072ba6200b143565b806200730e816200b30a565b91505062007203565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da39262007353929091169087906004016200b1ae565b602060405180830381865afa15801562007371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200739791906200c111565b905062005f9960016200624a565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200740a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200743091906200b5ed565b6040518263ffffffff1660e01b81526004016200744f91815260200190565b602060405180830381865afa1580156200746d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200749391906200c0c1565b905060005b8351811015620061ba576000848281518110620074b957620074b96200b143565b60209101015160f81c9050620074df60016001600160c01b038516831c8116146200719e565b5080620074ec816200b30a565b91505062007498565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007536573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200755c91906200b5ed565b905060006200756b8462004da1565b905060006200757a83620081d2565b90506000620075898462008243565b9050620075a58382166001600160c01b031684145b866200507e565b620065b68284166001600160c01b0316156200759e565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620075fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200762391906200b5ed565b905060005b8351811015620061ba5760008482815181106200764957620076496200b143565b0160200151602b54604051635401ed2760e01b81526004810186905260f89290921c6024830181905292506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa158015620076aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620076d091906200bc8c565b9050620076e9816001600160601b031660008762008196565b50508080620076f8906200b30a565b91505062007628565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562007741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200776791906200c162565b90506000620077768462008384565b905060006200778585620084ce565b905060005b8551811015620065b6576000620077ba620077a586620085f4565b8484815181106200689757620068976200b143565b9050620077da8160000151858481518110620068ce57620068ce6200b143565b620077f88160200151858481518110620068ff57620068ff6200b143565b508062007805816200b30a565b9150506200778a565b60006200781c848462008ae9565b905060006200782b8462008bdf565b905060006200783a8562008d12565b905060005b8551811015620065b657620078c98382815181106200786257620078626200b143565b60200260200101516001600160601b03168583815181106200788857620078886200b143565b6020026020010151848481518110620078a557620078a56200b143565b6020026020010151620078b991906200c197565b6001600160601b03168762008196565b80620078d5816200b30a565b9150506200783f565b6000620078eb8362008d9f565b90506000620078fa8462008ecf565b905060005b8451811015620061ba576200795b8382815181106200792257620079226200b143565b602002602001015163ffffffff1660018484815181106200794757620079476200b143565b60200260200101516200701b91906200bd47565b8062007967816200b30a565b915050620078ff565b60006200797d8362008f5c565b905060006200798c846200909e565b905060005b845181101562002c8e57620079e9838281518110620079b457620079b46200b143565b6020026020010151516001848481518110620079d457620079d46200b143565b6020026020010151516200714791906200b762565b62007a066200719e8483815181106200716b576200716b6200b143565b62007a236200717a8383815181106200716b576200716b6200b143565b8062007a2f816200b30a565b91505062007991565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562007a84573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007aaa91906200c144565b905062005f996002620063c7565b600062007ac86000600162007bcf565b15919050565b6000805b821562004f395762007ae66001846200b762565b909216918062007af6816200c1dc565b91505062007ad2565b8062004389576000805160206203fc3d83398151915260405162007b549060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200438962009200565b600062007b9160008351116040518060600160405280603281526020016203fe05603291396200507e565b600062007ba96000600185516200525a91906200b762565b905082818151811062007bc05762007bc06200b143565b016020015160f81c9392505050565b60008062007bde84846200b762565b62007beb9060016200b793565b90506000815b801562007c10578162007c04816200b30a565b92505060011c62007bf1565b600062007c21600180851b6200b762565b60375490915081165b84811062007c48578162007c3f86836200b762565b16905062007c2a565b60375460405160200162007c5e91815260200190565b60408051601f19818403018152919052805160209091012060375562007c8581896200b793565b98975050505050505050565b600062007c9d6200ad38565b603e54603d54141562007d315760405162461bcd60e51b815260206004820152604f60248201527f5f66657463684b6579706169723a206e6f7420656e6f7567682067656e65726160448201527f746564206b6579732e20436865636b20496e746567726174696f6e4465706c6f60648201526e3cb2b91731b7b739ba393ab1ba37b960891b608482015260a40162002db1565b6000603e603d548154811062007d4b5762007d4b6200b143565b906000526020600020015490506000603f603d548154811062007d725762007d726200b143565b60009182526020918290206040805160a0810182526008939093029091018054606084019081526001820154608080860191909152908452825180840184526002808401548252600384015482880152958501528251908101808452939491938584019391926004860192849290830191849182845b81548152602001906001019080831162007de857505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831162007e1f5750505091909252505050905250603d8054919250600062007e54836200b30a565b909155509194909350915050565b6060806000602f805490506001600160401b0381111562007e875762007e876200b12d565b60405190808252806020026020018201604052801562007eb1578160200160208202803683370190505b50602f549091506000906001600160401b0381111562007ed55762007ed56200b12d565b60405190808252806020026020018201604052801562007eff578160200160208202803683370190505b5090506000805160206203ff0c833981519152856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562007f51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007f7b91908101906200b5a0565b60405162007f8a91906200c201565b60405180910390a160005b602f5481101562005e92576000602f828154811062007fb85762007fb86200b143565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa1580156200800b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200803191906200b80f565b9050600062008047620f4240624c4b4062007bcf565b905062008056828a83620080c7565b828685815181106200806c576200806c6200b143565b60200260200101906001600160a01b031690816001600160a01b03168152505080858581518110620080a257620080a26200b143565b6020026020010181815250505050508080620080be906200b30a565b91505062007f95565b62005f9983838360006200930e565b6040805180820190915260008082526020820152602854604051631619718360e21b81526001600160a01b03848116600483015290911690635865c60c906024016040805180830381865afa15801562008134573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f3991906200c255565b81831462005f99576000805160206203ff0c833981519152816040516200818291906200bd16565b60405180910390a162005f99838362009509565b81831462005f99576000805160206203ff0c83398151915281604051620081be91906200bd16565b60405180910390a162005f998383620095f2565b60285460405163871ef04960e01b8152600481018390526000916001600160a01b03169063871ef04990602401602060405180830381865afa1580156200821d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f3991906200c0c1565b600080602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200829c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620082c291906200b5ed565b9050620082cf83620081d2565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b1580156200831757600080fd5b505af11580156200832c573d6000803e3d6000fd5b5050505050919050565b816001600160a01b0316836001600160a01b03161462005f99576000805160206203ff0c833981519152816040516200837091906200bd16565b60405180910390a162005f998383620096a4565b6060600082516001600160401b03811115620083a457620083a46200b12d565b604051908082528060200260200182016040528015620083eb57816020015b6040805180820190915260008082526020820152815260200190600190039081620083c35790505b50905060005b8351811015620084c757602a5484516001600160a01b0390911690635f61a884908690849081106200842757620084276200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526024016040805180830381865afa1580156200846b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200849191906200c162565b828281518110620084a657620084a66200b143565b60200260200101819052508080620084be906200b30a565b915050620083f1565b5092915050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008528573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200854e91906200b5ed565b9050620082cf8362008384565b6040805180820190915260008082526020820152620085796200ad88565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801562002d7457508062002dba5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640162002db1565b604080518082019091526000808252602082015281511580156200861a57506020820151155b1562008639575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516200868091906200b77c565b620086ac907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476200b762565b905292915050565b6060600082516001600160401b03811115620086d457620086d46200b12d565b604051908082528060200260200182016040528015620086fe578160200160208202803683370190505b50905060005b8351811015620053eb57602b5484516001600160a01b0390911690631f9b74e0908690849081106200873a576200873a6200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526001600160a01b0388166024820152604401602060405180830381865afa1580156200878e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620087b491906200bc8c565b828281518110620087c957620087c96200b143565b6001600160601b039092166020928302919091019091015280620087ed816200b30a565b91505062008704565b60006200880485856200893d565b9050600062008814868662008ae9565b90506000620088238662008bdf565b90506000620088328762008d12565b905060005b87518110156200893257620088c18582815181106200885a576200885a6200b143565b60200260200101516001600160601b03168883815181106200888057620088806200b143565b60200260200101518684815181106200889d576200889d6200b143565b6020026020010151620088b191906200bcb7565b6001600160601b03168862008196565b6200891d838281518110620088da57620088da6200b143565b60200260200101516001600160601b03168883815181106200890057620089006200b143565b60200260200101518484815181106200889d576200889d6200b143565b8062008929816200b30a565b91505062008837565b505050505050505050565b60606000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008980573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620089a691906200b5ed565b9050600083516001600160401b03811115620089c657620089c66200b12d565b604051908082528060200260200182016040528015620089f0578160200160208202803683370190505b50905060005b845181101562008ae057602b5485516001600160a01b0390911690635401ed2790859088908590811062008a2e5762008a2e6200b143565b01602001516040516001600160e01b031960e085901b168152600481019290925260f81c6024820152604401602060405180830381865afa15801562008a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008a9e91906200bc8c565b82828151811062008ab35762008ab36200b143565b6001600160601b03909216602092830291909101909101528062008ad7816200b30a565b915050620089f6565b50949350505050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008b43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008b6991906200b5ed565b905062008b7784846200893d565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b15801562008bbf57600080fd5b505af115801562008bd4573d6000803e3d6000fd5b505050505092915050565b6060600082516001600160401b0381111562008bff5762008bff6200b12d565b60405190808252806020026020018201604052801562008c29578160200160208202803683370190505b50905060005b8351811015620084c757602b5484516001600160a01b039091169063d5eccc059086908490811062008c655762008c656200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562008caa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008cd091906200bc8c565b82828151811062008ce55762008ce56200b143565b6001600160601b03909216602092830291909101909101528062008d09816200b30a565b91505062008c2f565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008d6c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008d9291906200b5ed565b9050620082cf8362008bdf565b6060600082516001600160401b0381111562008dbf5762008dbf6200b12d565b60405190808252806020026020018201604052801562008de9578160200160208202803683370190505b50905060005b8351811015620084c757602c5484516001600160a01b039091169063f34109229086908490811062008e255762008e256200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562008e6a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e9091906200bbe2565b82828151811062008ea55762008ea56200b143565b63ffffffff909216602092830291909101909101528062008ec6816200b30a565b91505062008def565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008f29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008f4f91906200b5ed565b9050620082cf8362008d9f565b6060600082516001600160401b0381111562008f7c5762008f7c6200b12d565b60405190808252806020026020018201604052801562008fb157816020015b606081526020019060019003908162008f9b5790505b50905060005b8351811015620084c757602c5484516001600160a01b039091169063890262459086908490811062008fed5762008fed6200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201524363ffffffff166024820152604401600060405180830381865afa1580156200903e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200906891908101906200c318565b8282815181106200907d576200907d6200b143565b6020026020010181905250808062009095906200b30a565b91505062008fb7565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620090f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200911e91906200b5ed565b9050620082cf8362008f5c565b600080826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200916d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200919391906200b5ed565b905060005b8451811015620091e85781858281518110620091b857620091b86200b143565b60200260200101511415620091d35760019250505062004f39565b80620091df816200b30a565b91505062009198565b506000949350505050565b620049488215826200507e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620092fd57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490620092789083906519985a5b195960d21b906001906020016200c350565b60408051601f19818403018152908290526200929892916020016200b6c0565b60408051601f1981840301815290829052620092b4916200b6f3565b6000604051808303816000865af19150503d8060008114620092f3576040519150601f19603f3d011682016040523d82523d6000602084013e620092f8565b606091505b505050505b6007805461ff001916610100179055565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009287169162009364916200b6f3565b600060405180830381855afa9150503d8060008114620093a1576040519150601f19603f3d011682016040523d82523d6000602084013e620093a6565b606091505b50915050600081806020019051810190620093c291906200b5ed565b9050620093fc84620093f587620093ee6370a0823160e01b620093e7600c8d6200978d565b90620097b3565b90620097d1565b90620097fa565b821562002c8e5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200944791906200b6f3565b600060405180830381855afa9150503d806000811462009484576040519150601f19603f3d011682016040523d82523d6000602084013e62009489565b606091505b50915050600081806020019051810190620094a591906200b5ed565b905082861015620094d057620094bc86846200b762565b620094c890826200b762565b9050620094eb565b620094dc83876200b762565b620094e890826200b793565b90505b620067de81620093f56318160ddd60e01b620093e7600c8d6200978d565b80821462004948576000805160206203fc3d8339815191526040516200956e9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974604082015264657333325d60d81b606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620095a791906200c371565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620095e091906200c3aa565b60405180910390a16200494862009200565b80821462004948576000805160206203fc3d833981519152604051620096549060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160008051602062040454833981519152826040516200967c91906200c371565b60405180910390a16000805160206204045483398151915281604051620095e091906200c3aa565b806001600160a01b0316826001600160a01b03161462004948576000805160206203fc3d8339815191526040516200971b9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200975491906200c3d5565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620095e091906200c41a565b6005820180546001600160a01b0319166001600160a01b038316179055600082620042b4565b60038201805463ffffffff191660e083901c179055600082620042b4565b6002820180546001810182556000918252602082206001600160a01b03841691015582620042b4565b620049488282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200987357602002820191906000526020600020905b8154815260200190600101908083116200985e575b50505050509050600083620098888362009b78565b6040516020016200989b9291906200b6c0565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620098ef9186918891016200c445565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200992a57620099288762009c24565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200996b9187918991016200c445565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620099b291906200b6f3565b600060405180830381855afa9150503d8060008114620099ef576040519150601f19603f3d011682016040523d82523d6000602084013e620099f4565b606091505b50915062009a1190508162009a0b8860206200c02d565b62009c31565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562009a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009a9e91906200b5ed565b905080821462009ac25760405162461bcd60e51b815260040162002db1906200c481565b6040516370ca10bb60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb9062009aff908b9087908e906004016200c350565b600060405180830381600087803b15801562009b1a57600080fd5b505af115801562009b2f573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562009b6460028b0160006200ada6565b896004016000905550505050505050505050565b606060008251602062009b8c91906200c02d565b6001600160401b0381111562009ba65762009ba66200b12d565b6040519080825280601f01601f19166020018201604052801562009bd1576020820181803683370190505b50905060005b8351811015620084c757600084828151811062009bf85762009bf86200b143565b60200260200101519050808260200260200184015250808062009c1b906200b30a565b91505062009bd7565b600062004f398262009cb1565b6000806000602085511162009c4857845162009c4b565b60205b905060005b81811015620050105762009c668160086200c02d565b8662009c7383886200b793565b8151811062009c865762009c866200b143565b01602001516001600160f81b031916901c92909217918062009ca8816200b30a565b91505062009c50565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562009d2357602002820191906000526020600020905b81548152602001906001019080831162009d0e575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062009d6f925085918791016200c445565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562009e0e576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162009dde9185918791016200c445565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362009e1c836200a9eb565b60405160200162009e2f9291906200b6c0565b60405160208183030381529060405290506000805160206204024283398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562009e8e57600080fd5b505af115801562009ea3573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162009ec491906200b6f3565b600060405180830381855afa9150503d806000811462009f01576040519150601f19603f3d011682016040523d82523d6000602084013e62009f06565b606091505b50915062009f2390508162009f1d8760206200c02d565b6200aa97565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562009f85573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262009faf91908101906200c51c565b5090508051600114156200a2915760006000805160206204024283398151915260001c6001600160a01b031663667f9d70898460008151811062009ff75762009ff76200b143565b60200260200101516040518363ffffffff1660e01b81526004016200a0319291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200a04f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a07591906200b5ed565b9050806200a0e0577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200a0b5576200a0b56200b143565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200a1025760405162461bcd60e51b815260040162002db1906200c481565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200a13a9291906200c445565b60405160208183030381529060405280519060200120856000815181106200a166576200a1666200b143565b602002602001015160001c6040516200a18394939291906200c586565b60405180910390a1816000815181106200a1a1576200a1a16200b143565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200a1ec918a918c91016200c445565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200a256918a918c91016200c445565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200a86e565b6001815111156200a7fd5760005b81518110156200a7f65760006000805160206204024283398151915260001c6001600160a01b031663667f9d708a8585815181106200a2e2576200a2e26200b143565b60200260200101516040518363ffffffff1660e01b81526004016200a31c9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200a33a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a36091906200b5ed565b9050806200a3ca577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200a39f576200a39f6200b143565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200a3d957506200a7e1565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c908790879081106200a411576200a4116200b143565b6020026020010151846040518463ffffffff1660e01b81526004016200a43a939291906200c350565b600060405180830381600087803b1580156200a45557600080fd5b505af11580156200a46a573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200a48c91906200b6f3565b600060405180830381855afa9150503d80600081146200a4c9576040519150601f19603f3d011682016040523d82523d6000602084013e6200a4ce565b606091505b5090925090506200a4e68162009f1d8c60206200c02d565b9650508080156200a4f657508186145b156200a749577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200a5349291906200c445565b604051602081830303815290604052805190602001208888815181106200a55f576200a55f6200b143565b602002602001015160001c6040516200a57c94939291906200c586565b60405180910390a18484815181106200a599576200a5996200b143565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200a5e4918d918f91016200c445565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200a6719291906200c445565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206204024283398151915260001c6001600160a01b03166370ca10bb8c8787815181106200a6e3576200a6e36200b143565b6020026020010151866040518463ffffffff1660e01b81526004016200a70c939291906200c350565b600060405180830381600087803b1580156200a72757600080fd5b505af11580156200a73c573d6000803e3d6000fd5b505050505050506200a7f6565b6000805160206204024283398151915260001c6001600160a01b03166370ca10bb8c8787815181106200a780576200a7806200b143565b6020026020010151866040518463ffffffff1660e01b81526004016200a7a9939291906200c350565b600060405180830381600087803b1580156200a7c457600080fd5b505af11580156200a7d9573d6000803e3d6000fd5b505050505050505b806200a7ed816200b30a565b9150506200a29f565b506200a86e565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002db1565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200a8b29188918a91016200c445565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a9415760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b606482015260840162002db1565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200a97260028a0160006200ada6565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200a9b89188918a91016200c445565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200a9ff91906200c02d565b6001600160401b038111156200aa19576200aa196200b12d565b6040519080825280601f01601f1916602001820160405280156200aa44576020820181803683370190505b50905060005b8351811015620084c75760008482815181106200aa6b576200aa6b6200b143565b6020026020010151905080826020026020018401525080806200aa8e906200b30a565b9150506200aa4a565b600080600060208551116200aaae5784516200aab1565b60205b905060005b8181101562005010576200aacc8160086200c02d565b866200aad983886200b793565b815181106200aaec576200aaec6200b143565b01602001516001600160f81b031916901c9290921791806200ab0e816200b30a565b9150506200aab6565b610718806200c5b783390190565b610778806200cccf83390190565b6094806200d44783390190565b61022a806200d4db83390190565b6103f3806200d70583390190565b610e81806200daf883390190565b614ad0806200e97983390190565b6104e4806201344983390190565b615c46806201392d83390190565b61338a806201957383390190565b610efe806201c8fd83390190565b613169806201d7fb83390190565b611f78806202096483390190565b611ab480620228dc83390190565b61117d806202439083390190565b613958806202550d83390190565b61210b8062028e6583390190565b6113ec806202af7083390190565b6116e0806202c35c83390190565b616187806202da3c83390190565b611a258062033bc383390190565b60405180604001604052806200ac516200adc6565b81526020016200ac606200adc6565b905290565b60405180606001604052806003906020820280368337509192915050565b610e6080620355e883390190565b8280546200ac9f906200b607565b90600052602060002090601f0160209004810192826200acc357600085556200ad0e565b82601f106200acde57805160ff19168380011785556200ad0e565b828001600101855582156200ad0e579182015b828111156200ad0e5782518255916020019190600101906200acf1565b50620051f29291506200ade4565b6146f4806203644883390190565b615013806203ab3c83390190565b6040805160a081019091526000606082018181526080830191909152819081526020016200ad79604051806040016040528060008152602001600081525090565b81526020016200ac606200ac3c565b60405180608001604052806004906020820280368337509192915050565b50805460008255906000526020600020908101906200438991906200ade4565b60405180604001604052806002906020820280368337509192915050565b5b80821115620051f257600081556001016200ade5565b6000602082840312156200ae0e57600080fd5b5035919050565b8060005b60028110156200207e5781518452602093840193909101906001016200ae19565b6200ae478282516200ae15565b602081015162005f9960408401826200ae15565b6080810162004f3982846200ae3a565b600081518084526020808501945080840160005b838110156200aea65781516001600160a01b0316875295820195908201906001016200ae7f565b509495945050505050565b602081526000620042b460208301846200ae6b565b60005b838110156200aee35781810151838201526020016200aec9565b838111156200207e5750506000910152565b600081518084526200af0f8160208601602086016200aec6565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200afd957603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200afc257605f198985030183526200afaf8486516200aef5565b948e01949350918d01916001016200af90565b505050978a0197945050918801916001016200af4a565b50919a9950505050505050505050565b6000602082840312156200affc57600080fd5b813562ffffff81168114620042b457600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200b0b857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200b0a25783516001600160e01b0319168252928b019260019290920191908b01906200b076565b50978a019795505050918701916001016200b038565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200b12057603f198886030184526200b10d8583516200aef5565b945092850192908501906001016200b0ee565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6040815260006200b16e60408301856200ae6b565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b6001600160a01b0392831681529116602082015260400190565b600081518084526020808501945080840160005b838110156200aea6578151875295820195908201906001016200b1dc565b6001600160a01b0387811682528616602082015260ff851660408201526060810184905260c0608082018190526000906200b238908301856200ae6b565b82810360a08401526200b24c81856200b1c8565b9998505050505050505050565b6001600160a01b038481168252831660208201526060604082018190526000906200b287908301846200aef5565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b8152600082516200b2ba81600d8501602087016200aec6565b91909101600d0192915050565b6214d51560ea1b8152600082516200b2e78160038501602087016200aec6565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156200b321576200b3216200b2f4565b5060010190565b600081518084526020808501945080840160005b838110156200aea65781516001600160601b0316875295820195908201906001016200b33c565b600081518084526020808501945080840160005b838110156200aea657815180516001600160a01b031688528301516001600160601b031683880152604090960195908201906001016200b377565b600081518084526020808501808196508360051b8101915082860160005b858110156200b3fe5782840389526200b3eb8483516200b363565b988501989350908401906001016200b3d0565b5091979650505050505050565b6001600160a01b038981168252888116602080840191909152888216604084015290871660608084019190915260ff8716608084015261010060a084018190528651908401819052600092610120850192888201929190855b838110156200b4ae576200b49d868651805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b94810194938201936001016200b464565b505050505082810360c08401526200b4c781866200b328565b905082810360e08401526200b4dd81856200b3b2565b9b9a5050505050505050505050565b604080519081016001600160401b03811182821017156200b511576200b5116200b12d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200b542576200b5426200b12d565b604052919050565b60006001600160401b038311156200b566576200b5666200b12d565b6200b57b601f8401601f19166020016200b517565b90508281528383830111156200b59057600080fd5b620042b48360208301846200aec6565b6000602082840312156200b5b357600080fd5b81516001600160401b038111156200b5ca57600080fd5b8201601f810184136200b5dc57600080fd5b62002ed7848251602084016200b54a565b6000602082840312156200b60057600080fd5b5051919050565b600181811c908216806200b61c57607f821691505b602082108114156200507857634e487b7160e01b600052602260045260246000fd5b6060815260006200b65360608301866200aef5565b82810360208481019190915285518083528682019282019060005b818110156200b6955784516001600160a01b0316835293830193918301916001016200b66e565b5050848103604086015262007c8581876200aef5565b602081526000620042b460208301846200aef5565b6001600160e01b03198316815281516000906200b6e58160048501602087016200aec6565b919091016004019392505050565b600082516200b7078184602087016200aec6565b9190910192915050565b6000602082840312156200b72457600080fd5b81518015158114620042b457600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826200b75d576200b75d6200b735565b500490565b6000828210156200b777576200b7776200b2f4565b500390565b6000826200b78e576200b78e6200b735565b500690565b600082198211156200b7a9576200b7a96200b2f4565b500190565b6080815260006200b7c360808301876200aef5565b82810360208401526200b7d781876200aef5565b604084019590955250506001600160a01b039190911660609091015292915050565b6001600160a01b03811681146200438957600080fd5b6000602082840312156200b82257600080fd5b8151620042b4816200b7f9565b6040815260006200b84460408301856200ae6b565b82810360208481019190915284518083528582019282019060005b818110156200b87f5784511515835293830193918301916001016200b85f565b5090979650505050505050565b6200b8bb8185805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b6001600160601b038316606082015260a0608082015260006200b28760a08301846200b363565b6b02932b3b4b9ba32b934b733960a51b8152600082516200b90b81600c8501602087016200aec6565b7f20696e697469616c206f70657261746f727320696e20656163682071756f7275600c939091019283015250606d60f81b602c820152602d01919050565b600060208083526000845481600182811c9150808316806200b96c57607f831692505b8583108114156200b98b57634e487b7160e01b85526022600452602485fd5b8786018381526020018180156200b9ab57600181146200b9bd576200b9ea565b60ff198616825287820196506200b9ea565b60008b81526020902060005b868110156200b9e4578154848201529085019089016200b9c9565b83019750505b50949998505050505050505050565b6727b832b930ba37b960c11b8152600082516200ba1e8160088501602087016200aec6565b9190910160080192915050565b6040815260006200ba4060408301856200ae6b565b82810360208401526200b28781856200b1c8565b60408152602360408201527f5f676574436875726e546172676574733a20696e636f6d696e67206f706572616060820152623a37b960e91b608082015260a060208201526000620042b460a08301846200aef5565b60408152601e60408201527f5f676574436875726e546172676574733a20636875726e51756f72756d7300006060820152608060208201526000620042b460808301846200aef5565b60408152602160408201527f5f676574436875726e546172676574733a207374616e6461726451756f72756d6060820152607360f81b608082015260a060208201526000620042b460a08301846200aef5565b805163ffffffff81168114620029ec57600080fd5b805161ffff81168114620029ec57600080fd5b6000606082840312156200bb8057600080fd5b604051606081018181106001600160401b03821117156200bba5576200bba56200b12d565b6040526200bbb3836200bb45565b81526200bbc3602084016200bb5a565b60208201526200bbd6604084016200bb5a565b60408201529392505050565b6000602082840312156200bbf557600080fd5b620042b4826200bb45565b7f5f676574436875726e546172676574733a2073656c656374656420636875726e8152720103a30b933b2ba103337b91038bab7b93ab69606d1b6020820152600082516200bc568160338501602087016200aec6565b9190910160330192915050565b6040815260006200bc7860408301856200aef5565b82810360208401526200b28781856200aef5565b6000602082840312156200bc9f57600080fd5b81516001600160601b0381168114620042b457600080fd5b60006001600160601b038083168185168083038211156200bcdc576200bcdc6200b2f4565b01949350505050565b600083516200bcf98184602088016200aec6565b6001600160f81b0319939093169190920190815260010192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620042b460808301846200aef5565b600063ffffffff838116908316818110156200bd67576200bd676200b2f4565b039392505050565b60006101408083526200bd85818401876200aef5565b9150508360208301526200bda760408301845180518252602090810151910152565b60208381015180516080850152015160a0830152604083015162008ae060c08401826200ae3a565b600082516200bde38184602087016200aec6565b6317d05b1d60e21b920191825250600401919050565b60408152601760408201527f5f72616e64557365723a204372656174656420757365720000000000000000006060820152608060208201526000620042b460808301846200aef5565b600083516200be568184602088016200aec6565b8351908301906200bcdc8183602088016200aec6565b600083516200be808184602088016200aec6565b8351908301906200be968183602088016200aec6565b61016160f51b9101908152600201949350505050565b600082516200bec08184602087016200aec6565b605d60f81b920191825250600101919050565b604081526040808201527f5f676574436875726e546172676574733a206d616b696e6720726f6f6d20627960608201527f2072656d6f76696e67206f70657261746f72732066726f6d2071756f72756d73608082015260a060208201526000620042b460a08301846200aef5565b6000604082840312156200bf5457600080fd5b6200bf5e6200b4ec565b6200bf69836200bb45565b8152602083015160208201528091505092915050565b60006001600160601b03808316818516818304811182151516156200bfa8576200bfa86200b2f4565b02949350505050565b60006001600160601b03808416806200bfce576200bfce6200b735565b92169190910492915050565b60408152602160408201527f5f6465616c4d6178546f6b656e733a206465616c696e672061737365747320746060820152606f60f81b608082015260a060208201526000620042b460a08301846200aef5565b60008160001904831182151516156200c04a576200c04a6200b2f4565b500290565b61016960f51b8152600083516200c06e8160028501602088016200aec6565b600560fb1b60029184019182015283516200c0918160038401602088016200aec6565b602960f81b60039290910191820152600401949350505050565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200c0d457600080fd5b81516001600160c01b0381168114620042b457600080fd5b600080604083850312156200c10057600080fd5b505080516020909101519092909150565b6000602082840312156200c12457600080fd5b815160028110620042b457600080fd5b805160038110620029ec57600080fd5b6000602082840312156200c15757600080fd5b620042b4826200c134565b6000604082840312156200c17557600080fd5b6200c17f6200b4ec565b82518152602083015160208201528091505092915050565b60006001600160601b03838116908316818110156200bd67576200bd676200b2f4565b600063ffffffff8083168185168083038211156200bcdc576200bcdc6200b2f4565b600061ffff808316818114156200c1f7576200c1f76200b2f4565b6001019392505050565b60408152602260408201527f5f6465616c52616e64546f6b656e733a206465616c696e672061737365747320606082015261746f60f01b608082015260a060208201526000620042b460a08301846200aef5565b6000604082840312156200c26857600080fd5b6200c2726200b4ec565b825181526200c284602084016200c134565b60208201529392505050565b600082601f8301126200c2a257600080fd5b815160206001600160401b038211156200c2c0576200c2c06200b12d565b8160051b6200c2d18282016200b517565b92835284810182019282810190878511156200c2ec57600080fd5b83870192505b848310156200c30d578251825291830191908301906200c2f2565b979650505050505050565b6000602082840312156200c32b57600080fd5b81516001600160401b038111156200c34257600080fd5b62002ed7848285016200c290565b6001600160a01b039390931683526020830191909152604082015260600190565b6040815260006200c39c60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200c39c60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200c40060408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006200c40060408301600a8152690808080808149a59da1d60b21b602082015260400190565b825160009082906020808701845b838110156200c471578151855293820193908201906001016200c453565b5050948252509092019392505050565b6020808252606f908201527f73746453746f726167652066696e642853746453746f72616765293a2050616360408201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560608201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960808201526e39b713ba1039bab83837b93a32b21760891b60a082015260c00190565b600080604083850312156200c53057600080fd5b82516001600160401b03808211156200c54857600080fd5b6200c556868387016200c290565b935060208501519150808211156200c56d57600080fd5b506200c57c858286016200c290565b9150509250929050565b6001600160a01b039490941684526001600160e01b0319929092166020840152604083015260608201526080019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c0033746f74616c206f70657261746f7220636f756e742073686f756c64206265207468652073616d6520666f7220636875726e656451756f72756d736f70657261746f722073686f756c64206e6f206c6f6e6765722068617665207374616b6520696e20616e792071756f72756d736f70657261746f7220616c726561647920686173206269747320696e2071756f72756d206269746d61706f70657261746f72206c6973742073686f756c6420636f6e7461696e20696e636f6d696e67206f70657261746f7220616e642073686f756c64206e6f7420636f6e7461696e20636875726e6564206f70657261746f727341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420746f207374616e6461726451756f72756d732061706b7363757272656e74206f70657261746f72206269746d61702073686f756c64206e6f7420696e636c7564652071756f72756d73636875726e6564206f70657261746f7220646964206e6f7420646572656769737465722066726f6d20636875726e65642071756f72756d6f70657261746f72206c6973742073686f756c642068617665206f6e6520666577657220656e7472796661696c656420746f20616464206f70657261746f722077656967687420616e642072656d6f766520636875726e6564207765696768742066726f6d20656163682071756f72756d6173736572745f536e61705f436875726e65645f4f70657261746f725765696768743a20696e707574206c656e677468206d69736d617463685f636f6e66696752616e643a20696e76616c69642066696c6c54797065732c206e6f20666c616773207061737365646f70657261746f7220616c72656164792068617320612072656769737465726564207075626b65795f72616e6456616c75653a20747269656420746f2073656c6563742076616c75652066726f6d20656d707479206172726179746f74616c206f70657261746f7220636f756e742073686f756c64206861766520696e6372656173656420666f7220656163682071756f72756d636875726e6564206f70657261746f722073686f756c64207374696c6c206861766520612072656769737465726564207075626b65795f636f6e66696752616e643a20696e76616c6964206d696e696d756d5374616b652c206e6f20666c616773207061737365645f73656c65637452616e643a20747269656420746f2073656c6563742066726f6d20656d7074792071756f72756d206c697374280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583636875726e6564206f70657261746f72206269746d61702073686f756c64206e6f7420696e636c75646520636875726e65642071756f72756d736f70657261746f72496e666f2073686f756c642068617665206f70657261746f7249645f636f6e66696752616e643a20696e76616c6964206e756d537472617465676965732c206e6f20666c616773207061737365646f70657261746f72206c6973742073686f756c642068617665206f6e65206d6f726520656e747279746f74616c206f70657261746f7220636f756e742073686f756c64206861766520696e6372656173656420666f72207374616e6461726451756f72756d736f70657261746f722073686f756c64206861766520656d70747920696420616e64204e455645525f52454749535445524544207374617475736661696c656420746f20616464206f70657261746f722077656967687420746f206f70657261746f7220616e6420746f74616c207374616b6520696e20656163682071756f72756d746f74616c206f70657261746f7220636f756e742073686f756c6420686176652064656372656173656420666f7220656163682071756f72756d5f636f6e66696752616e643a20696e76616c6964205f7573657254797065732c206e6f20666c616773207061737365646f70657261746f722073686f756c64207374696c6c206861766520612072656769737465726564207075626b65796f70657261746f72496e666f207374617475732073686f756c64206265204445524547495354455245446f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420746f20656163682071756f72756d2061706b6f70657261746f72207075626b65792073686f756c642068617665206265656e20737562747261637465642066726f6d20656163682071756f72756d2061706b6f70657261746f72206c6973742073686f756c642068617665206f6e65206d6f726520656e74727920696e207374616e6461726451756f72756d736f70657261746f72496e666f2073686f756c64207374696c6c2068617665206f70657261746f724964885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f6e657752616e646f6d4f70657261746f723a206f70657261746f722073686f756c6420626520726567697374657265646f70657261746f722073686f756c64206861766520726567697374657265642061207075626b65796f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420616e6420636875726e6564206f70657261746f72207075626b6579732073686f756c642068617665206265656e2072656d6f7665642066726f6d2061706b735f636f6e66696752616e643a20696e76616c6964206e756d51756f72756d732c206e6f20666c616773207061737365645f676574436875726e546172676574733a206e6f6e2d66756c6c2071756f72756d2063616e6e6f7420626520636875726e65646f70657261746f7220646964206e6f7420646572656769737465722066726f6d20616c6c2071756f72756d73636875726e6564206f70657261746f72496e666f2073686f756c64207374696c6c2068617665206f70657261746f7249646173736572745f536e61705f436875726e65645f51756f72756d41706b3a20696e707574206c656e677468206d69736d617463686173736572745f536e61705f5265706c616365645f4f70657261746f724c697374456e74726965733a20696e707574206c656e677468206d69736d61746368b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a86661696c656420746f2072656d6f7665206f70657261746f72207765696768742066726f6d20746f74616c207374616b6520666f7220656163682071756f72756d6f70657261746f7220646964206e6f7420726567697374657220666f7220616c6c2071756f72756d736f70657261746f722073686f756c64206e6f74206861766520616e79206269747320696e206269746d61706661696c656420746f20616464206f70657261746f722077656967687420746f206f70657261746f7220616e6420746f74616c207374616b6520696e207374616e6461726451756f72756d7363757272656e74206f70657261746f72206269746d61702073686f756c6420696e636c7564652071756f72756d736f70657261746f722073686f756c642068617665206174206c6561737420746865206d696e696d756d207374616b6520696e20656163682071756f72756d6f70657261746f72496e666f207374617475732073686f756c6420626520524547495354455245446f70657261746f722073686f756c64206265207265676973746572656420746f204156536f70657261746f722073686f756c64206e6f74206265207265676973746572656420746f2074686520415653a2646970667358221220674039b57ecdf8a6c2704d76bd7f636956d1812d6a9b44c20096eb4cb214294364736f6c634300080c00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@\x81\x90R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\0\x80Q` b\x04\x14B\x839\x81Q\x91R`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x81\x17\x90\x92U`2\x80T0\x90\x83\x16\x17\x90U`3\x80T\x90\x91\x16s\xBE\xB9\x86N=j\x1B\xA4N\x13\x1AF/c(\xF2\xD1\xD6\xD5M\x17\x90U\x7F\xA3\xE2\xA0\xC4\xCE k\x9Cfy\xACca\xC04\xF3\x1C\x88D\xAE1\x04\x10\x8FG\xED\x8CA:\xCF32`4\x81\x90U`\x01b^y\xB7`\xE0\x1B\x03\x19\x83R`\x84R\x90c\xFF\xA1\x86I\x90`\xA4\x90` \x90`$\x81\x86Z\xFA\x15\x80\x15b\0\0\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF3\x91\x90b\0\x0B\nV[`5\x80T`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90U`6\x80Tsi\x15\xA6xw\xA1x\xD5\x12\x9A(\xD2\xAF\x87\x1A\xC1\xFC\xEB?\xD3\x92\x16\x91\x90\x91\x17\x90U`\0`=\x81\x90U`CU4\x80\x15b\0\x01JW`\0\x80\xFD[P`\0[b\0\x01[`\x05\x80b\0\x0BRV[c\xFF\xFF\xFF\xFF\x16\x81\x10\x15b\0\x03XWb\0\x01sb\0\t\xFBV[`\0b\0\x01\x82\x83`\x01b\0\x0B}V[`@Q` \x01b\0\x01\x95\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1C\x90Pb\0\x01\xDE\x81b\0\x01\xCAb\0\x03_` \x1Bb\0,\xF8\x17` \x1CV[b\0\x03\x88` \x1Bb\0-!\x17\x90\x91\x90` \x1CV[\x82` \x01\x81\x90RPb\0\x01\xFC\x81b\0\x04(` \x1Bb\0\x172\x17` \x1CV[`@\x83\x01\x90\x81R`>\x80T`\x01\x81\x81\x01\x90\x92U\x7F\x8D\x80\rf\x14\xD3^\xEDss>\xE4S\x16J;H\x07n\xB3\x13\x8FFj\xDE\xEB\x9D\xEC{\xB3\x1Fp\x01\x83\x90U`?\x80T\x91\x82\x01\x81U`\0R\x83Q\x80Q`\x08\x90\x92\x02\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFD\x81\x01\x92\x83U` \x91\x82\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFE\x82\x01U\x81\x86\x01Q\x80Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFF\x83\x01U\x90\x91\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\0\x82\x01U\x91Q\x80Q\x85\x93\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\x01\x01\x90b\0\x03#\x90\x82\x90`\x02b\0\nPV[P` \x82\x01Qb\0\x03;\x90`\x02\x80\x84\x01\x91\x90b\0\nPV[PPPPPPP\x80\x80b\0\x03O\x90b\0\x0B\x98V[\x91PPb\0\x01NV[Pb\0\r\xC3V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x03\xA6b\0\n\x93V[\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\x15b\0\x03\xDBWb\0\x03\xDDV[\xFE[P\x80b\0\x04 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[b\0\x042b\0\n\xB1V[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x04JW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x04\x93Wb\0\x04\x93b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x04\xD0Wb\0\x04\xD0b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7Ftest/ffi/go/g2mul.go\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81`\x02\x81Q\x81\x10b\0\x05'Wb\0\x05'b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RPb\0\x05H\x83b\0\x08\xDE` \x1Bb\0-\xC2\x17` \x1CV[\x81`\x03\x81Q\x81\x10b\0\x05^Wb\0\x05^b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x05\x99Wb\0\x05\x99b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90`\0\x80Q` b\x04\x14B\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x05\xDB\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x06%\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x06=\x91\x90b\0\rKV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x06zWb\0\x06zb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x04\x14B\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x06\xB9\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x06\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\x03\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\x1B\x91\x90b\0\rKV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x07NWb\0\x07Nb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x04\x14B\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x07\x8D\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\xD7\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\xEF\x91\x90b\0\rKV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x08/Wb\0\x08/b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x04\x14B\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x08n\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x08\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x08\xB8\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x08\xD0\x91\x90b\0\rKV[` \x84\x01QRP\x90\x92\x91PPV[``\x81b\0\t\x03WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0\t3W\x80b\0\t\x1A\x81b\0\x0B\x98V[\x91Pb\0\t+\x90P`\n\x83b\0\r{V[\x91Pb\0\t\x07V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\tPWb\0\tPb\0\x0B\xCCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\t{W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0\t\xF3Wb\0\t\x93`\x01\x83b\0\r\x92V[\x91Pb\0\t\xA2`\n\x86b\0\r\xACV[b\0\t\xAF\x90`0b\0\x0B}V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0\t\xC7Wb\0\t\xC7b\0\x0B\xB6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0\t\xEB`\n\x86b\0\r{V[\x94Pb\0\t\x7FV[\x94\x93PPPPV[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\n<`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\nKb\0\n\xB1V[\x90R\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\n\x81W\x91` \x02\x82\x01[\x82\x81\x11\x15b\0\n\x81W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\ndV[Pb\0\n\x8F\x92\x91Pb\0\n\xD5V[P\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80b\0\n\xC6b\0\n\xECV[\x81R` \x01b\0\nKb\0\n\xECV[[\x80\x82\x11\x15b\0\n\x8FW`\0\x81U`\x01\x01b\0\n\xD6V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0\x0B\x1DW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0B5W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15b\0\x0BtWb\0\x0Btb\0\x0B^<#\x14b\0\x02;W\x80c?r\x86\xF4\x14b\0\x02EW\x80cf\xD9\xA9\xA0\x14b\0\x02OW`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01bW\x80c\n\x92T\xE4\x14b\0\x01\x93W\x80c\x13\x1E/\x18\x14b\0\x01\x9FW\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xC5W\x80c*\xDE8\x80\x14b\0\x01\xDEW[`\0\x80\xFD[`5Tb\0\x01v\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[b\0\x01\x9Db\0\x032V[\0[b\0\x01\xB6b\0\x01\xB06`\x04b\0\xAD\xFBV[b\0\x172V[`@Qb\0\x01\x8A\x91\x90b\0\xAE[V[b\0\x01\xCFb\0\x1B\xE8V[`@Qb\0\x01\x8A\x91\x90b\0\xAE\xB1V[b\0\x01\xE8b\0\x1CLV[`@Qb\0\x01\x8A\x91\x90b\0\xAF#V[b\0\x02\x01`4T\x81V[`@Q\x90\x81R` \x01b\0\x01\x8AV[b\0\x01\x9Db\0\x02!6`\x04b\0\xAF\xE9V[b\0\x1D\x9AV[`.Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xCFb\0 \x84V[b\0\x01\xCFb\0 \xE6V[b\0\x02Yb\0!HV[`@Qb\0\x01\x8A\x91\x90b\0\xB0\x10V[`\x1ETb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\x9Ab\0\"2V[`@Qb\0\x01\x8A\x91\x90b\0\xB0\xC7V[b\0\x02Yb\0#\x0CV[`3Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\x9Db\0\x02\xD86`\x04b\0\xAF\xE9V[b\0#\xF6V[b\0\x02\x9Ab\0'\xE0V[b\0\x02\xF2b\0(\xBAV[`@Q\x90\x15\x15\x81R` \x01b\0\x01\x8AV[b\0\x01\x9Db\0\x03\x146`\x04b\0\xAF\xE9V[b\0)\xF1V[b\0\x01\xCFb\0,\x96V[`\x07Tb\0\x02\xF2\x90`\xFF\x16\x81V[`@Qb\0\x03@\x90b\0\xAB\x17V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03]W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x03\xB9Wb\0\x03\xB9b\0\xB1CV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x03\xEB\x90b\0\xAB%V[b\0\x03\xF8\x92\x91\x90b\0\xB1YV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\x15W=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x04G\x90b\0\xAB3V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04dW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x04u\x90b\0\xAB@V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\x92W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x04\xC1\x90b\0\xABNV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xDEW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\x13\x90b\0\xAB\\V[b\0\x05 \x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05=W=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05r\x90b\0\xAB\\V[b\0\x05\x7F\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\x9CW=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xD1\x90b\0\xAB\\V[b\0\x05\xDE\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x060\x90b\0\xAB\\V[b\0\x06=\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06ZW=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06\x8F\x90b\0\xAB\\V[b\0\x06\x9C\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xB9W=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x06\xF7\x90b\0\xABjV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07;W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07i\x90b\0\xABxV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\x96W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x07\xDA\x90b\0\xAB\x86V[`\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\x08\x17W=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08I\x90b\0\xAB\x94V[`\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\x08\x86W=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xB1\x90b\0\xAB\xA2V[b\0\x08\xBE\x92\x91\x90b\0\xB1\xAEV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\xDBW=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\t\x1B\x90b\0\xAB\xB0V[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tgW=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\t\x8B\x90b\0\xAB\xBEV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\xB8W=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\n\x1E\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0\xB1\xFAV[`@\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\ng\x93\x92\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\x97W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B*\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0BEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0BZW=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\xE6\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\x01W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\x16W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0C\xAC\x93\x91\x16\x91\x8A\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\xC7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\xDCW=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\rh\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r\x98W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\r\xB9\x91Pb\0\xAB\xCCV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\xE6W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0E\xACW`\0b\0\x0E!\x82b\0-\xC2V[\x90P`\0\x81`@Q` \x01b\0\x0E8\x91\x90b\0\xB2\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E^\x91\x90b\0\xB2\xC7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0E\x93\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0.\xDFV[PPP\x80\x80b\0\x0E\xA3\x90b\0\xB3\nV[\x91PPb\0\x0E\nV[P`@Qb\0\x0E\xBB\x90b\0\xAB\xDAV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0E\xD8W=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0F7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0FLW=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x0Fo\x90b\0\xAB\\V[b\0\x0F|\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\x99W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0F\xCE\x90b\0\xAB\\V[b\0\x0F\xDB\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\xF8W=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10-\x90b\0\xAB\\V[b\0\x10:\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10WW=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\x8C\x90b\0\xAB\\V[b\0\x10\x99\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\xB6W=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\xEB\x90b\0\xAB\\V[b\0\x10\xF8\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\x15W=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x11qW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11\x86W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x11\xB0\x90b\0\xAB\xE8V[b\0\x11\xBD\x92\x91\x90b\0\xB1\xAEV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xDAW=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xFE\x90b\0\xAB\xF6V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12+W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x12O\x90b\0\xAC\x04V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12|W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x12\xAE\x90b\0\xAC\x12V[`\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\x12\xEBW=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\x99\xA8\x8E\xC4\x92b\0\x13&\x92\x16\x90\x88\x90`\x04\x01b\0\xB1\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13VW=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x13\x93\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xB1\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xC3W=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x14\0\x92\x90\x91\x16\x90\x86\x90`\x04\x01b\0\xB1\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x140W=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x14m\x92\x90\x91\x16\x90\x85\x90`\x04\x01b\0\xB1\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\x9DW=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15\0W=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x158\x90b\0\xAC 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\x15}W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x16\x08V[`@\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\x15\xDAW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x16>V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16(W\x90P[P`@Q`$\x01b\0\x16X\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0\xB4\x0BV[`@\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\x16\xA1\x93\x92\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16\xBCW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16\xD1W=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x16\xE3\x90b\0\xAC.V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x17\0W=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x17\x83b\0-\xC2V[\x81`\x03\x81Q\x81\x10b\0\x18TWb\0\x18Tb\0\xB1CV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x18\x8FWb\0\x18\x8Fb\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x18\xD6\x90\x85\x90`\x04\x01b\0\xB0\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\xF6W=`\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\xB5\xA0V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x198\x91\x90b\0\xB5\xEDV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x19uWb\0\x19ub\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x19\xB9\x90\x85\x90`\x04\x01b\0\xB0\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x03\x91\x90\x81\x01\x90b\0\xB5\xA0V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\x1B\x91\x90b\0\xB5\xEDV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x1ANWb\0\x1ANb\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1A\x92\x90\x85\x90`\x04\x01b\0\xB0\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1A\xB2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\xDC\x91\x90\x81\x01\x90b\0\xB5\xA0V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\xF4\x91\x90b\0\xB5\xEDV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1B4Wb\0\x1B4b\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1Bx\x90\x85\x90`\x04\x01b\0\xB0\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B\x98W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1B\xC2\x91\x90\x81\x01\x90b\0\xB5\xA0V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\xDA\x91\x90b\0\xB5\xEDV[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1DyW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1C\xE5\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1D\x13\x90b\0\xB6\x07V[\x80\x15b\0\x1DdW\x80`\x1F\x10b\0\x1D8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1DdV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1DFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\xC3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1CpV[PPPP\x90P\x90V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0\x1D\xCA\x91\x83\x91b\x002\x0BV[`\0b\0\x1D\xD6b\0:\xADV[\x90P`\0`B\x80Tb\0\x1D\xE9\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1E\x17\x90b\0\xB6\x07V[\x80\x15b\0\x1EhW\x80`\x1F\x10b\0\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1F,W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1FAW=`\0\x80>=`\0\xFD[Pb\0\x1F\x84\x92P\x85\x91P\x83\x90P\x84`\0[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\x1F}W` \x82\x01\x81\x806\x837\x01\x90P[Pb\0C\x8CV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xCAO-\x97\x90b\0\x1F\xB2\x90\x85\x90`\x04\x01b\0\xB6\xABV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1F\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1F\xE2W=`\0\x80>=`\0\xFD[PPPPb\0\x1F\xF2\x83\x83b\0G\xBBV[b\0\x1F\xFD\x83b\0ILV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\x821\xB5L\x90b\0 +\x90\x85\x90`\x04\x01b\0\xB6\xABV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0 KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0 q\x91\x90b\0\xB5\xEDV[Pb\0 ~\x83\x83b\0I\xFCV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\"\x19W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0!\xDAW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0!lV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\"x\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\"\xA6\x90b\0\xB6\x07V[\x80\x15b\0\"\xF7W\x80`\x1F\x10b\0\"\xCBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\"\xF7V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\"\xD9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\"VV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0#\xDDW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0#\x9EW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0#0V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0$&\x91\x83\x91b\x002\x0BV[`\0b\0$2b\0:\xADV[\x90P`\0`B\x80Tb\0$E\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0$s\x90b\0\xB6\x07V[\x80\x15b\0$\xC4W\x80`\x1F\x10b\0$\x98Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0$\xC4V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0$\xA6W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P`\0b\0$\xEF\x83\x83`\0`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x1E\x93Wb\0\x1E\x93b\0\xB1-V[\x90Pb\0$\xFC\x83b\0B\xBBV[`@\x80Q`\0\x81R` \x81\x01\x91\x82\x90RcR\xFBf\r`\xE1\x1B\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xA5\xF6\xCC\x1A\x90b\0%;\x90\x85\x90\x85\x90`$\x81\x01b\0\xB6>V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0%VW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0%kW=`\0\x80>=`\0\xFD[Pb\0%\x81\x92P\x85\x91P\x83\x90P\x84`\0b\0\x1FRV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xCAO-\x97\x90b\0%\xAF\x90\x85\x90`\x04\x01b\0\xB6\xABV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0%\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0%\xDFW=`\0\x80>=`\0\xFD[PPPPb\0%\xEF\x83\x83b\0G\xBBV[b\0%\xFA\x83b\0ILV[`\0[\x81Q\x81\x10\x15b\0'ZW`\0\x82\x82\x81Q\x81\x10b\0&\x1EWb\0&\x1Eb\0\xB1CV[` \x02` \x01\x01Q\x90P`\0`\x01`\x01`\x01`@\x1B\x03\x81\x11\x15b\0&FWb\0&Fb\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0&qW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x84\x83\x81Q\x81\x10b\0&\x89Wb\0&\x89b\0\xB1CV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\0\x81Q\x81\x10b\0&\xAAWb\0&\xAAb\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0&\xEF\x90\x84\x90`\x04\x01b\0\xB6\xABV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\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\xB5\xEDV[Pb\0'B\x82\x82b\0I\xFCV[PP\x80\x80b\0'Q\x90b\0\xB3\nV[\x91PPb\0%\xFDV[P`@\x80Q`\0\x81R` \x81\x01\x91\x82\x90RcR\xFBf\r`\xE1\x1B\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xA5\xF6\xCC\x1A\x90b\0'\x9A\x90\x85\x90\x85\x90`$\x81\x01b\0\xB6>V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'\xCAW=`\0\x80>=`\0\xFD[Pb\0 ~\x92P\x85\x91P\x83\x90P\x84`\0b\0\x1FRV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0(&\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0(T\x90b\0\xB6\x07V[\x80\x15b\0(\xA5W\x80`\x1F\x10b\0(yWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0(\xA5V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0(\x87W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0(\x04V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0(\xDDWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0)\xECW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0)n\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0\xB6\xC0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0)\x8A\x91b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0)\xC9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0)\xCEV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0)\xE8\x91\x90b\0\xB7\x11V[\x91PP[\x91\x90PV[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0*!\x91\x83\x91b\x002\x0BV[`\0b\0*-b\0:\xADV[\x90P`\0`B\x80Tb\0*@\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0*n\x90b\0\xB6\x07V[\x80\x15b\0*\xBFW\x80`\x1F\x10b\0*\x93Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0*\xBFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0*\xA1W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P`\0b\0*\xD3\x82b\0K\xD1V[\x90P`\0b\0+\x02b\0*\xFCb\0*\xEA\x84b\0M\xA1V[b\0*\xF5\x86b\0M\xA1V[\x90b\0O4V[b\0O?V[\x90P`\0b\0+\x13\x85\x84\x84b\0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0+mW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0+\x82W=`\0\x80>=`\0\xFD[PPPPb\0+\x94\x85\x82\x85\x85b\0C\x8CV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\xCAO-\x97\x90b\0+\xC2\x90\x87\x90`\x04\x01b\0\xB6\xABV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0+\xDDW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0+\xF2W=`\0\x80>=`\0\xFD[PPPPb\0,\x02\x85\x85b\0G\xBBV[b\0,\r\x85b\0ILV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\x821\xB5L\x90b\0,;\x90\x87\x90`\x04\x01b\0\xB6\xABV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0,[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0,\x81\x91\x90b\0\xB5\xEDV[Pb\0,\x8E\x85\x85b\0I\xFCV[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0-?b\0\xACeV[\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\x15b\0-tWb\0-vV[\xFE[P\x80b\0-\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\0-\xE7WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0.\x17W\x80b\0-\xFE\x81b\0\xB3\nV[\x91Pb\0.\x0F\x90P`\n\x83b\0\xB7KV[\x91Pb\0-\xEBV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0.4Wb\0.4b\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0._W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0.\xD7Wb\0.w`\x01\x83b\0\xB7bV[\x91Pb\0.\x86`\n\x86b\0\xB7|V[b\0.\x93\x90`0b\0\xB7\x93V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0.\xABWb\0.\xABb\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0.\xCF`\n\x86b\0\xB7KV[\x94Pb\0.cV[\x94\x93PPPPV[`\0\x84\x84\x84\x84`@Qb\0.\xF3\x90b\0\xAC\x83V[b\0/\x02\x94\x93\x92\x91\x90b\0\xB7\xAEV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0/\x1FW=`\0\x80>=`\0\xFD[P`'T`1T`!T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92cH\\\xC9U`\xE0\x1B\x92b\0/_\x92\x88\x92\x90\x91\x16\x90`$\x01b\0\xB1\xAEV[`@\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\x90Qb\0/\x9E\x90b\0\xAB\\V[b\0/\xAC\x93\x92\x91\x90b\0\xB2YV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0/\xC9W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\x000*Wb\x000*b\0\xB1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\x000\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\x000\xB6\x91\x90b\0\xB8\x0FV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x000\xF8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x001\rW=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\x001E\x90\x85\x90\x85\x90`\x04\x01b\0\xB8/V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x001`W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x001uW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[`@\x80Q\x81\x81R`\x1F\x81\x83\x01R\x7F_configRand: set random seed to\0``\x82\x01Rb\xFF\xFF\xFF\x85\x16` \x82\x01R\x90Q`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`@Q`\x01`\x01`\xE8\x1B\x03\x19`\xE8\x85\x90\x1B\x16` \x82\x01R`#\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\x002\xA4\x82b\0P\x1AV[\x80Qb\x002\xBA\x91`8\x91` \x90\x91\x01\x90b\0\xAC\x91V[P\x80Qb\x002\xC8\x90b\0P\x1AV[\x80Qb\x002\xDE\x91`9\x91` \x90\x91\x01\x90b\0\xAC\x91V[Pb\x002\xEE\x81` \x01Qb\0P\x1AV[\x80Qb\x003\x04\x91`:\x91` \x90\x91\x01\x90b\0\xAC\x91V[Pb\x003\x14\x81`@\x01Qb\0P\x1AV[\x80Qb\x003*\x91`;\x91` \x90\x91\x01\x90b\0\xAC\x91V[Pb\x003:\x81``\x01Qb\0P\x1AV[\x80Qb\x003P\x91`<\x91` \x90\x91\x01\x90b\0\xAC\x91V[Pb\x003\x8A`8\x80Tb\x003d\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x04\0\xDD`0\x919b\0P~V[b\x003\xC3`9\x80Tb\x003\x9D\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x04\x03!`0\x919b\0P~V[b\x003\xFC`:\x80Tb\x003\xD6\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xFF\x89`3\x919b\0P~V[b\x0045`;\x80Tb\x004\x0F\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xFE\xA7`2\x919b\0P~V[b\x004n`<\x80Tb\x004H\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xFD\xAE`/\x919b\0P~V[b\x004xb\0P\xB7V[`@\x81\x90Ub\x004\x8E\x90`\x01\x90\x81\x90\x1Bb\0\xB7bV[`A\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\x004\xB8\x90b\0O?V[\x80Qb\x004\xCE\x91`B\x91` \x90\x91\x01\x90b\0\xAC\x91V[P`@\x80T\x81Q\x82\x81R`0\x92\x81\x01\x92\x90\x92R\x7F_configRand: number of quorums b``\x83\x01Ro\x19Z[\x99\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`\x82\x1B`\x80\x83\x01R` \x82\x01R`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x90`\xA0\x01`@Q\x80\x91\x03\x90\xA1`@\x80Q``\x81\x01\x82R`\x05\x81Ra:\x98` \x82\x01R`\x96\x91\x81\x01\x91\x90\x91R`\0[`@T\x81\x10\x15b\x007\xE0W`\0b\x005zb\0Q\xF6V[\x90P`\0b\x005\x88b\0S\xF3V[\x90P`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x83`@Qb\x005\xE3\x91\x90`@\x80\x82R`\x1C\x90\x82\x01R\x7F_configRand: creating quorum\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x83Q`@Q`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x91b\x006B\x91`@\x80\x82R`\x14\x90\x82\x01Rs\x0BH\x13X^\x08\x1B\xDC\x19\\\x98]\x1B\xDC\x88\x18\xDB\xDD[\x9D`b\x1B``\x82\x01Rc\xFF\xFF\xFF\xFF\x91\x90\x91\x16` \x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x82Q`@Qb\x006\xA4\x91\x90`@\x80\x82R`\x1B\x90\x82\x01R\x7F- Num strategies considered\0\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\x0F\x81\x83\x01Rn- Minimum stake`\x88\x1B``\x82\x01R`\x01`\x01``\x1B\x03\x83\x16` \x82\x01R\x90Q`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`\x1CT`3T`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x007EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x007ZW=`\0\x80>=`\0\xFD[PP`(T`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xD7[L\x88\x91Pb\x007\x94\x90\x87\x90\x85\x90\x87\x90`\x04\x01b\0\xB8\x8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x007\xAFW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x007\xC4W=`\0\x80>=`\0\xFD[PPPPPP\x80\x80b\x007\xD7\x90b\0\xB3\nV[\x91PPb\x005cV[P`\0b\x007\xEE\x82b\0T1V[\x90P`\0\x80Q` b\x03\xFC=\x839\x81Q\x91Rb\08\x0B\x82b\0-\xC2V[`@Q` \x01b\08\x1D\x91\x90b\0\xB8\xE2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\089\x91b\0\xB6\xABV[`@Q\x80\x91\x03\x90\xA1`\0[\x81\x81\x10\x15b\09\xA3W`\0b\08Yb\0:\xADV[`@Qc \x8CmS`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x821\xB5L\x90b\08\x8B\x90`B\x90`\x04\x01b\0\xB9IV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\08\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\08\xD1\x91\x90b\0\xB5\xEDV[P`\0[`B\x80Tb\08\xE4\x90b\0\xB6\x07V[\x90P\x81\x10\x15b\09\x8BW`\0`B\x82\x81Tb\09\0\x90b\0\xB6\x07V[\x81\x10b\09\x11Wb\09\x11b\0\xB1CV[\x81T`\x01\x16\x15b\091W\x90`\0R` `\0 \x90` \x91\x82\x82\x04\x01\x91\x90\x06[\x90T\x90\x1A`\x01`\xF8\x1B\x02`\xF8\x1C`\0\x90\x81R`D` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90UP\x80b\09\x82\x81b\0\xB3\nV[\x91PPb\08\xD5V[PP\x80\x80b\09\x9A\x90b\0\xB3\nV[\x91PPb\08DV[P`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\09\xEB\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0:O\x90` \x80\x82R`$\x90\x82\x01R\x7F_configRand complete; starting t`@\x82\x01Rcest!`\xE0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0:\x9E\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0\x80b\0:\xBD`CTb\0-\xC2V[`@Q` \x01b\0:\xCF\x91\x90b\0\xB9\xF9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R`C\x80T\x91\x92P`\0b\0:\xF3\x83b\0\xB3\nV[\x91\x90PUP`\0\x80`\0b\0;\x08\x84b\0T\xFCV[\x92P\x92P\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16c*4\xAD\xE8`@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;JW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0;_W=`\0\x80>=`\0\xFD[PP`@Qc\r\xA6m\xEB`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x92Pcm3oX\x91Pb\0;\x93\x90\x85\x90\x85\x90`\x04\x01b\0\xBA+V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0;\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0;\xC3W=`\0\x80>=`\0\xFD[PP`\x1DT`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rb\0<]\x94P\x90\x91\x16\x91Pcmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0<\x17W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0<=\x91\x90b\0\xB7\x11V[`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x04\x02b`1\x919b\0P~V[P\x90\x93\x92PPPV[```\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x84`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0<\xB7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0<\xE1\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0<\xF0\x91\x90b\0\xBATV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91Rb\0=\x13\x84b\0V\x98V[`@Qb\0=\"\x91\x90b\0\xBA\xA9V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91Rb\0=E\x83b\0V\x98V[`@Qb\0=T\x91\x90b\0\xBA\xF2V[`@Q\x80\x91\x03\x90\xA1b\0=g\x82b\0W\xA9V[`\0\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0=\x85Wb\0=\x85b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0=\xAFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15b\0B\xB0W`\0\x85\x82\x81Q\x81\x10b\0=\xD6Wb\0=\xD6b\0\xB1CV[\x01` \x01Q`(T`@Qc\xE6W\x97\xAD`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE6W\x97\xAD\x90`$\x01```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0>0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0>V\x91\x90b\0\xBBmV[`,T`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x85\x16`\x04\x82\x01R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0>\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0>\xCE\x91\x90b\0\xBB\xE2V[\x90Pb\0?\x08\x82`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x82c\xFF\xFF\xFF\xFF\x16\x10\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x04\x03Q`3\x919b\0P~V[b\0?\x13\x83b\0Y\xECV[\x85\x85\x81Q\x81\x10b\0?(Wb\0?(b\0\xB1CV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91Rb\0?f\x84`\xFF\x16b\0-\xC2V[`@Q` \x01b\0?x\x91\x90b\0\xBC\0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x86\x86\x81Q\x81\x10b\0?\x9CWb\0?\x9Cb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0?\xE2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0@\x0C\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0@\x1C\x92\x91\x90b\0\xBCcV[`@Q\x80\x91\x03\x90\xA1`+T`@Qc\xD5\xEC\xCC\x05`\xE0\x1B\x81R`\xFF\x85\x16`\x04\x82\x01R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD5\xEC\xCC\x05\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0@qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0@\x97\x91\x90b\0\xBC\x8CV[`+T\x87Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90\x89\x90\x89\x90\x81\x10b\0@\xC9Wb\0@\xC9b\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0A\x0FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0A5\x91\x90b\0\xB5\xEDV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x88\x16`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0A{W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0A\xA1\x91\x90b\0\xBC\x8CV[\x90P[b\0A\xB0\x81\x85b\0[qV[`\x01`\x01``\x1B\x03\x16b\0A\xC5\x86\x8Db\0[\x99V[`\x01`\x01``\x1B\x03\x16\x11\x15\x80b\0B\x10WPb\0A\xFAb\0A\xE7\x86\x8Db\0[\x99V[b\0A\xF3\x90\x84b\0\xBC\xB7V[\x85b\0\\\x13V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10\x15[\x15b\0B\x95W`\0\x80b\0B$\x8Db\0\\/V[`@Qc\r\xA6m\xEB`\xE3\x1B\x81R\x91\x93P\x91P`\x01`\x01`\xA0\x1B\x03\x8E\x16\x90cm3oX\x90b\0BY\x90\x85\x90\x85\x90`\x04\x01b\0\xBA+V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0BtW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0B\x89W=`\0\x80>=`\0\xFD[PPPPPPb\0A\xA4V[PPPPP\x80\x80b\0B\xA7\x90b\0\xB3\nV[\x91PPb\0=\xB5V[P\x90P[\x93\x92PPPV[b\0B\xF5`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01u\x18\xDA\x19X\xDA\xD7\xD3\x99]\x99\\\x97\xD4\x99Y\xDA\\\xDD\x19\\\x99Y`R\x1B\x81RP\x82b\0^\x9DV[b\0C\x1A\x81`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x04\0\"`9\x919b\0_RV[b\0C?\x81`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x03\xFB\xBC`*\x919b\0_\x9EV[b\0Cd\x81`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xFD\xDD`(\x919b\0`\xA4V[b\0C\x89\x81`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x04\x06\r`,\x919b\0a\xC1V[PV[b\0C\xC3`@Q\x80`@\x01`@R\x80`\x13\x81R` \x01rcheck_Churned_State`h\x1B\x81RP\x85b\0^\x9DV[`\0b\0C\xE7b\0*\xFCb\0C\xD8\x84b\0M\xA1V[b\0C\xE3\x86b\0M\xA1V[\x17\x90V[\x90Pb\0D\x0E\x85`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFFf`#\x919b\0b_V[b\0D3\x85`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x04\x05\xC1`(\x919b\0cLV[b\0DY\x85\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x04\x05U`.\x919b\0c\xDCV[b\0D\x7F\x85\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x04\x04\xB5`)\x919b\0d\xFEV[b\0D\xA4\x85`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x04\x02\x93`(\x919b\0e\xBFV[b\0D\xCA\x85\x83`@Q\x80``\x01`@R\x80`>\x81R` \x01b\x03\xFC]`>\x919b\0g\xE8V[b\0D\xF1\x85\x85\x85`@Q\x80`\xA0\x01`@R\x80`f\x81R` \x01b\x04\x02\xBB`f\x919b\0i(V[b\0E\x17\x85\x82`@Q\x80``\x01`@R\x80`>\x81R` \x01b\x04\x05\x83`>\x919b\0k\x15V[b\0E=\x85\x83`@Q\x80`\x80\x01`@R\x80`L\x81R` \x01b\x04\x05\t`L\x919b\0l\xDDV[b\0Ed\x85\x85\x85`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01b\x03\xFD-`H\x919b\0l\xFBV[b\0E\x89\x82`@Q\x80``\x01`@R\x80`>\x81R` \x01b\x03\xFF\xE4`>\x919b\0o\x9EV[b\0E\xAE\x83`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xFBO`:\x919b\0p=V[b\0E\xD4\x85\x83`@Q\x80``\x01`@R\x80`;\x81R` \x01b\x04\x01\xDE`;\x919b\0p\xCEV[b\0E\xFB\x85\x85\x85`@Q\x80`\x80\x01`@R\x80`W\x81R` \x01b\x03\xFB\xE6`W\x919b\0q\xBAV[b\0F \x85`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x04\x05\xE9`$\x919b\0s\x17V[`\0[\x84Q\x81\x10\x15b\0,\x8EW`\0\x85\x82\x81Q\x81\x10b\0FDWb\0FDb\0\xB1CV[` \x02` \x01\x01Q\x90P`\0`\x01`\x01`\x01`@\x1B\x03\x81\x11\x15b\0FlWb\0Flb\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0F\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x85\x83\x81Q\x81\x10b\0F\xAFWb\0F\xAFb\0\xB1CV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\0\x81Q\x81\x10b\0F\xD0Wb\0F\xD0b\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0G\x0C\x82`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x04\x03\xB0`1\x919b\0b_V[b\0G2\x82\x82`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xFF,`:\x919b\0s\xA5V[b\0GX\x82\x82`@Q\x80``\x01`@R\x80`7\x81R` \x01b\x03\xFC\xCD`7\x919b\0t\xF5V[b\0G}\x82`@Q\x80``\x01`@R\x80`6\x81R` \x01b\x03\xFEq`6\x919b\0e\xBFV[b\0G\xA3\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xFB\x89`3\x919b\0u\xBCV[PP\x80\x80b\0G\xB2\x90b\0\xB3\nV[\x91PPb\0F#V[b\0G\xF5`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01ucheck_Deregister_State`P\x1B\x81RP\x83b\0^\x9DV[b\0H\x1A\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x04\x02\x19`)\x919b\0b_V[b\0H@\x82\x82`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xFC\x9B`2\x919b\0s\xA5V[b\0Hf\x82\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x04\x03\x84`,\x919b\0t\xF5V[b\0H\x8B\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x04\x01\r`.\x919b\0e\xBFV[b\0H\xB1\x82\x82`@Q\x80``\x01`@R\x80`@\x81R` \x01b\x04\x01\x9E`@\x919b\0w\x01V[b\0H\xD7\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xFB\x89`3\x919b\0u\xBCV[b\0H\xFD\x82\x82`@Q\x80`\x80\x01`@R\x80`A\x81R` \x01b\x04\x04t`A\x919b\0x\x0EV[b\0I\"\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x04\0\xA3`:\x919b\0x\xDEV[b\0IH\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xFD\x04`)\x919b\0ypV[PPV[b\0I\x8D`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7Fcheck_CompleteDeregister_State\0\0\x81RP\x82b\0^\x9DV[b\0I\xB2\x81`@Q\x80``\x01`@R\x80`+\x81R` \x01b\x04\x04\xDE`+\x919b\0_\x9EV[b\0I\xD7\x81`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x04\x02\x19`)\x919b\0b_V[b\0Cd\x81`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x04\x01;`*\x919b\0z8V[b\0J4`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01scheck_Register_State``\x1B\x81RP\x83b\0^\x9DV[b\0JY\x82`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFFf`#\x919b\0b_V[b\0J~\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x04\x05\xC1`(\x919b\0cLV[b\0J\xA4\x82\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x04\x05U`.\x919b\0c\xDCV[b\0J\xCA\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x04\x04\xB5`)\x919b\0d\xFEV[b\0J\xEF\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x04\x02\x93`(\x919b\0e\xBFV[b\0K\x15\x82\x82`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x04\x01e`9\x919b\0g\xE8V[b\0K;\x82\x82`@Q\x80``\x01`@R\x80`>\x81R` \x01b\x04\x05\x83`>\x919b\0k\x15V[b\0Ka\x82\x82`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01b\x04\0[`H\x919b\0l\xDDV[b\0K\x86\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xFE7`:\x919b\0o\x9EV[b\0K\xAC\x82\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xFF\xBC`(\x919b\0p\xCEV[b\0IH\x82`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x04\x05\xE9`$\x919b\0s\x17V[``b\0K\xFD\x82Q`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xFE\xD9`3\x919b\0P~V[`\0\x80[\x83Q\x81\x10\x15b\0LiWb\0L\x15b\0z\xB8V[\x15b\0LTWb\0LQ\x84\x82\x81Q\x81\x10b\0L4Wb\0L4b\0\xB1CV[` \x91\x01\x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B`\x01`\x01`\xC0\x1B\x03\x84\x16\x17\x90V[\x91P[\x80b\0L`\x81b\0\xB3\nV[\x91PPb\0L\x01V[P`\x01`\x01`\xC0\x1B\x03\x81\x16b\0L\xB3Wb\0L\xB0\x83`\0\x81Q\x81\x10b\0L\x93Wb\0L\x93b\0\xB1CV[` \x91\x01\x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B`\x01`\x01`\xC0\x1B\x03\x83\x16\x17\x90V[\x90P[`\0b\0L\xC9\x82`\x01`\x01`\xC0\x1B\x03\x16b\0O?V[\x90P`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x84Q`@Qb\0M%\x91\x90`@\x80\x82R`\x1F\x90\x82\x01R\x7F_selectRand: input quorum count\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x81Q`@Qb\0M\x92\x91\x90`@\x80\x82R`\"\x90\x82\x01R\x7F_selectRand: selected quorum cou``\x82\x01Ra\x1B\x9D`\xF2\x1B`\x80\x82\x01R` \x81\x01\x91\x90\x91R`\xA0\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x93\x92PPPV[`\0a\x01\0\x82Q\x11\x15b\0N,W`@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\x01b\0-\xB1V[\x81Qb\0N;WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10b\0NTWb\0NTb\0\xB1CV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15b\0<]W\x84\x81\x81Q\x81\x10b\0N\x86Wb\0N\x86b\0\xB1CV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11b\0O\x1DW`@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\x01b\0-\xB1V[\x91\x81\x17\x91b\0O,\x81b\0\xB3\nV[\x90Pb\0NgV[\x80\x19\x82\x16[\x92\x91PPV[```\0\x80b\0OO\x84b\0z\xCEV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15b\0OmWb\0Omb\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0O\x98W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15b\0O\xB1WPa\x01\0\x81\x10[\x15b\0P\x10W`\x01\x81\x1B\x93P\x85\x84\x16\x15b\0O\xFDW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10b\0O\xDFWb\0O\xDFb\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[b\0P\x08\x81b\0\xB3\nV[\x90Pb\0O\x9FV[P\x90\x94\x93PPPPV[```\0[a\x01\0\x81\x10\x15b\0PxW`\x01\x81\x1B\x83\x81\x16\x15b\0PdW`@Qb\0PR\x90\x84\x90`\x01\x85\x1B`\xF8\x1B\x90` \x01b\0\xBC\xE5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x92P[Pb\0Pp\x81b\0\xB3\nV[\x90Pb\0P\x1FV[P\x91\x90PV[\x81b\0IHW`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x81`@Qb\0P\xA4\x91\x90b\0\xBD\x16V[`@Q\x80\x91\x03\x90\xA1b\0IH\x82b\0z\xFFV[`\0\x80b\0QW`9\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0P\xFB\x90b\0\xB6\x07V[\x80\x15b\0QLW\x80`\x1F\x10b\0Q Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0QLV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0Q.W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\0{fV[\x90P`\x01\x81\x14\x15b\0QkW`\x01\x91PP\x90V[`\x02\x81\x14\x15b\0Q}W`\x02\x91PP\x90V[`\x04\x81\x14\x15b\0Q\x9BWb\0Q\x95`\x03`\nb\0{\xCFV[\x91PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7F_randQuorumCount: flag not recog`D\x82\x01Rd\x1B\x9A^\x99Y`\xDA\x1B`d\x82\x01R`\x84\x01b\0-\xB1V[P\x90V[```\0b\0R\r`:\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x90P`\0`\x01\x82\x14\x15b\0R$WP`\x01b\0R\xFAV[`\x02\x82\x14\x15b\0R7WP`\x02b\0R\xFAV[`\x04\x82\x14\x15b\0RhW`/Tb\0R`\x90`\x03\x90b\0RZ\x90`\x01\x90b\0\xB7bV[b\0{\xCFV[\x90Pb\0R\xFAV[`\x08\x82\x14\x15b\0R{WP`\x0Fb\0R\xFAV[`\x10\x82\x14\x15b\0R\x8EWP`\x14b\0R\xFAV[` \x82\x14\x15b\0R\xA1WP`\x19b\0R\xFAV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7F_randStrategyCount: flag not rec`D\x82\x01Rf\x1B\xD9\xDB\x9A^\x99Y`\xCA\x1B`d\x82\x01R`\x84\x01b\0-\xB1V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0S\x17Wb\0S\x17b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0S^W\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0S6W\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0S\xEBW`@Q\x80`@\x01`@R\x80`/\x83\x81T\x81\x10b\0S\x8FWb\0S\x8Fb\0\xB1CV[`\0\x91\x82R` \x91\x82\x90 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x82Rg\r\xE0\xB6\xB3\xA7d\0\0\x91\x01R\x82Q\x83\x90\x83\x90\x81\x10b\0S\xCAWb\0S\xCAb\0\xB1CV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0S\xE2\x90b\0\xB3\nV[\x91PPb\0SdV[P\x93\x92PPPV[`\0\x80b\0T\t`;\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x90P`\x01\x81\x14\x15b\0T\x1DW`\0\x91PP\x90V[`\x02\x81\x14\x15b\0Q\x9BWb\x0FB@\x91PP\x90V[`\0\x80b\0TG`<\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x90P`\x01\x81\x14\x15b\0T\\WP`\0\x92\x91PPV[`\x02\x81\x14\x15b\0T\x8AWb\0B\xB4`\x01\x80\x85`\0\x01Qb\0T~\x91\x90b\0\xBDGV[c\xFF\xFF\xFF\xFF\x16b\0{\xCFV[`\x04\x81\x14\x15b\0T\xA0WPPQc\xFF\xFF\xFF\xFF\x16\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7F_randInitialOperators: flag not `D\x82\x01Ri\x1C\x99X\xDB\xD9\xDB\x9A^\x99Y`\xB2\x1B`d\x82\x01R`\x84\x01b\0-\xB1V[`\0``\x80`\0\x80b\0U\x0Eb\0|\x91V[\x91P\x91P`\0\x80b\0U(`8\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x90P`\x01\x81\x14\x15b\0UyW\x87\x84\x84`@Qb\0UE\x90b\0\xAD\x1CV[b\0US\x93\x92\x91\x90b\0\xBDoV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0UpW=`\0\x80>=`\0\xFD[P\x91Pb\0U\xE7V[`\x02\x81\x14\x15b\0U\xE7W\x87`@Q` \x01b\0U\x96\x91\x90b\0\xBD\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x97P\x87\x84\x84`@Qb\0U\xB8\x90b\0\xAD*V[b\0U\xC6\x93\x92\x91\x90b\0\xBDoV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0U\xE3W=`\0\x80>=`\0\xFD[P\x91P[`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0V6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0V`\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0Vo\x91\x90b\0\xBD\xF9V[`@Q\x80\x91\x03\x90\xA1`\0\x80b\0V\x85\x84b\0~bV[\x94\x9B\x90\x9AP\x93\x98P\x92\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15b\0W~W`\x01\x84Qb\0V\xD0\x91\x90b\0\xB7bV[\x81\x14\x15b\0W*W\x81b\0W\0\x85\x83\x81Q\x81\x10b\0V\xF2Wb\0V\xF2b\0\xB1CV[\x01` \x01Q`\xF8\x1Cb\0-\xC2V[`@Q` \x01b\0W\x13\x92\x91\x90b\0\xBEBV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pb\0WiV[\x81b\0WD\x85\x83\x81Q\x81\x10b\0V\xF2Wb\0V\xF2b\0\xB1CV[`@Q` \x01b\0WW\x92\x91\x90b\0\xBElV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80b\0Wu\x81b\0\xB3\nV[\x91PPb\0V\xB6V[P\x80`@Q` \x01b\0W\x92\x91\x90b\0\xBE\xACV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91Rb\0W\xC4\x82b\0V\x98V[`@Qb\0W\xD3\x91\x90b\0\xBE\xD3V[`@Q\x80\x91\x03\x90\xA1`\0[\x81Q\x81\x10\x15b\0IHW`\0\x82\x82\x81Q\x81\x10b\0W\xFFWb\0W\xFFb\0\xB1CV[\x01` \x01Q`(T`@Qc\xE6W\x97\xAD`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE6W\x97\xAD\x90`$\x01```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0XYW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0X\x7F\x91\x90b\0\xBBmV[Q\x90P[`,T`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01Rc\xFF\xFF\xFF\xFF\x83\x16\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0X\xD5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0X\xFB\x91\x90b\0\xBB\xE2V[c\xFF\xFF\xFF\xFF\x16\x10b\0Y\xD4W`\0b\0Y\x14\x83b\0Y\xECV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x83`\xF8\x1B\x81`\0\x81Q\x81\x10b\0YSWb\0YSb\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\xCAO-\x97\x90b\0Y\x98\x90\x84\x90`\x04\x01b\0\xB6\xABV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0Y\xB3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0Y\xC8W=`\0\x80>=`\0\xFD[PPPPPPb\0X\x83V[PP\x80\x80b\0Y\xE3\x90b\0\xB3\nV[\x91PPb\0W\xDEV[`,T`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x83\x16`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Z=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Zc\x91\x90b\0\xBB\xE2V[`,T\x90\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x12\xD1\xD7M\x85b\0Z\x8D\x84b\0T~`\x01\x88b\0\xBDGV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\xFF\x90\x92\x16`\x04\x83\x01Rc\xFF\xFF\xFF\xFF\x16`$\x82\x01R`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Z\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Z\xFC\x91\x90b\0\xBFAV[` \x01Q`*T`@Qc\x08\xF6b\x9D`\xE3\x1B\x81R`\x04\x81\x01\x83\x90R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cG\xB3\x14\xE8\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0[KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0.\xD7\x91\x90b\0\xB8\x0FV[` \x81\x01Q`\0\x90a'\x10\x90b\0[\x8D\x90a\xFF\xFF\x16\x85b\0\xBF\x7FV[b\0B\xB4\x91\x90b\0\xBF\xB1V[`+T`@Qb\xFC\xDB\xA7`\xE5\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`$\x83\x01R`\0\x92\x16\x90c\x1F\x9Bt\xE0\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0[\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0B\xB4\x91\x90b\0\xBC\x8CV[`@\x81\x01Q`\0\x90a'\x10\x90b\0[\x8D\x90a\xFF\xFF\x16\x85b\0\xBF\x7FV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\\TWb\0\\Tb\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\\~W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`/T\x90\x91P`\0\x90`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\\\xA2Wb\0\\\xA2b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\\\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x85`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0]\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0]H\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0]W\x91\x90b\0\xBF\xDAV[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0^\x92W`\0`/\x82\x81T\x81\x10b\0]\x85Wb\0]\x85b\0\xB1CV[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0]\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0]\xFE\x91\x90b\0\xB8\x0FV[\x90P`\0b\0^\x12bLK@`db\0\xC0-V[\x90Pb\0^!\x82\x8A\x83b\0\x80\xC7V[\x82\x86\x85\x81Q\x81\x10b\0^7Wb\0^7b\0\xB1CV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85\x85\x81Q\x81\x10b\0^mWb\0^mb\0\xB1CV[` \x02` \x01\x01\x81\x81RPPPPP\x80\x80b\0^\x89\x90b\0\xB3\nV[\x91PPb\0]bV[P\x90\x94\x90\x93P\x91PPV[`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R\x82\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0^\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0_\x17\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Q` \x01b\0_*\x92\x91\x90b\0\xC0OV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0_F\x91b\0\xB6\xABV[`@Q\x80\x91\x03\x90\xA1PPV[`\0b\0__\x83b\0\x80\xD6V[\x80Q\x90\x91Pb\0_r\x90`\0\x84b\0\x81ZV[b\0_\x99`\0\x82` \x01Q`\x02\x81\x11\x15b\0_\x91Wb\0_\x91b\0\xC0\xABV[\x14\x83b\0P~V[PPPV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x84`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0`\x03W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0`)\x91\x90b\0\xB5\xEDV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0`H\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0`fW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0`\x8C\x91\x90b\0\xC0\xC1V[\x90Pb\0_\x99`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x83b\0P~V[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x83\x92\x91\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0`\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0a\x16\x91\x90b\0\xC0\xECV[`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x93\x95P\x91\x93P`\0\x92\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0ahW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0a\x8E\x91\x90b\0\xB5\xEDV[\x90Pb\0a\x9E\x83`\0\x86b\0\x81\x96V[b\0a\xAC\x82`\0\x86b\0\x81\x96V[b\0a\xBA\x81`\0\x86b\0\x81ZV[PPPPPV[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0a\xFD\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xB1\xAEV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0b\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0bA\x91\x90b\0\xC1\x11V[\x90Pb\0_\x99`\0[\x82`\x01\x81\x11\x15b\0_\x91Wb\0_\x91b\0\xC0\xABV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0b\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0b\xC6\x91\x90b\0\xB5\xEDV[`(T`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0c\x17W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0c=\x91\x90b\0\xB5\xEDV[\x90Pb\0 ~\x82\x82\x85b\0\x81ZV[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0c\x98W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0c\xBE\x91\x90b\0\xC1DV[\x90Pb\0_\x99`\x01[\x82`\x02\x81\x11\x15b\0_\x91Wb\0_\x91b\0\xC0\xABV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0dAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0dg\x91\x90b\0\xB5\xEDV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0d\x86\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0d\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0d\xCA\x91\x90b\0\xC0\xC1V[\x90P`\0b\0d\xD9\x84b\0M\xA1V[\x90Pb\0a\xBAb\0d\xF7`\x01`\x01`\xC0\x1B\x03\x80\x84\x16\x90\x85\x16\x81\x16\x14\x90V[\x84b\0P~V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0e?W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0ee\x91\x90b\0\xB5\xEDV[\x90P`\0b\0et\x84b\0M\xA1V[\x90P`\0b\0e\x83\x83b\0\x81\xD2V[\x90P`\0b\0e\x92\x84b\0\x82CV[\x90Pb\0e\xB6`\x01`\x01`\xC0\x1B\x03\x82\x16\x84\x17\x83`\x01`\x01`\xC0\x1B\x03\x16\x14\x86b\0P~V[PPPPPPPV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0e\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0f%\x91\x90b\0\xC1bV[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x83\x92\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0fsW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0f\x99\x91\x90b\0\xC0\xECV[\x84Q`\0\x90\x81R` \x80\x87\x01Q\x90R`@\x81 \x92\x94P\x90\x92P\x90`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0g\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0g*\x91\x90b\0\xB5\xEDV[`*T`@Qct]\xCDs`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE8\xBB\x9A\xE6\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0gzW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0g\xA0\x91\x90b\0\xB8\x0FV[\x90Pb\0g\xB3\x86`\0\x01Q\x86\x89b\0\x81\x96V[b\0g\xC4\x86` \x01Q\x85\x89b\0\x81\x96V[b\0g\xD1\x83\x83\x89b\0\x81ZV[b\0g\xDE\x88\x82\x89b\0\x836V[PPPPPPPPV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0h(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0hN\x91\x90b\0\xC1bV[\x90P`\0b\0h]\x84b\0\x83\x84V[\x90P`\0b\0hl\x85b\0\x84\xCEV[\x90P`\0[\x85Q\x81\x10\x15b\0e\xB6W`\0b\0h\xAE\x85\x84\x84\x81Q\x81\x10b\0h\x97Wb\0h\x97b\0\xB1CV[` \x02` \x01\x01Qb\0\x85[\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90Pb\0h\xE1\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0h\xCEWb\0h\xCEb\0\xB1CV[` \x02` \x01\x01Q`\0\x01Q\x88b\0\x81\x96V[b\0i\x12\x81` \x01Q\x85\x84\x81Q\x81\x10b\0h\xFFWb\0h\xFFb\0\xB1CV[` \x02` \x01\x01Q` \x01Q\x88b\0\x81\x96V[P\x80b\0i\x1F\x81b\0\xB3\nV[\x91PPb\0hqV[b\0iP\x83Q\x83Q`@Q\x80``\x01`@R\x80`4\x81R` \x01b\x04\x03\xE1`4\x919b\0\x81\x96V[`\0\x84`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0i\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0i\xB6\x91\x90b\0\xC1bV[\x90P`\0b\0i\xC5\x84b\0\x83\x84V[\x90P`\0b\0i\xD4\x85b\0\x84\xCEV[\x90P`\0[\x85Q\x81\x10\x15b\0g\xDEW`\0\x87\x82\x81Q\x81\x10b\0i\xFAWb\0i\xFAb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0j?W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0je\x91\x90b\0\xC1bV[\x90P`\0b\0j\x99\x86b\0j\x92b\0j}\x85b\0\x85\xF4V[\x87\x87\x81Q\x81\x10b\0h\x97Wb\0h\x97b\0\xB1CV[\x90b\0\x85[V[\x90Pb\0j\xCC\x81`\0\x01Q\x86\x85\x81Q\x81\x10b\0j\xB9Wb\0j\xB9b\0\xB1CV[` \x02` \x01\x01Q`\0\x01Q\x89b\0\x81\x96V[b\0j\xFD\x81` \x01Q\x86\x85\x81Q\x81\x10b\0j\xEAWb\0j\xEAb\0\xB1CV[` \x02` \x01\x01Q` \x01Q\x89b\0\x81\x96V[PP\x80\x80b\0k\x0C\x90b\0\xB3\nV[\x91PPb\0i\xD9V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0kVW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0k|\x91\x90b\0\xB5\xEDV[\x90P`\0[\x83Q\x81\x10\x15b\0a\xBAW`\0\x84\x82\x81Q\x81\x10b\0k\xA2Wb\0k\xA2b\0\xB1CV[\x01` \x01Q`+T`@Qc\xC4gx\xA5`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xC4gx\xA5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0k\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0l\"\x91\x90b\0\xBC\x8CV[`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x87\x90R`\xFF\x85\x16`$\x82\x01R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0l{W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0l\xA1\x91\x90b\0\xBC\x8CV[\x90Pb\0l\xC4\x82`\x01`\x01``\x1B\x03\x16\x82`\x01`\x01``\x1B\x03\x16\x10\x15\x87b\0P~V[PPP\x80\x80b\0l\xD4\x90b\0\xB3\nV[\x91PPb\0k\x81V[`\0b\0l\xEB\x84\x84b\0\x86\xB4V[\x90Pb\0 ~\x84\x84\x83\x85b\0\x87\xF6V[b\0m#\x83Q\x83Q`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x03\xFDu`9\x919b\0\x81\x96V[`\0b\0m1\x85\x84b\0\x86\xB4V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0mQWb\0mQb\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0m{W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15b\0n\x17Wb\0m\xD5\x85\x82\x81Q\x81\x10b\0m\xA4Wb\0m\xA4b\0\xB1CV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x87\x83\x81Q\x81\x10b\0m\xC7Wb\0m\xC7b\0\xB1CV[` \x02` \x01\x01Qb\0[\x99V[\x82\x82\x81Q\x81\x10b\0m\xEAWb\0m\xEAb\0\xB1CV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0n\x0E\x81b\0\xB3\nV[\x91PPb\0m\x81V[P`\0b\0n&\x87\x86b\0\x89=V[\x90P`\0b\0n6\x88\x87b\0\x8A\xE9V[\x90P`\0b\0nE\x87b\0\x8B\xDFV[\x90P`\0b\0nT\x88b\0\x8D\x12V[\x90P`\0[\x88Q\x81\x10\x15b\0o\x91Wb\0n\xE3\x85\x82\x81Q\x81\x10b\0n|Wb\0n|b\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0n\xA2Wb\0n\xA2b\0\xB1CV[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0n\xBFWb\0n\xBFb\0\xB1CV[` \x02` \x01\x01Qb\0n\xD3\x91\x90b\0\xBC\xB7V[`\x01`\x01``\x1B\x03\x16\x8Ab\0\x81\x96V[b\0o|\x83\x82\x81Q\x81\x10b\0n\xFCWb\0n\xFCb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x87\x83\x81Q\x81\x10b\0o\"Wb\0o\"b\0\xB1CV[` \x02` \x01\x01Q\x89\x84\x81Q\x81\x10b\0o?Wb\0o?b\0\xB1CV[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10b\0o\\Wb\0o\\b\0\xB1CV[` \x02` \x01\x01Qb\0op\x91\x90b\0\xBC\xB7V[b\0n\xD3\x91\x90b\0\xC1\x97V[\x80b\0o\x88\x81b\0\xB3\nV[\x91PPb\0nYV[PPPPPPPPPPPV[`\0b\0o\xAB\x83b\0\x8D\x9FV[\x90P`\0b\0o\xBA\x84b\0\x8E\xCFV[\x90P`\0[\x84Q\x81\x10\x15b\0a\xBAWb\0p(\x83\x82\x81Q\x81\x10b\0o\xE2Wb\0o\xE2b\0\xB1CV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0p\x05Wb\0p\x05b\0\xB1CV[` \x02` \x01\x01Q`\x01b\0p\x1B\x91\x90b\0\xC1\xBAV[c\xFF\xFF\xFF\xFF\x16\x86b\0\x81\x96V[\x80b\0p4\x81b\0\xB3\nV[\x91PPb\0o\xBFV[`\0b\0pJ\x83b\0\x8D\x9FV[\x90P`\0b\0pY\x84b\0\x8E\xCFV[\x90P`\0[\x84Q\x81\x10\x15b\0a\xBAWb\0p\xB9\x83\x82\x81Q\x81\x10b\0p\x81Wb\0p\x81b\0\xB1CV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0p\xA4Wb\0p\xA4b\0\xB1CV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x86b\0\x81\x96V[\x80b\0p\xC5\x81b\0\xB3\nV[\x91PPb\0p^V[`\0b\0p\xDB\x83b\0\x8F\\V[\x90P`\0b\0p\xEA\x84b\0\x90\x9EV[\x90P`\0[\x84Q\x81\x10\x15b\0,\x8EWb\0qN\x83\x82\x81Q\x81\x10b\0q\x12Wb\0q\x12b\0\xB1CV[` \x02` \x01\x01QQ\x83\x83\x81Q\x81\x10b\0q0Wb\0q0b\0\xB1CV[` \x02` \x01\x01QQ`\x01b\0qG\x91\x90b\0\xB7\x93V[\x86b\0\x81\x96V[b\0q\x81b\0qz\x84\x83\x81Q\x81\x10b\0qkWb\0qkb\0\xB1CV[` \x02` \x01\x01Q\x88b\0\x91+V[\x85b\0P~V[b\0q\xA5b\0q\x9E\x83\x83\x81Q\x81\x10b\0qkWb\0qkb\0\xB1CV[\x85b\0\x91\xF3V[\x80b\0q\xB1\x81b\0\xB3\nV[\x91PPb\0p\xEFV[b\0q\xE2\x83Q\x83Q`@Q\x80``\x01`@R\x80`?\x81R` \x01b\x04\x04\x15`?\x919b\0\x81\x96V[`\0b\0q\xEF\x83b\0\x8F\\V[\x90P`\0b\0q\xFE\x84b\0\x90\x9EV[\x90P`\0[\x84Q\x81\x10\x15b\0e\xB6Wb\0rT\x83\x82\x81Q\x81\x10b\0r&Wb\0r&b\0\xB1CV[` \x02` \x01\x01QQ\x83\x83\x81Q\x81\x10b\0rDWb\0rDb\0\xB1CV[` \x02` \x01\x01QQ\x86b\0\x81\x96V[b\0r\x80b\0qz\x84\x83\x81Q\x81\x10b\0rqWb\0rqb\0\xB1CV[` \x02` \x01\x01Q\x89b\0\x91+V[b\0r\x9Db\0q\x9E\x83\x83\x81Q\x81\x10b\0rqWb\0rqb\0\xB1CV[b\0r\xE5b\0q\x9E\x84\x83\x81Q\x81\x10b\0r\xBAWb\0r\xBAb\0\xB1CV[` \x02` \x01\x01Q\x88\x84\x81Q\x81\x10b\0r\xD7Wb\0r\xD7b\0\xB1CV[` \x02` \x01\x01Qb\0\x91+V[b\0s\x02b\0qz\x83\x83\x81Q\x81\x10b\0r\xBAWb\0r\xBAb\0\xB1CV[\x80b\0s\x0E\x81b\0\xB3\nV[\x91PPb\0r\x03V[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0sS\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xB1\xAEV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0sqW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0s\x97\x91\x90b\0\xC1\x11V[\x90Pb\0_\x99`\x01b\0bJV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0t\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0t0\x91\x90b\0\xB5\xEDV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0tO\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0tmW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0t\x93\x91\x90b\0\xC0\xC1V[\x90P`\0[\x83Q\x81\x10\x15b\0a\xBAW`\0\x84\x82\x81Q\x81\x10b\0t\xB9Wb\0t\xB9b\0\xB1CV[` \x91\x01\x01Q`\xF8\x1C\x90Pb\0t\xDF`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x83\x1C\x81\x16\x14b\0q\x9EV[P\x80b\0t\xEC\x81b\0\xB3\nV[\x91PPb\0t\x98V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0u6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0u\\\x91\x90b\0\xB5\xEDV[\x90P`\0b\0uk\x84b\0M\xA1V[\x90P`\0b\0uz\x83b\0\x81\xD2V[\x90P`\0b\0u\x89\x84b\0\x82CV[\x90Pb\0u\xA5\x83\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x84\x14[\x86b\0P~V[b\0e\xB6\x82\x84\x16`\x01`\x01`\xC0\x1B\x03\x16\x15b\0u\x9EV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0u\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0v#\x91\x90b\0\xB5\xEDV[\x90P`\0[\x83Q\x81\x10\x15b\0a\xBAW`\0\x84\x82\x81Q\x81\x10b\0vIWb\0vIb\0\xB1CV[\x01` \x01Q`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x86\x90R`\xF8\x92\x90\x92\x1C`$\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0v\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0v\xD0\x91\x90b\0\xBC\x8CV[\x90Pb\0v\xE9\x81`\x01`\x01``\x1B\x03\x16`\0\x87b\0\x81\x96V[PP\x80\x80b\0v\xF8\x90b\0\xB3\nV[\x91PPb\0v(V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0wAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0wg\x91\x90b\0\xC1bV[\x90P`\0b\0wv\x84b\0\x83\x84V[\x90P`\0b\0w\x85\x85b\0\x84\xCEV[\x90P`\0[\x85Q\x81\x10\x15b\0e\xB6W`\0b\0w\xBAb\0w\xA5\x86b\0\x85\xF4V[\x84\x84\x81Q\x81\x10b\0h\x97Wb\0h\x97b\0\xB1CV[\x90Pb\0w\xDA\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0h\xCEWb\0h\xCEb\0\xB1CV[b\0w\xF8\x81` \x01Q\x85\x84\x81Q\x81\x10b\0h\xFFWb\0h\xFFb\0\xB1CV[P\x80b\0x\x05\x81b\0\xB3\nV[\x91PPb\0w\x8AV[`\0b\0x\x1C\x84\x84b\0\x8A\xE9V[\x90P`\0b\0x+\x84b\0\x8B\xDFV[\x90P`\0b\0x:\x85b\0\x8D\x12V[\x90P`\0[\x85Q\x81\x10\x15b\0e\xB6Wb\0x\xC9\x83\x82\x81Q\x81\x10b\0xbWb\0xbb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x85\x83\x81Q\x81\x10b\0x\x88Wb\0x\x88b\0\xB1CV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0x\xA5Wb\0x\xA5b\0\xB1CV[` \x02` \x01\x01Qb\0x\xB9\x91\x90b\0\xC1\x97V[`\x01`\x01``\x1B\x03\x16\x87b\0\x81\x96V[\x80b\0x\xD5\x81b\0\xB3\nV[\x91PPb\0x?V[`\0b\0x\xEB\x83b\0\x8D\x9FV[\x90P`\0b\0x\xFA\x84b\0\x8E\xCFV[\x90P`\0[\x84Q\x81\x10\x15b\0a\xBAWb\0y[\x83\x82\x81Q\x81\x10b\0y\"Wb\0y\"b\0\xB1CV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16`\x01\x84\x84\x81Q\x81\x10b\0yGWb\0yGb\0\xB1CV[` \x02` \x01\x01Qb\0p\x1B\x91\x90b\0\xBDGV[\x80b\0yg\x81b\0\xB3\nV[\x91PPb\0x\xFFV[`\0b\0y}\x83b\0\x8F\\V[\x90P`\0b\0y\x8C\x84b\0\x90\x9EV[\x90P`\0[\x84Q\x81\x10\x15b\0,\x8EWb\0y\xE9\x83\x82\x81Q\x81\x10b\0y\xB4Wb\0y\xB4b\0\xB1CV[` \x02` \x01\x01QQ`\x01\x84\x84\x81Q\x81\x10b\0y\xD4Wb\0y\xD4b\0\xB1CV[` \x02` \x01\x01QQb\0qG\x91\x90b\0\xB7bV[b\0z\x06b\0q\x9E\x84\x83\x81Q\x81\x10b\0qkWb\0qkb\0\xB1CV[b\0z#b\0qz\x83\x83\x81Q\x81\x10b\0qkWb\0qkb\0\xB1CV[\x80b\0z/\x81b\0\xB3\nV[\x91PPb\0y\x91V[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0z\x84W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0z\xAA\x91\x90b\0\xC1DV[\x90Pb\0_\x99`\x02b\0c\xC7V[`\0b\0z\xC8`\0`\x01b\0{\xCFV[\x15\x91\x90PV[`\0\x80[\x82\x15b\0O9Wb\0z\xE6`\x01\x84b\0\xB7bV[\x90\x92\x16\x91\x80b\0z\xF6\x81b\0\xC1\xDCV[\x91PPb\0z\xD2V[\x80b\0C\x89W`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0{T\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1b\0C\x89b\0\x92\0V[`\0b\0{\x91`\0\x83Q\x11`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xFE\x05`2\x919b\0P~V[`\0b\0{\xA9`\0`\x01\x85Qb\0RZ\x91\x90b\0\xB7bV[\x90P\x82\x81\x81Q\x81\x10b\0{\xC0Wb\0{\xC0b\0\xB1CV[\x01` \x01Q`\xF8\x1C\x93\x92PPPV[`\0\x80b\0{\xDE\x84\x84b\0\xB7bV[b\0{\xEB\x90`\x01b\0\xB7\x93V[\x90P`\0\x81[\x80\x15b\0|\x10W\x81b\0|\x04\x81b\0\xB3\nV[\x92PP`\x01\x1Cb\0{\xF1V[`\0b\0|!`\x01\x80\x85\x1Bb\0\xB7bV[`7T\x90\x91P\x81\x16[\x84\x81\x10b\0|HW\x81b\0|?\x86\x83b\0\xB7bV[\x16\x90Pb\0|*V[`7T`@Q` \x01b\0|^\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0|\x85\x81\x89b\0\xB7\x93V[\x98\x97PPPPPPPPV[`\0b\0|\x9Db\0\xAD8V[`>T`=T\x14\x15b\0}1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7F_fetchKeypair: not enough genera`D\x82\x01R\x7Fted keys. Check IntegrationDeplo`d\x82\x01Rn<\xB2\xB9\x171\xB7\xB79\xBA9:\xB1\xBA7\xB9`\x89\x1B`\x84\x82\x01R`\xA4\x01b\0-\xB1V[`\0`>`=T\x81T\x81\x10b\0}KWb\0}Kb\0\xB1CV[\x90`\0R` `\0 \x01T\x90P`\0`?`=T\x81T\x81\x10b\0}rWb\0}rb\0\xB1CV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q`\xA0\x81\x01\x82R`\x08\x93\x90\x93\x02\x90\x91\x01\x80T``\x84\x01\x90\x81R`\x01\x82\x01T`\x80\x80\x86\x01\x91\x90\x91R\x90\x84R\x82Q\x80\x84\x01\x84R`\x02\x80\x84\x01T\x82R`\x03\x84\x01T\x82\x88\x01R\x95\x85\x01R\x82Q\x90\x81\x01\x80\x84R\x93\x94\x91\x93\x85\x84\x01\x93\x91\x92`\x04\x86\x01\x92\x84\x92\x90\x83\x01\x91\x84\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0}\xE8WPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0~\x1FWPPP\x91\x90\x92RPPP\x90RP`=\x80T\x91\x92P`\0b\0~T\x83b\0\xB3\nV[\x90\x91UP\x91\x94\x90\x93P\x91PPV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0~\x87Wb\0~\x87b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0~\xB1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`/T\x90\x91P`\0\x90`\x01`\x01`@\x1B\x03\x81\x11\x15b\0~\xD5Wb\0~\xD5b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0~\xFFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x85`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x7FQW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x7F{\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0\x7F\x8A\x91\x90b\0\xC2\x01V[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0^\x92W`\0`/\x82\x81T\x81\x10b\0\x7F\xB8Wb\0\x7F\xB8b\0\xB1CV[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x80\x0BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x801\x91\x90b\0\xB8\x0FV[\x90P`\0b\0\x80Gb\x0FB@bLK@b\0{\xCFV[\x90Pb\0\x80V\x82\x8A\x83b\0\x80\xC7V[\x82\x86\x85\x81Q\x81\x10b\0\x80lWb\0\x80lb\0\xB1CV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85\x85\x81Q\x81\x10b\0\x80\xA2Wb\0\x80\xA2b\0\xB1CV[` \x02` \x01\x01\x81\x81RPPPPP\x80\x80b\0\x80\xBE\x90b\0\xB3\nV[\x91PPb\0\x7F\x95V[b\0_\x99\x83\x83\x83`\0b\0\x93\x0EV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`(T`@Qc\x16\x19q\x83`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90cXe\xC6\x0C\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x814W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0O9\x91\x90b\0\xC2UV[\x81\x83\x14b\0_\x99W`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x81`@Qb\0\x81\x82\x91\x90b\0\xBD\x16V[`@Q\x80\x91\x03\x90\xA1b\0_\x99\x83\x83b\0\x95\tV[\x81\x83\x14b\0_\x99W`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x81`@Qb\0\x81\xBE\x91\x90b\0\xBD\x16V[`@Q\x80\x91\x03\x90\xA1b\0_\x99\x83\x83b\0\x95\xF2V[`(T`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x82\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0O9\x91\x90b\0\xC0\xC1V[`\0\x80`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x82\x9CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x82\xC2\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x81\xD2V[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x83\x17W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x83,W=`\0\x80>=`\0\xFD[PPPPP\x91\x90PV[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x14b\0_\x99W`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x81`@Qb\0\x83p\x91\x90b\0\xBD\x16V[`@Q\x80\x91\x03\x90\xA1b\0_\x99\x83\x83b\0\x96\xA4V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x83\xA4Wb\0\x83\xA4b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x83\xEBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x83\xC3W\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`*T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c_a\xA8\x84\x90\x86\x90\x84\x90\x81\x10b\0\x84'Wb\0\x84'b\0\xB1CV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x84kW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x84\x91\x91\x90b\0\xC1bV[\x82\x82\x81Q\x81\x10b\0\x84\xA6Wb\0\x84\xA6b\0\xB1CV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x84\xBE\x90b\0\xB3\nV[\x91PPb\0\x83\xF1V[P\x92\x91PPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x85(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x85N\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x83\x84V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x85yb\0\xAD\x88V[\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\x15b\0-tWP\x80b\0-\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01b\0-\xB1V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15b\0\x86\x1AWP` \x82\x01Q\x15[\x15b\0\x869WPP`@\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` \x01Qb\0\x86\x80\x91\x90b\0\xB7|V[b\0\x86\xAC\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGb\0\xB7bV[\x90R\x92\x91PPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x86\xD4Wb\0\x86\xD4b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x86\xFEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0S\xEBW`+T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x1F\x9Bt\xE0\x90\x86\x90\x84\x90\x81\x10b\0\x87:Wb\0\x87:b\0\xB1CV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x88\x16`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x87\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x87\xB4\x91\x90b\0\xBC\x8CV[\x82\x82\x81Q\x81\x10b\0\x87\xC9Wb\0\x87\xC9b\0\xB1CV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x87\xED\x81b\0\xB3\nV[\x91PPb\0\x87\x04V[`\0b\0\x88\x04\x85\x85b\0\x89=V[\x90P`\0b\0\x88\x14\x86\x86b\0\x8A\xE9V[\x90P`\0b\0\x88#\x86b\0\x8B\xDFV[\x90P`\0b\0\x882\x87b\0\x8D\x12V[\x90P`\0[\x87Q\x81\x10\x15b\0\x892Wb\0\x88\xC1\x85\x82\x81Q\x81\x10b\0\x88ZWb\0\x88Zb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0\x88\x80Wb\0\x88\x80b\0\xB1CV[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0\x88\x9DWb\0\x88\x9Db\0\xB1CV[` \x02` \x01\x01Qb\0\x88\xB1\x91\x90b\0\xBC\xB7V[`\x01`\x01``\x1B\x03\x16\x88b\0\x81\x96V[b\0\x89\x1D\x83\x82\x81Q\x81\x10b\0\x88\xDAWb\0\x88\xDAb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0\x89\0Wb\0\x89\0b\0\xB1CV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0\x88\x9DWb\0\x88\x9Db\0\xB1CV[\x80b\0\x89)\x81b\0\xB3\nV[\x91PPb\0\x887V[PPPPPPPPPV[```\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x89\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x89\xA6\x91\x90b\0\xB5\xEDV[\x90P`\0\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x89\xC6Wb\0\x89\xC6b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x89\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15b\0\x8A\xE0W`+T\x85Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90\x85\x90\x88\x90\x85\x90\x81\x10b\0\x8A.Wb\0\x8A.b\0\xB1CV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x04\x81\x01\x92\x90\x92R`\xF8\x1C`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x8AxW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8A\x9E\x91\x90b\0\xBC\x8CV[\x82\x82\x81Q\x81\x10b\0\x8A\xB3Wb\0\x8A\xB3b\0\xB1CV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x8A\xD7\x81b\0\xB3\nV[\x91PPb\0\x89\xF6V[P\x94\x93PPPPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8BCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8Bi\x91\x90b\0\xB5\xEDV[\x90Pb\0\x8Bw\x84\x84b\0\x89=V[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x8B\xBFW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x8B\xD4W=`\0\x80>=`\0\xFD[PPPPP\x92\x91PPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8B\xFFWb\0\x8B\xFFb\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x8C)W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`+T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xD5\xEC\xCC\x05\x90\x86\x90\x84\x90\x81\x10b\0\x8CeWb\0\x8Ceb\0\xB1CV[\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\x15b\0\x8C\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8C\xD0\x91\x90b\0\xBC\x8CV[\x82\x82\x81Q\x81\x10b\0\x8C\xE5Wb\0\x8C\xE5b\0\xB1CV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x8D\t\x81b\0\xB3\nV[\x91PPb\0\x8C/V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8DlW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8D\x92\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x8B\xDFV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8D\xBFWb\0\x8D\xBFb\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x8D\xE9W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`,T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF3A\t\"\x90\x86\x90\x84\x90\x81\x10b\0\x8E%Wb\0\x8E%b\0\xB1CV[\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\x15b\0\x8EjW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8E\x90\x91\x90b\0\xBB\xE2V[\x82\x82\x81Q\x81\x10b\0\x8E\xA5Wb\0\x8E\xA5b\0\xB1CV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x8E\xC6\x81b\0\xB3\nV[\x91PPb\0\x8D\xEFV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8F)W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8FO\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x8D\x9FV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8F|Wb\0\x8F|b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x8F\xB1W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x8F\x9BW\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`,T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90\x86\x90\x84\x90\x81\x10b\0\x8F\xEDWb\0\x8F\xEDb\0\xB1CV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01RCc\xFF\xFF\xFF\xFF\x16`$\x82\x01R`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x90>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x90h\x91\x90\x81\x01\x90b\0\xC3\x18V[\x82\x82\x81Q\x81\x10b\0\x90}Wb\0\x90}b\0\xB1CV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x90\x95\x90b\0\xB3\nV[\x91PPb\0\x8F\xB7V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x90\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x91\x1E\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x8F\\V[`\0\x80\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x91mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x91\x93\x91\x90b\0\xB5\xEDV[\x90P`\0[\x84Q\x81\x10\x15b\0\x91\xE8W\x81\x85\x82\x81Q\x81\x10b\0\x91\xB8Wb\0\x91\xB8b\0\xB1CV[` \x02` \x01\x01Q\x14\x15b\0\x91\xD3W`\x01\x92PPPb\0O9V[\x80b\0\x91\xDF\x81b\0\xB3\nV[\x91PPb\0\x91\x98V[P`\0\x94\x93PPPPV[b\0IH\x82\x15\x82b\0P~V[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\x92\xFDW`@Q`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90b\0\x92x\x90\x83\x90e\x19\x98Z[\x19Y`\xD2\x1B\x90`\x01\x90` \x01b\0\xC3PV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x92\x98\x92\x91` \x01b\0\xB6\xC0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x92\xB4\x91b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\x92\xF3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x92\xF8V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cp\xA0\x821`\xE0\x1B\x17\x90R\x91Q`\0\x92\x87\x16\x91b\0\x93d\x91b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x93\xA1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x93\xA6V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0\x93\xC2\x91\x90b\0\xB5\xEDV[\x90Pb\0\x93\xFC\x84b\0\x93\xF5\x87b\0\x93\xEEcp\xA0\x821`\xE0\x1Bb\0\x93\xE7`\x0C\x8Db\0\x97\x8DV[\x90b\0\x97\xB3V[\x90b\0\x97\xD1V[\x90b\0\x97\xFAV[\x82\x15b\0,\x8EW`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x16\r\xDD`\xE0\x1B\x17\x90R\x90Q`\0\x91`\x01`\x01`\xA0\x1B\x03\x89\x16\x91b\0\x94G\x91\x90b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x94\x84W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x94\x89V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0\x94\xA5\x91\x90b\0\xB5\xEDV[\x90P\x82\x86\x10\x15b\0\x94\xD0Wb\0\x94\xBC\x86\x84b\0\xB7bV[b\0\x94\xC8\x90\x82b\0\xB7bV[\x90Pb\0\x94\xEBV[b\0\x94\xDC\x83\x87b\0\xB7bV[b\0\x94\xE8\x90\x82b\0\xB7\x93V[\x90P[b\0g\xDE\x81b\0\x93\xF5c\x18\x16\r\xDD`\xE0\x1Bb\0\x93\xE7`\x0C\x8Db\0\x97\x8DV[\x80\x82\x14b\0IHW`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0\x95n\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [byt`@\x82\x01Rdes32]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x82`@Qb\0\x95\xA7\x91\x90b\0\xC3qV[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x81`@Qb\0\x95\xE0\x91\x90b\0\xC3\xAAV[`@Q\x80\x91\x03\x90\xA1b\0IHb\0\x92\0V[\x80\x82\x14b\0IHW`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0\x96T\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x82`@Qb\0\x96|\x91\x90b\0\xC3qV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x81`@Qb\0\x95\xE0\x91\x90b\0\xC3\xAAV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14b\0IHW`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0\x97\x1B\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [add`@\x82\x01Rdress]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x82`@Qb\0\x97T\x91\x90b\0\xC3\xD5V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x81`@Qb\0\x95\xE0\x91\x90b\0\xC4\x1AV[`\x05\x82\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`\0\x82b\0B\xB4V[`\x03\x82\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16`\xE0\x83\x90\x1C\x17\x90U`\0\x82b\0B\xB4V[`\x02\x82\x01\x80T`\x01\x81\x01\x82U`\0\x91\x82R` \x82 `\x01`\x01`\xA0\x1B\x03\x84\x16\x91\x01U\x82b\0B\xB4V[b\0IH\x82\x82`\x05\x82\x01T`\x03\x83\x01T`\x04\x84\x01T`\x02\x85\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\x01`\x01`\xA0\x1B\x03\x90\x96\x16\x95`\xE0\x95\x90\x95\x1B\x94`\0\x93\x90\x92\x90\x91\x83\x01\x82\x82\x80\x15b\0\x98sW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0\x98^W[PPPPP\x90P`\0\x83b\0\x98\x88\x83b\0\x9BxV[`@Q` \x01b\0\x98\x9B\x92\x91\x90b\0\xB6\xC0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x01\x8B\x01` \x90\x81R\x83\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x83R\x81R\x92\x81 \x91\x94P\x90\x92\x90\x91b\0\x98\xEF\x91\x86\x91\x88\x91\x01b\0\xC4EV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\x99*Wb\0\x99(\x87b\0\x9C$V[P[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R` \x88\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x88\x16\x84R\x82R\x80\x83 \x90Q\x90\x91\x83\x91b\0\x99k\x91\x87\x91\x89\x91\x01b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T`\0\x1B\x90P`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qb\0\x99\xB2\x91\x90b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x99\xEFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x99\xF4V[``\x91P[P\x91Pb\0\x9A\x11\x90P\x81b\0\x9A\x0B\x88` b\0\xC0-V[b\0\x9C1V[`@Qc\x06g\xF9\xD7`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x9AxW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x9A\x9E\x91\x90b\0\xB5\xEDV[\x90P\x80\x82\x14b\0\x9A\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0-\xB1\x90b\0\xC4\x81V[`@Qcp\xCA\x10\xBB`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cp\xCA\x10\xBB\x90b\0\x9A\xFF\x90\x8B\x90\x87\x90\x8E\x90`\x04\x01b\0\xC3PV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x9B\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x9B/W=`\0\x80>=`\0\xFD[PPP`\x05\x8B\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UP`\x03\x8A\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\x9Bd`\x02\x8B\x01`\0b\0\xAD\xA6V[\x89`\x04\x01`\0\x90UPPPPPPPPPPV[```\0\x82Q` b\0\x9B\x8C\x91\x90b\0\xC0-V[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x9B\xA6Wb\0\x9B\xA6b\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\x9B\xD1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`\0\x84\x82\x81Q\x81\x10b\0\x9B\xF8Wb\0\x9B\xF8b\0\xB1CV[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\x9C\x1B\x90b\0\xB3\nV[\x91PPb\0\x9B\xD7V[`\0b\0O9\x82b\0\x9C\xB1V[`\0\x80`\0` \x85Q\x11b\0\x9CHW\x84Qb\0\x9CKV[` [\x90P`\0[\x81\x81\x10\x15b\0P\x10Wb\0\x9Cf\x81`\x08b\0\xC0-V[\x86b\0\x9Cs\x83\x88b\0\xB7\x93V[\x81Q\x81\x10b\0\x9C\x86Wb\0\x9C\x86b\0\xB1CV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0\x9C\xA8\x81b\0\xB3\nV[\x91PPb\0\x9CPV[`\x05\x81\x01T`\x03\x82\x01T`\x04\x83\x01T`\x02\x84\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\0\x96`\x01`\x01`\xA0\x1B\x03\x16\x95`\xE0\x1B\x94\x93\x87\x93\x91\x92\x90\x91\x90\x83\x01\x82\x82\x80\x15b\0\x9D#W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0\x9D\x0EW[PPP`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x95\x96P\x94\x91\x93Pb\0\x9Do\x92P\x85\x91\x87\x91\x01b\0\xC4EV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16\x15b\0\x9E\x0EW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R` \x87\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x87\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\x9D\xDE\x91\x85\x91\x87\x91\x01b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x94PPPPP\x91\x90PV[`\0\x83b\0\x9E\x1C\x83b\0\xA9\xEBV[`@Q` \x01b\0\x9E/\x92\x91\x90b\0\xB6\xC0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` b\x04\x02B\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c&l\xF1\t`@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\x9E\x8EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x9E\xA3W=`\0\x80>=`\0\xFD[PPPP`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qb\0\x9E\xC4\x91\x90b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x9F\x01W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x9F\x06V[``\x91P[P\x91Pb\0\x9F#\x90P\x81b\0\x9F\x1D\x87` b\0\xC0-V[b\0\xAA\x97V[`@Qce\xBC\x94\x81`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16`\x04\x82\x01R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ce\xBC\x94\x81\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x9F\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x9F\xAF\x91\x90\x81\x01\x90b\0\xC5\x1CV[P\x90P\x80Q`\x01\x14\x15b\0\xA2\x91W`\0`\0\x80Q` b\x04\x02B\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cf\x7F\x9Dp\x89\x84`\0\x81Q\x81\x10b\0\x9F\xF7Wb\0\x9F\xF7b\0\xB1CV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA01\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\xA0OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\xA0u\x91\x90b\0\xB5\xEDV[\x90P\x80b\0\xA0\xE0W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\xA3`\x91\x90b\0\xB5\xEDV[\x90P\x80b\0\xA3\xCAW\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`\0``\x8B`\x01`\x01`\xA0\x1B\x03\x16\x88`@Qb\0\xA4\x8C\x91\x90b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\xA4\xC9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\xA4\xCEV[``\x91P[P\x90\x92P\x90Pb\0\xA4\xE6\x81b\0\x9F\x1D\x8C` b\0\xC0-V[\x96PP\x80\x80\x15b\0\xA4\xF6WP\x81\x86\x14[\x15b\0\xA7IW\x7F\x9C\x95U\xB1\xE3\x10.<\xF4\x8FB}y\xCBg\x8F]\x9B\xD1\xED\n\xD5t8\x94a\xE2U\xF9Qp\xED\x8B\x8B\x8A\x8C`@Q` \x01b\0\xA54\x92\x91\x90b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x88\x88\x81Q\x81\x10b\0\xA5_Wb\0\xA5_b\0\xB1CV[` \x02` \x01\x01Q`\0\x1C`@Qb\0\xA5|\x94\x93\x92\x91\x90b\0\xC5\x86V[`@Q\x80\x91\x03\x90\xA1\x84\x84\x81Q\x81\x10b\0\xA5\x99Wb\0\xA5\x99b\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x8D\x16`\0\x90\x81R\x8F\x83R`@\x80\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8F\x16\x83R\x84R\x80\x82 \x90Q\x92\x93\x90\x92b\0\xA5\xE4\x91\x8D\x91\x8F\x91\x01b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 \x81\x90UP`\x01\x8D`\x01\x01`\0\x8D`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8C`\x01`\x01`\xE0\x1B\x03\x19\x16`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8A\x8C`@Q` \x01b\0\xA6q\x92\x91\x90b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\0\x80Q` b\x04\x02B\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\xA6\xE3Wb\0\xA6\xE3b\0\xB1CV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA7\x0C\x93\x92\x91\x90b\0\xC3PV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\xA7'W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\xA7=`\0\xFD[PPPPPPPb\0\xA7\xF6V[`\0\x80Q` b\x04\x02B\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\xA7\x80Wb\0\xA7\x80b\0\xB1CV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA7\xA9\x93\x92\x91\x90b\0\xC3PV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\xA7\xC4W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\xA7\xD9W=`\0\x80>=`\0\xFD[PPPPPPP[\x80b\0\xA7\xED\x81b\0\xB3\nV[\x91PPb\0\xA2\x9FV[Pb\0\xA8nV[`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FstdStorage find(StdStorage): No `D\x82\x01R\x7Fstorage use detected for target.`d\x82\x01R`\x84\x01b\0-\xB1V[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\xA8\xB2\x91\x88\x91\x8A\x91\x01b\0\xC4EV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\xA9AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FstdStorage find(StdStorage): Slo`D\x82\x01Rn:\x149\x94\x9077\xBA\x1037\xBA\xB72\x17`\x89\x1B`d\x82\x01R`\x84\x01b\0-\xB1V[`\x05\x89\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`\x03\x89\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\xA9r`\x02\x8A\x01`\0b\0\xAD\xA6V[`\0`\x04\x8A\x01\x81\x90U`\x01`\x01`\xA0\x1B\x03\x88\x16\x81R` \x8A\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\xA9\xB8\x91\x88\x91\x8A\x91\x01b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x97PPPPPPPP\x91\x90PV[```\0\x82Q` b\0\xA9\xFF\x91\x90b\0\xC0-V[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\xAA\x19Wb\0\xAA\x19b\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\xAADW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`\0\x84\x82\x81Q\x81\x10b\0\xAAkWb\0\xAAkb\0\xB1CV[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\xAA\x8E\x90b\0\xB3\nV[\x91PPb\0\xAAJV[`\0\x80`\0` \x85Q\x11b\0\xAA\xAEW\x84Qb\0\xAA\xB1V[` [\x90P`\0[\x81\x81\x10\x15b\0P\x10Wb\0\xAA\xCC\x81`\x08b\0\xC0-V[\x86b\0\xAA\xD9\x83\x88b\0\xB7\x93V[\x81Q\x81\x10b\0\xAA\xECWb\0\xAA\xECb\0\xB1CV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0\xAB\x0E\x81b\0\xB3\nV[\x91PPb\0\xAA\xB6V[a\x07\x18\x80b\0\xC5\xB7\x839\x01\x90V[a\x07x\x80b\0\xCC\xCF\x839\x01\x90V[`\x94\x80b\0\xD4G\x839\x01\x90V[a\x02*\x80b\0\xD4\xDB\x839\x01\x90V[a\x03\xF3\x80b\0\xD7\x05\x839\x01\x90V[a\x0E\x81\x80b\0\xDA\xF8\x839\x01\x90V[aJ\xD0\x80b\0\xE9y\x839\x01\x90V[a\x04\xE4\x80b\x014I\x839\x01\x90V[a\\F\x80b\x019-\x839\x01\x90V[a3\x8A\x80b\x01\x95s\x839\x01\x90V[a\x0E\xFE\x80b\x01\xC8\xFD\x839\x01\x90V[a1i\x80b\x01\xD7\xFB\x839\x01\x90V[a\x1Fx\x80b\x02\td\x839\x01\x90V[a\x1A\xB4\x80b\x02(\xDC\x839\x01\x90V[a\x11}\x80b\x02C\x90\x839\x01\x90V[a9X\x80b\x02U\r\x839\x01\x90V[a!\x0B\x80b\x02\x8Ee\x839\x01\x90V[a\x13\xEC\x80b\x02\xAFp\x839\x01\x90V[a\x16\xE0\x80b\x02\xC3\\\x839\x01\x90V[aa\x87\x80b\x02\xDA<\x839\x01\x90V[a\x1A%\x80b\x03;\xC3\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0\xACQb\0\xAD\xC6V[\x81R` \x01b\0\xAC`b\0\xAD\xC6V[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[a\x0E`\x80b\x03U\xE8\x839\x01\x90V[\x82\x80Tb\0\xAC\x9F\x90b\0\xB6\x07V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\xAC\xC3W`\0\x85Ub\0\xAD\x0EV[\x82`\x1F\x10b\0\xAC\xDEW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\xAD\x0EV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\xAD\x0EW\x91\x82\x01[\x82\x81\x11\x15b\0\xAD\x0EW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\xAC\xF1V[Pb\0Q\xF2\x92\x91Pb\0\xAD\xE4V[aF\xF4\x80b\x03dH\x839\x01\x90V[aP\x13\x80b\x03\xAB<\x839\x01\x90V[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\xADy`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\xAC`b\0\xACa\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003total operator count should be the same for churnedQuorumsoperator should no longer have stake in any quorumsoperator already has bits in quorum bitmapoperator list should contain incoming operator and should not contain churned operatorsA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPoperator pubkey should have been added to standardQuorums apkscurrent operator bitmap should not include quorumschurned operator did not deregister from churned quorumoperator list should have one fewer entryfailed to add operator weight and remove churned weight from each quorumassert_Snap_Churned_OperatorWeight: input length mismatch_configRand: invalid fillTypes, no flags passedoperator already has a registered pubkey_randValue: tried to select value from empty arraytotal operator count should have increased for each quorumchurned operator should still have a registered pubkey_configRand: invalid minimumStake, no flags passed_selectRand: tried to select from empty quorum list(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83churned operator bitmap should not include churned quorumsoperatorInfo should have operatorId_configRand: invalid numStrategies, no flags passedoperator list should have one more entrytotal operator count should have increased for standardQuorumsoperator should have empty id and NEVER_REGISTERED statusfailed to add operator weight to operator and total stake in each quorumtotal operator count should have decreased for each quorum_configRand: invalid _userTypes, no flags passedoperator should still have a registered pubkeyoperatorInfo status should be DEREGISTEREDoperator pubkey should have been added to each quorum apkoperator pubkey should have been subtracted from each quorum apkoperator list should have one more entry in standardQuorumsoperatorInfo should still have operatorId\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_newRandomOperator: operator should be registeredoperator should have registered a pubkeyoperator pubkey should have been added and churned operator pubkeys should have been removed from apks_configRand: invalid numQuorums, no flags passed_getChurnTargets: non-full quorum cannot be churnedoperator did not deregister from all quorumschurned operatorInfo should still have operatorIdassert_Snap_Churned_QuorumApk: input length mismatchassert_Snap_Replaced_OperatorListEntries: input length mismatch\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8failed to remove operator weight from total stake for each quorumoperator did not register for all quorumsoperator should not have any bits in bitmapfailed to add operator weight to operator and total stake in standardQuorumscurrent operator bitmap should include quorumsoperator should have at least the minimum stake in each quorumoperatorInfo status should be REGISTEREDoperator should be registered to AVSoperator should not be registered to the AVS\xA2dipfsX\"\x12 g@9\xB5~\xCD\xF8\xA6\xC2pMv\xBD\x7FciV\xD1\x81-j\x9BD\xC2\0\x96\xEBL\xB2\x14)CdsolcC\0\x08\x0C\x003\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b50600436106200015d5760003560e01c80636b3aa72e11620000c7578063af51f4fe1162000086578063af51f4fe14620002c7578063b5508aa914620002de578063ba414fa614620002e8578063caf549071462000303578063e20c9f71146200031a578063fa7626d4146200032457600080fd5b80636b3aa72e14620002685780636d14a987146200027c57806385226c811462000290578063916a17c614620002a95780639d8b9cb414620002b357600080fd5b80632dbcb04c11620001205780632dbcb04c14620001f75780632deac5e514620002105780633dfb40e014620002275780633e5e3c23146200023b5780633f7286f4146200024557806366d9a9a0146200024f57600080fd5b8063054310e614620001625780630a9254e41462000193578063131e2f18146200019f5780631ed7831c14620001c55780632ade388014620001de575b600080fd5b60355462000176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6200019d62000332565b005b620001b6620001b03660046200adfb565b62001732565b6040516200018a91906200ae5b565b620001cf62001be8565b6040516200018a91906200aeb1565b620001e862001c4c565b6040516200018a91906200af23565b6200020160345481565b6040519081526020016200018a565b6200019d620002213660046200afe9565b62001d9a565b602e5462000176906001600160a01b031681565b620001cf62002084565b620001cf620020e6565b6200025962002148565b6040516200018a91906200b010565b601e5462000176906001600160a01b031681565b60285462000176906001600160a01b031681565b6200029a62002232565b6040516200018a91906200b0c7565b620002596200230c565b60335462000176906001600160a01b031681565b6200019d620002d83660046200afe9565b620023f6565b6200029a620027e0565b620002f2620028ba565b60405190151581526020016200018a565b6200019d620003143660046200afe9565b620029f1565b620001cf62002c96565b600754620002f29060ff1681565b60405162000340906200ab17565b604051809103906000f0801580156200035d573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b81600081518110620003b957620003b96200b143565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c604051620003eb906200ab25565b620003f89291906200b159565b604051809103906000f08015801562000415573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405160009062000447906200ab33565b604051809103906000f08015801562000464573d6000803e3d6000fd5b50905060405162000475906200ab40565b604051809103906000f08015801562000492573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b0392909216919091179055604051620004c1906200ab4e565b604051809103906000f080158015620004de573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000513906200ab5c565b620005209291906200b185565b604051809103906000f0801580156200053d573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000572906200ab5c565b6200057f9291906200b185565b604051809103906000f0801580156200059c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005d1906200ab5c565b620005de9291906200b185565b604051809103906000f080158015620005fb573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000630906200ab5c565b6200063d9291906200b185565b604051809103906000f0801580156200065a573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200068f906200ab5c565b6200069c9291906200b185565b604051809103906000f080158015620006b9573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392831617905560255460205460405191831692169064077359400090620006f7906200ab6a565b6001600160a01b0393841681529290911660208301526001600160401b03166040820152606001604051809103906000f0801580156200073b573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162000769906200ab78565b6001600160a01b039091168152602001604051809103906000f08015801562000796573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f5460225460205460405160009493841693928316929190911690620007da906200ab86565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000817573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b0393841693928316929091169062000849906200ab94565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000886573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b039283169290911690620008b1906200aba2565b620008be9291906200b1ae565b604051809103906000f080158015620008db573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b0395861695948516949384169392831692909116906200091b906200abb0565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000967573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b03909116906200098b906200abbe565b6001600160a01b039091168152602001604051809103906000f080158015620009b8573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b9362000a1e939183169216908b8b8b606482016200b1fa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000a679392916004016200b259565b600060405180830381600087803b15801562000a8257600080fd5b505af115801562000a97573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000b2a9391909216918c916004016200b259565b600060405180830381600087803b15801562000b4557600080fd5b505af115801562000b5a573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000be69391909216918b916004016200b259565b600060405180830381600087803b15801562000c0157600080fd5b505af115801562000c16573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000cac939116918a916004016200b259565b600060405180830381600087803b15801562000cc757600080fd5b505af115801562000cdc573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000d6893919092169189916004016200b259565b600060405180830381600087803b15801562000d8357600080fd5b505af115801562000d98573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000db991506200abcc565b6001600160a01b039091168152602001604051809103906000f08015801562000de6573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000eac57600062000e218262002dc2565b905060008160405160200162000e3891906200b290565b604051602081830303815290604052905060008260405160200162000e5e91906200b2c7565b604051602081830303815290604052905062000e9382827502ac3a4edbbfb8014e3ba83411e915e80000000000003062002edf565b505050808062000ea3906200b30a565b91505062000e0a565b5060405162000ebb906200abda565b604051809103906000f08015801562000ed8573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000f3757600080fd5b505af115801562000f4c573d6000803e3d6000fd5b50506031546040518c93506001600160a01b03909116915062000f6f906200ab5c565b62000f7c9291906200b185565b604051809103906000f08015801562000f99573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000fce906200ab5c565b62000fdb9291906200b185565b604051809103906000f08015801562000ff8573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200102d906200ab5c565b6200103a9291906200b185565b604051809103906000f08015801562001057573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200108c906200ab5c565b620010999291906200b185565b604051809103906000f080158015620010b6573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620010eb906200ab5c565b620010f89291906200b185565b604051809103906000f08015801562001115573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200117157600080fd5b505af115801562001186573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b039283169350911690620011b0906200abe8565b620011bd9291906200b1ae565b604051809103906000f080158015620011da573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011fe906200abf6565b6001600160a01b039091168152602001604051809103906000f0801580156200122b573d6000803e3d6000fd5b506028546040519192506000916001600160a01b03909116906200124f906200ac04565b6001600160a01b039091168152602001604051809103906000f0801580156200127c573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b03938416939283169290911690620012ae906200ac12565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620012eb573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81529293506001600160a01b03918216926399a88ec4926200132692169088906004016200b1ae565b600060405180830381600087803b1580156200134157600080fd5b505af115801562001356573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec4935062001393929091169087906004016200b1ae565b600060405180830381600087803b158015620013ae57600080fd5b505af1158015620013c3573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec4935062001400929091169086906004016200b1ae565b600060405180830381600087803b1580156200141b57600080fd5b505af115801562001430573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200146d929091169085906004016200b1ae565b600060405180830381600087803b1580156200148857600080fd5b505af11580156200149d573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b158015620014eb57600080fd5b505af115801562001500573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b039485169550928416939182169291169062001538906200ac20565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200157d573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b969082169590821694908216939116918162001608565b6040805160608101825260008082526020808301829052928201528252600019909201910181620015da5790505b50604080516000808252602082018181528284019093529091906200163e565b6060815260200190600190039081620016285790505b50604051602401620016589897969594939291906200b40b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b9092168252620016a19392916004016200b259565b600060405180830381600087803b158015620016bc57600080fd5b505af1158015620016d1573d6000803e3d6000fd5b50505050604051620016e3906200ac2e565b604051809103906000f08015801562001700573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b6200173c6200ac3c565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200175457905050905060405180604001604052806002815260200161676f60f01b815250816000815181106200179d576200179d6200b143565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620017da57620017da6200b143565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b815250816002815181106200182857620018286200b143565b60200260200101819052506200183e8362002dc2565b816003815181106200185457620018546200b143565b6020026020010181905250604051806040016040528060018152602001603160f81b815250816004815181106200188f576200188f6200b143565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790620018d69085906004016200b0c7565b6000604051808303816000875af1158015620018f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200192091908101906200b5a0565b9050808060200190518101906200193891906200b5ed565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200197557620019756200b143565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790620019b99085906004016200b0c7565b6000604051808303816000875af1158015620019d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a0391908101906200b5a0565b90508080602001905181019062001a1b91906200b5ed565b8351526040805180820190915260018152603360f81b602082015282518390600490811062001a4e5762001a4e6200b143565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001a929085906004016200b0c7565b6000604051808303816000875af115801562001ab2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001adc91908101906200b5a0565b90508080602001905181019062001af491906200b5ed565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001b345762001b346200b143565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b789085906004016200b0c7565b6000604051808303816000875af115801562001b98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001bc291908101906200b5a0565b90508080602001905181019062001bda91906200b5ed565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001c4257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001c23575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d9157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001d7957838290600052602060002001805462001ce5906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462001d13906200b607565b801562001d645780601f1062001d385761010080835404028352916020019162001d64565b820191906000526020600020905b81548152906001019060200180831162001d4657829003601f168201915b50505050508152602001906001019062001cc3565b50505050815250508152602001906001019062001c70565b50505050905090565b604080516080810182526007808252602082015260039181018290526004606082015262001dca9183916200320b565b600062001dd662003aad565b905060006042805462001de9906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462001e17906200b607565b801562001e685780601f1062001e3c5761010080835404028352916020019162001e68565b820191906000526020600020905b81548152906001019060200180831162001e4a57829003601f168201915b50505050509050600062001ec5838360006001600160401b0381111562001e935762001e936200b12d565b6040519080825280601f01601f19166020018201604052801562001ebe576020820181803683370190505b5062003c66565b905062001ed283620042bb565b604080516000815260208101918290526352fb660d60e11b9091526001600160a01b0384169063a5f6cc1a9062001f119085908590602481016200b63e565b600060405180830381600087803b15801562001f2c57600080fd5b505af115801562001f41573d6000803e3d6000fd5b5062001f8492508591508390508460005b6040519080825280601f01601f19166020018201604052801562001f7d576020820181803683370190505b506200438c565b60405163ca4f2d9760e01b81526001600160a01b0384169063ca4f2d979062001fb29085906004016200b6ab565b600060405180830381600087803b15801562001fcd57600080fd5b505af115801562001fe2573d6000803e3d6000fd5b5050505062001ff28383620047bb565b62001ffd836200494c565b60405163208c6d5360e21b81526001600160a01b03841690638231b54c906200202b9085906004016200b6ab565b6020604051808303816000875af11580156200204b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200207191906200b5ed565b506200207e8383620049fc565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001d915760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200221957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620021da5790505b505050505081525050815260200190600101906200216c565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001d9157838290600052602060002001805462002278906200b607565b80601f0160208091040260200160405190810160405280929190818152602001828054620022a6906200b607565b8015620022f75780601f10620022cb57610100808354040283529160200191620022f7565b820191906000526020600020905b815481529060010190602001808311620022d957829003601f168201915b50505050508152602001906001019062002256565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001d915760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620023dd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200239e5790505b5050505050815250508152602001906001019062002330565b6040805160808101825260078082526020820152600391810182905260046060820152620024269183916200320b565b60006200243262003aad565b905060006042805462002445906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462002473906200b607565b8015620024c45780601f106200249857610100808354040283529160200191620024c4565b820191906000526020600020905b815481529060010190602001808311620024a657829003601f168201915b505050505090506000620024ef838360006001600160401b0381111562001e935762001e936200b12d565b9050620024fc83620042bb565b604080516000815260208101918290526352fb660d60e11b9091526001600160a01b0384169063a5f6cc1a906200253b9085908590602481016200b63e565b600060405180830381600087803b1580156200255657600080fd5b505af11580156200256b573d6000803e3d6000fd5b5062002581925085915083905084600062001f52565b60405163ca4f2d9760e01b81526001600160a01b0384169063ca4f2d9790620025af9085906004016200b6ab565b600060405180830381600087803b158015620025ca57600080fd5b505af1158015620025df573d6000803e3d6000fd5b50505050620025ef8383620047bb565b620025fa836200494c565b60005b81518110156200275a5760008282815181106200261e576200261e6200b143565b60200260200101519050600060016001600160401b038111156200264657620026466200b12d565b6040519080825280601f01601f19166020018201604052801562002671576020820181803683370190505b5090508483815181106200268957620026896200b143565b602001015160f81c60f81b81600081518110620026aa57620026aa6200b143565b60200101906001600160f81b031916908160001a90535060405163208c6d5360e21b81526001600160a01b03831690638231b54c90620026ef9084906004016200b6ab565b6020604051808303816000875af11580156200270f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200273591906200b5ed565b50620027428282620049fc565b5050808062002751906200b30a565b915050620025fd565b50604080516000815260208101918290526352fb660d60e11b9091526001600160a01b0384169063a5f6cc1a906200279a9085908590602481016200b63e565b600060405180830381600087803b158015620027b557600080fd5b505af1158015620027ca573d6000803e3d6000fd5b506200207e925085915083905084600062001f52565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001d9157838290600052602060002001805462002826906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462002854906200b607565b8015620028a55780601f106200287957610100808354040283529160200191620028a5565b820191906000526020600020905b8154815290600101906020018083116200288757829003601f168201915b50505050508152602001906001019062002804565b600754600090610100900460ff1615620028dd5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620029ec5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200296e917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200b6c0565b60408051601f19818403018152908290526200298a916200b6f3565b6000604051808303816000865af19150503d8060008114620029c9576040519150601f19603f3d011682016040523d82523d6000602084013e620029ce565b606091505b5091505080806020019051810190620029e891906200b711565b9150505b919050565b604080516080810182526007808252602082015260039181018290526004606082015262002a219183916200320b565b600062002a2d62003aad565b905060006042805462002a40906200b607565b80601f016020809104026020016040519081016040528092919081815260200182805462002a6e906200b607565b801562002abf5780601f1062002a935761010080835404028352916020019162002abf565b820191906000526020600020905b81548152906001019060200180831162002aa157829003601f168201915b50505050509050600062002ad38262004bd1565b9050600062002b0262002afc62002aea8462004da1565b62002af58662004da1565b9062004f34565b62004f3f565b9050600062002b1385848462003c66565b905062002b2085620042bb565b6040516352fb660d60e11b81526001600160a01b0386169063a5f6cc1a9062002b52908690859087906004016200b63e565b600060405180830381600087803b15801562002b6d57600080fd5b505af115801562002b82573d6000803e3d6000fd5b5050505062002b94858285856200438c565b60405163ca4f2d9760e01b81526001600160a01b0386169063ca4f2d979062002bc29087906004016200b6ab565b600060405180830381600087803b15801562002bdd57600080fd5b505af115801562002bf2573d6000803e3d6000fd5b5050505062002c028585620047bb565b62002c0d856200494c565b60405163208c6d5360e21b81526001600160a01b03861690638231b54c9062002c3b9087906004016200b6ab565b6020604051808303816000875af115801562002c5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c8191906200b5ed565b5062002c8e8585620049fc565b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b604080518082019091526000808252602082015262002d3f6200ac65565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801562002d745762002d76565bfe5b508062002dba5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b60608162002de75750506040805180820190915260018152600360fc1b602082015290565b8160005b811562002e17578062002dfe816200b30a565b915062002e0f9050600a836200b74b565b915062002deb565b6000816001600160401b0381111562002e345762002e346200b12d565b6040519080825280601f01601f19166020018201604052801562002e5f576020820181803683370190505b5090505b841562002ed75762002e776001836200b762565b915062002e86600a866200b77c565b62002e939060306200b793565b60f81b81838151811062002eab5762002eab6200b143565b60200101906001600160f81b031916908160001a90535062002ecf600a866200b74b565b945062002e63565b949350505050565b60008484848460405162002ef3906200ac83565b62002f0294939291906200b7ae565b604051809103906000f08015801562002f1f573d6000803e3d6000fd5b506027546031546021546040519394506000936001600160a01b03938416939283169263485cc95560e01b9262002f5f928892909116906024016200b1ae565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905162002f9e906200ab5c565b62002fac939291906200b259565b604051809103906000f08015801562002fc9573d6000803e3d6000fd5b506040805160018082528183019092529192506000919060208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905082826000815181106200302a576200302a6200b143565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa15801562003090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030b691906200b80f565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620030f857600080fd5b505af11580156200310d573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b354791506200314590859085906004016200b82f565b600060405180830381600087803b1580156200316057600080fd5b505af115801562003175573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b60408051818152601f818301527f5f636f6e66696752616e643a207365742072616e646f6d207365656420746f00606082015262ffffff851660208201529051600080516020620404548339815191529181900360800190a16040516001600160e81b031960e885901b16602082015260230160408051601f198184030181529190528051602090910120603755620032a4826200501a565b8051620032ba916038916020909101906200ac91565b508051620032c8906200501a565b8051620032de916039916020909101906200ac91565b50620032ee81602001516200501a565b80516200330491603a916020909101906200ac91565b506200331481604001516200501a565b80516200332a91603b916020909101906200ac91565b506200333a81606001516200501a565b80516200335091603c916020909101906200ac91565b506200338a6038805462003364906200b607565b905060001415604051806060016040528060308152602001620400dd603091396200507e565b620033c3603980546200339d906200b607565b90506000141560405180606001604052806030815260200162040321603091396200507e565b620033fc603a8054620033d6906200b607565b9050600014156040518060600160405280603381526020016203ff89603391396200507e565b62003435603b80546200340f906200b607565b9050600014156040518060600160405280603281526020016203fea7603291396200507e565b6200346e603c805462003448906200b607565b9050600014156040518060600160405280602f81526020016203fdae602f91396200507e565b62003478620050b7565b60408190556200348e9060019081901b6200b762565b604180546001600160c01b0319166001600160c01b03929092169182179055620034b89062004f3f565b8051620034ce916042916020909101906200ac91565b506040805481518281526030928101929092527f5f636f6e66696752616e643a206e756d626572206f662071756f72756d73206260608301526f195a5b99c81a5b9a5d1a585b1a5e995960821b60808301526020820152600080516020620404548339815191529060a00160405180910390a16040805160608101825260058152613a98602082015260969181019190915260005b604054811015620037e05760006200357a620051f6565b9050600062003588620053f3565b90506000805160206204045483398151915283604051620035e391906040808252601c908201527f5f636f6e66696752616e643a206372656174696e672071756f72756d000000006060820152602081019190915260800190565b60405180910390a18351604051600080516020620404548339815191529162003642916040808252601490820152730b4813585e081bdc195c985d1bdc8818dbdd5b9d60621b606082015263ffffffff91909116602082015260800190565b60405180910390a1600080516020620404548339815191528251604051620036a491906040808252601b908201527f2d204e756d207374726174656769657320636f6e7369646572656400000000006060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e2d204d696e696d756d207374616b6560881b60608201526001600160601b03831660208201529051600080516020620404548339815191529181900360800190a1601c5460335460405163ca669fa760e01b81526001600160a01b03918216600482015291169063ca669fa790602401600060405180830381600087803b1580156200374557600080fd5b505af11580156200375a573d6000803e3d6000fd5b5050602854604051631aeb699160e31b81526001600160a01b03909116925063d75b4c88915062003794908790859087906004016200b88c565b600060405180830381600087803b158015620037af57600080fd5b505af1158015620037c4573d6000803e3d6000fd5b5050505050508080620037d7906200b30a565b91505062003563565b506000620037ee8262005431565b90506000805160206203fc3d8339815191526200380b8262002dc2565b6040516020016200381d91906200b8e2565b60408051601f198184030181529082905262003839916200b6ab565b60405180910390a160005b81811015620039a35760006200385962003aad565b60405163208c6d5360e21b81529091506001600160a01b03821690638231b54c906200388b906042906004016200b949565b6020604051808303816000875af1158015620038ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038d191906200b5ed565b5060005b60428054620038e4906200b607565b90508110156200398b576000604282815462003900906200b607565b81106200391157620039116200b143565b815460011615620039315790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60009081526044602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b038516179055508062003982816200b30a565b915050620038d5565b505080806200399a906200b30a565b91505062003844565b506000805160206203fc3d833981519152604051620039eb906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a16000805160206203fc3d83398151915260405162003a4f9060208082526024908201527f5f636f6e66696752616e6420636f6d706c6574653b207374617274696e6720746040820152636573742160e01b606082015260800190565b60405180910390a16000805160206203fc3d83398151915260405162003a9e906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a15050505050565b60008062003abd60435462002dc2565b60405160200162003acf91906200b9f9565b60408051601f1981840301815291905260438054919250600062003af3836200b30a565b9190505550600080600062003b0884620054fc565b925092509250826001600160a01b0316632a34ade86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003b4a57600080fd5b505af115801562003b5f573d6000803e3d6000fd5b5050604051630da66deb60e31b81526001600160a01b0386169250636d336f58915062003b9390859085906004016200ba2b565b600060405180830381600087803b15801562003bae57600080fd5b505af115801562003bc3573d6000803e3d6000fd5b5050601d546040516336b87bd760e11b81526001600160a01b03878116600483015262003c5d94509091169150636d70f7ae90602401602060405180830381865afa15801562003c17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c3d91906200b711565b60405180606001604052806031815260200162040262603191396200507e565b50909392505050565b60606000805160206203ff0c833981519152846001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562003cb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003ce191908101906200b5a0565b60405162003cf091906200ba54565b60405180910390a16000805160206203ff0c83398151915262003d138462005698565b60405162003d2291906200baa9565b60405180910390a16000805160206203ff0c83398151915262003d458362005698565b60405162003d5491906200baf2565b60405180910390a162003d6782620057a9565b600083516001600160401b0381111562003d855762003d856200b12d565b60405190808252806020026020018201604052801562003daf578160200160208202803683370190505b50905060005b8451811015620042b057600085828151811062003dd65762003dd66200b143565b016020015160285460405163e65797ad60e01b815260f89290921c6004830181905292506000916001600160a01b039091169063e65797ad90602401606060405180830381865afa15801562003e30573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e5691906200bb6d565b602c546040516379a0849160e11b815260ff851660048201529192506000916001600160a01b039091169063f341092290602401602060405180830381865afa15801562003ea8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ece91906200bbe2565b905062003f08826000015163ffffffff168263ffffffff16101560405180606001604052806033815260200162040351603391396200507e565b62003f1383620059ec565b85858151811062003f285762003f286200b143565b60200260200101906001600160a01b031690816001600160a01b0316815250506000805160206203ff0c83398151915262003f668460ff1662002dc2565b60405160200162003f7891906200bc00565b60405160208183030381529060405286868151811062003f9c5762003f9c6200b143565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562003fe2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200400c91908101906200b5a0565b6040516200401c9291906200bc63565b60405180910390a1602b5460405163d5eccc0560e01b815260ff851660048201526000916001600160a01b03169063d5eccc0590602401602060405180830381865afa15801562004071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200409791906200bc8c565b602b5487519192506000916001600160a01b0390911690635401ed2790899089908110620040c957620040c96200b143565b60200260200101516001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200410f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200413591906200b5ed565b6040516001600160e01b031960e084901b168152600481019190915260ff88166024820152604401602060405180830381865afa1580156200417b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041a191906200bc8c565b90505b620041b0818562005b71565b6001600160601b0316620041c5868d62005b99565b6001600160601b0316111580620042105750620041fa620041e7868d62005b99565b620041f390846200bcb7565b8562005c13565b6001600160601b0316816001600160601b031610155b156200429557600080620042248d62005c2f565b604051630da66deb60e31b815291935091506001600160a01b038e1690636d336f58906200425990859085906004016200ba2b565b600060405180830381600087803b1580156200427457600080fd5b505af115801562004289573d6000803e3d6000fd5b505050505050620041a4565b50505050508080620042a7906200b30a565b91505062003db5565b5090505b9392505050565b620042f56040518060400160405280601681526020017518da1958dad7d3995d995c97d49959da5cdd195c995960521b8152508262005e9d565b6200431a81604051806060016040528060398152602001620400226039913962005f52565b6200433f816040518060600160405280602a81526020016203fbbc602a913962005f9e565b62004364816040518060600160405280602881526020016203fddd60289139620060a4565b62004389816040518060600160405280602c81526020016204060d602c9139620061c1565b50565b620043c360405180604001604052806013815260200172636865636b5f436875726e65645f537461746560681b8152508562005e9d565b6000620043e762002afc620043d88462004da1565b620043e38662004da1565b1790565b90506200440e856040518060600160405280602381526020016203ff66602391396200625f565b6200443385604051806060016040528060288152602001620405c1602891396200634c565b6200445985826040518060600160405280602e815260200162040555602e9139620063dc565b6200447f8582604051806060016040528060298152602001620404b560299139620064fe565b620044a4856040518060600160405280602881526020016204029360289139620065bf565b620044ca85836040518060600160405280603e81526020016203fc5d603e9139620067e8565b620044f18585856040518060a0016040528060668152602001620402bb6066913962006928565b6200451785826040518060600160405280603e815260200162040583603e913962006b15565b6200453d85836040518060800160405280604c815260200162040509604c913962006cdd565b620045648585856040518060800160405280604881526020016203fd2d6048913962006cfb565b62004589826040518060600160405280603e81526020016203ffe4603e913962006f9e565b620045ae836040518060600160405280603a81526020016203fb4f603a91396200703d565b620045d485836040518060600160405280603b8152602001620401de603b9139620070ce565b620045fb8585856040518060800160405280605781526020016203fbe660579139620071ba565b6200462085604051806060016040528060248152602001620405e96024913962007317565b60005b845181101562002c8e5760008582815181106200464457620046446200b143565b60200260200101519050600060016001600160401b038111156200466c576200466c6200b12d565b6040519080825280601f01601f19166020018201604052801562004697576020820181803683370190505b509050858381518110620046af57620046af6200b143565b602001015160f81c60f81b81600081518110620046d057620046d06200b143565b60200101906001600160f81b031916908160001a9053506200470c82604051806060016040528060318152602001620403b0603191396200625f565b6200473282826040518060600160405280603a81526020016203ff2c603a9139620073a5565b6200475882826040518060600160405280603781526020016203fccd60379139620074f5565b6200477d826040518060600160405280603681526020016203fe7160369139620065bf565b620047a382826040518060600160405280603381526020016203fb8960339139620075bc565b50508080620047b2906200b30a565b91505062004623565b620047f560405180604001604052806016815260200175636865636b5f446572656769737465725f537461746560501b8152508362005e9d565b6200481a8260405180606001604052806029815260200162040219602991396200625f565b6200484082826040518060600160405280603281526020016203fc9b60329139620073a5565b6200486682826040518060600160405280602c815260200162040384602c9139620074f5565b6200488b826040518060600160405280602e81526020016204010d602e9139620065bf565b620048b182826040518060600160405280604081526020016204019e6040913962007701565b620048d782826040518060600160405280603381526020016203fb8960339139620075bc565b620048fd828260405180608001604052806041815260200162040474604191396200780e565b62004922816040518060600160405280603a8152602001620400a3603a9139620078de565b6200494882826040518060600160405280602981526020016203fd046029913962007970565b5050565b6200498d6040518060400160405280601e81526020017f636865636b5f436f6d706c657465446572656769737465725f537461746500008152508262005e9d565b620049b2816040518060600160405280602b8152602001620404de602b913962005f9e565b620049d78160405180606001604052806029815260200162040219602991396200625f565b62004364816040518060600160405280602a81526020016204013b602a913962007a38565b62004a3460405180604001604052806014815260200173636865636b5f52656769737465725f537461746560601b8152508362005e9d565b62004a59826040518060600160405280602381526020016203ff66602391396200625f565b62004a7e82604051806060016040528060288152602001620405c1602891396200634c565b62004aa482826040518060600160405280602e815260200162040555602e9139620063dc565b62004aca8282604051806060016040528060298152602001620404b560299139620064fe565b62004aef826040518060600160405280602881526020016204029360289139620065bf565b62004b1582826040518060600160405280603981526020016204016560399139620067e8565b62004b3b82826040518060600160405280603e815260200162040583603e913962006b15565b62004b6182826040518060800160405280604881526020016204005b6048913962006cdd565b62004b86816040518060600160405280603a81526020016203fe37603a913962006f9e565b62004bac82826040518060600160405280602881526020016203ffbc60289139620070ce565b6200494882604051806060016040528060248152602001620405e96024913962007317565b606062004bfd8251600014156040518060600160405280603381526020016203fed9603391396200507e565b6000805b835181101562004c695762004c1562007ab8565b1562004c545762004c5184828151811062004c345762004c346200b143565b602091010151600160f89190911c1b6001600160c01b0384161790565b91505b8062004c60816200b30a565b91505062004c01565b506001600160c01b03811662004cb35762004cb08360008151811062004c935762004c936200b143565b602091010151600160f89190911c1b6001600160c01b0383161790565b90505b600062004cc9826001600160c01b031662004f3f565b905060008051602062040454833981519152845160405162004d2591906040808252601f908201527f5f73656c65637452616e643a20696e7075742071756f72756d20636f756e74006060820152602081019190915260800190565b60405180910390a160008051602062040454833981519152815160405162004d92919060408082526022908201527f5f73656c65637452616e643a2073656c65637465642071756f72756d20636f756060820152611b9d60f21b6080820152602081019190915260a00190565b60405180910390a19392505050565b60006101008251111562004e2c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40162002db1565b815162004e3b57506000919050565b6000808360008151811062004e545762004e546200b143565b0160200151600160f89190911c81901b92505b845181101562003c5d5784818151811062004e865762004e866200b143565b0160200151600160f89190911c1b915082821162004f1d5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40162002db1565b9181179162004f2c816200b30a565b905062004e67565b801982165b92915050565b606060008062004f4f8462007ace565b61ffff166001600160401b0381111562004f6d5762004f6d6200b12d565b6040519080825280601f01601f19166020018201604052801562004f98576020820181803683370190505b5090506000805b82518210801562004fb1575061010081105b1562005010576001811b93508584161562004ffd578060f81b83838151811062004fdf5762004fdf6200b143565b60200101906001600160f81b031916908160001a9053508160010191505b62005008816200b30a565b905062004f9f565b5090949350505050565b606060005b61010081101562005078576001811b838116156200506457604051620050529084906001851b60f81b906020016200bce5565b60405160208183030381529060405292505b5062005070816200b30a565b90506200501f565b50919050565b8162004948576000805160206203ff0c83398151915281604051620050a491906200bd16565b60405180910390a1620049488262007aff565b6000806200515760398054620050cd906200b607565b80601f0160208091040260200160405190810160405280929190818152602001828054620050fb906200b607565b80156200514c5780601f1062005120576101008083540402835291602001916200514c565b820191906000526020600020905b8154815290600101906020018083116200512e57829003601f168201915b505050505062007b66565b905060018114156200516b57600191505090565b60028114156200517d57600291505090565b60048114156200519b57620051956003600a62007bcf565b91505090565b60405162461bcd60e51b815260206004820152602560248201527f5f72616e6451756f72756d436f756e743a20666c6167206e6f74207265636f676044820152641b9a5e995960da1b606482015260840162002db1565b5090565b606060006200520d603a8054620050cd906200b607565b9050600060018214156200522457506001620052fa565b60028214156200523757506002620052fa565b60048214156200526857602f5462005260906003906200525a906001906200b762565b62007bcf565b9050620052fa565b60088214156200527b5750600f620052fa565b60108214156200528e57506014620052fa565b6020821415620052a157506019620052fa565b60405162461bcd60e51b815260206004820152602760248201527f5f72616e645374726174656779436f756e743a20666c6167206e6f74207265636044820152661bd9db9a5e995960ca1b606482015260840162002db1565b6000816001600160401b038111156200531757620053176200b12d565b6040519080825280602002602001820160405280156200535e57816020015b6040805180820190915260008082526020820152815260200190600190039081620053365790505b50905060005b8151811015620053eb576040518060400160405280602f83815481106200538f576200538f6200b143565b600091825260209182902001546001600160a01b03168252670de0b6b3a76400009101528251839083908110620053ca57620053ca6200b143565b60200260200101819052508080620053e2906200b30a565b91505062005364565b509392505050565b60008062005409603b8054620050cd906200b607565b905060018114156200541d57600091505090565b60028114156200519b57620f424091505090565b60008062005447603c8054620050cd906200b607565b905060018114156200545c5750600092915050565b60028114156200548a57620042b460018085600001516200547e91906200bd47565b63ffffffff1662007bcf565b6004811415620054a05750505163ffffffff1690565b60405162461bcd60e51b815260206004820152602a60248201527f5f72616e64496e697469616c4f70657261746f72733a20666c6167206e6f74206044820152691c9958dbd9db9a5e995960b21b606482015260840162002db1565b60006060806000806200550e62007c91565b915091506000806200552860388054620050cd906200b607565b90506001811415620055795787848460405162005545906200ad1c565b62005553939291906200bd6f565b604051809103906000f08015801562005570573d6000803e3d6000fd5b509150620055e7565b6002811415620055e757876040516020016200559691906200bdcf565b6040516020818303038152906040529750878484604051620055b8906200ad2a565b620055c6939291906200bd6f565b604051809103906000f080158015620055e3573d6000803e3d6000fd5b5091505b6000805160206203ff0c833981519152826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005636573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200566091908101906200b5a0565b6040516200566f91906200bdf9565b60405180910390a1600080620056858462007e62565b949b909a50939850929650505050505050565b6040805180820190915260018152605b60f81b602082015260609060005b83518110156200577e5760018451620056d091906200b762565b8114156200572a578162005700858381518110620056f257620056f26200b143565b016020015160f81c62002dc2565b604051602001620057139291906200be42565b604051602081830303815290604052915062005769565b8162005744858381518110620056f257620056f26200b143565b604051602001620057579291906200be6c565b60405160208183030381529060405291505b8062005775816200b30a565b915050620056b6565b50806040516020016200579291906200beac565b60408051601f198184030181529190529392505050565b6000805160206203ff0c833981519152620057c48262005698565b604051620057d391906200bed3565b60405180910390a160005b815181101562004948576000828281518110620057ff57620057ff6200b143565b016020015160285460405163e65797ad60e01b815260f89290921c6004830181905292506000916001600160a01b039091169063e65797ad90602401606060405180830381865afa15801562005859573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200587f91906200bb6d565b5190505b602c546040516379a0849160e11b815260ff8416600482015263ffffffff8316916001600160a01b03169063f341092290602401602060405180830381865afa158015620058d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058fb91906200bbe2565b63ffffffff1610620059d45760006200591483620059ec565b604080516001808252818301909252919250600091906020820181803683370190505090508360f81b816000815181106200595357620059536200b143565b60200101906001600160f81b031916908160001a90535060405163ca4f2d9760e01b81526001600160a01b0383169063ca4f2d9790620059989084906004016200b6ab565b600060405180830381600087803b158015620059b357600080fd5b505af1158015620059c8573d6000803e3d6000fd5b50505050505062005883565b50508080620059e3906200b30a565b915050620057de565b602c546040516379a0849160e11b815260ff8316600482015260009182916001600160a01b039091169063f341092290602401602060405180830381865afa15801562005a3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a6391906200bbe2565b602c549091506000906001600160a01b03166312d1d74d8562005a8d846200547e6001886200bd47565b6040516001600160e01b031960e085901b16815260ff909216600483015263ffffffff1660248201526044016040805180830381865afa15801562005ad6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005afc91906200bf41565b60200151602a546040516308f6629d60e31b8152600481018390529192506001600160a01b0316906347b314e890602401602060405180830381865afa15801562005b4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ed791906200b80f565b60208101516000906127109062005b8d9061ffff16856200bf7f565b620042b491906200bfb1565b602b5460405162fcdba760e51b815260ff841660048201526001600160a01b0383811660248301526000921690631f9b74e090604401602060405180830381865afa15801562005bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042b491906200bc8c565b60408101516000906127109062005b8d9061ffff16856200bf7f565b6060806000602f805490506001600160401b0381111562005c545762005c546200b12d565b60405190808252806020026020018201604052801562005c7e578160200160208202803683370190505b50602f549091506000906001600160401b0381111562005ca25762005ca26200b12d565b60405190808252806020026020018201604052801562005ccc578160200160208202803683370190505b5090506000805160206203ff0c833981519152856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005d1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005d4891908101906200b5a0565b60405162005d5791906200bfda565b60405180910390a160005b602f5481101562005e92576000602f828154811062005d855762005d856200b143565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa15801562005dd8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005dfe91906200b80f565b9050600062005e12624c4b4060646200c02d565b905062005e21828a83620080c7565b8286858151811062005e375762005e376200b143565b60200260200101906001600160a01b031690816001600160a01b0316815250508085858151811062005e6d5762005e6d6200b143565b602002602001018181525050505050808062005e89906200b30a565b91505062005d62565b509094909350915050565b6000805160206203fc3d83398151915282826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005f1791908101906200b5a0565b60405160200162005f2a9291906200c04f565b60408051601f198184030181529082905262005f46916200b6ab565b60405180910390a15050565b600062005f5f83620080d6565b805190915062005f72906000846200815a565b62005f9960008260200151600281111562005f915762005f916200c0ab565b14836200507e565b505050565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049846001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200602991906200b5ed565b6040518263ffffffff1660e01b81526004016200604891815260200190565b602060405180830381865afa15801562006066573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200608c91906200c0c1565b905062005f996001600160c01b03821615836200507e565b602a5460405162a1f4cb60e01b81526001600160a01b038481166004830152600092839291169062a1f4cb906024016040805180830381865afa158015620060f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200611691906200c0ec565b602a54604051630378a7eb60e61b81526001600160a01b038881166004830152939550919350600092169063de29fac090602401602060405180830381865afa15801562006168573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200618e91906200b5ed565b90506200619e8360008662008196565b620061ac8260008662008196565b620061ba816000866200815a565b5050505050565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da392620061fd929091169087906004016200b1ae565b602060405180830381865afa1580156200621b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200624191906200c111565b905062005f9960005b82600181111562005f915762005f916200c0ab565b6000826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620062a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062c691906200b5ed565b6028546040516309aa152760e11b81526001600160a01b038681166004830152929350600092909116906313542a4e90602401602060405180830381865afa15801562006317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200633d91906200b5ed565b90506200207e8282856200815a565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562006398573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620063be91906200c144565b905062005f9960015b82600281111562005f915762005f916200c0ab565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200646791906200b5ed565b6040518263ffffffff1660e01b81526004016200648691815260200190565b602060405180830381865afa158015620064a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620064ca91906200c0c1565b90506000620064d98462004da1565b9050620061ba620064f76001600160c01b0380841690851681161490565b846200507e565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200653f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200656591906200b5ed565b90506000620065748462004da1565b905060006200658383620081d2565b90506000620065928462008243565b9050620065b66001600160c01b0382168417836001600160c01b031614866200507e565b50505050505050565b6000826001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa158015620065ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200662591906200c162565b602a5460405162a1f4cb60e01b81526001600160a01b0386811660048301529293506000928392169062a1f4cb906024016040805180830381865afa15801562006673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200669991906200c0ec565b8451600090815260208087015190526040812092945090925090602a54604051630378a7eb60e61b81526001600160a01b0389811660048301529293506000929091169063de29fac090602401602060405180830381865afa15801562006704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200672a91906200b5ed565b602a5460405163745dcd7360e11b8152600481018590529192506000916001600160a01b039091169063e8bb9ae690602401602060405180830381865afa1580156200677a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620067a091906200b80f565b9050620067b38660000151868962008196565b620067c48660200151858962008196565b620067d18383896200815a565b620067de88828962008336565b5050505050505050565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006828573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200684e91906200c162565b905060006200685d8462008384565b905060006200686c85620084ce565b905060005b8551811015620065b6576000620068ae858484815181106200689757620068976200b143565b60200260200101516200855b90919063ffffffff16565b9050620068e18160000151858481518110620068ce57620068ce6200b143565b6020026020010151600001518862008196565b620069128160200151858481518110620068ff57620068ff6200b143565b6020026020010151602001518862008196565b50806200691f816200b30a565b91505062006871565b6200695083518351604051806060016040528060348152602001620403e16034913962008196565b6000846001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006990573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069b691906200c162565b90506000620069c58462008384565b90506000620069d485620084ce565b905060005b8551811015620067de576000878281518110620069fa57620069fa6200b143565b60200260200101516001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006a3f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a6591906200c162565b9050600062006a998662006a9262006a7d85620085f4565b8787815181106200689757620068976200b143565b906200855b565b905062006acc816000015186858151811062006ab95762006ab96200b143565b6020026020010151600001518962008196565b62006afd816020015186858151811062006aea5762006aea6200b143565b6020026020010151602001518962008196565b5050808062006b0c906200b30a565b915050620069d9565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006b56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b7c91906200b5ed565b905060005b8351811015620061ba57600084828151811062006ba25762006ba26200b143565b0160200151602b5460405163c46778a560e01b815260f89290921c6004830181905292506000916001600160a01b039091169063c46778a590602401602060405180830381865afa15801562006bfc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c2291906200bc8c565b602b54604051635401ed2760e01b81526004810187905260ff851660248201529192506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562006c7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ca191906200bc8c565b905062006cc4826001600160601b0316826001600160601b03161015876200507e565b505050808062006cd4906200b30a565b91505062006b81565b600062006ceb8484620086b4565b90506200207e84848385620087f6565b62006d23835183516040518060600160405280603981526020016203fd756039913962008196565b600062006d318584620086b4565b9050600084516001600160401b0381111562006d515762006d516200b12d565b60405190808252806020026020018201604052801562006d7b578160200160208202803683370190505b50905060005b855181101562006e175762006dd585828151811062006da45762006da46200b143565b602001015160f81c60f81b60f81c87838151811062006dc75762006dc76200b143565b602002602001015162005b99565b82828151811062006dea5762006dea6200b143565b6001600160601b03909216602092830291909101909101528062006e0e816200b30a565b91505062006d81565b50600062006e2687866200893d565b9050600062006e36888762008ae9565b9050600062006e458762008bdf565b9050600062006e548862008d12565b905060005b885181101562006f915762006ee385828151811062006e7c5762006e7c6200b143565b60200260200101516001600160601b031688838151811062006ea25762006ea26200b143565b602002602001015186848151811062006ebf5762006ebf6200b143565b602002602001015162006ed391906200bcb7565b6001600160601b03168a62008196565b62006f7c83828151811062006efc5762006efc6200b143565b60200260200101516001600160601b031687838151811062006f225762006f226200b143565b602002602001015189848151811062006f3f5762006f3f6200b143565b602002602001015185858151811062006f5c5762006f5c6200b143565b602002602001015162006f7091906200bcb7565b62006ed391906200c197565b8062006f88816200b30a565b91505062006e59565b5050505050505050505050565b600062006fab8362008d9f565b9050600062006fba8462008ecf565b905060005b8451811015620061ba576200702883828151811062006fe25762006fe26200b143565b602002602001015163ffffffff168383815181106200700557620070056200b143565b602002602001015160016200701b91906200c1ba565b63ffffffff168662008196565b8062007034816200b30a565b91505062006fbf565b60006200704a8362008d9f565b90506000620070598462008ecf565b905060005b8451811015620061ba57620070b98382815181106200708157620070816200b143565b602002602001015163ffffffff16838381518110620070a457620070a46200b143565b602002602001015163ffffffff168662008196565b80620070c5816200b30a565b9150506200705e565b6000620070db8362008f5c565b90506000620070ea846200909e565b905060005b845181101562002c8e576200714e8382815181106200711257620071126200b143565b6020026020010151518383815181106200713057620071306200b143565b60200260200101515160016200714791906200b793565b8662008196565b620071816200717a8483815181106200716b576200716b6200b143565b6020026020010151886200912b565b856200507e565b620071a56200719e8383815181106200716b576200716b6200b143565b85620091f3565b80620071b1816200b30a565b915050620070ef565b620071e2835183516040518060600160405280603f815260200162040415603f913962008196565b6000620071ef8362008f5c565b90506000620071fe846200909e565b905060005b8451811015620065b657620072548382815181106200722657620072266200b143565b6020026020010151518383815181106200724457620072446200b143565b6020026020010151518662008196565b620072806200717a8483815181106200727157620072716200b143565b6020026020010151896200912b565b6200729d6200719e8383815181106200727157620072716200b143565b620072e56200719e848381518110620072ba57620072ba6200b143565b6020026020010151888481518110620072d757620072d76200b143565b60200260200101516200912b565b620073026200717a838381518110620072ba57620072ba6200b143565b806200730e816200b30a565b91505062007203565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da39262007353929091169087906004016200b1ae565b602060405180830381865afa15801562007371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200739791906200c111565b905062005f9960016200624a565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200740a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200743091906200b5ed565b6040518263ffffffff1660e01b81526004016200744f91815260200190565b602060405180830381865afa1580156200746d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200749391906200c0c1565b905060005b8351811015620061ba576000848281518110620074b957620074b96200b143565b60209101015160f81c9050620074df60016001600160c01b038516831c8116146200719e565b5080620074ec816200b30a565b91505062007498565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007536573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200755c91906200b5ed565b905060006200756b8462004da1565b905060006200757a83620081d2565b90506000620075898462008243565b9050620075a58382166001600160c01b031684145b866200507e565b620065b68284166001600160c01b0316156200759e565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620075fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200762391906200b5ed565b905060005b8351811015620061ba5760008482815181106200764957620076496200b143565b0160200151602b54604051635401ed2760e01b81526004810186905260f89290921c6024830181905292506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa158015620076aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620076d091906200bc8c565b9050620076e9816001600160601b031660008762008196565b50508080620076f8906200b30a565b91505062007628565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562007741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200776791906200c162565b90506000620077768462008384565b905060006200778585620084ce565b905060005b8551811015620065b6576000620077ba620077a586620085f4565b8484815181106200689757620068976200b143565b9050620077da8160000151858481518110620068ce57620068ce6200b143565b620077f88160200151858481518110620068ff57620068ff6200b143565b508062007805816200b30a565b9150506200778a565b60006200781c848462008ae9565b905060006200782b8462008bdf565b905060006200783a8562008d12565b905060005b8551811015620065b657620078c98382815181106200786257620078626200b143565b60200260200101516001600160601b03168583815181106200788857620078886200b143565b6020026020010151848481518110620078a557620078a56200b143565b6020026020010151620078b991906200c197565b6001600160601b03168762008196565b80620078d5816200b30a565b9150506200783f565b6000620078eb8362008d9f565b90506000620078fa8462008ecf565b905060005b8451811015620061ba576200795b8382815181106200792257620079226200b143565b602002602001015163ffffffff1660018484815181106200794757620079476200b143565b60200260200101516200701b91906200bd47565b8062007967816200b30a565b915050620078ff565b60006200797d8362008f5c565b905060006200798c846200909e565b905060005b845181101562002c8e57620079e9838281518110620079b457620079b46200b143565b6020026020010151516001848481518110620079d457620079d46200b143565b6020026020010151516200714791906200b762565b62007a066200719e8483815181106200716b576200716b6200b143565b62007a236200717a8383815181106200716b576200716b6200b143565b8062007a2f816200b30a565b91505062007991565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562007a84573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007aaa91906200c144565b905062005f996002620063c7565b600062007ac86000600162007bcf565b15919050565b6000805b821562004f395762007ae66001846200b762565b909216918062007af6816200c1dc565b91505062007ad2565b8062004389576000805160206203fc3d83398151915260405162007b549060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200438962009200565b600062007b9160008351116040518060600160405280603281526020016203fe05603291396200507e565b600062007ba96000600185516200525a91906200b762565b905082818151811062007bc05762007bc06200b143565b016020015160f81c9392505050565b60008062007bde84846200b762565b62007beb9060016200b793565b90506000815b801562007c10578162007c04816200b30a565b92505060011c62007bf1565b600062007c21600180851b6200b762565b60375490915081165b84811062007c48578162007c3f86836200b762565b16905062007c2a565b60375460405160200162007c5e91815260200190565b60408051601f19818403018152919052805160209091012060375562007c8581896200b793565b98975050505050505050565b600062007c9d6200ad38565b603e54603d54141562007d315760405162461bcd60e51b815260206004820152604f60248201527f5f66657463684b6579706169723a206e6f7420656e6f7567682067656e65726160448201527f746564206b6579732e20436865636b20496e746567726174696f6e4465706c6f60648201526e3cb2b91731b7b739ba393ab1ba37b960891b608482015260a40162002db1565b6000603e603d548154811062007d4b5762007d4b6200b143565b906000526020600020015490506000603f603d548154811062007d725762007d726200b143565b60009182526020918290206040805160a0810182526008939093029091018054606084019081526001820154608080860191909152908452825180840184526002808401548252600384015482880152958501528251908101808452939491938584019391926004860192849290830191849182845b81548152602001906001019080831162007de857505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831162007e1f5750505091909252505050905250603d8054919250600062007e54836200b30a565b909155509194909350915050565b6060806000602f805490506001600160401b0381111562007e875762007e876200b12d565b60405190808252806020026020018201604052801562007eb1578160200160208202803683370190505b50602f549091506000906001600160401b0381111562007ed55762007ed56200b12d565b60405190808252806020026020018201604052801562007eff578160200160208202803683370190505b5090506000805160206203ff0c833981519152856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562007f51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007f7b91908101906200b5a0565b60405162007f8a91906200c201565b60405180910390a160005b602f5481101562005e92576000602f828154811062007fb85762007fb86200b143565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa1580156200800b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200803191906200b80f565b9050600062008047620f4240624c4b4062007bcf565b905062008056828a83620080c7565b828685815181106200806c576200806c6200b143565b60200260200101906001600160a01b031690816001600160a01b03168152505080858581518110620080a257620080a26200b143565b6020026020010181815250505050508080620080be906200b30a565b91505062007f95565b62005f9983838360006200930e565b6040805180820190915260008082526020820152602854604051631619718360e21b81526001600160a01b03848116600483015290911690635865c60c906024016040805180830381865afa15801562008134573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f3991906200c255565b81831462005f99576000805160206203ff0c833981519152816040516200818291906200bd16565b60405180910390a162005f99838362009509565b81831462005f99576000805160206203ff0c83398151915281604051620081be91906200bd16565b60405180910390a162005f998383620095f2565b60285460405163871ef04960e01b8152600481018390526000916001600160a01b03169063871ef04990602401602060405180830381865afa1580156200821d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f3991906200c0c1565b600080602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200829c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620082c291906200b5ed565b9050620082cf83620081d2565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b1580156200831757600080fd5b505af11580156200832c573d6000803e3d6000fd5b5050505050919050565b816001600160a01b0316836001600160a01b03161462005f99576000805160206203ff0c833981519152816040516200837091906200bd16565b60405180910390a162005f998383620096a4565b6060600082516001600160401b03811115620083a457620083a46200b12d565b604051908082528060200260200182016040528015620083eb57816020015b6040805180820190915260008082526020820152815260200190600190039081620083c35790505b50905060005b8351811015620084c757602a5484516001600160a01b0390911690635f61a884908690849081106200842757620084276200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526024016040805180830381865afa1580156200846b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200849191906200c162565b828281518110620084a657620084a66200b143565b60200260200101819052508080620084be906200b30a565b915050620083f1565b5092915050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008528573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200854e91906200b5ed565b9050620082cf8362008384565b6040805180820190915260008082526020820152620085796200ad88565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801562002d7457508062002dba5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640162002db1565b604080518082019091526000808252602082015281511580156200861a57506020820151155b1562008639575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516200868091906200b77c565b620086ac907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476200b762565b905292915050565b6060600082516001600160401b03811115620086d457620086d46200b12d565b604051908082528060200260200182016040528015620086fe578160200160208202803683370190505b50905060005b8351811015620053eb57602b5484516001600160a01b0390911690631f9b74e0908690849081106200873a576200873a6200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526001600160a01b0388166024820152604401602060405180830381865afa1580156200878e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620087b491906200bc8c565b828281518110620087c957620087c96200b143565b6001600160601b039092166020928302919091019091015280620087ed816200b30a565b91505062008704565b60006200880485856200893d565b9050600062008814868662008ae9565b90506000620088238662008bdf565b90506000620088328762008d12565b905060005b87518110156200893257620088c18582815181106200885a576200885a6200b143565b60200260200101516001600160601b03168883815181106200888057620088806200b143565b60200260200101518684815181106200889d576200889d6200b143565b6020026020010151620088b191906200bcb7565b6001600160601b03168862008196565b6200891d838281518110620088da57620088da6200b143565b60200260200101516001600160601b03168883815181106200890057620089006200b143565b60200260200101518484815181106200889d576200889d6200b143565b8062008929816200b30a565b91505062008837565b505050505050505050565b60606000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008980573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620089a691906200b5ed565b9050600083516001600160401b03811115620089c657620089c66200b12d565b604051908082528060200260200182016040528015620089f0578160200160208202803683370190505b50905060005b845181101562008ae057602b5485516001600160a01b0390911690635401ed2790859088908590811062008a2e5762008a2e6200b143565b01602001516040516001600160e01b031960e085901b168152600481019290925260f81c6024820152604401602060405180830381865afa15801562008a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008a9e91906200bc8c565b82828151811062008ab35762008ab36200b143565b6001600160601b03909216602092830291909101909101528062008ad7816200b30a565b915050620089f6565b50949350505050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008b43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008b6991906200b5ed565b905062008b7784846200893d565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b15801562008bbf57600080fd5b505af115801562008bd4573d6000803e3d6000fd5b505050505092915050565b6060600082516001600160401b0381111562008bff5762008bff6200b12d565b60405190808252806020026020018201604052801562008c29578160200160208202803683370190505b50905060005b8351811015620084c757602b5484516001600160a01b039091169063d5eccc059086908490811062008c655762008c656200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562008caa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008cd091906200bc8c565b82828151811062008ce55762008ce56200b143565b6001600160601b03909216602092830291909101909101528062008d09816200b30a565b91505062008c2f565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008d6c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008d9291906200b5ed565b9050620082cf8362008bdf565b6060600082516001600160401b0381111562008dbf5762008dbf6200b12d565b60405190808252806020026020018201604052801562008de9578160200160208202803683370190505b50905060005b8351811015620084c757602c5484516001600160a01b039091169063f34109229086908490811062008e255762008e256200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562008e6a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e9091906200bbe2565b82828151811062008ea55762008ea56200b143565b63ffffffff909216602092830291909101909101528062008ec6816200b30a565b91505062008def565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008f29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008f4f91906200b5ed565b9050620082cf8362008d9f565b6060600082516001600160401b0381111562008f7c5762008f7c6200b12d565b60405190808252806020026020018201604052801562008fb157816020015b606081526020019060019003908162008f9b5790505b50905060005b8351811015620084c757602c5484516001600160a01b039091169063890262459086908490811062008fed5762008fed6200b143565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201524363ffffffff166024820152604401600060405180830381865afa1580156200903e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200906891908101906200c318565b8282815181106200907d576200907d6200b143565b6020026020010181905250808062009095906200b30a565b91505062008fb7565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620090f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200911e91906200b5ed565b9050620082cf8362008f5c565b600080826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200916d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200919391906200b5ed565b905060005b8451811015620091e85781858281518110620091b857620091b86200b143565b60200260200101511415620091d35760019250505062004f39565b80620091df816200b30a565b91505062009198565b506000949350505050565b620049488215826200507e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620092fd57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490620092789083906519985a5b195960d21b906001906020016200c350565b60408051601f19818403018152908290526200929892916020016200b6c0565b60408051601f1981840301815290829052620092b4916200b6f3565b6000604051808303816000865af19150503d8060008114620092f3576040519150601f19603f3d011682016040523d82523d6000602084013e620092f8565b606091505b505050505b6007805461ff001916610100179055565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009287169162009364916200b6f3565b600060405180830381855afa9150503d8060008114620093a1576040519150601f19603f3d011682016040523d82523d6000602084013e620093a6565b606091505b50915050600081806020019051810190620093c291906200b5ed565b9050620093fc84620093f587620093ee6370a0823160e01b620093e7600c8d6200978d565b90620097b3565b90620097d1565b90620097fa565b821562002c8e5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200944791906200b6f3565b600060405180830381855afa9150503d806000811462009484576040519150601f19603f3d011682016040523d82523d6000602084013e62009489565b606091505b50915050600081806020019051810190620094a591906200b5ed565b905082861015620094d057620094bc86846200b762565b620094c890826200b762565b9050620094eb565b620094dc83876200b762565b620094e890826200b793565b90505b620067de81620093f56318160ddd60e01b620093e7600c8d6200978d565b80821462004948576000805160206203fc3d8339815191526040516200956e9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974604082015264657333325d60d81b606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620095a791906200c371565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620095e091906200c3aa565b60405180910390a16200494862009200565b80821462004948576000805160206203fc3d833981519152604051620096549060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160008051602062040454833981519152826040516200967c91906200c371565b60405180910390a16000805160206204045483398151915281604051620095e091906200c3aa565b806001600160a01b0316826001600160a01b03161462004948576000805160206203fc3d8339815191526040516200971b9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200975491906200c3d5565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620095e091906200c41a565b6005820180546001600160a01b0319166001600160a01b038316179055600082620042b4565b60038201805463ffffffff191660e083901c179055600082620042b4565b6002820180546001810182556000918252602082206001600160a01b03841691015582620042b4565b620049488282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200987357602002820191906000526020600020905b8154815260200190600101908083116200985e575b50505050509050600083620098888362009b78565b6040516020016200989b9291906200b6c0565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620098ef9186918891016200c445565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200992a57620099288762009c24565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200996b9187918991016200c445565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620099b291906200b6f3565b600060405180830381855afa9150503d8060008114620099ef576040519150601f19603f3d011682016040523d82523d6000602084013e620099f4565b606091505b50915062009a1190508162009a0b8860206200c02d565b62009c31565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562009a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009a9e91906200b5ed565b905080821462009ac25760405162461bcd60e51b815260040162002db1906200c481565b6040516370ca10bb60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb9062009aff908b9087908e906004016200c350565b600060405180830381600087803b15801562009b1a57600080fd5b505af115801562009b2f573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562009b6460028b0160006200ada6565b896004016000905550505050505050505050565b606060008251602062009b8c91906200c02d565b6001600160401b0381111562009ba65762009ba66200b12d565b6040519080825280601f01601f19166020018201604052801562009bd1576020820181803683370190505b50905060005b8351811015620084c757600084828151811062009bf85762009bf86200b143565b60200260200101519050808260200260200184015250808062009c1b906200b30a565b91505062009bd7565b600062004f398262009cb1565b6000806000602085511162009c4857845162009c4b565b60205b905060005b81811015620050105762009c668160086200c02d565b8662009c7383886200b793565b8151811062009c865762009c866200b143565b01602001516001600160f81b031916901c92909217918062009ca8816200b30a565b91505062009c50565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562009d2357602002820191906000526020600020905b81548152602001906001019080831162009d0e575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062009d6f925085918791016200c445565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562009e0e576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162009dde9185918791016200c445565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362009e1c836200a9eb565b60405160200162009e2f9291906200b6c0565b60405160208183030381529060405290506000805160206204024283398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562009e8e57600080fd5b505af115801562009ea3573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162009ec491906200b6f3565b600060405180830381855afa9150503d806000811462009f01576040519150601f19603f3d011682016040523d82523d6000602084013e62009f06565b606091505b50915062009f2390508162009f1d8760206200c02d565b6200aa97565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562009f85573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262009faf91908101906200c51c565b5090508051600114156200a2915760006000805160206204024283398151915260001c6001600160a01b031663667f9d70898460008151811062009ff75762009ff76200b143565b60200260200101516040518363ffffffff1660e01b81526004016200a0319291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200a04f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a07591906200b5ed565b9050806200a0e0577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200a0b5576200a0b56200b143565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200a1025760405162461bcd60e51b815260040162002db1906200c481565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200a13a9291906200c445565b60405160208183030381529060405280519060200120856000815181106200a166576200a1666200b143565b602002602001015160001c6040516200a18394939291906200c586565b60405180910390a1816000815181106200a1a1576200a1a16200b143565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200a1ec918a918c91016200c445565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200a256918a918c91016200c445565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200a86e565b6001815111156200a7fd5760005b81518110156200a7f65760006000805160206204024283398151915260001c6001600160a01b031663667f9d708a8585815181106200a2e2576200a2e26200b143565b60200260200101516040518363ffffffff1660e01b81526004016200a31c9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200a33a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a36091906200b5ed565b9050806200a3ca577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200a39f576200a39f6200b143565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200a3d957506200a7e1565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c908790879081106200a411576200a4116200b143565b6020026020010151846040518463ffffffff1660e01b81526004016200a43a939291906200c350565b600060405180830381600087803b1580156200a45557600080fd5b505af11580156200a46a573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200a48c91906200b6f3565b600060405180830381855afa9150503d80600081146200a4c9576040519150601f19603f3d011682016040523d82523d6000602084013e6200a4ce565b606091505b5090925090506200a4e68162009f1d8c60206200c02d565b9650508080156200a4f657508186145b156200a749577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200a5349291906200c445565b604051602081830303815290604052805190602001208888815181106200a55f576200a55f6200b143565b602002602001015160001c6040516200a57c94939291906200c586565b60405180910390a18484815181106200a599576200a5996200b143565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200a5e4918d918f91016200c445565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200a6719291906200c445565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206204024283398151915260001c6001600160a01b03166370ca10bb8c8787815181106200a6e3576200a6e36200b143565b6020026020010151866040518463ffffffff1660e01b81526004016200a70c939291906200c350565b600060405180830381600087803b1580156200a72757600080fd5b505af11580156200a73c573d6000803e3d6000fd5b505050505050506200a7f6565b6000805160206204024283398151915260001c6001600160a01b03166370ca10bb8c8787815181106200a780576200a7806200b143565b6020026020010151866040518463ffffffff1660e01b81526004016200a7a9939291906200c350565b600060405180830381600087803b1580156200a7c457600080fd5b505af11580156200a7d9573d6000803e3d6000fd5b505050505050505b806200a7ed816200b30a565b9150506200a29f565b506200a86e565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002db1565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200a8b29188918a91016200c445565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a9415760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b606482015260840162002db1565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200a97260028a0160006200ada6565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200a9b89188918a91016200c445565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200a9ff91906200c02d565b6001600160401b038111156200aa19576200aa196200b12d565b6040519080825280601f01601f1916602001820160405280156200aa44576020820181803683370190505b50905060005b8351811015620084c75760008482815181106200aa6b576200aa6b6200b143565b6020026020010151905080826020026020018401525080806200aa8e906200b30a565b9150506200aa4a565b600080600060208551116200aaae5784516200aab1565b60205b905060005b8181101562005010576200aacc8160086200c02d565b866200aad983886200b793565b815181106200aaec576200aaec6200b143565b01602001516001600160f81b031916901c9290921791806200ab0e816200b30a565b9150506200aab6565b610718806200c5b783390190565b610778806200cccf83390190565b6094806200d44783390190565b61022a806200d4db83390190565b6103f3806200d70583390190565b610e81806200daf883390190565b614ad0806200e97983390190565b6104e4806201344983390190565b615c46806201392d83390190565b61338a806201957383390190565b610efe806201c8fd83390190565b613169806201d7fb83390190565b611f78806202096483390190565b611ab480620228dc83390190565b61117d806202439083390190565b613958806202550d83390190565b61210b8062028e6583390190565b6113ec806202af7083390190565b6116e0806202c35c83390190565b616187806202da3c83390190565b611a258062033bc383390190565b60405180604001604052806200ac516200adc6565b81526020016200ac606200adc6565b905290565b60405180606001604052806003906020820280368337509192915050565b610e6080620355e883390190565b8280546200ac9f906200b607565b90600052602060002090601f0160209004810192826200acc357600085556200ad0e565b82601f106200acde57805160ff19168380011785556200ad0e565b828001600101855582156200ad0e579182015b828111156200ad0e5782518255916020019190600101906200acf1565b50620051f29291506200ade4565b6146f4806203644883390190565b615013806203ab3c83390190565b6040805160a081019091526000606082018181526080830191909152819081526020016200ad79604051806040016040528060008152602001600081525090565b81526020016200ac606200ac3c565b60405180608001604052806004906020820280368337509192915050565b50805460008255906000526020600020908101906200438991906200ade4565b60405180604001604052806002906020820280368337509192915050565b5b80821115620051f257600081556001016200ade5565b6000602082840312156200ae0e57600080fd5b5035919050565b8060005b60028110156200207e5781518452602093840193909101906001016200ae19565b6200ae478282516200ae15565b602081015162005f9960408401826200ae15565b6080810162004f3982846200ae3a565b600081518084526020808501945080840160005b838110156200aea65781516001600160a01b0316875295820195908201906001016200ae7f565b509495945050505050565b602081526000620042b460208301846200ae6b565b60005b838110156200aee35781810151838201526020016200aec9565b838111156200207e5750506000910152565b600081518084526200af0f8160208601602086016200aec6565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200afd957603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200afc257605f198985030183526200afaf8486516200aef5565b948e01949350918d01916001016200af90565b505050978a0197945050918801916001016200af4a565b50919a9950505050505050505050565b6000602082840312156200affc57600080fd5b813562ffffff81168114620042b457600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200b0b857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200b0a25783516001600160e01b0319168252928b019260019290920191908b01906200b076565b50978a019795505050918701916001016200b038565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200b12057603f198886030184526200b10d8583516200aef5565b945092850192908501906001016200b0ee565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6040815260006200b16e60408301856200ae6b565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b6001600160a01b0392831681529116602082015260400190565b600081518084526020808501945080840160005b838110156200aea6578151875295820195908201906001016200b1dc565b6001600160a01b0387811682528616602082015260ff851660408201526060810184905260c0608082018190526000906200b238908301856200ae6b565b82810360a08401526200b24c81856200b1c8565b9998505050505050505050565b6001600160a01b038481168252831660208201526060604082018190526000906200b287908301846200aef5565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b8152600082516200b2ba81600d8501602087016200aec6565b91909101600d0192915050565b6214d51560ea1b8152600082516200b2e78160038501602087016200aec6565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156200b321576200b3216200b2f4565b5060010190565b600081518084526020808501945080840160005b838110156200aea65781516001600160601b0316875295820195908201906001016200b33c565b600081518084526020808501945080840160005b838110156200aea657815180516001600160a01b031688528301516001600160601b031683880152604090960195908201906001016200b377565b600081518084526020808501808196508360051b8101915082860160005b858110156200b3fe5782840389526200b3eb8483516200b363565b988501989350908401906001016200b3d0565b5091979650505050505050565b6001600160a01b038981168252888116602080840191909152888216604084015290871660608084019190915260ff8716608084015261010060a084018190528651908401819052600092610120850192888201929190855b838110156200b4ae576200b49d868651805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b94810194938201936001016200b464565b505050505082810360c08401526200b4c781866200b328565b905082810360e08401526200b4dd81856200b3b2565b9b9a5050505050505050505050565b604080519081016001600160401b03811182821017156200b511576200b5116200b12d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200b542576200b5426200b12d565b604052919050565b60006001600160401b038311156200b566576200b5666200b12d565b6200b57b601f8401601f19166020016200b517565b90508281528383830111156200b59057600080fd5b620042b48360208301846200aec6565b6000602082840312156200b5b357600080fd5b81516001600160401b038111156200b5ca57600080fd5b8201601f810184136200b5dc57600080fd5b62002ed7848251602084016200b54a565b6000602082840312156200b60057600080fd5b5051919050565b600181811c908216806200b61c57607f821691505b602082108114156200507857634e487b7160e01b600052602260045260246000fd5b6060815260006200b65360608301866200aef5565b82810360208481019190915285518083528682019282019060005b818110156200b6955784516001600160a01b0316835293830193918301916001016200b66e565b5050848103604086015262007c8581876200aef5565b602081526000620042b460208301846200aef5565b6001600160e01b03198316815281516000906200b6e58160048501602087016200aec6565b919091016004019392505050565b600082516200b7078184602087016200aec6565b9190910192915050565b6000602082840312156200b72457600080fd5b81518015158114620042b457600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826200b75d576200b75d6200b735565b500490565b6000828210156200b777576200b7776200b2f4565b500390565b6000826200b78e576200b78e6200b735565b500690565b600082198211156200b7a9576200b7a96200b2f4565b500190565b6080815260006200b7c360808301876200aef5565b82810360208401526200b7d781876200aef5565b604084019590955250506001600160a01b039190911660609091015292915050565b6001600160a01b03811681146200438957600080fd5b6000602082840312156200b82257600080fd5b8151620042b4816200b7f9565b6040815260006200b84460408301856200ae6b565b82810360208481019190915284518083528582019282019060005b818110156200b87f5784511515835293830193918301916001016200b85f565b5090979650505050505050565b6200b8bb8185805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b6001600160601b038316606082015260a0608082015260006200b28760a08301846200b363565b6b02932b3b4b9ba32b934b733960a51b8152600082516200b90b81600c8501602087016200aec6565b7f20696e697469616c206f70657261746f727320696e20656163682071756f7275600c939091019283015250606d60f81b602c820152602d01919050565b600060208083526000845481600182811c9150808316806200b96c57607f831692505b8583108114156200b98b57634e487b7160e01b85526022600452602485fd5b8786018381526020018180156200b9ab57600181146200b9bd576200b9ea565b60ff198616825287820196506200b9ea565b60008b81526020902060005b868110156200b9e4578154848201529085019089016200b9c9565b83019750505b50949998505050505050505050565b6727b832b930ba37b960c11b8152600082516200ba1e8160088501602087016200aec6565b9190910160080192915050565b6040815260006200ba4060408301856200ae6b565b82810360208401526200b28781856200b1c8565b60408152602360408201527f5f676574436875726e546172676574733a20696e636f6d696e67206f706572616060820152623a37b960e91b608082015260a060208201526000620042b460a08301846200aef5565b60408152601e60408201527f5f676574436875726e546172676574733a20636875726e51756f72756d7300006060820152608060208201526000620042b460808301846200aef5565b60408152602160408201527f5f676574436875726e546172676574733a207374616e6461726451756f72756d6060820152607360f81b608082015260a060208201526000620042b460a08301846200aef5565b805163ffffffff81168114620029ec57600080fd5b805161ffff81168114620029ec57600080fd5b6000606082840312156200bb8057600080fd5b604051606081018181106001600160401b03821117156200bba5576200bba56200b12d565b6040526200bbb3836200bb45565b81526200bbc3602084016200bb5a565b60208201526200bbd6604084016200bb5a565b60408201529392505050565b6000602082840312156200bbf557600080fd5b620042b4826200bb45565b7f5f676574436875726e546172676574733a2073656c656374656420636875726e8152720103a30b933b2ba103337b91038bab7b93ab69606d1b6020820152600082516200bc568160338501602087016200aec6565b9190910160330192915050565b6040815260006200bc7860408301856200aef5565b82810360208401526200b28781856200aef5565b6000602082840312156200bc9f57600080fd5b81516001600160601b0381168114620042b457600080fd5b60006001600160601b038083168185168083038211156200bcdc576200bcdc6200b2f4565b01949350505050565b600083516200bcf98184602088016200aec6565b6001600160f81b0319939093169190920190815260010192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620042b460808301846200aef5565b600063ffffffff838116908316818110156200bd67576200bd676200b2f4565b039392505050565b60006101408083526200bd85818401876200aef5565b9150508360208301526200bda760408301845180518252602090810151910152565b60208381015180516080850152015160a0830152604083015162008ae060c08401826200ae3a565b600082516200bde38184602087016200aec6565b6317d05b1d60e21b920191825250600401919050565b60408152601760408201527f5f72616e64557365723a204372656174656420757365720000000000000000006060820152608060208201526000620042b460808301846200aef5565b600083516200be568184602088016200aec6565b8351908301906200bcdc8183602088016200aec6565b600083516200be808184602088016200aec6565b8351908301906200be968183602088016200aec6565b61016160f51b9101908152600201949350505050565b600082516200bec08184602087016200aec6565b605d60f81b920191825250600101919050565b604081526040808201527f5f676574436875726e546172676574733a206d616b696e6720726f6f6d20627960608201527f2072656d6f76696e67206f70657261746f72732066726f6d2071756f72756d73608082015260a060208201526000620042b460a08301846200aef5565b6000604082840312156200bf5457600080fd5b6200bf5e6200b4ec565b6200bf69836200bb45565b8152602083015160208201528091505092915050565b60006001600160601b03808316818516818304811182151516156200bfa8576200bfa86200b2f4565b02949350505050565b60006001600160601b03808416806200bfce576200bfce6200b735565b92169190910492915050565b60408152602160408201527f5f6465616c4d6178546f6b656e733a206465616c696e672061737365747320746060820152606f60f81b608082015260a060208201526000620042b460a08301846200aef5565b60008160001904831182151516156200c04a576200c04a6200b2f4565b500290565b61016960f51b8152600083516200c06e8160028501602088016200aec6565b600560fb1b60029184019182015283516200c0918160038401602088016200aec6565b602960f81b60039290910191820152600401949350505050565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200c0d457600080fd5b81516001600160c01b0381168114620042b457600080fd5b600080604083850312156200c10057600080fd5b505080516020909101519092909150565b6000602082840312156200c12457600080fd5b815160028110620042b457600080fd5b805160038110620029ec57600080fd5b6000602082840312156200c15757600080fd5b620042b4826200c134565b6000604082840312156200c17557600080fd5b6200c17f6200b4ec565b82518152602083015160208201528091505092915050565b60006001600160601b03838116908316818110156200bd67576200bd676200b2f4565b600063ffffffff8083168185168083038211156200bcdc576200bcdc6200b2f4565b600061ffff808316818114156200c1f7576200c1f76200b2f4565b6001019392505050565b60408152602260408201527f5f6465616c52616e64546f6b656e733a206465616c696e672061737365747320606082015261746f60f01b608082015260a060208201526000620042b460a08301846200aef5565b6000604082840312156200c26857600080fd5b6200c2726200b4ec565b825181526200c284602084016200c134565b60208201529392505050565b600082601f8301126200c2a257600080fd5b815160206001600160401b038211156200c2c0576200c2c06200b12d565b8160051b6200c2d18282016200b517565b92835284810182019282810190878511156200c2ec57600080fd5b83870192505b848310156200c30d578251825291830191908301906200c2f2565b979650505050505050565b6000602082840312156200c32b57600080fd5b81516001600160401b038111156200c34257600080fd5b62002ed7848285016200c290565b6001600160a01b039390931683526020830191909152604082015260600190565b6040815260006200c39c60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200c39c60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200c40060408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006200c40060408301600a8152690808080808149a59da1d60b21b602082015260400190565b825160009082906020808701845b838110156200c471578151855293820193908201906001016200c453565b5050948252509092019392505050565b6020808252606f908201527f73746453746f726167652066696e642853746453746f72616765293a2050616360408201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560608201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960808201526e39b713ba1039bab83837b93a32b21760891b60a082015260c00190565b600080604083850312156200c53057600080fd5b82516001600160401b03808211156200c54857600080fd5b6200c556868387016200c290565b935060208501519150808211156200c56d57600080fd5b506200c57c858286016200c290565b9150509250929050565b6001600160a01b039490941684526001600160e01b0319929092166020840152604083015260608201526080019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c0033746f74616c206f70657261746f7220636f756e742073686f756c64206265207468652073616d6520666f7220636875726e656451756f72756d736f70657261746f722073686f756c64206e6f206c6f6e6765722068617665207374616b6520696e20616e792071756f72756d736f70657261746f7220616c726561647920686173206269747320696e2071756f72756d206269746d61706f70657261746f72206c6973742073686f756c6420636f6e7461696e20696e636f6d696e67206f70657261746f7220616e642073686f756c64206e6f7420636f6e7461696e20636875726e6564206f70657261746f727341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420746f207374616e6461726451756f72756d732061706b7363757272656e74206f70657261746f72206269746d61702073686f756c64206e6f7420696e636c7564652071756f72756d73636875726e6564206f70657261746f7220646964206e6f7420646572656769737465722066726f6d20636875726e65642071756f72756d6f70657261746f72206c6973742073686f756c642068617665206f6e6520666577657220656e7472796661696c656420746f20616464206f70657261746f722077656967687420616e642072656d6f766520636875726e6564207765696768742066726f6d20656163682071756f72756d6173736572745f536e61705f436875726e65645f4f70657261746f725765696768743a20696e707574206c656e677468206d69736d617463685f636f6e66696752616e643a20696e76616c69642066696c6c54797065732c206e6f20666c616773207061737365646f70657261746f7220616c72656164792068617320612072656769737465726564207075626b65795f72616e6456616c75653a20747269656420746f2073656c6563742076616c75652066726f6d20656d707479206172726179746f74616c206f70657261746f7220636f756e742073686f756c64206861766520696e6372656173656420666f7220656163682071756f72756d636875726e6564206f70657261746f722073686f756c64207374696c6c206861766520612072656769737465726564207075626b65795f636f6e66696752616e643a20696e76616c6964206d696e696d756d5374616b652c206e6f20666c616773207061737365645f73656c65637452616e643a20747269656420746f2073656c6563742066726f6d20656d7074792071756f72756d206c697374280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583636875726e6564206f70657261746f72206269746d61702073686f756c64206e6f7420696e636c75646520636875726e65642071756f72756d736f70657261746f72496e666f2073686f756c642068617665206f70657261746f7249645f636f6e66696752616e643a20696e76616c6964206e756d537472617465676965732c206e6f20666c616773207061737365646f70657261746f72206c6973742073686f756c642068617665206f6e65206d6f726520656e747279746f74616c206f70657261746f7220636f756e742073686f756c64206861766520696e6372656173656420666f72207374616e6461726451756f72756d736f70657261746f722073686f756c64206861766520656d70747920696420616e64204e455645525f52454749535445524544207374617475736661696c656420746f20616464206f70657261746f722077656967687420746f206f70657261746f7220616e6420746f74616c207374616b6520696e20656163682071756f72756d746f74616c206f70657261746f7220636f756e742073686f756c6420686176652064656372656173656420666f7220656163682071756f72756d5f636f6e66696752616e643a20696e76616c6964205f7573657254797065732c206e6f20666c616773207061737365646f70657261746f722073686f756c64207374696c6c206861766520612072656769737465726564207075626b65796f70657261746f72496e666f207374617475732073686f756c64206265204445524547495354455245446f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420746f20656163682071756f72756d2061706b6f70657261746f72207075626b65792073686f756c642068617665206265656e20737562747261637465642066726f6d20656163682071756f72756d2061706b6f70657261746f72206c6973742073686f756c642068617665206f6e65206d6f726520656e74727920696e207374616e6461726451756f72756d736f70657261746f72496e666f2073686f756c64207374696c6c2068617665206f70657261746f724964885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f6e657752616e646f6d4f70657261746f723a206f70657261746f722073686f756c6420626520726567697374657265646f70657261746f722073686f756c64206861766520726567697374657265642061207075626b65796f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420616e6420636875726e6564206f70657261746f72207075626b6579732073686f756c642068617665206265656e2072656d6f7665642066726f6d2061706b735f636f6e66696752616e643a20696e76616c6964206e756d51756f72756d732c206e6f20666c616773207061737365645f676574436875726e546172676574733a206e6f6e2d66756c6c2071756f72756d2063616e6e6f7420626520636875726e65646f70657261746f7220646964206e6f7420646572656769737465722066726f6d20616c6c2071756f72756d73636875726e6564206f70657261746f72496e666f2073686f756c64207374696c6c2068617665206f70657261746f7249646173736572745f536e61705f436875726e65645f51756f72756d41706b3a20696e707574206c656e677468206d69736d617463686173736572745f536e61705f5265706c616365645f4f70657261746f724c697374456e74726965733a20696e707574206c656e677468206d69736d61746368b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a86661696c656420746f2072656d6f7665206f70657261746f72207765696768742066726f6d20746f74616c207374616b6520666f7220656163682071756f72756d6f70657261746f7220646964206e6f7420726567697374657220666f7220616c6c2071756f72756d736f70657261746f722073686f756c64206e6f74206861766520616e79206269747320696e206269746d61706661696c656420746f20616464206f70657261746f722077656967687420746f206f70657261746f7220616e6420746f74616c207374616b6520696e207374616e6461726451756f72756d7363757272656e74206f70657261746f72206269746d61702073686f756c6420696e636c7564652071756f72756d736f70657261746f722073686f756c642068617665206174206c6561737420746865206d696e696d756d207374616b6520696e20656163682071756f72756d6f70657261746f72496e666f207374617475732073686f756c6420626520524547495354455245446f70657261746f722073686f756c64206265207265676973746572656420746f204156536f70657261746f722073686f756c64206e6f74206265207265676973746572656420746f2074686520415653a2646970667358221220674039b57ecdf8a6c2704d76bd7f636956d1812d6a9b44c20096eb4cb214294364736f6c634300080c0033 + /// ``` + #[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]W`\x005`\xE0\x1C\x80ck:\xA7.\x11b\0\0\xC7W\x80c\xAFQ\xF4\xFE\x11b\0\0\x86W\x80c\xAFQ\xF4\xFE\x14b\0\x02\xC7W\x80c\xB5P\x8A\xA9\x14b\0\x02\xDEW\x80c\xBAAO\xA6\x14b\0\x02\xE8W\x80c\xCA\xF5I\x07\x14b\0\x03\x03W\x80c\xE2\x0C\x9Fq\x14b\0\x03\x1AW\x80c\xFAv&\xD4\x14b\0\x03$W`\0\x80\xFD[\x80ck:\xA7.\x14b\0\x02hW\x80cm\x14\xA9\x87\x14b\0\x02|W\x80c\x85\"l\x81\x14b\0\x02\x90W\x80c\x91j\x17\xC6\x14b\0\x02\xA9W\x80c\x9D\x8B\x9C\xB4\x14b\0\x02\xB3W`\0\x80\xFD[\x80c-\xBC\xB0L\x11b\0\x01 W\x80c-\xBC\xB0L\x14b\0\x01\xF7W\x80c-\xEA\xC5\xE5\x14b\0\x02\x10W\x80c=\xFB@\xE0\x14b\0\x02'W\x80c>^<#\x14b\0\x02;W\x80c?r\x86\xF4\x14b\0\x02EW\x80cf\xD9\xA9\xA0\x14b\0\x02OW`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01bW\x80c\n\x92T\xE4\x14b\0\x01\x93W\x80c\x13\x1E/\x18\x14b\0\x01\x9FW\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xC5W\x80c*\xDE8\x80\x14b\0\x01\xDEW[`\0\x80\xFD[`5Tb\0\x01v\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[b\0\x01\x9Db\0\x032V[\0[b\0\x01\xB6b\0\x01\xB06`\x04b\0\xAD\xFBV[b\0\x172V[`@Qb\0\x01\x8A\x91\x90b\0\xAE[V[b\0\x01\xCFb\0\x1B\xE8V[`@Qb\0\x01\x8A\x91\x90b\0\xAE\xB1V[b\0\x01\xE8b\0\x1CLV[`@Qb\0\x01\x8A\x91\x90b\0\xAF#V[b\0\x02\x01`4T\x81V[`@Q\x90\x81R` \x01b\0\x01\x8AV[b\0\x01\x9Db\0\x02!6`\x04b\0\xAF\xE9V[b\0\x1D\x9AV[`.Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xCFb\0 \x84V[b\0\x01\xCFb\0 \xE6V[b\0\x02Yb\0!HV[`@Qb\0\x01\x8A\x91\x90b\0\xB0\x10V[`\x1ETb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\x9Ab\0\"2V[`@Qb\0\x01\x8A\x91\x90b\0\xB0\xC7V[b\0\x02Yb\0#\x0CV[`3Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\x9Db\0\x02\xD86`\x04b\0\xAF\xE9V[b\0#\xF6V[b\0\x02\x9Ab\0'\xE0V[b\0\x02\xF2b\0(\xBAV[`@Q\x90\x15\x15\x81R` \x01b\0\x01\x8AV[b\0\x01\x9Db\0\x03\x146`\x04b\0\xAF\xE9V[b\0)\xF1V[b\0\x01\xCFb\0,\x96V[`\x07Tb\0\x02\xF2\x90`\xFF\x16\x81V[`@Qb\0\x03@\x90b\0\xAB\x17V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03]W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x03\xB9Wb\0\x03\xB9b\0\xB1CV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x03\xEB\x90b\0\xAB%V[b\0\x03\xF8\x92\x91\x90b\0\xB1YV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\x15W=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x04G\x90b\0\xAB3V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04dW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x04u\x90b\0\xAB@V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\x92W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x04\xC1\x90b\0\xABNV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xDEW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\x13\x90b\0\xAB\\V[b\0\x05 \x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05=W=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05r\x90b\0\xAB\\V[b\0\x05\x7F\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\x9CW=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xD1\x90b\0\xAB\\V[b\0\x05\xDE\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x060\x90b\0\xAB\\V[b\0\x06=\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06ZW=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06\x8F\x90b\0\xAB\\V[b\0\x06\x9C\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xB9W=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x06\xF7\x90b\0\xABjV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07;W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07i\x90b\0\xABxV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\x96W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x07\xDA\x90b\0\xAB\x86V[`\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\x08\x17W=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08I\x90b\0\xAB\x94V[`\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\x08\x86W=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xB1\x90b\0\xAB\xA2V[b\0\x08\xBE\x92\x91\x90b\0\xB1\xAEV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\xDBW=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\t\x1B\x90b\0\xAB\xB0V[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tgW=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\t\x8B\x90b\0\xAB\xBEV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\xB8W=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\n\x1E\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0\xB1\xFAV[`@\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\ng\x93\x92\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\x97W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B*\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0BEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0BZW=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\xE6\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\x01W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\x16W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0C\xAC\x93\x91\x16\x91\x8A\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\xC7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\xDCW=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\rh\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r\x98W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\r\xB9\x91Pb\0\xAB\xCCV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\xE6W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0E\xACW`\0b\0\x0E!\x82b\0-\xC2V[\x90P`\0\x81`@Q` \x01b\0\x0E8\x91\x90b\0\xB2\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E^\x91\x90b\0\xB2\xC7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0E\x93\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0.\xDFV[PPP\x80\x80b\0\x0E\xA3\x90b\0\xB3\nV[\x91PPb\0\x0E\nV[P`@Qb\0\x0E\xBB\x90b\0\xAB\xDAV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0E\xD8W=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0F7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0FLW=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x0Fo\x90b\0\xAB\\V[b\0\x0F|\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\x99W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0F\xCE\x90b\0\xAB\\V[b\0\x0F\xDB\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\xF8W=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10-\x90b\0\xAB\\V[b\0\x10:\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10WW=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\x8C\x90b\0\xAB\\V[b\0\x10\x99\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\xB6W=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\xEB\x90b\0\xAB\\V[b\0\x10\xF8\x92\x91\x90b\0\xB1\x85V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\x15W=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x11qW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11\x86W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x11\xB0\x90b\0\xAB\xE8V[b\0\x11\xBD\x92\x91\x90b\0\xB1\xAEV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xDAW=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xFE\x90b\0\xAB\xF6V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12+W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x12O\x90b\0\xAC\x04V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12|W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x12\xAE\x90b\0\xAC\x12V[`\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\x12\xEBW=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\x99\xA8\x8E\xC4\x92b\0\x13&\x92\x16\x90\x88\x90`\x04\x01b\0\xB1\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13VW=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x13\x93\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xB1\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xC3W=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x14\0\x92\x90\x91\x16\x90\x86\x90`\x04\x01b\0\xB1\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x140W=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x14m\x92\x90\x91\x16\x90\x85\x90`\x04\x01b\0\xB1\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\x9DW=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15\0W=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x158\x90b\0\xAC 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\x15}W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x16\x08V[`@\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\x15\xDAW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x16>V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16(W\x90P[P`@Q`$\x01b\0\x16X\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0\xB4\x0BV[`@\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\x16\xA1\x93\x92\x91`\x04\x01b\0\xB2YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16\xBCW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16\xD1W=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x16\xE3\x90b\0\xAC.V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x17\0W=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x17\x83b\0-\xC2V[\x81`\x03\x81Q\x81\x10b\0\x18TWb\0\x18Tb\0\xB1CV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x18\x8FWb\0\x18\x8Fb\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x18\xD6\x90\x85\x90`\x04\x01b\0\xB0\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\xF6W=`\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\xB5\xA0V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x198\x91\x90b\0\xB5\xEDV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x19uWb\0\x19ub\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x19\xB9\x90\x85\x90`\x04\x01b\0\xB0\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x03\x91\x90\x81\x01\x90b\0\xB5\xA0V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\x1B\x91\x90b\0\xB5\xEDV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x1ANWb\0\x1ANb\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1A\x92\x90\x85\x90`\x04\x01b\0\xB0\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1A\xB2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\xDC\x91\x90\x81\x01\x90b\0\xB5\xA0V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\xF4\x91\x90b\0\xB5\xEDV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1B4Wb\0\x1B4b\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1Bx\x90\x85\x90`\x04\x01b\0\xB0\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B\x98W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1B\xC2\x91\x90\x81\x01\x90b\0\xB5\xA0V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\xDA\x91\x90b\0\xB5\xEDV[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1DyW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1C\xE5\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1D\x13\x90b\0\xB6\x07V[\x80\x15b\0\x1DdW\x80`\x1F\x10b\0\x1D8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1DdV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1DFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\xC3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1CpV[PPPP\x90P\x90V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0\x1D\xCA\x91\x83\x91b\x002\x0BV[`\0b\0\x1D\xD6b\0:\xADV[\x90P`\0`B\x80Tb\0\x1D\xE9\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1E\x17\x90b\0\xB6\x07V[\x80\x15b\0\x1EhW\x80`\x1F\x10b\0\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1F,W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1FAW=`\0\x80>=`\0\xFD[Pb\0\x1F\x84\x92P\x85\x91P\x83\x90P\x84`\0[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\x1F}W` \x82\x01\x81\x806\x837\x01\x90P[Pb\0C\x8CV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xCAO-\x97\x90b\0\x1F\xB2\x90\x85\x90`\x04\x01b\0\xB6\xABV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1F\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1F\xE2W=`\0\x80>=`\0\xFD[PPPPb\0\x1F\xF2\x83\x83b\0G\xBBV[b\0\x1F\xFD\x83b\0ILV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\x821\xB5L\x90b\0 +\x90\x85\x90`\x04\x01b\0\xB6\xABV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0 KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0 q\x91\x90b\0\xB5\xEDV[Pb\0 ~\x83\x83b\0I\xFCV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\"\x19W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0!\xDAW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0!lV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\"x\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\"\xA6\x90b\0\xB6\x07V[\x80\x15b\0\"\xF7W\x80`\x1F\x10b\0\"\xCBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\"\xF7V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\"\xD9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\"VV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0#\xDDW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0#\x9EW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0#0V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0$&\x91\x83\x91b\x002\x0BV[`\0b\0$2b\0:\xADV[\x90P`\0`B\x80Tb\0$E\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0$s\x90b\0\xB6\x07V[\x80\x15b\0$\xC4W\x80`\x1F\x10b\0$\x98Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0$\xC4V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0$\xA6W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P`\0b\0$\xEF\x83\x83`\0`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x1E\x93Wb\0\x1E\x93b\0\xB1-V[\x90Pb\0$\xFC\x83b\0B\xBBV[`@\x80Q`\0\x81R` \x81\x01\x91\x82\x90RcR\xFBf\r`\xE1\x1B\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xA5\xF6\xCC\x1A\x90b\0%;\x90\x85\x90\x85\x90`$\x81\x01b\0\xB6>V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0%VW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0%kW=`\0\x80>=`\0\xFD[Pb\0%\x81\x92P\x85\x91P\x83\x90P\x84`\0b\0\x1FRV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xCAO-\x97\x90b\0%\xAF\x90\x85\x90`\x04\x01b\0\xB6\xABV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0%\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0%\xDFW=`\0\x80>=`\0\xFD[PPPPb\0%\xEF\x83\x83b\0G\xBBV[b\0%\xFA\x83b\0ILV[`\0[\x81Q\x81\x10\x15b\0'ZW`\0\x82\x82\x81Q\x81\x10b\0&\x1EWb\0&\x1Eb\0\xB1CV[` \x02` \x01\x01Q\x90P`\0`\x01`\x01`\x01`@\x1B\x03\x81\x11\x15b\0&FWb\0&Fb\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0&qW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x84\x83\x81Q\x81\x10b\0&\x89Wb\0&\x89b\0\xB1CV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\0\x81Q\x81\x10b\0&\xAAWb\0&\xAAb\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0&\xEF\x90\x84\x90`\x04\x01b\0\xB6\xABV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\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\xB5\xEDV[Pb\0'B\x82\x82b\0I\xFCV[PP\x80\x80b\0'Q\x90b\0\xB3\nV[\x91PPb\0%\xFDV[P`@\x80Q`\0\x81R` \x81\x01\x91\x82\x90RcR\xFBf\r`\xE1\x1B\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xA5\xF6\xCC\x1A\x90b\0'\x9A\x90\x85\x90\x85\x90`$\x81\x01b\0\xB6>V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'\xCAW=`\0\x80>=`\0\xFD[Pb\0 ~\x92P\x85\x91P\x83\x90P\x84`\0b\0\x1FRV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0(&\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0(T\x90b\0\xB6\x07V[\x80\x15b\0(\xA5W\x80`\x1F\x10b\0(yWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0(\xA5V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0(\x87W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0(\x04V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0(\xDDWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0)\xECW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0)n\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0\xB6\xC0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0)\x8A\x91b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0)\xC9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0)\xCEV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0)\xE8\x91\x90b\0\xB7\x11V[\x91PP[\x91\x90PV[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R`\x04``\x82\x01Rb\0*!\x91\x83\x91b\x002\x0BV[`\0b\0*-b\0:\xADV[\x90P`\0`B\x80Tb\0*@\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0*n\x90b\0\xB6\x07V[\x80\x15b\0*\xBFW\x80`\x1F\x10b\0*\x93Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0*\xBFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0*\xA1W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P`\0b\0*\xD3\x82b\0K\xD1V[\x90P`\0b\0+\x02b\0*\xFCb\0*\xEA\x84b\0M\xA1V[b\0*\xF5\x86b\0M\xA1V[\x90b\0O4V[b\0O?V[\x90P`\0b\0+\x13\x85\x84\x84b\0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0+mW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0+\x82W=`\0\x80>=`\0\xFD[PPPPb\0+\x94\x85\x82\x85\x85b\0C\x8CV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\xCAO-\x97\x90b\0+\xC2\x90\x87\x90`\x04\x01b\0\xB6\xABV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0+\xDDW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0+\xF2W=`\0\x80>=`\0\xFD[PPPPb\0,\x02\x85\x85b\0G\xBBV[b\0,\r\x85b\0ILV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\x821\xB5L\x90b\0,;\x90\x87\x90`\x04\x01b\0\xB6\xABV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0,[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0,\x81\x91\x90b\0\xB5\xEDV[Pb\0,\x8E\x85\x85b\0I\xFCV[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0-?b\0\xACeV[\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\x15b\0-tWb\0-vV[\xFE[P\x80b\0-\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\0-\xE7WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0.\x17W\x80b\0-\xFE\x81b\0\xB3\nV[\x91Pb\0.\x0F\x90P`\n\x83b\0\xB7KV[\x91Pb\0-\xEBV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0.4Wb\0.4b\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0._W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0.\xD7Wb\0.w`\x01\x83b\0\xB7bV[\x91Pb\0.\x86`\n\x86b\0\xB7|V[b\0.\x93\x90`0b\0\xB7\x93V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0.\xABWb\0.\xABb\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0.\xCF`\n\x86b\0\xB7KV[\x94Pb\0.cV[\x94\x93PPPPV[`\0\x84\x84\x84\x84`@Qb\0.\xF3\x90b\0\xAC\x83V[b\0/\x02\x94\x93\x92\x91\x90b\0\xB7\xAEV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0/\x1FW=`\0\x80>=`\0\xFD[P`'T`1T`!T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92cH\\\xC9U`\xE0\x1B\x92b\0/_\x92\x88\x92\x90\x91\x16\x90`$\x01b\0\xB1\xAEV[`@\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\x90Qb\0/\x9E\x90b\0\xAB\\V[b\0/\xAC\x93\x92\x91\x90b\0\xB2YV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0/\xC9W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\x000*Wb\x000*b\0\xB1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\x000\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\x000\xB6\x91\x90b\0\xB8\x0FV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x000\xF8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x001\rW=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\x001E\x90\x85\x90\x85\x90`\x04\x01b\0\xB8/V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x001`W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x001uW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[`@\x80Q\x81\x81R`\x1F\x81\x83\x01R\x7F_configRand: set random seed to\0``\x82\x01Rb\xFF\xFF\xFF\x85\x16` \x82\x01R\x90Q`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`@Q`\x01`\x01`\xE8\x1B\x03\x19`\xE8\x85\x90\x1B\x16` \x82\x01R`#\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\x002\xA4\x82b\0P\x1AV[\x80Qb\x002\xBA\x91`8\x91` \x90\x91\x01\x90b\0\xAC\x91V[P\x80Qb\x002\xC8\x90b\0P\x1AV[\x80Qb\x002\xDE\x91`9\x91` \x90\x91\x01\x90b\0\xAC\x91V[Pb\x002\xEE\x81` \x01Qb\0P\x1AV[\x80Qb\x003\x04\x91`:\x91` \x90\x91\x01\x90b\0\xAC\x91V[Pb\x003\x14\x81`@\x01Qb\0P\x1AV[\x80Qb\x003*\x91`;\x91` \x90\x91\x01\x90b\0\xAC\x91V[Pb\x003:\x81``\x01Qb\0P\x1AV[\x80Qb\x003P\x91`<\x91` \x90\x91\x01\x90b\0\xAC\x91V[Pb\x003\x8A`8\x80Tb\x003d\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x04\0\xDD`0\x919b\0P~V[b\x003\xC3`9\x80Tb\x003\x9D\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x04\x03!`0\x919b\0P~V[b\x003\xFC`:\x80Tb\x003\xD6\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xFF\x89`3\x919b\0P~V[b\x0045`;\x80Tb\x004\x0F\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xFE\xA7`2\x919b\0P~V[b\x004n`<\x80Tb\x004H\x90b\0\xB6\x07V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xFD\xAE`/\x919b\0P~V[b\x004xb\0P\xB7V[`@\x81\x90Ub\x004\x8E\x90`\x01\x90\x81\x90\x1Bb\0\xB7bV[`A\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\x004\xB8\x90b\0O?V[\x80Qb\x004\xCE\x91`B\x91` \x90\x91\x01\x90b\0\xAC\x91V[P`@\x80T\x81Q\x82\x81R`0\x92\x81\x01\x92\x90\x92R\x7F_configRand: number of quorums b``\x83\x01Ro\x19Z[\x99\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`\x82\x1B`\x80\x83\x01R` \x82\x01R`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x90`\xA0\x01`@Q\x80\x91\x03\x90\xA1`@\x80Q``\x81\x01\x82R`\x05\x81Ra:\x98` \x82\x01R`\x96\x91\x81\x01\x91\x90\x91R`\0[`@T\x81\x10\x15b\x007\xE0W`\0b\x005zb\0Q\xF6V[\x90P`\0b\x005\x88b\0S\xF3V[\x90P`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x83`@Qb\x005\xE3\x91\x90`@\x80\x82R`\x1C\x90\x82\x01R\x7F_configRand: creating quorum\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x83Q`@Q`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x91b\x006B\x91`@\x80\x82R`\x14\x90\x82\x01Rs\x0BH\x13X^\x08\x1B\xDC\x19\\\x98]\x1B\xDC\x88\x18\xDB\xDD[\x9D`b\x1B``\x82\x01Rc\xFF\xFF\xFF\xFF\x91\x90\x91\x16` \x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x82Q`@Qb\x006\xA4\x91\x90`@\x80\x82R`\x1B\x90\x82\x01R\x7F- Num strategies considered\0\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\x0F\x81\x83\x01Rn- Minimum stake`\x88\x1B``\x82\x01R`\x01`\x01``\x1B\x03\x83\x16` \x82\x01R\x90Q`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`\x1CT`3T`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x007EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x007ZW=`\0\x80>=`\0\xFD[PP`(T`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xD7[L\x88\x91Pb\x007\x94\x90\x87\x90\x85\x90\x87\x90`\x04\x01b\0\xB8\x8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x007\xAFW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x007\xC4W=`\0\x80>=`\0\xFD[PPPPPP\x80\x80b\x007\xD7\x90b\0\xB3\nV[\x91PPb\x005cV[P`\0b\x007\xEE\x82b\0T1V[\x90P`\0\x80Q` b\x03\xFC=\x839\x81Q\x91Rb\08\x0B\x82b\0-\xC2V[`@Q` \x01b\08\x1D\x91\x90b\0\xB8\xE2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\089\x91b\0\xB6\xABV[`@Q\x80\x91\x03\x90\xA1`\0[\x81\x81\x10\x15b\09\xA3W`\0b\08Yb\0:\xADV[`@Qc \x8CmS`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x821\xB5L\x90b\08\x8B\x90`B\x90`\x04\x01b\0\xB9IV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\08\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\08\xD1\x91\x90b\0\xB5\xEDV[P`\0[`B\x80Tb\08\xE4\x90b\0\xB6\x07V[\x90P\x81\x10\x15b\09\x8BW`\0`B\x82\x81Tb\09\0\x90b\0\xB6\x07V[\x81\x10b\09\x11Wb\09\x11b\0\xB1CV[\x81T`\x01\x16\x15b\091W\x90`\0R` `\0 \x90` \x91\x82\x82\x04\x01\x91\x90\x06[\x90T\x90\x1A`\x01`\xF8\x1B\x02`\xF8\x1C`\0\x90\x81R`D` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90UP\x80b\09\x82\x81b\0\xB3\nV[\x91PPb\08\xD5V[PP\x80\x80b\09\x9A\x90b\0\xB3\nV[\x91PPb\08DV[P`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\09\xEB\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0:O\x90` \x80\x82R`$\x90\x82\x01R\x7F_configRand complete; starting t`@\x82\x01Rcest!`\xE0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0:\x9E\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0\x80b\0:\xBD`CTb\0-\xC2V[`@Q` \x01b\0:\xCF\x91\x90b\0\xB9\xF9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R`C\x80T\x91\x92P`\0b\0:\xF3\x83b\0\xB3\nV[\x91\x90PUP`\0\x80`\0b\0;\x08\x84b\0T\xFCV[\x92P\x92P\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16c*4\xAD\xE8`@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;JW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0;_W=`\0\x80>=`\0\xFD[PP`@Qc\r\xA6m\xEB`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x92Pcm3oX\x91Pb\0;\x93\x90\x85\x90\x85\x90`\x04\x01b\0\xBA+V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0;\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0;\xC3W=`\0\x80>=`\0\xFD[PP`\x1DT`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rb\0<]\x94P\x90\x91\x16\x91Pcmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0<\x17W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0<=\x91\x90b\0\xB7\x11V[`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x04\x02b`1\x919b\0P~V[P\x90\x93\x92PPPV[```\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x84`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0<\xB7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0<\xE1\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0<\xF0\x91\x90b\0\xBATV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91Rb\0=\x13\x84b\0V\x98V[`@Qb\0=\"\x91\x90b\0\xBA\xA9V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91Rb\0=E\x83b\0V\x98V[`@Qb\0=T\x91\x90b\0\xBA\xF2V[`@Q\x80\x91\x03\x90\xA1b\0=g\x82b\0W\xA9V[`\0\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0=\x85Wb\0=\x85b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0=\xAFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15b\0B\xB0W`\0\x85\x82\x81Q\x81\x10b\0=\xD6Wb\0=\xD6b\0\xB1CV[\x01` \x01Q`(T`@Qc\xE6W\x97\xAD`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE6W\x97\xAD\x90`$\x01```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0>0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0>V\x91\x90b\0\xBBmV[`,T`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x85\x16`\x04\x82\x01R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0>\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0>\xCE\x91\x90b\0\xBB\xE2V[\x90Pb\0?\x08\x82`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x82c\xFF\xFF\xFF\xFF\x16\x10\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x04\x03Q`3\x919b\0P~V[b\0?\x13\x83b\0Y\xECV[\x85\x85\x81Q\x81\x10b\0?(Wb\0?(b\0\xB1CV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91Rb\0?f\x84`\xFF\x16b\0-\xC2V[`@Q` \x01b\0?x\x91\x90b\0\xBC\0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x86\x86\x81Q\x81\x10b\0?\x9CWb\0?\x9Cb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0?\xE2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0@\x0C\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0@\x1C\x92\x91\x90b\0\xBCcV[`@Q\x80\x91\x03\x90\xA1`+T`@Qc\xD5\xEC\xCC\x05`\xE0\x1B\x81R`\xFF\x85\x16`\x04\x82\x01R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD5\xEC\xCC\x05\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0@qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0@\x97\x91\x90b\0\xBC\x8CV[`+T\x87Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90\x89\x90\x89\x90\x81\x10b\0@\xC9Wb\0@\xC9b\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0A\x0FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0A5\x91\x90b\0\xB5\xEDV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x88\x16`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0A{W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0A\xA1\x91\x90b\0\xBC\x8CV[\x90P[b\0A\xB0\x81\x85b\0[qV[`\x01`\x01``\x1B\x03\x16b\0A\xC5\x86\x8Db\0[\x99V[`\x01`\x01``\x1B\x03\x16\x11\x15\x80b\0B\x10WPb\0A\xFAb\0A\xE7\x86\x8Db\0[\x99V[b\0A\xF3\x90\x84b\0\xBC\xB7V[\x85b\0\\\x13V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10\x15[\x15b\0B\x95W`\0\x80b\0B$\x8Db\0\\/V[`@Qc\r\xA6m\xEB`\xE3\x1B\x81R\x91\x93P\x91P`\x01`\x01`\xA0\x1B\x03\x8E\x16\x90cm3oX\x90b\0BY\x90\x85\x90\x85\x90`\x04\x01b\0\xBA+V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0BtW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0B\x89W=`\0\x80>=`\0\xFD[PPPPPPb\0A\xA4V[PPPPP\x80\x80b\0B\xA7\x90b\0\xB3\nV[\x91PPb\0=\xB5V[P\x90P[\x93\x92PPPV[b\0B\xF5`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01u\x18\xDA\x19X\xDA\xD7\xD3\x99]\x99\\\x97\xD4\x99Y\xDA\\\xDD\x19\\\x99Y`R\x1B\x81RP\x82b\0^\x9DV[b\0C\x1A\x81`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x04\0\"`9\x919b\0_RV[b\0C?\x81`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x03\xFB\xBC`*\x919b\0_\x9EV[b\0Cd\x81`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xFD\xDD`(\x919b\0`\xA4V[b\0C\x89\x81`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x04\x06\r`,\x919b\0a\xC1V[PV[b\0C\xC3`@Q\x80`@\x01`@R\x80`\x13\x81R` \x01rcheck_Churned_State`h\x1B\x81RP\x85b\0^\x9DV[`\0b\0C\xE7b\0*\xFCb\0C\xD8\x84b\0M\xA1V[b\0C\xE3\x86b\0M\xA1V[\x17\x90V[\x90Pb\0D\x0E\x85`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFFf`#\x919b\0b_V[b\0D3\x85`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x04\x05\xC1`(\x919b\0cLV[b\0DY\x85\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x04\x05U`.\x919b\0c\xDCV[b\0D\x7F\x85\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x04\x04\xB5`)\x919b\0d\xFEV[b\0D\xA4\x85`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x04\x02\x93`(\x919b\0e\xBFV[b\0D\xCA\x85\x83`@Q\x80``\x01`@R\x80`>\x81R` \x01b\x03\xFC]`>\x919b\0g\xE8V[b\0D\xF1\x85\x85\x85`@Q\x80`\xA0\x01`@R\x80`f\x81R` \x01b\x04\x02\xBB`f\x919b\0i(V[b\0E\x17\x85\x82`@Q\x80``\x01`@R\x80`>\x81R` \x01b\x04\x05\x83`>\x919b\0k\x15V[b\0E=\x85\x83`@Q\x80`\x80\x01`@R\x80`L\x81R` \x01b\x04\x05\t`L\x919b\0l\xDDV[b\0Ed\x85\x85\x85`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01b\x03\xFD-`H\x919b\0l\xFBV[b\0E\x89\x82`@Q\x80``\x01`@R\x80`>\x81R` \x01b\x03\xFF\xE4`>\x919b\0o\x9EV[b\0E\xAE\x83`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xFBO`:\x919b\0p=V[b\0E\xD4\x85\x83`@Q\x80``\x01`@R\x80`;\x81R` \x01b\x04\x01\xDE`;\x919b\0p\xCEV[b\0E\xFB\x85\x85\x85`@Q\x80`\x80\x01`@R\x80`W\x81R` \x01b\x03\xFB\xE6`W\x919b\0q\xBAV[b\0F \x85`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x04\x05\xE9`$\x919b\0s\x17V[`\0[\x84Q\x81\x10\x15b\0,\x8EW`\0\x85\x82\x81Q\x81\x10b\0FDWb\0FDb\0\xB1CV[` \x02` \x01\x01Q\x90P`\0`\x01`\x01`\x01`@\x1B\x03\x81\x11\x15b\0FlWb\0Flb\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0F\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x85\x83\x81Q\x81\x10b\0F\xAFWb\0F\xAFb\0\xB1CV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\0\x81Q\x81\x10b\0F\xD0Wb\0F\xD0b\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0G\x0C\x82`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x04\x03\xB0`1\x919b\0b_V[b\0G2\x82\x82`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xFF,`:\x919b\0s\xA5V[b\0GX\x82\x82`@Q\x80``\x01`@R\x80`7\x81R` \x01b\x03\xFC\xCD`7\x919b\0t\xF5V[b\0G}\x82`@Q\x80``\x01`@R\x80`6\x81R` \x01b\x03\xFEq`6\x919b\0e\xBFV[b\0G\xA3\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xFB\x89`3\x919b\0u\xBCV[PP\x80\x80b\0G\xB2\x90b\0\xB3\nV[\x91PPb\0F#V[b\0G\xF5`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01ucheck_Deregister_State`P\x1B\x81RP\x83b\0^\x9DV[b\0H\x1A\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x04\x02\x19`)\x919b\0b_V[b\0H@\x82\x82`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xFC\x9B`2\x919b\0s\xA5V[b\0Hf\x82\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x04\x03\x84`,\x919b\0t\xF5V[b\0H\x8B\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x04\x01\r`.\x919b\0e\xBFV[b\0H\xB1\x82\x82`@Q\x80``\x01`@R\x80`@\x81R` \x01b\x04\x01\x9E`@\x919b\0w\x01V[b\0H\xD7\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xFB\x89`3\x919b\0u\xBCV[b\0H\xFD\x82\x82`@Q\x80`\x80\x01`@R\x80`A\x81R` \x01b\x04\x04t`A\x919b\0x\x0EV[b\0I\"\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x04\0\xA3`:\x919b\0x\xDEV[b\0IH\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xFD\x04`)\x919b\0ypV[PPV[b\0I\x8D`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7Fcheck_CompleteDeregister_State\0\0\x81RP\x82b\0^\x9DV[b\0I\xB2\x81`@Q\x80``\x01`@R\x80`+\x81R` \x01b\x04\x04\xDE`+\x919b\0_\x9EV[b\0I\xD7\x81`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x04\x02\x19`)\x919b\0b_V[b\0Cd\x81`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x04\x01;`*\x919b\0z8V[b\0J4`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01scheck_Register_State``\x1B\x81RP\x83b\0^\x9DV[b\0JY\x82`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFFf`#\x919b\0b_V[b\0J~\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x04\x05\xC1`(\x919b\0cLV[b\0J\xA4\x82\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x04\x05U`.\x919b\0c\xDCV[b\0J\xCA\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x04\x04\xB5`)\x919b\0d\xFEV[b\0J\xEF\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x04\x02\x93`(\x919b\0e\xBFV[b\0K\x15\x82\x82`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x04\x01e`9\x919b\0g\xE8V[b\0K;\x82\x82`@Q\x80``\x01`@R\x80`>\x81R` \x01b\x04\x05\x83`>\x919b\0k\x15V[b\0Ka\x82\x82`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01b\x04\0[`H\x919b\0l\xDDV[b\0K\x86\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xFE7`:\x919b\0o\x9EV[b\0K\xAC\x82\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xFF\xBC`(\x919b\0p\xCEV[b\0IH\x82`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x04\x05\xE9`$\x919b\0s\x17V[``b\0K\xFD\x82Q`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xFE\xD9`3\x919b\0P~V[`\0\x80[\x83Q\x81\x10\x15b\0LiWb\0L\x15b\0z\xB8V[\x15b\0LTWb\0LQ\x84\x82\x81Q\x81\x10b\0L4Wb\0L4b\0\xB1CV[` \x91\x01\x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B`\x01`\x01`\xC0\x1B\x03\x84\x16\x17\x90V[\x91P[\x80b\0L`\x81b\0\xB3\nV[\x91PPb\0L\x01V[P`\x01`\x01`\xC0\x1B\x03\x81\x16b\0L\xB3Wb\0L\xB0\x83`\0\x81Q\x81\x10b\0L\x93Wb\0L\x93b\0\xB1CV[` \x91\x01\x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B`\x01`\x01`\xC0\x1B\x03\x83\x16\x17\x90V[\x90P[`\0b\0L\xC9\x82`\x01`\x01`\xC0\x1B\x03\x16b\0O?V[\x90P`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x84Q`@Qb\0M%\x91\x90`@\x80\x82R`\x1F\x90\x82\x01R\x7F_selectRand: input quorum count\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x81Q`@Qb\0M\x92\x91\x90`@\x80\x82R`\"\x90\x82\x01R\x7F_selectRand: selected quorum cou``\x82\x01Ra\x1B\x9D`\xF2\x1B`\x80\x82\x01R` \x81\x01\x91\x90\x91R`\xA0\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x93\x92PPPV[`\0a\x01\0\x82Q\x11\x15b\0N,W`@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\x01b\0-\xB1V[\x81Qb\0N;WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10b\0NTWb\0NTb\0\xB1CV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15b\0<]W\x84\x81\x81Q\x81\x10b\0N\x86Wb\0N\x86b\0\xB1CV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11b\0O\x1DW`@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\x01b\0-\xB1V[\x91\x81\x17\x91b\0O,\x81b\0\xB3\nV[\x90Pb\0NgV[\x80\x19\x82\x16[\x92\x91PPV[```\0\x80b\0OO\x84b\0z\xCEV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15b\0OmWb\0Omb\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0O\x98W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15b\0O\xB1WPa\x01\0\x81\x10[\x15b\0P\x10W`\x01\x81\x1B\x93P\x85\x84\x16\x15b\0O\xFDW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10b\0O\xDFWb\0O\xDFb\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[b\0P\x08\x81b\0\xB3\nV[\x90Pb\0O\x9FV[P\x90\x94\x93PPPPV[```\0[a\x01\0\x81\x10\x15b\0PxW`\x01\x81\x1B\x83\x81\x16\x15b\0PdW`@Qb\0PR\x90\x84\x90`\x01\x85\x1B`\xF8\x1B\x90` \x01b\0\xBC\xE5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x92P[Pb\0Pp\x81b\0\xB3\nV[\x90Pb\0P\x1FV[P\x91\x90PV[\x81b\0IHW`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x81`@Qb\0P\xA4\x91\x90b\0\xBD\x16V[`@Q\x80\x91\x03\x90\xA1b\0IH\x82b\0z\xFFV[`\0\x80b\0QW`9\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0P\xFB\x90b\0\xB6\x07V[\x80\x15b\0QLW\x80`\x1F\x10b\0Q Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0QLV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0Q.W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\0{fV[\x90P`\x01\x81\x14\x15b\0QkW`\x01\x91PP\x90V[`\x02\x81\x14\x15b\0Q}W`\x02\x91PP\x90V[`\x04\x81\x14\x15b\0Q\x9BWb\0Q\x95`\x03`\nb\0{\xCFV[\x91PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7F_randQuorumCount: flag not recog`D\x82\x01Rd\x1B\x9A^\x99Y`\xDA\x1B`d\x82\x01R`\x84\x01b\0-\xB1V[P\x90V[```\0b\0R\r`:\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x90P`\0`\x01\x82\x14\x15b\0R$WP`\x01b\0R\xFAV[`\x02\x82\x14\x15b\0R7WP`\x02b\0R\xFAV[`\x04\x82\x14\x15b\0RhW`/Tb\0R`\x90`\x03\x90b\0RZ\x90`\x01\x90b\0\xB7bV[b\0{\xCFV[\x90Pb\0R\xFAV[`\x08\x82\x14\x15b\0R{WP`\x0Fb\0R\xFAV[`\x10\x82\x14\x15b\0R\x8EWP`\x14b\0R\xFAV[` \x82\x14\x15b\0R\xA1WP`\x19b\0R\xFAV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7F_randStrategyCount: flag not rec`D\x82\x01Rf\x1B\xD9\xDB\x9A^\x99Y`\xCA\x1B`d\x82\x01R`\x84\x01b\0-\xB1V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0S\x17Wb\0S\x17b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0S^W\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0S6W\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0S\xEBW`@Q\x80`@\x01`@R\x80`/\x83\x81T\x81\x10b\0S\x8FWb\0S\x8Fb\0\xB1CV[`\0\x91\x82R` \x91\x82\x90 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x82Rg\r\xE0\xB6\xB3\xA7d\0\0\x91\x01R\x82Q\x83\x90\x83\x90\x81\x10b\0S\xCAWb\0S\xCAb\0\xB1CV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0S\xE2\x90b\0\xB3\nV[\x91PPb\0SdV[P\x93\x92PPPV[`\0\x80b\0T\t`;\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x90P`\x01\x81\x14\x15b\0T\x1DW`\0\x91PP\x90V[`\x02\x81\x14\x15b\0Q\x9BWb\x0FB@\x91PP\x90V[`\0\x80b\0TG`<\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x90P`\x01\x81\x14\x15b\0T\\WP`\0\x92\x91PPV[`\x02\x81\x14\x15b\0T\x8AWb\0B\xB4`\x01\x80\x85`\0\x01Qb\0T~\x91\x90b\0\xBDGV[c\xFF\xFF\xFF\xFF\x16b\0{\xCFV[`\x04\x81\x14\x15b\0T\xA0WPPQc\xFF\xFF\xFF\xFF\x16\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7F_randInitialOperators: flag not `D\x82\x01Ri\x1C\x99X\xDB\xD9\xDB\x9A^\x99Y`\xB2\x1B`d\x82\x01R`\x84\x01b\0-\xB1V[`\0``\x80`\0\x80b\0U\x0Eb\0|\x91V[\x91P\x91P`\0\x80b\0U(`8\x80Tb\0P\xCD\x90b\0\xB6\x07V[\x90P`\x01\x81\x14\x15b\0UyW\x87\x84\x84`@Qb\0UE\x90b\0\xAD\x1CV[b\0US\x93\x92\x91\x90b\0\xBDoV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0UpW=`\0\x80>=`\0\xFD[P\x91Pb\0U\xE7V[`\x02\x81\x14\x15b\0U\xE7W\x87`@Q` \x01b\0U\x96\x91\x90b\0\xBD\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x97P\x87\x84\x84`@Qb\0U\xB8\x90b\0\xAD*V[b\0U\xC6\x93\x92\x91\x90b\0\xBDoV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0U\xE3W=`\0\x80>=`\0\xFD[P\x91P[`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0V6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0V`\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0Vo\x91\x90b\0\xBD\xF9V[`@Q\x80\x91\x03\x90\xA1`\0\x80b\0V\x85\x84b\0~bV[\x94\x9B\x90\x9AP\x93\x98P\x92\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15b\0W~W`\x01\x84Qb\0V\xD0\x91\x90b\0\xB7bV[\x81\x14\x15b\0W*W\x81b\0W\0\x85\x83\x81Q\x81\x10b\0V\xF2Wb\0V\xF2b\0\xB1CV[\x01` \x01Q`\xF8\x1Cb\0-\xC2V[`@Q` \x01b\0W\x13\x92\x91\x90b\0\xBEBV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pb\0WiV[\x81b\0WD\x85\x83\x81Q\x81\x10b\0V\xF2Wb\0V\xF2b\0\xB1CV[`@Q` \x01b\0WW\x92\x91\x90b\0\xBElV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80b\0Wu\x81b\0\xB3\nV[\x91PPb\0V\xB6V[P\x80`@Q` \x01b\0W\x92\x91\x90b\0\xBE\xACV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91Rb\0W\xC4\x82b\0V\x98V[`@Qb\0W\xD3\x91\x90b\0\xBE\xD3V[`@Q\x80\x91\x03\x90\xA1`\0[\x81Q\x81\x10\x15b\0IHW`\0\x82\x82\x81Q\x81\x10b\0W\xFFWb\0W\xFFb\0\xB1CV[\x01` \x01Q`(T`@Qc\xE6W\x97\xAD`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE6W\x97\xAD\x90`$\x01```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0XYW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0X\x7F\x91\x90b\0\xBBmV[Q\x90P[`,T`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01Rc\xFF\xFF\xFF\xFF\x83\x16\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0X\xD5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0X\xFB\x91\x90b\0\xBB\xE2V[c\xFF\xFF\xFF\xFF\x16\x10b\0Y\xD4W`\0b\0Y\x14\x83b\0Y\xECV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x83`\xF8\x1B\x81`\0\x81Q\x81\x10b\0YSWb\0YSb\0\xB1CV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\xCAO-\x97\x90b\0Y\x98\x90\x84\x90`\x04\x01b\0\xB6\xABV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0Y\xB3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0Y\xC8W=`\0\x80>=`\0\xFD[PPPPPPb\0X\x83V[PP\x80\x80b\0Y\xE3\x90b\0\xB3\nV[\x91PPb\0W\xDEV[`,T`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x83\x16`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Z=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Zc\x91\x90b\0\xBB\xE2V[`,T\x90\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x12\xD1\xD7M\x85b\0Z\x8D\x84b\0T~`\x01\x88b\0\xBDGV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\xFF\x90\x92\x16`\x04\x83\x01Rc\xFF\xFF\xFF\xFF\x16`$\x82\x01R`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Z\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Z\xFC\x91\x90b\0\xBFAV[` \x01Q`*T`@Qc\x08\xF6b\x9D`\xE3\x1B\x81R`\x04\x81\x01\x83\x90R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cG\xB3\x14\xE8\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0[KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0.\xD7\x91\x90b\0\xB8\x0FV[` \x81\x01Q`\0\x90a'\x10\x90b\0[\x8D\x90a\xFF\xFF\x16\x85b\0\xBF\x7FV[b\0B\xB4\x91\x90b\0\xBF\xB1V[`+T`@Qb\xFC\xDB\xA7`\xE5\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`$\x83\x01R`\0\x92\x16\x90c\x1F\x9Bt\xE0\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0[\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0B\xB4\x91\x90b\0\xBC\x8CV[`@\x81\x01Q`\0\x90a'\x10\x90b\0[\x8D\x90a\xFF\xFF\x16\x85b\0\xBF\x7FV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\\TWb\0\\Tb\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\\~W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`/T\x90\x91P`\0\x90`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\\\xA2Wb\0\\\xA2b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\\\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x85`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0]\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0]H\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0]W\x91\x90b\0\xBF\xDAV[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0^\x92W`\0`/\x82\x81T\x81\x10b\0]\x85Wb\0]\x85b\0\xB1CV[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0]\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0]\xFE\x91\x90b\0\xB8\x0FV[\x90P`\0b\0^\x12bLK@`db\0\xC0-V[\x90Pb\0^!\x82\x8A\x83b\0\x80\xC7V[\x82\x86\x85\x81Q\x81\x10b\0^7Wb\0^7b\0\xB1CV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85\x85\x81Q\x81\x10b\0^mWb\0^mb\0\xB1CV[` \x02` \x01\x01\x81\x81RPPPPP\x80\x80b\0^\x89\x90b\0\xB3\nV[\x91PPb\0]bV[P\x90\x94\x90\x93P\x91PPV[`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R\x82\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0^\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0_\x17\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Q` \x01b\0_*\x92\x91\x90b\0\xC0OV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0_F\x91b\0\xB6\xABV[`@Q\x80\x91\x03\x90\xA1PPV[`\0b\0__\x83b\0\x80\xD6V[\x80Q\x90\x91Pb\0_r\x90`\0\x84b\0\x81ZV[b\0_\x99`\0\x82` \x01Q`\x02\x81\x11\x15b\0_\x91Wb\0_\x91b\0\xC0\xABV[\x14\x83b\0P~V[PPPV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x84`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0`\x03W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0`)\x91\x90b\0\xB5\xEDV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0`H\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0`fW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0`\x8C\x91\x90b\0\xC0\xC1V[\x90Pb\0_\x99`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x83b\0P~V[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x83\x92\x91\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0`\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0a\x16\x91\x90b\0\xC0\xECV[`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x93\x95P\x91\x93P`\0\x92\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0ahW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0a\x8E\x91\x90b\0\xB5\xEDV[\x90Pb\0a\x9E\x83`\0\x86b\0\x81\x96V[b\0a\xAC\x82`\0\x86b\0\x81\x96V[b\0a\xBA\x81`\0\x86b\0\x81ZV[PPPPPV[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0a\xFD\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xB1\xAEV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0b\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0bA\x91\x90b\0\xC1\x11V[\x90Pb\0_\x99`\0[\x82`\x01\x81\x11\x15b\0_\x91Wb\0_\x91b\0\xC0\xABV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0b\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0b\xC6\x91\x90b\0\xB5\xEDV[`(T`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0c\x17W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0c=\x91\x90b\0\xB5\xEDV[\x90Pb\0 ~\x82\x82\x85b\0\x81ZV[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0c\x98W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0c\xBE\x91\x90b\0\xC1DV[\x90Pb\0_\x99`\x01[\x82`\x02\x81\x11\x15b\0_\x91Wb\0_\x91b\0\xC0\xABV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0dAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0dg\x91\x90b\0\xB5\xEDV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0d\x86\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0d\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0d\xCA\x91\x90b\0\xC0\xC1V[\x90P`\0b\0d\xD9\x84b\0M\xA1V[\x90Pb\0a\xBAb\0d\xF7`\x01`\x01`\xC0\x1B\x03\x80\x84\x16\x90\x85\x16\x81\x16\x14\x90V[\x84b\0P~V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0e?W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0ee\x91\x90b\0\xB5\xEDV[\x90P`\0b\0et\x84b\0M\xA1V[\x90P`\0b\0e\x83\x83b\0\x81\xD2V[\x90P`\0b\0e\x92\x84b\0\x82CV[\x90Pb\0e\xB6`\x01`\x01`\xC0\x1B\x03\x82\x16\x84\x17\x83`\x01`\x01`\xC0\x1B\x03\x16\x14\x86b\0P~V[PPPPPPPV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0e\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0f%\x91\x90b\0\xC1bV[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x83\x92\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0fsW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0f\x99\x91\x90b\0\xC0\xECV[\x84Q`\0\x90\x81R` \x80\x87\x01Q\x90R`@\x81 \x92\x94P\x90\x92P\x90`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0g\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0g*\x91\x90b\0\xB5\xEDV[`*T`@Qct]\xCDs`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE8\xBB\x9A\xE6\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0gzW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0g\xA0\x91\x90b\0\xB8\x0FV[\x90Pb\0g\xB3\x86`\0\x01Q\x86\x89b\0\x81\x96V[b\0g\xC4\x86` \x01Q\x85\x89b\0\x81\x96V[b\0g\xD1\x83\x83\x89b\0\x81ZV[b\0g\xDE\x88\x82\x89b\0\x836V[PPPPPPPPV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0h(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0hN\x91\x90b\0\xC1bV[\x90P`\0b\0h]\x84b\0\x83\x84V[\x90P`\0b\0hl\x85b\0\x84\xCEV[\x90P`\0[\x85Q\x81\x10\x15b\0e\xB6W`\0b\0h\xAE\x85\x84\x84\x81Q\x81\x10b\0h\x97Wb\0h\x97b\0\xB1CV[` \x02` \x01\x01Qb\0\x85[\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90Pb\0h\xE1\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0h\xCEWb\0h\xCEb\0\xB1CV[` \x02` \x01\x01Q`\0\x01Q\x88b\0\x81\x96V[b\0i\x12\x81` \x01Q\x85\x84\x81Q\x81\x10b\0h\xFFWb\0h\xFFb\0\xB1CV[` \x02` \x01\x01Q` \x01Q\x88b\0\x81\x96V[P\x80b\0i\x1F\x81b\0\xB3\nV[\x91PPb\0hqV[b\0iP\x83Q\x83Q`@Q\x80``\x01`@R\x80`4\x81R` \x01b\x04\x03\xE1`4\x919b\0\x81\x96V[`\0\x84`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0i\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0i\xB6\x91\x90b\0\xC1bV[\x90P`\0b\0i\xC5\x84b\0\x83\x84V[\x90P`\0b\0i\xD4\x85b\0\x84\xCEV[\x90P`\0[\x85Q\x81\x10\x15b\0g\xDEW`\0\x87\x82\x81Q\x81\x10b\0i\xFAWb\0i\xFAb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0j?W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0je\x91\x90b\0\xC1bV[\x90P`\0b\0j\x99\x86b\0j\x92b\0j}\x85b\0\x85\xF4V[\x87\x87\x81Q\x81\x10b\0h\x97Wb\0h\x97b\0\xB1CV[\x90b\0\x85[V[\x90Pb\0j\xCC\x81`\0\x01Q\x86\x85\x81Q\x81\x10b\0j\xB9Wb\0j\xB9b\0\xB1CV[` \x02` \x01\x01Q`\0\x01Q\x89b\0\x81\x96V[b\0j\xFD\x81` \x01Q\x86\x85\x81Q\x81\x10b\0j\xEAWb\0j\xEAb\0\xB1CV[` \x02` \x01\x01Q` \x01Q\x89b\0\x81\x96V[PP\x80\x80b\0k\x0C\x90b\0\xB3\nV[\x91PPb\0i\xD9V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0kVW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0k|\x91\x90b\0\xB5\xEDV[\x90P`\0[\x83Q\x81\x10\x15b\0a\xBAW`\0\x84\x82\x81Q\x81\x10b\0k\xA2Wb\0k\xA2b\0\xB1CV[\x01` \x01Q`+T`@Qc\xC4gx\xA5`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xC4gx\xA5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0k\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0l\"\x91\x90b\0\xBC\x8CV[`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x87\x90R`\xFF\x85\x16`$\x82\x01R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0l{W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0l\xA1\x91\x90b\0\xBC\x8CV[\x90Pb\0l\xC4\x82`\x01`\x01``\x1B\x03\x16\x82`\x01`\x01``\x1B\x03\x16\x10\x15\x87b\0P~V[PPP\x80\x80b\0l\xD4\x90b\0\xB3\nV[\x91PPb\0k\x81V[`\0b\0l\xEB\x84\x84b\0\x86\xB4V[\x90Pb\0 ~\x84\x84\x83\x85b\0\x87\xF6V[b\0m#\x83Q\x83Q`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x03\xFDu`9\x919b\0\x81\x96V[`\0b\0m1\x85\x84b\0\x86\xB4V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0mQWb\0mQb\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0m{W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15b\0n\x17Wb\0m\xD5\x85\x82\x81Q\x81\x10b\0m\xA4Wb\0m\xA4b\0\xB1CV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x87\x83\x81Q\x81\x10b\0m\xC7Wb\0m\xC7b\0\xB1CV[` \x02` \x01\x01Qb\0[\x99V[\x82\x82\x81Q\x81\x10b\0m\xEAWb\0m\xEAb\0\xB1CV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0n\x0E\x81b\0\xB3\nV[\x91PPb\0m\x81V[P`\0b\0n&\x87\x86b\0\x89=V[\x90P`\0b\0n6\x88\x87b\0\x8A\xE9V[\x90P`\0b\0nE\x87b\0\x8B\xDFV[\x90P`\0b\0nT\x88b\0\x8D\x12V[\x90P`\0[\x88Q\x81\x10\x15b\0o\x91Wb\0n\xE3\x85\x82\x81Q\x81\x10b\0n|Wb\0n|b\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0n\xA2Wb\0n\xA2b\0\xB1CV[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0n\xBFWb\0n\xBFb\0\xB1CV[` \x02` \x01\x01Qb\0n\xD3\x91\x90b\0\xBC\xB7V[`\x01`\x01``\x1B\x03\x16\x8Ab\0\x81\x96V[b\0o|\x83\x82\x81Q\x81\x10b\0n\xFCWb\0n\xFCb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x87\x83\x81Q\x81\x10b\0o\"Wb\0o\"b\0\xB1CV[` \x02` \x01\x01Q\x89\x84\x81Q\x81\x10b\0o?Wb\0o?b\0\xB1CV[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10b\0o\\Wb\0o\\b\0\xB1CV[` \x02` \x01\x01Qb\0op\x91\x90b\0\xBC\xB7V[b\0n\xD3\x91\x90b\0\xC1\x97V[\x80b\0o\x88\x81b\0\xB3\nV[\x91PPb\0nYV[PPPPPPPPPPPV[`\0b\0o\xAB\x83b\0\x8D\x9FV[\x90P`\0b\0o\xBA\x84b\0\x8E\xCFV[\x90P`\0[\x84Q\x81\x10\x15b\0a\xBAWb\0p(\x83\x82\x81Q\x81\x10b\0o\xE2Wb\0o\xE2b\0\xB1CV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0p\x05Wb\0p\x05b\0\xB1CV[` \x02` \x01\x01Q`\x01b\0p\x1B\x91\x90b\0\xC1\xBAV[c\xFF\xFF\xFF\xFF\x16\x86b\0\x81\x96V[\x80b\0p4\x81b\0\xB3\nV[\x91PPb\0o\xBFV[`\0b\0pJ\x83b\0\x8D\x9FV[\x90P`\0b\0pY\x84b\0\x8E\xCFV[\x90P`\0[\x84Q\x81\x10\x15b\0a\xBAWb\0p\xB9\x83\x82\x81Q\x81\x10b\0p\x81Wb\0p\x81b\0\xB1CV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0p\xA4Wb\0p\xA4b\0\xB1CV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x86b\0\x81\x96V[\x80b\0p\xC5\x81b\0\xB3\nV[\x91PPb\0p^V[`\0b\0p\xDB\x83b\0\x8F\\V[\x90P`\0b\0p\xEA\x84b\0\x90\x9EV[\x90P`\0[\x84Q\x81\x10\x15b\0,\x8EWb\0qN\x83\x82\x81Q\x81\x10b\0q\x12Wb\0q\x12b\0\xB1CV[` \x02` \x01\x01QQ\x83\x83\x81Q\x81\x10b\0q0Wb\0q0b\0\xB1CV[` \x02` \x01\x01QQ`\x01b\0qG\x91\x90b\0\xB7\x93V[\x86b\0\x81\x96V[b\0q\x81b\0qz\x84\x83\x81Q\x81\x10b\0qkWb\0qkb\0\xB1CV[` \x02` \x01\x01Q\x88b\0\x91+V[\x85b\0P~V[b\0q\xA5b\0q\x9E\x83\x83\x81Q\x81\x10b\0qkWb\0qkb\0\xB1CV[\x85b\0\x91\xF3V[\x80b\0q\xB1\x81b\0\xB3\nV[\x91PPb\0p\xEFV[b\0q\xE2\x83Q\x83Q`@Q\x80``\x01`@R\x80`?\x81R` \x01b\x04\x04\x15`?\x919b\0\x81\x96V[`\0b\0q\xEF\x83b\0\x8F\\V[\x90P`\0b\0q\xFE\x84b\0\x90\x9EV[\x90P`\0[\x84Q\x81\x10\x15b\0e\xB6Wb\0rT\x83\x82\x81Q\x81\x10b\0r&Wb\0r&b\0\xB1CV[` \x02` \x01\x01QQ\x83\x83\x81Q\x81\x10b\0rDWb\0rDb\0\xB1CV[` \x02` \x01\x01QQ\x86b\0\x81\x96V[b\0r\x80b\0qz\x84\x83\x81Q\x81\x10b\0rqWb\0rqb\0\xB1CV[` \x02` \x01\x01Q\x89b\0\x91+V[b\0r\x9Db\0q\x9E\x83\x83\x81Q\x81\x10b\0rqWb\0rqb\0\xB1CV[b\0r\xE5b\0q\x9E\x84\x83\x81Q\x81\x10b\0r\xBAWb\0r\xBAb\0\xB1CV[` \x02` \x01\x01Q\x88\x84\x81Q\x81\x10b\0r\xD7Wb\0r\xD7b\0\xB1CV[` \x02` \x01\x01Qb\0\x91+V[b\0s\x02b\0qz\x83\x83\x81Q\x81\x10b\0r\xBAWb\0r\xBAb\0\xB1CV[\x80b\0s\x0E\x81b\0\xB3\nV[\x91PPb\0r\x03V[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0sS\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xB1\xAEV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0sqW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0s\x97\x91\x90b\0\xC1\x11V[\x90Pb\0_\x99`\x01b\0bJV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0t\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0t0\x91\x90b\0\xB5\xEDV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0tO\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0tmW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0t\x93\x91\x90b\0\xC0\xC1V[\x90P`\0[\x83Q\x81\x10\x15b\0a\xBAW`\0\x84\x82\x81Q\x81\x10b\0t\xB9Wb\0t\xB9b\0\xB1CV[` \x91\x01\x01Q`\xF8\x1C\x90Pb\0t\xDF`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x83\x1C\x81\x16\x14b\0q\x9EV[P\x80b\0t\xEC\x81b\0\xB3\nV[\x91PPb\0t\x98V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0u6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0u\\\x91\x90b\0\xB5\xEDV[\x90P`\0b\0uk\x84b\0M\xA1V[\x90P`\0b\0uz\x83b\0\x81\xD2V[\x90P`\0b\0u\x89\x84b\0\x82CV[\x90Pb\0u\xA5\x83\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x84\x14[\x86b\0P~V[b\0e\xB6\x82\x84\x16`\x01`\x01`\xC0\x1B\x03\x16\x15b\0u\x9EV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0u\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0v#\x91\x90b\0\xB5\xEDV[\x90P`\0[\x83Q\x81\x10\x15b\0a\xBAW`\0\x84\x82\x81Q\x81\x10b\0vIWb\0vIb\0\xB1CV[\x01` \x01Q`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x86\x90R`\xF8\x92\x90\x92\x1C`$\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0v\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0v\xD0\x91\x90b\0\xBC\x8CV[\x90Pb\0v\xE9\x81`\x01`\x01``\x1B\x03\x16`\0\x87b\0\x81\x96V[PP\x80\x80b\0v\xF8\x90b\0\xB3\nV[\x91PPb\0v(V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0wAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0wg\x91\x90b\0\xC1bV[\x90P`\0b\0wv\x84b\0\x83\x84V[\x90P`\0b\0w\x85\x85b\0\x84\xCEV[\x90P`\0[\x85Q\x81\x10\x15b\0e\xB6W`\0b\0w\xBAb\0w\xA5\x86b\0\x85\xF4V[\x84\x84\x81Q\x81\x10b\0h\x97Wb\0h\x97b\0\xB1CV[\x90Pb\0w\xDA\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0h\xCEWb\0h\xCEb\0\xB1CV[b\0w\xF8\x81` \x01Q\x85\x84\x81Q\x81\x10b\0h\xFFWb\0h\xFFb\0\xB1CV[P\x80b\0x\x05\x81b\0\xB3\nV[\x91PPb\0w\x8AV[`\0b\0x\x1C\x84\x84b\0\x8A\xE9V[\x90P`\0b\0x+\x84b\0\x8B\xDFV[\x90P`\0b\0x:\x85b\0\x8D\x12V[\x90P`\0[\x85Q\x81\x10\x15b\0e\xB6Wb\0x\xC9\x83\x82\x81Q\x81\x10b\0xbWb\0xbb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x85\x83\x81Q\x81\x10b\0x\x88Wb\0x\x88b\0\xB1CV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0x\xA5Wb\0x\xA5b\0\xB1CV[` \x02` \x01\x01Qb\0x\xB9\x91\x90b\0\xC1\x97V[`\x01`\x01``\x1B\x03\x16\x87b\0\x81\x96V[\x80b\0x\xD5\x81b\0\xB3\nV[\x91PPb\0x?V[`\0b\0x\xEB\x83b\0\x8D\x9FV[\x90P`\0b\0x\xFA\x84b\0\x8E\xCFV[\x90P`\0[\x84Q\x81\x10\x15b\0a\xBAWb\0y[\x83\x82\x81Q\x81\x10b\0y\"Wb\0y\"b\0\xB1CV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16`\x01\x84\x84\x81Q\x81\x10b\0yGWb\0yGb\0\xB1CV[` \x02` \x01\x01Qb\0p\x1B\x91\x90b\0\xBDGV[\x80b\0yg\x81b\0\xB3\nV[\x91PPb\0x\xFFV[`\0b\0y}\x83b\0\x8F\\V[\x90P`\0b\0y\x8C\x84b\0\x90\x9EV[\x90P`\0[\x84Q\x81\x10\x15b\0,\x8EWb\0y\xE9\x83\x82\x81Q\x81\x10b\0y\xB4Wb\0y\xB4b\0\xB1CV[` \x02` \x01\x01QQ`\x01\x84\x84\x81Q\x81\x10b\0y\xD4Wb\0y\xD4b\0\xB1CV[` \x02` \x01\x01QQb\0qG\x91\x90b\0\xB7bV[b\0z\x06b\0q\x9E\x84\x83\x81Q\x81\x10b\0qkWb\0qkb\0\xB1CV[b\0z#b\0qz\x83\x83\x81Q\x81\x10b\0qkWb\0qkb\0\xB1CV[\x80b\0z/\x81b\0\xB3\nV[\x91PPb\0y\x91V[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0z\x84W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0z\xAA\x91\x90b\0\xC1DV[\x90Pb\0_\x99`\x02b\0c\xC7V[`\0b\0z\xC8`\0`\x01b\0{\xCFV[\x15\x91\x90PV[`\0\x80[\x82\x15b\0O9Wb\0z\xE6`\x01\x84b\0\xB7bV[\x90\x92\x16\x91\x80b\0z\xF6\x81b\0\xC1\xDCV[\x91PPb\0z\xD2V[\x80b\0C\x89W`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0{T\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1b\0C\x89b\0\x92\0V[`\0b\0{\x91`\0\x83Q\x11`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xFE\x05`2\x919b\0P~V[`\0b\0{\xA9`\0`\x01\x85Qb\0RZ\x91\x90b\0\xB7bV[\x90P\x82\x81\x81Q\x81\x10b\0{\xC0Wb\0{\xC0b\0\xB1CV[\x01` \x01Q`\xF8\x1C\x93\x92PPPV[`\0\x80b\0{\xDE\x84\x84b\0\xB7bV[b\0{\xEB\x90`\x01b\0\xB7\x93V[\x90P`\0\x81[\x80\x15b\0|\x10W\x81b\0|\x04\x81b\0\xB3\nV[\x92PP`\x01\x1Cb\0{\xF1V[`\0b\0|!`\x01\x80\x85\x1Bb\0\xB7bV[`7T\x90\x91P\x81\x16[\x84\x81\x10b\0|HW\x81b\0|?\x86\x83b\0\xB7bV[\x16\x90Pb\0|*V[`7T`@Q` \x01b\0|^\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0|\x85\x81\x89b\0\xB7\x93V[\x98\x97PPPPPPPPV[`\0b\0|\x9Db\0\xAD8V[`>T`=T\x14\x15b\0}1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7F_fetchKeypair: not enough genera`D\x82\x01R\x7Fted keys. Check IntegrationDeplo`d\x82\x01Rn<\xB2\xB9\x171\xB7\xB79\xBA9:\xB1\xBA7\xB9`\x89\x1B`\x84\x82\x01R`\xA4\x01b\0-\xB1V[`\0`>`=T\x81T\x81\x10b\0}KWb\0}Kb\0\xB1CV[\x90`\0R` `\0 \x01T\x90P`\0`?`=T\x81T\x81\x10b\0}rWb\0}rb\0\xB1CV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q`\xA0\x81\x01\x82R`\x08\x93\x90\x93\x02\x90\x91\x01\x80T``\x84\x01\x90\x81R`\x01\x82\x01T`\x80\x80\x86\x01\x91\x90\x91R\x90\x84R\x82Q\x80\x84\x01\x84R`\x02\x80\x84\x01T\x82R`\x03\x84\x01T\x82\x88\x01R\x95\x85\x01R\x82Q\x90\x81\x01\x80\x84R\x93\x94\x91\x93\x85\x84\x01\x93\x91\x92`\x04\x86\x01\x92\x84\x92\x90\x83\x01\x91\x84\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0}\xE8WPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0~\x1FWPPP\x91\x90\x92RPPP\x90RP`=\x80T\x91\x92P`\0b\0~T\x83b\0\xB3\nV[\x90\x91UP\x91\x94\x90\x93P\x91PPV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0~\x87Wb\0~\x87b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0~\xB1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`/T\x90\x91P`\0\x90`\x01`\x01`@\x1B\x03\x81\x11\x15b\0~\xD5Wb\0~\xD5b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0~\xFFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x85`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x7FQW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x7F{\x91\x90\x81\x01\x90b\0\xB5\xA0V[`@Qb\0\x7F\x8A\x91\x90b\0\xC2\x01V[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0^\x92W`\0`/\x82\x81T\x81\x10b\0\x7F\xB8Wb\0\x7F\xB8b\0\xB1CV[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x80\x0BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x801\x91\x90b\0\xB8\x0FV[\x90P`\0b\0\x80Gb\x0FB@bLK@b\0{\xCFV[\x90Pb\0\x80V\x82\x8A\x83b\0\x80\xC7V[\x82\x86\x85\x81Q\x81\x10b\0\x80lWb\0\x80lb\0\xB1CV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85\x85\x81Q\x81\x10b\0\x80\xA2Wb\0\x80\xA2b\0\xB1CV[` \x02` \x01\x01\x81\x81RPPPPP\x80\x80b\0\x80\xBE\x90b\0\xB3\nV[\x91PPb\0\x7F\x95V[b\0_\x99\x83\x83\x83`\0b\0\x93\x0EV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`(T`@Qc\x16\x19q\x83`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90cXe\xC6\x0C\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x814W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0O9\x91\x90b\0\xC2UV[\x81\x83\x14b\0_\x99W`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x81`@Qb\0\x81\x82\x91\x90b\0\xBD\x16V[`@Q\x80\x91\x03\x90\xA1b\0_\x99\x83\x83b\0\x95\tV[\x81\x83\x14b\0_\x99W`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x81`@Qb\0\x81\xBE\x91\x90b\0\xBD\x16V[`@Q\x80\x91\x03\x90\xA1b\0_\x99\x83\x83b\0\x95\xF2V[`(T`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x82\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0O9\x91\x90b\0\xC0\xC1V[`\0\x80`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x82\x9CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x82\xC2\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x81\xD2V[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x83\x17W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x83,W=`\0\x80>=`\0\xFD[PPPPP\x91\x90PV[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x14b\0_\x99W`\0\x80Q` b\x03\xFF\x0C\x839\x81Q\x91R\x81`@Qb\0\x83p\x91\x90b\0\xBD\x16V[`@Q\x80\x91\x03\x90\xA1b\0_\x99\x83\x83b\0\x96\xA4V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x83\xA4Wb\0\x83\xA4b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x83\xEBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x83\xC3W\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`*T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c_a\xA8\x84\x90\x86\x90\x84\x90\x81\x10b\0\x84'Wb\0\x84'b\0\xB1CV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x84kW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x84\x91\x91\x90b\0\xC1bV[\x82\x82\x81Q\x81\x10b\0\x84\xA6Wb\0\x84\xA6b\0\xB1CV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x84\xBE\x90b\0\xB3\nV[\x91PPb\0\x83\xF1V[P\x92\x91PPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x85(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x85N\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x83\x84V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x85yb\0\xAD\x88V[\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\x15b\0-tWP\x80b\0-\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01b\0-\xB1V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15b\0\x86\x1AWP` \x82\x01Q\x15[\x15b\0\x869WPP`@\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` \x01Qb\0\x86\x80\x91\x90b\0\xB7|V[b\0\x86\xAC\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGb\0\xB7bV[\x90R\x92\x91PPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x86\xD4Wb\0\x86\xD4b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x86\xFEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0S\xEBW`+T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x1F\x9Bt\xE0\x90\x86\x90\x84\x90\x81\x10b\0\x87:Wb\0\x87:b\0\xB1CV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x88\x16`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x87\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x87\xB4\x91\x90b\0\xBC\x8CV[\x82\x82\x81Q\x81\x10b\0\x87\xC9Wb\0\x87\xC9b\0\xB1CV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x87\xED\x81b\0\xB3\nV[\x91PPb\0\x87\x04V[`\0b\0\x88\x04\x85\x85b\0\x89=V[\x90P`\0b\0\x88\x14\x86\x86b\0\x8A\xE9V[\x90P`\0b\0\x88#\x86b\0\x8B\xDFV[\x90P`\0b\0\x882\x87b\0\x8D\x12V[\x90P`\0[\x87Q\x81\x10\x15b\0\x892Wb\0\x88\xC1\x85\x82\x81Q\x81\x10b\0\x88ZWb\0\x88Zb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0\x88\x80Wb\0\x88\x80b\0\xB1CV[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0\x88\x9DWb\0\x88\x9Db\0\xB1CV[` \x02` \x01\x01Qb\0\x88\xB1\x91\x90b\0\xBC\xB7V[`\x01`\x01``\x1B\x03\x16\x88b\0\x81\x96V[b\0\x89\x1D\x83\x82\x81Q\x81\x10b\0\x88\xDAWb\0\x88\xDAb\0\xB1CV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0\x89\0Wb\0\x89\0b\0\xB1CV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0\x88\x9DWb\0\x88\x9Db\0\xB1CV[\x80b\0\x89)\x81b\0\xB3\nV[\x91PPb\0\x887V[PPPPPPPPPV[```\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x89\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x89\xA6\x91\x90b\0\xB5\xEDV[\x90P`\0\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x89\xC6Wb\0\x89\xC6b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x89\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15b\0\x8A\xE0W`+T\x85Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90\x85\x90\x88\x90\x85\x90\x81\x10b\0\x8A.Wb\0\x8A.b\0\xB1CV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x04\x81\x01\x92\x90\x92R`\xF8\x1C`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x8AxW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8A\x9E\x91\x90b\0\xBC\x8CV[\x82\x82\x81Q\x81\x10b\0\x8A\xB3Wb\0\x8A\xB3b\0\xB1CV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x8A\xD7\x81b\0\xB3\nV[\x91PPb\0\x89\xF6V[P\x94\x93PPPPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8BCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8Bi\x91\x90b\0\xB5\xEDV[\x90Pb\0\x8Bw\x84\x84b\0\x89=V[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x8B\xBFW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x8B\xD4W=`\0\x80>=`\0\xFD[PPPPP\x92\x91PPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8B\xFFWb\0\x8B\xFFb\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x8C)W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`+T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xD5\xEC\xCC\x05\x90\x86\x90\x84\x90\x81\x10b\0\x8CeWb\0\x8Ceb\0\xB1CV[\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\x15b\0\x8C\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8C\xD0\x91\x90b\0\xBC\x8CV[\x82\x82\x81Q\x81\x10b\0\x8C\xE5Wb\0\x8C\xE5b\0\xB1CV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x8D\t\x81b\0\xB3\nV[\x91PPb\0\x8C/V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8DlW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8D\x92\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x8B\xDFV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8D\xBFWb\0\x8D\xBFb\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x8D\xE9W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`,T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF3A\t\"\x90\x86\x90\x84\x90\x81\x10b\0\x8E%Wb\0\x8E%b\0\xB1CV[\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\x15b\0\x8EjW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8E\x90\x91\x90b\0\xBB\xE2V[\x82\x82\x81Q\x81\x10b\0\x8E\xA5Wb\0\x8E\xA5b\0\xB1CV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x8E\xC6\x81b\0\xB3\nV[\x91PPb\0\x8D\xEFV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8F)W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8FO\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x8D\x9FV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8F|Wb\0\x8F|b\0\xB1-V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x8F\xB1W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x8F\x9BW\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`,T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90\x86\x90\x84\x90\x81\x10b\0\x8F\xEDWb\0\x8F\xEDb\0\xB1CV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01RCc\xFF\xFF\xFF\xFF\x16`$\x82\x01R`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x90>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x90h\x91\x90\x81\x01\x90b\0\xC3\x18V[\x82\x82\x81Q\x81\x10b\0\x90}Wb\0\x90}b\0\xB1CV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x90\x95\x90b\0\xB3\nV[\x91PPb\0\x8F\xB7V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x90\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x91\x1E\x91\x90b\0\xB5\xEDV[\x90Pb\0\x82\xCF\x83b\0\x8F\\V[`\0\x80\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x91mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x91\x93\x91\x90b\0\xB5\xEDV[\x90P`\0[\x84Q\x81\x10\x15b\0\x91\xE8W\x81\x85\x82\x81Q\x81\x10b\0\x91\xB8Wb\0\x91\xB8b\0\xB1CV[` \x02` \x01\x01Q\x14\x15b\0\x91\xD3W`\x01\x92PPPb\0O9V[\x80b\0\x91\xDF\x81b\0\xB3\nV[\x91PPb\0\x91\x98V[P`\0\x94\x93PPPPV[b\0IH\x82\x15\x82b\0P~V[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\x92\xFDW`@Q`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90b\0\x92x\x90\x83\x90e\x19\x98Z[\x19Y`\xD2\x1B\x90`\x01\x90` \x01b\0\xC3PV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x92\x98\x92\x91` \x01b\0\xB6\xC0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x92\xB4\x91b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\x92\xF3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x92\xF8V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cp\xA0\x821`\xE0\x1B\x17\x90R\x91Q`\0\x92\x87\x16\x91b\0\x93d\x91b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x93\xA1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x93\xA6V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0\x93\xC2\x91\x90b\0\xB5\xEDV[\x90Pb\0\x93\xFC\x84b\0\x93\xF5\x87b\0\x93\xEEcp\xA0\x821`\xE0\x1Bb\0\x93\xE7`\x0C\x8Db\0\x97\x8DV[\x90b\0\x97\xB3V[\x90b\0\x97\xD1V[\x90b\0\x97\xFAV[\x82\x15b\0,\x8EW`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x16\r\xDD`\xE0\x1B\x17\x90R\x90Q`\0\x91`\x01`\x01`\xA0\x1B\x03\x89\x16\x91b\0\x94G\x91\x90b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x94\x84W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x94\x89V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0\x94\xA5\x91\x90b\0\xB5\xEDV[\x90P\x82\x86\x10\x15b\0\x94\xD0Wb\0\x94\xBC\x86\x84b\0\xB7bV[b\0\x94\xC8\x90\x82b\0\xB7bV[\x90Pb\0\x94\xEBV[b\0\x94\xDC\x83\x87b\0\xB7bV[b\0\x94\xE8\x90\x82b\0\xB7\x93V[\x90P[b\0g\xDE\x81b\0\x93\xF5c\x18\x16\r\xDD`\xE0\x1Bb\0\x93\xE7`\x0C\x8Db\0\x97\x8DV[\x80\x82\x14b\0IHW`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0\x95n\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [byt`@\x82\x01Rdes32]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x82`@Qb\0\x95\xA7\x91\x90b\0\xC3qV[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x81`@Qb\0\x95\xE0\x91\x90b\0\xC3\xAAV[`@Q\x80\x91\x03\x90\xA1b\0IHb\0\x92\0V[\x80\x82\x14b\0IHW`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0\x96T\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x82`@Qb\0\x96|\x91\x90b\0\xC3qV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x04\x04T\x839\x81Q\x91R\x81`@Qb\0\x95\xE0\x91\x90b\0\xC3\xAAV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14b\0IHW`\0\x80Q` b\x03\xFC=\x839\x81Q\x91R`@Qb\0\x97\x1B\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [add`@\x82\x01Rdress]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x82`@Qb\0\x97T\x91\x90b\0\xC3\xD5V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x81`@Qb\0\x95\xE0\x91\x90b\0\xC4\x1AV[`\x05\x82\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`\0\x82b\0B\xB4V[`\x03\x82\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16`\xE0\x83\x90\x1C\x17\x90U`\0\x82b\0B\xB4V[`\x02\x82\x01\x80T`\x01\x81\x01\x82U`\0\x91\x82R` \x82 `\x01`\x01`\xA0\x1B\x03\x84\x16\x91\x01U\x82b\0B\xB4V[b\0IH\x82\x82`\x05\x82\x01T`\x03\x83\x01T`\x04\x84\x01T`\x02\x85\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\x01`\x01`\xA0\x1B\x03\x90\x96\x16\x95`\xE0\x95\x90\x95\x1B\x94`\0\x93\x90\x92\x90\x91\x83\x01\x82\x82\x80\x15b\0\x98sW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0\x98^W[PPPPP\x90P`\0\x83b\0\x98\x88\x83b\0\x9BxV[`@Q` \x01b\0\x98\x9B\x92\x91\x90b\0\xB6\xC0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x01\x8B\x01` \x90\x81R\x83\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x83R\x81R\x92\x81 \x91\x94P\x90\x92\x90\x91b\0\x98\xEF\x91\x86\x91\x88\x91\x01b\0\xC4EV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\x99*Wb\0\x99(\x87b\0\x9C$V[P[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R` \x88\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x88\x16\x84R\x82R\x80\x83 \x90Q\x90\x91\x83\x91b\0\x99k\x91\x87\x91\x89\x91\x01b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T`\0\x1B\x90P`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qb\0\x99\xB2\x91\x90b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x99\xEFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x99\xF4V[``\x91P[P\x91Pb\0\x9A\x11\x90P\x81b\0\x9A\x0B\x88` b\0\xC0-V[b\0\x9C1V[`@Qc\x06g\xF9\xD7`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x9AxW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x9A\x9E\x91\x90b\0\xB5\xEDV[\x90P\x80\x82\x14b\0\x9A\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0-\xB1\x90b\0\xC4\x81V[`@Qcp\xCA\x10\xBB`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cp\xCA\x10\xBB\x90b\0\x9A\xFF\x90\x8B\x90\x87\x90\x8E\x90`\x04\x01b\0\xC3PV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x9B\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x9B/W=`\0\x80>=`\0\xFD[PPP`\x05\x8B\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UP`\x03\x8A\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\x9Bd`\x02\x8B\x01`\0b\0\xAD\xA6V[\x89`\x04\x01`\0\x90UPPPPPPPPPPV[```\0\x82Q` b\0\x9B\x8C\x91\x90b\0\xC0-V[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x9B\xA6Wb\0\x9B\xA6b\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\x9B\xD1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`\0\x84\x82\x81Q\x81\x10b\0\x9B\xF8Wb\0\x9B\xF8b\0\xB1CV[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\x9C\x1B\x90b\0\xB3\nV[\x91PPb\0\x9B\xD7V[`\0b\0O9\x82b\0\x9C\xB1V[`\0\x80`\0` \x85Q\x11b\0\x9CHW\x84Qb\0\x9CKV[` [\x90P`\0[\x81\x81\x10\x15b\0P\x10Wb\0\x9Cf\x81`\x08b\0\xC0-V[\x86b\0\x9Cs\x83\x88b\0\xB7\x93V[\x81Q\x81\x10b\0\x9C\x86Wb\0\x9C\x86b\0\xB1CV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0\x9C\xA8\x81b\0\xB3\nV[\x91PPb\0\x9CPV[`\x05\x81\x01T`\x03\x82\x01T`\x04\x83\x01T`\x02\x84\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\0\x96`\x01`\x01`\xA0\x1B\x03\x16\x95`\xE0\x1B\x94\x93\x87\x93\x91\x92\x90\x91\x90\x83\x01\x82\x82\x80\x15b\0\x9D#W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0\x9D\x0EW[PPP`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x95\x96P\x94\x91\x93Pb\0\x9Do\x92P\x85\x91\x87\x91\x01b\0\xC4EV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16\x15b\0\x9E\x0EW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R` \x87\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x87\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\x9D\xDE\x91\x85\x91\x87\x91\x01b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x94PPPPP\x91\x90PV[`\0\x83b\0\x9E\x1C\x83b\0\xA9\xEBV[`@Q` \x01b\0\x9E/\x92\x91\x90b\0\xB6\xC0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` b\x04\x02B\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c&l\xF1\t`@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\x9E\x8EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x9E\xA3W=`\0\x80>=`\0\xFD[PPPP`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qb\0\x9E\xC4\x91\x90b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x9F\x01W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x9F\x06V[``\x91P[P\x91Pb\0\x9F#\x90P\x81b\0\x9F\x1D\x87` b\0\xC0-V[b\0\xAA\x97V[`@Qce\xBC\x94\x81`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16`\x04\x82\x01R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ce\xBC\x94\x81\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x9F\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x9F\xAF\x91\x90\x81\x01\x90b\0\xC5\x1CV[P\x90P\x80Q`\x01\x14\x15b\0\xA2\x91W`\0`\0\x80Q` b\x04\x02B\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cf\x7F\x9Dp\x89\x84`\0\x81Q\x81\x10b\0\x9F\xF7Wb\0\x9F\xF7b\0\xB1CV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA01\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\xA0OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\xA0u\x91\x90b\0\xB5\xEDV[\x90P\x80b\0\xA0\xE0W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\xA3`\x91\x90b\0\xB5\xEDV[\x90P\x80b\0\xA3\xCAW\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`\0``\x8B`\x01`\x01`\xA0\x1B\x03\x16\x88`@Qb\0\xA4\x8C\x91\x90b\0\xB6\xF3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\xA4\xC9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\xA4\xCEV[``\x91P[P\x90\x92P\x90Pb\0\xA4\xE6\x81b\0\x9F\x1D\x8C` b\0\xC0-V[\x96PP\x80\x80\x15b\0\xA4\xF6WP\x81\x86\x14[\x15b\0\xA7IW\x7F\x9C\x95U\xB1\xE3\x10.<\xF4\x8FB}y\xCBg\x8F]\x9B\xD1\xED\n\xD5t8\x94a\xE2U\xF9Qp\xED\x8B\x8B\x8A\x8C`@Q` \x01b\0\xA54\x92\x91\x90b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x88\x88\x81Q\x81\x10b\0\xA5_Wb\0\xA5_b\0\xB1CV[` \x02` \x01\x01Q`\0\x1C`@Qb\0\xA5|\x94\x93\x92\x91\x90b\0\xC5\x86V[`@Q\x80\x91\x03\x90\xA1\x84\x84\x81Q\x81\x10b\0\xA5\x99Wb\0\xA5\x99b\0\xB1CV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x8D\x16`\0\x90\x81R\x8F\x83R`@\x80\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8F\x16\x83R\x84R\x80\x82 \x90Q\x92\x93\x90\x92b\0\xA5\xE4\x91\x8D\x91\x8F\x91\x01b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 \x81\x90UP`\x01\x8D`\x01\x01`\0\x8D`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8C`\x01`\x01`\xE0\x1B\x03\x19\x16`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8A\x8C`@Q` \x01b\0\xA6q\x92\x91\x90b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\0\x80Q` b\x04\x02B\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\xA6\xE3Wb\0\xA6\xE3b\0\xB1CV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA7\x0C\x93\x92\x91\x90b\0\xC3PV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\xA7'W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\xA7=`\0\xFD[PPPPPPPb\0\xA7\xF6V[`\0\x80Q` b\x04\x02B\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\xA7\x80Wb\0\xA7\x80b\0\xB1CV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA7\xA9\x93\x92\x91\x90b\0\xC3PV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\xA7\xC4W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\xA7\xD9W=`\0\x80>=`\0\xFD[PPPPPPP[\x80b\0\xA7\xED\x81b\0\xB3\nV[\x91PPb\0\xA2\x9FV[Pb\0\xA8nV[`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FstdStorage find(StdStorage): No `D\x82\x01R\x7Fstorage use detected for target.`d\x82\x01R`\x84\x01b\0-\xB1V[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\xA8\xB2\x91\x88\x91\x8A\x91\x01b\0\xC4EV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\xA9AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FstdStorage find(StdStorage): Slo`D\x82\x01Rn:\x149\x94\x9077\xBA\x1037\xBA\xB72\x17`\x89\x1B`d\x82\x01R`\x84\x01b\0-\xB1V[`\x05\x89\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`\x03\x89\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\xA9r`\x02\x8A\x01`\0b\0\xAD\xA6V[`\0`\x04\x8A\x01\x81\x90U`\x01`\x01`\xA0\x1B\x03\x88\x16\x81R` \x8A\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\xA9\xB8\x91\x88\x91\x8A\x91\x01b\0\xC4EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x97PPPPPPPP\x91\x90PV[```\0\x82Q` b\0\xA9\xFF\x91\x90b\0\xC0-V[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\xAA\x19Wb\0\xAA\x19b\0\xB1-V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\xAADW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x84\xC7W`\0\x84\x82\x81Q\x81\x10b\0\xAAkWb\0\xAAkb\0\xB1CV[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\xAA\x8E\x90b\0\xB3\nV[\x91PPb\0\xAAJV[`\0\x80`\0` \x85Q\x11b\0\xAA\xAEW\x84Qb\0\xAA\xB1V[` [\x90P`\0[\x81\x81\x10\x15b\0P\x10Wb\0\xAA\xCC\x81`\x08b\0\xC0-V[\x86b\0\xAA\xD9\x83\x88b\0\xB7\x93V[\x81Q\x81\x10b\0\xAA\xECWb\0\xAA\xECb\0\xB1CV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0\xAB\x0E\x81b\0\xB3\nV[\x91PPb\0\xAA\xB6V[a\x07\x18\x80b\0\xC5\xB7\x839\x01\x90V[a\x07x\x80b\0\xCC\xCF\x839\x01\x90V[`\x94\x80b\0\xD4G\x839\x01\x90V[a\x02*\x80b\0\xD4\xDB\x839\x01\x90V[a\x03\xF3\x80b\0\xD7\x05\x839\x01\x90V[a\x0E\x81\x80b\0\xDA\xF8\x839\x01\x90V[aJ\xD0\x80b\0\xE9y\x839\x01\x90V[a\x04\xE4\x80b\x014I\x839\x01\x90V[a\\F\x80b\x019-\x839\x01\x90V[a3\x8A\x80b\x01\x95s\x839\x01\x90V[a\x0E\xFE\x80b\x01\xC8\xFD\x839\x01\x90V[a1i\x80b\x01\xD7\xFB\x839\x01\x90V[a\x1Fx\x80b\x02\td\x839\x01\x90V[a\x1A\xB4\x80b\x02(\xDC\x839\x01\x90V[a\x11}\x80b\x02C\x90\x839\x01\x90V[a9X\x80b\x02U\r\x839\x01\x90V[a!\x0B\x80b\x02\x8Ee\x839\x01\x90V[a\x13\xEC\x80b\x02\xAFp\x839\x01\x90V[a\x16\xE0\x80b\x02\xC3\\\x839\x01\x90V[aa\x87\x80b\x02\xDA<\x839\x01\x90V[a\x1A%\x80b\x03;\xC3\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0\xACQb\0\xAD\xC6V[\x81R` \x01b\0\xAC`b\0\xAD\xC6V[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[a\x0E`\x80b\x03U\xE8\x839\x01\x90V[\x82\x80Tb\0\xAC\x9F\x90b\0\xB6\x07V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\xAC\xC3W`\0\x85Ub\0\xAD\x0EV[\x82`\x1F\x10b\0\xAC\xDEW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\xAD\x0EV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\xAD\x0EW\x91\x82\x01[\x82\x81\x11\x15b\0\xAD\x0EW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\xAC\xF1V[Pb\0Q\xF2\x92\x91Pb\0\xAD\xE4V[aF\xF4\x80b\x03dH\x839\x01\x90V[aP\x13\x80b\x03\xAB<\x839\x01\x90V[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\xADy`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\xAC`b\0\xACa\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003total operator count should be the same for churnedQuorumsoperator should no longer have stake in any quorumsoperator already has bits in quorum bitmapoperator list should contain incoming operator and should not contain churned operatorsA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPoperator pubkey should have been added to standardQuorums apkscurrent operator bitmap should not include quorumschurned operator did not deregister from churned quorumoperator list should have one fewer entryfailed to add operator weight and remove churned weight from each quorumassert_Snap_Churned_OperatorWeight: input length mismatch_configRand: invalid fillTypes, no flags passedoperator already has a registered pubkey_randValue: tried to select value from empty arraytotal operator count should have increased for each quorumchurned operator should still have a registered pubkey_configRand: invalid minimumStake, no flags passed_selectRand: tried to select from empty quorum list(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83churned operator bitmap should not include churned quorumsoperatorInfo should have operatorId_configRand: invalid numStrategies, no flags passedoperator list should have one more entrytotal operator count should have increased for standardQuorumsoperator should have empty id and NEVER_REGISTERED statusfailed to add operator weight to operator and total stake in each quorumtotal operator count should have decreased for each quorum_configRand: invalid _userTypes, no flags passedoperator should still have a registered pubkeyoperatorInfo status should be DEREGISTEREDoperator pubkey should have been added to each quorum apkoperator pubkey should have been subtracted from each quorum apkoperator list should have one more entry in standardQuorumsoperatorInfo should still have operatorId\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_newRandomOperator: operator should be registeredoperator should have registered a pubkeyoperator pubkey should have been added and churned operator pubkeys should have been removed from apks_configRand: invalid numQuorums, no flags passed_getChurnTargets: non-full quorum cannot be churnedoperator did not deregister from all quorumschurned operatorInfo should still have operatorIdassert_Snap_Churned_QuorumApk: input length mismatchassert_Snap_Replaced_OperatorListEntries: input length mismatch\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8failed to remove operator weight from total stake for each quorumoperator did not register for all quorumsoperator should not have any bits in bitmapfailed to add operator weight to operator and total stake in standardQuorumscurrent operator bitmap should include quorumsoperator should have at least the minimum stake in each quorumoperatorInfo status should be REGISTEREDoperator should be registered to AVSoperator should not be registered to the AVS\xA2dipfsX\"\x12 g@9\xB5~\xCD\xF8\xA6\xC2pMv\xBD\x7FciV\xD1\x81-j\x9BD\xC2\0\x96\xEBL\xB2\x14)CdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mul(uint256)` and selector `0x131e2f18`. + ```solidity + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulCall { + pub x: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mul(uint256)`](mulCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulReturn { + pub g2Point: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: mulCall) -> Self { + (value.x,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { x: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: mulReturn) -> Self { + (value.g2Point,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { g2Point: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mulCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mulReturn; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mul(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 30u8, 47u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.x, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `testFuzz_churnAll_deregisterAll_oldReregisterAll(uint24)` and selector `0xaf51f4fe`. + ```solidity + function testFuzz_churnAll_deregisterAll_oldReregisterAll(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_churnAll_deregisterAll_oldReregisterAllCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_churnAll_deregisterAll_oldReregisterAll(uint24)`](testFuzz_churnAll_deregisterAll_oldReregisterAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_churnAll_deregisterAll_oldReregisterAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: testFuzz_churnAll_deregisterAll_oldReregisterAllCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_churnAll_deregisterAll_oldReregisterAllCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_churnAll_deregisterAll_oldReregisterAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_churnAll_deregisterAll_oldReregisterAllReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_churnAll_deregisterAll_oldReregisterAllCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_churnAll_deregisterAll_oldReregisterAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "testFuzz_churnAll_deregisterAll_oldReregisterAll(uint24)"; + const SELECTOR: [u8; 4] = [175u8, 81u8, 244u8, 254u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `testFuzz_churnAll_deregisterAll_reregisterAll(uint24)` and selector `0x2deac5e5`. + ```solidity + function testFuzz_churnAll_deregisterAll_reregisterAll(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_churnAll_deregisterAll_reregisterAllCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_churnAll_deregisterAll_reregisterAll(uint24)`](testFuzz_churnAll_deregisterAll_reregisterAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_churnAll_deregisterAll_reregisterAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: testFuzz_churnAll_deregisterAll_reregisterAllCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_churnAll_deregisterAll_reregisterAllCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_churnAll_deregisterAll_reregisterAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_churnAll_deregisterAll_reregisterAllReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_churnAll_deregisterAll_reregisterAllCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_churnAll_deregisterAll_reregisterAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "testFuzz_churnAll_deregisterAll_reregisterAll(uint24)"; + const SELECTOR: [u8; 4] = [45u8, 234u8, 197u8, 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._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `testFuzz_churnSome_deregisterSome_deregisterRemaining(uint24)` and selector `0xcaf54907`. + ```solidity + function testFuzz_churnSome_deregisterSome_deregisterRemaining(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_churnSome_deregisterSome_deregisterRemainingCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_churnSome_deregisterSome_deregisterRemaining(uint24)`](testFuzz_churnSome_deregisterSome_deregisterRemainingCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_churnSome_deregisterSome_deregisterRemainingReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: testFuzz_churnSome_deregisterSome_deregisterRemainingCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_churnSome_deregisterSome_deregisterRemainingCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_churnSome_deregisterSome_deregisterRemainingReturn, + ) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_churnSome_deregisterSome_deregisterRemainingReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_churnSome_deregisterSome_deregisterRemainingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_churnSome_deregisterSome_deregisterRemainingReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "testFuzz_churnSome_deregisterSome_deregisterRemaining(uint24)"; + const SELECTOR: [u8; 4] = [202u8, 245u8, 73u8, 7u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`Integration_Full_Register_Deregister`](self) function calls. + pub enum Integration_Full_Register_DeregisterCalls { + IS_TEST(IS_TESTCall), + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mul(mulCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + testFuzz_churnAll_deregisterAll_oldReregisterAll( + testFuzz_churnAll_deregisterAll_oldReregisterAllCall, + ), + testFuzz_churnAll_deregisterAll_reregisterAll( + testFuzz_churnAll_deregisterAll_reregisterAllCall, + ), + testFuzz_churnSome_deregisterSome_deregisterRemaining( + testFuzz_churnSome_deregisterSome_deregisterRemainingCall, + ), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl Integration_Full_Register_DeregisterCalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [10u8, 146u8, 84u8, 228u8], + [19u8, 30u8, 47u8, 24u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [45u8, 188u8, 176u8, 76u8], + [45u8, 234u8, 197u8, 229u8], + [61u8, 251u8, 64u8, 224u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [175u8, 81u8, 244u8, 254u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [202u8, 245u8, 73u8, 7u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for Integration_Full_Register_DeregisterCalls { + const NAME: &'static str = "Integration_Full_Register_DeregisterCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 22usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::avsDirectory(_) => { + ::SELECTOR + } + Self::churnApprover(_) => { + ::SELECTOR + } + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mul(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => { + ::SELECTOR + } + Self::testFuzz_churnAll_deregisterAll_oldReregisterAll(_) => { + ::SELECTOR + } + Self::testFuzz_churnAll_deregisterAll_reregisterAll(_) => { + ::SELECTOR + } + Self::testFuzz_churnSome_deregisterSome_deregisterRemaining(_) => { + ::SELECTOR + } + Self::timeMachine(_) => { + ::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< + Integration_Full_Register_DeregisterCalls, + >] = &[ + { + fn churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::churnApprover) + } + churnApprover + }, + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_Full_Register_DeregisterCalls::setUp) + } + setUp + }, + { + fn mul( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_Full_Register_DeregisterCalls::mul) + } + mul + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::churnApproverPrivateKey) + } + churnApproverPrivateKey + }, + { + fn testFuzz_churnAll_deregisterAll_reregisterAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_Full_Register_DeregisterCalls::testFuzz_churnAll_deregisterAll_reregisterAll, + ) + } + testFuzz_churnAll_deregisterAll_reregisterAll + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::timeMachine) + } + timeMachine + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::targetSelectors) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn testFuzz_churnAll_deregisterAll_oldReregisterAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_Full_Register_DeregisterCalls::testFuzz_churnAll_deregisterAll_oldReregisterAll, + ) + } + testFuzz_churnAll_deregisterAll_oldReregisterAll + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_Full_Register_DeregisterCalls::failed) + } + failed + }, + { + fn testFuzz_churnSome_deregisterSome_deregisterRemaining( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_Full_Register_DeregisterCalls::testFuzz_churnSome_deregisterSome_deregisterRemaining, + ) + } + testFuzz_churnSome_deregisterSome_deregisterRemaining + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_Full_Register_DeregisterCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_Full_Register_DeregisterCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::churnApprover(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mul(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_churnAll_deregisterAll_oldReregisterAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_churnAll_deregisterAll_reregisterAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_churnSome_deregisterSome_deregisterRemaining(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::timeMachine(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::churnApprover(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mul(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_churnAll_deregisterAll_oldReregisterAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_churnAll_deregisterAll_reregisterAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_churnSome_deregisterSome_deregisterRemaining(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::timeMachine(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`Integration_Full_Register_Deregister`](self) events. + pub enum Integration_Full_Register_DeregisterEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl Integration_Full_Register_DeregisterEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for Integration_Full_Register_DeregisterEvents { + const NAME: &'static str = "Integration_Full_Register_DeregisterEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 Integration_Full_Register_DeregisterEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Integration_Full_Register_Deregister`](self) contract instance. + + See the [wrapper's documentation](`Integration_Full_Register_DeregisterInstance`) 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, + ) -> Integration_Full_Register_DeregisterInstance { + Integration_Full_Register_DeregisterInstance::::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>, + > { + Integration_Full_Register_DeregisterInstance::::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 { + Integration_Full_Register_DeregisterInstance::::deploy_builder(provider) + } + /**A [`Integration_Full_Register_Deregister`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Integration_Full_Register_Deregister`](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 Integration_Full_Register_DeregisterInstance< + 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 Integration_Full_Register_DeregisterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("Integration_Full_Register_DeregisterInstance") + .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, + > Integration_Full_Register_DeregisterInstance + { + /**Creates a new wrapper around an on-chain [`Integration_Full_Register_Deregister`](self) contract instance. + + See the [wrapper's documentation](`Integration_Full_Register_DeregisterInstance`) 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 Integration_Full_Register_DeregisterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> Integration_Full_Register_DeregisterInstance { + Integration_Full_Register_DeregisterInstance { + 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, + > Integration_Full_Register_DeregisterInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mul`] function. + pub fn mul( + &self, + x: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mulCall { x }) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`testFuzz_churnAll_deregisterAll_oldReregisterAll`] function. + pub fn testFuzz_churnAll_deregisterAll_oldReregisterAll( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_churnAll_deregisterAll_oldReregisterAllCall, + N, + > { + self.call_builder(&testFuzz_churnAll_deregisterAll_oldReregisterAllCall { _random }) + } + ///Creates a new call builder for the [`testFuzz_churnAll_deregisterAll_reregisterAll`] function. + pub fn testFuzz_churnAll_deregisterAll_reregisterAll( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_churnAll_deregisterAll_reregisterAllCall, + N, + > { + self.call_builder(&testFuzz_churnAll_deregisterAll_reregisterAllCall { _random }) + } + ///Creates a new call builder for the [`testFuzz_churnSome_deregisterSome_deregisterRemaining`] function. + pub fn testFuzz_churnSome_deregisterSome_deregisterRemaining( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_churnSome_deregisterSome_deregisterRemainingCall, + N, + > { + self.call_builder(&testFuzz_churnSome_deregisterSome_deregisterRemainingCall { + _random, + }) + } + ///Creates a new call builder for the [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Integration_Full_Register_DeregisterInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/integration_nonfull_register_corebalancechange_update.rs b/crates/utils/src/middleware/integration_nonfull_register_corebalancechange_update.rs new file mode 100644 index 00000000..061d488c --- /dev/null +++ b/crates/utils/src/middleware/integration_nonfull_register_corebalancechange_update.rs @@ -0,0 +1,8511 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface Integration_NonFull_Register_CoreBalanceChange_Update { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + function registryCoordinator() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function testFuzz_registerAll_decreaseCoreBalance_deregisterAll(uint24 _random) external; + function testFuzz_registerAll_decreaseCoreBalance_update(uint24 _random) external; + function testFuzz_registerAll_increaseCoreBalance_deregisterAll(uint24 _random) external; + function testFuzz_registerAll_increaseCoreBalance_update_deregisterAll(uint24 _random) external; + function testFuzz_registerAll_update_deregisterAll(uint24 _random) external; + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "g2Point", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "testFuzz_registerAll_decreaseCoreBalance_deregisterAll", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "testFuzz_registerAll_decreaseCoreBalance_update", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "testFuzz_registerAll_increaseCoreBalance_deregisterAll", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "testFuzz_registerAll_increaseCoreBalance_update_deregisterAll", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "testFuzz_registerAll_update_deregisterAll", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Integration_NonFull_Register_CoreBalanceChange_Update { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604081905260078054600160ff199182168117909255600b80549091169091179055601c805460008051602062040ab08339815191526001600160a01b0319918216811790925560328054309083161790556033805490911673beb9864e3d6a1ba44e131a462f6328f2d1d6d54d1790557fa3e2a0c4ce206b9c6679ac6361c034f31c8844ae3104108f47ed8c413acf333260348190556001625e79b760e01b031983526084529063ffa186499060a490602090602481865afa158015620000cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f3919062000b0a565b603580546001600160a01b03929092166001600160a01b031992831617905560368054736915a67877a178d5129a28d2af871ac1fceb3fd392169190911790556000603d8190556043553480156200014a57600080fd5b5060005b6200015b60058062000b52565b63ffffffff16811015620003585762000173620009fb565b60006200018283600162000b7d565b6040516020016200019591815260200190565b6040516020818303038152906040528051906020012060001c9050620001de81620001ca6200035f60201b62002f7b1760201c565b6200038860201b62002fa41790919060201c565b8260200181905250620001fc816200042860201b620019bc1760201c565b60408301908152603e805460018181019092557f8d800d6614d35eed73733ee453164a3b48076eb3138f466adeeb9dec7bb31f7001839055603f805491820181556000528351805160089092027fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd81019283556020918201517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fe8201558186015180517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58ff830155909101517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b59008201559151805185937fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b5901019062000323908290600262000a50565b5060208201516200033b906002808401919062000a50565b5050505050505080806200034f9062000b98565b9150506200014e565b5062000dc3565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b6040805180820190915260008082526020820152620003a662000a93565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620003db57620003dd565bfe5b5080620004205760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b6200043262000ab1565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200044a57905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062000493576200049362000bb6565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620004d057620004d062000bb6565b60200260200101819052506040518060400160405280601481526020017f746573742f6666692f676f2f67326d756c2e676f0000000000000000000000008152508160028151811062000527576200052762000bb6565b60200260200101819052506200054883620008de60201b620030451760201c565b816003815181106200055e576200055e62000bb6565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062000599576200059962000bb6565b6020908102919091010152604051638916046760e01b815260009060008051602062040ab083398151915290638916046790620005db90859060040162000c15565b6000604051808303816000875af1158015620005fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000625919081019062000c93565b9050808060200190518101906200063d919062000d4b565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200067a576200067a62000bb6565b6020908102919091010152604051638916046760e01b815260008051602062040ab083398151915290638916046790620006b990859060040162000c15565b6000604051808303816000875af1158015620006d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000703919081019062000c93565b9050808060200190518101906200071b919062000d4b565b8351526040805180820190915260018152603360f81b60208201528251839060049081106200074e576200074e62000bb6565b6020908102919091010152604051638916046760e01b815260008051602062040ab0833981519152906389160467906200078d90859060040162000c15565b6000604051808303816000875af1158015620007ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007d7919081019062000c93565b905080806020019051810190620007ef919062000d4b565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b815250826004815181106200082f576200082f62000bb6565b6020908102919091010152604051638916046760e01b815260008051602062040ab0833981519152906389160467906200086e90859060040162000c15565b6000604051808303816000875af11580156200088e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008b8919081019062000c93565b905080806020019051810190620008d0919062000d4b565b602084015152509092915050565b606081620009035750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200093357806200091a8162000b98565b91506200092b9050600a8362000d7b565b915062000907565b6000816001600160401b0381111562000950576200095062000bcc565b6040519080825280601f01601f1916602001820160405280156200097b576020820181803683370190505b5090505b8415620009f3576200099360018362000d92565b9150620009a2600a8662000dac565b620009af90603062000b7d565b60f81b818381518110620009c757620009c762000bb6565b60200101906001600160f81b031916908160001a905350620009eb600a8662000d7b565b94506200097f565b949350505050565b6040805160a0810190915260006060820181815260808301919091528190815260200162000a3c604051806040016040528060008152602001600081525090565b815260200162000a4b62000ab1565b905290565b826002810192821562000a81579160200282015b8281111562000a8157825182559160200191906001019062000a64565b5062000a8f92915062000ad5565b5090565b60405180606001604052806003906020820280368337509192915050565b604051806040016040528062000ac662000aec565b815260200162000a4b62000aec565b5b8082111562000a8f576000815560010162000ad6565b60405180604001604052806002906020820280368337509192915050565b60006020828403121562000b1d57600080fd5b81516001600160a01b038116811462000b3557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681851680830382111562000b745762000b7462000b3c565b01949350505050565b6000821982111562000b935762000b9362000b3c565b500190565b600060001982141562000baf5762000baf62000b3c565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000bff57818101518382015260200162000be5565b8381111562000c0f576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562000c8657878503603f190184528151805180875262000c66818989018a850162000be2565b601f01601f19169590950186019450928501929085019060010162000c3c565b5092979650505050505050565b60006020828403121562000ca657600080fd5b81516001600160401b038082111562000cbe57600080fd5b818401915084601f83011262000cd357600080fd5b81518181111562000ce85762000ce862000bcc565b604051601f8201601f19908116603f0116810190838211818310171562000d135762000d1362000bcc565b8160405282815287602084870101111562000d2d57600080fd5b62000d4083602083016020880162000be2565b979650505050505050565b60006020828403121562000d5e57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008262000d8d5762000d8d62000d65565b500490565b60008282101562000da75762000da762000b3c565b500390565b60008262000dbe5762000dbe62000d65565b500690565b6203fcdc8062000dd46000396000f3fe60806040523480156200001157600080fd5b5060043610620001755760003560e01c80636b3aa72e11620000d3578063b5508aa91162000086578063b5508aa9146200030d578063ba414fa61462000317578063e20c9f711462000332578063e389bbb3146200033c578063fa7626d41462000353578063fe0ea5f1146200036157600080fd5b80636b3aa72e14620002975780636d14a98714620002ab57806385226c8114620002bf578063916a17c614620002d85780639d8b9cb414620002e2578063b27b5ab514620002f657600080fd5b80632dbcb04c116200012c5780632dbcb04c14620002265780633dfb40e0146200023f5780633e5e3c2314620002535780633f7286f4146200025d5780634f9229bb146200026757806366d9a9a0146200027e57600080fd5b8063054310e6146200017a578063096c2fc014620001ab5780630a9254e414620001c4578063131e2f1814620001ce5780631ed7831c14620001f45780632ade3880146200020d575b600080fd5b6035546200018e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001c2620001bc3660046200a907565b62000378565b005b620001c2620005bc565b620001e5620001df3660046200a92e565b620019bc565b604051620001a291906200a98e565b620001fe62001e72565b604051620001a291906200a9e4565b6200021762001ed6565b604051620001a291906200aa56565b6200023060345481565b604051908152602001620001a2565b602e546200018e906001600160a01b031681565b620001fe62002024565b620001fe62002086565b620001c2620002783660046200a907565b620020e8565b6200028862002352565b604051620001a291906200ab1c565b601e546200018e906001600160a01b031681565b6028546200018e906001600160a01b031681565b620002c96200243c565b604051620001a291906200abd3565b6200028862002516565b6033546200018e906001600160a01b031681565b620001c2620003073660046200a907565b62002600565b620002c9620028dd565b62000321620029b7565b6040519015158152602001620001a2565b620001fe62002aee565b620001c26200034d3660046200a907565b62002b50565b600754620003219060ff1681565b620001c2620003723660046200a907565b62002d35565b6040805160808101825260078082526020820152600291810191909152600360608201819052620003ac9183919062003162565b6000620003b862003a04565b9050600060428054620003cb906200ac39565b80601f0160208091040260200160405190810160405280929190818152602001828054620003f9906200ac39565b80156200044a5780601f106200041e576101008083540402835291602001916200044a565b820191906000526020600020905b8154815290600101906020018083116200042c57829003601f168201915b505050505090506200045c8262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c906200048a9084906004016200ac70565b6020604051808303816000875af1158015620004aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d091906200ac85565b50620004dd828262003c8e565b816001600160a01b031663505377e26040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200051957600080fd5b505af11580156200052e573d6000803e3d6000fd5b505050506200053e828262003e67565b60405163ca4f2d9760e01b81526001600160a01b0383169063ca4f2d97906200056c9084906004016200ac70565b600060405180830381600087803b1580156200058757600080fd5b505af11580156200059c573d6000803e3d6000fd5b50505050620005ac828262003fee565b620005b7826200417b565b505050565b604051620005ca906200a623565b604051809103906000f080158015620005e7573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b816000815181106200064357620006436200acb5565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c60405162000675906200a631565b620006829291906200accb565b604051809103906000f0801580156200069f573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620006d1906200a63f565b604051809103906000f080158015620006ee573d6000803e3d6000fd5b509050604051620006ff906200a64c565b604051809103906000f0801580156200071c573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03929092169190911790556040516200074b906200a65a565b604051809103906000f08015801562000768573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200079d906200a668565b620007aa9291906200acf7565b604051809103906000f080158015620007c7573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620007fc906200a668565b620008099291906200acf7565b604051809103906000f08015801562000826573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200085b906200a668565b620008689291906200acf7565b604051809103906000f08015801562000885573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620008ba906200a668565b620008c79291906200acf7565b604051809103906000f080158015620008e4573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000919906200a668565b620009269291906200acf7565b604051809103906000f08015801562000943573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039283161790556025546020546040519183169216906407735940009062000981906200a676565b6001600160a01b0393841681529290911660208301526001600160401b03166040820152606001604051809103906000f080158015620009c5573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620009f3906200a684565b6001600160a01b039091168152602001604051809103906000f08015801562000a20573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f546022546020546040516000949384169392831692919091169062000a64906200a692565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000aa1573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b0393841693928316929091169062000ad3906200a6a0565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000b10573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b03928316929091169062000b3b906200a6ae565b62000b489291906200ad20565b604051809103906000f08015801562000b65573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b03958616959485169493841693928316929091169062000ba5906200a6bc565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000bf1573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b039091169062000c15906200a6ca565b6001600160a01b039091168152602001604051809103906000f08015801562000c42573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b9362000ca8939183169216908b8b8b606482016200ad6c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000cf19392916004016200adcb565b600060405180830381600087803b15801562000d0c57600080fd5b505af115801562000d21573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000db49391909216918c916004016200adcb565b600060405180830381600087803b15801562000dcf57600080fd5b505af115801562000de4573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000e709391909216918b916004016200adcb565b600060405180830381600087803b15801562000e8b57600080fd5b505af115801562000ea0573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000f36939116918a916004016200adcb565b600060405180830381600087803b15801562000f5157600080fd5b505af115801562000f66573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000ff293919092169189916004016200adcb565b600060405180830381600087803b1580156200100d57600080fd5b505af115801562001022573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200104391506200a6d8565b6001600160a01b039091168152602001604051809103906000f08015801562001070573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562001136576000620010ab8262003045565b9050600081604051602001620010c291906200ae02565b6040516020818303038152906040529050600082604051602001620010e891906200ae39565b60405160208183030381529060405290506200111d82827502ac3a4edbbfb8014e3ba83411e915e8000000000000306200422b565b50505080806200112d906200ae7c565b91505062001094565b5060405162001145906200a6e6565b604051809103906000f08015801562001162573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b158015620011c157600080fd5b505af1158015620011d6573d6000803e3d6000fd5b50506031546040518c93506001600160a01b039091169150620011f9906200a668565b620012069291906200acf7565b604051809103906000f08015801562001223573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062001258906200a668565b620012659291906200acf7565b604051809103906000f08015801562001282573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620012b7906200a668565b620012c49291906200acf7565b604051809103906000f080158015620012e1573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062001316906200a668565b620013239291906200acf7565b604051809103906000f08015801562001340573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062001375906200a668565b620013829291906200acf7565b604051809103906000f0801580156200139f573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b158015620013fb57600080fd5b505af115801562001410573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b0392831693509116906200143a906200a6f4565b620014479291906200ad20565b604051809103906000f08015801562001464573d6000803e3d6000fd5b506028546040519192506000916001600160a01b039091169062001488906200a702565b6001600160a01b039091168152602001604051809103906000f080158015620014b5573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620014d9906200a710565b6001600160a01b039091168152602001604051809103906000f08015801562001506573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b0393841693928316929091169062001538906200a71e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562001575573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81529293506001600160a01b03918216926399a88ec492620015b092169088906004016200ad20565b600060405180830381600087803b158015620015cb57600080fd5b505af1158015620015e0573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200161d929091169087906004016200ad20565b600060405180830381600087803b1580156200163857600080fd5b505af11580156200164d573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200168a929091169086906004016200ad20565b600060405180830381600087803b158015620016a557600080fd5b505af1158015620016ba573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0392831694506399a88ec49350620016f7929091169085906004016200ad20565b600060405180830381600087803b1580156200171257600080fd5b505af115801562001727573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b1580156200177557600080fd5b505af11580156200178a573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b0394851695509284169391821692911690620017c2906200a72c565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001807573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b969082169590821694908216939116918162001892565b6040805160608101825260008082526020808301829052928201528252600019909201910181620018645790505b5060408051600080825260208201818152828401909352909190620018c8565b6060815260200190600190039081620018b25790505b50604051602401620018e29897969594939291906200af7d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b90921682526200192b9392916004016200adcb565b600060405180830381600087803b1580156200194657600080fd5b505af11580156200195b573d6000803e3d6000fd5b505050506040516200196d906200a73a565b604051809103906000f0801580156200198a573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b620019c66200a748565b60408051600580825260c08201909252600091816020015b6060815260200190600190039081620019de57905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062001a275762001a276200acb5565b602002602001018190525060405180604001604052806003815260200162393ab760e91b8152508160018151811062001a645762001a646200acb5565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b8152508160028151811062001ab25762001ab26200acb5565b602002602001018190525062001ac88362003045565b8160038151811062001ade5762001ade6200acb5565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062001b195762001b196200acb5565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b609085906004016200abd3565b6000604051808303816000875af115801562001b80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001baa91908101906200b112565b90508080602001905181019062001bc291906200ac85565b83516001602002018181525050604051806040016040528060018152602001601960f91b8152508260048151811062001bff5762001bff6200acb5565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001c439085906004016200abd3565b6000604051808303816000875af115801562001c63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c8d91908101906200b112565b90508080602001905181019062001ca591906200ac85565b8351526040805180820190915260018152603360f81b602082015282518390600490811062001cd85762001cd86200acb5565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001d1c9085906004016200abd3565b6000604051808303816000875af115801562001d3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d6691908101906200b112565b90508080602001905181019062001d7e91906200ac85565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001dbe5762001dbe6200acb5565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001e029085906004016200abd3565b6000604051808303816000875af115801562001e22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e4c91908101906200b112565b90508080602001905181019062001e6491906200ac85565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001ecc57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001ead575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200201b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200200357838290600052602060002001805462001f6f906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462001f9d906200ac39565b801562001fee5780601f1062001fc25761010080835404028352916020019162001fee565b820191906000526020600020905b81548152906001019060200180831162001fd057829003601f168201915b50505050508152602001906001019062001f4d565b50505050815250508152602001906001019062001efa565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001ecc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001ead575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001ecc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001ead575050505050905090565b60408051608081018252600780825260208201526002918101919091526003606082018190526200211c9183919062003162565b60006200212862003a04565b90506000604280546200213b906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002169906200ac39565b8015620021ba5780601f106200218e57610100808354040283529160200191620021ba565b820191906000526020600020905b8154815290600101906020018083116200219c57829003601f168201915b50505050509050620021cc8262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c90620021fa9084906004016200ac70565b6020604051808303816000875af11580156200221a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200224091906200ac85565b506200224d828262003c8e565b6000806200225b8462004557565b604051630da66deb60e31b815291935091506001600160a01b03851690636d336f58906200229090859085906004016200b15f565b600060405180830381600087803b158015620022ab57600080fd5b505af1158015620022c0573d6000803e3d6000fd5b50505050620022d284848484620047c7565b60405163ca4f2d9760e01b81526001600160a01b0385169063ca4f2d9790620023009086906004016200ac70565b600060405180830381600087803b1580156200231b57600080fd5b505af115801562002330573d6000803e3d6000fd5b5050505062002340848462003fee565b6200234b846200417b565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200201b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200242357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023e45790505b5050505050815250508152602001906001019062002376565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200201b57838290600052602060002001805462002482906200ac39565b80601f0160208091040260200160405190810160405280929190818152602001828054620024b0906200ac39565b8015620025015780601f10620024d55761010080835404028352916020019162002501565b820191906000526020600020905b815481529060010190602001808311620024e357829003601f168201915b50505050508152602001906001019062002460565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200201b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620025e757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620025a85790505b505050505081525050815260200190600101906200253a565b6040805160808101825260078082526020820152600291810191909152600360608201819052620026349183919062003162565b60006200264062003a04565b905060006042805462002653906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002681906200ac39565b8015620026d25780601f10620026a657610100808354040283529160200191620026d2565b820191906000526020600020905b815481529060010190602001808311620026b457829003601f168201915b50505050509050620026e48262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c90620027129084906004016200ac70565b6020604051808303816000875af115801562002732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200275891906200ac85565b5062002765828262003c8e565b600080620027738462004557565b604051630da66deb60e31b815291935091506001600160a01b03851690636d336f5890620027a890859085906004016200b15f565b600060405180830381600087803b158015620027c357600080fd5b505af1158015620027d8573d6000803e3d6000fd5b50505050620027ea84848484620047c7565b6000620027f8858562004971565b9050846001600160a01b031663505377e26040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200283657600080fd5b505af11580156200284b573d6000803e3d6000fd5b505050506200285c85858362004b0e565b60405163ca4f2d9760e01b81526001600160a01b0386169063ca4f2d97906200288a9087906004016200ac70565b600060405180830381600087803b158015620028a557600080fd5b505af1158015620028ba573d6000803e3d6000fd5b50505050620028ca858562003fee565b620028d5856200417b565b505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200201b57838290600052602060002001805462002923906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002951906200ac39565b8015620029a25780601f106200297657610100808354040283529160200191620029a2565b820191906000526020600020905b8154815290600101906020018083116200298457829003601f168201915b50505050508152602001906001019062002901565b600754600090610100900460ff1615620029da5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002ae95760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002a6b917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200b188565b60408051601f198184030181529082905262002a87916200b1bb565b6000604051808303816000865af19150503d806000811462002ac6576040519150601f19603f3d011682016040523d82523d6000602084013e62002acb565b606091505b509150508080602001905181019062002ae591906200b1d9565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001ecc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001ead575050505050905090565b604080516080810182526007808252602082015260029181019190915260036060820181905262002b849183919062003162565b600062002b9062003a04565b905060006042805462002ba3906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002bd1906200ac39565b801562002c225780601f1062002bf65761010080835404028352916020019162002c22565b820191906000526020600020905b81548152906001019060200180831162002c0457829003601f168201915b5050505050905062002c348262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c9062002c629084906004016200ac70565b6020604051808303816000875af115801562002c82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ca891906200ac85565b5062002cb5828262003c8e565b600080836001600160a01b03166365eda8e56040518163ffffffff1660e01b81526004016000604051808303816000875af115801562002cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d2391908101906200b2ac565b91509150620022d28484848462004ca0565b604080516080810182526007808252602082015260029181019190915260036060820181905262002d699183919062003162565b600062002d7562003a04565b905060006042805462002d88906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002db6906200ac39565b801562002e075780601f1062002ddb5761010080835404028352916020019162002e07565b820191906000526020600020905b81548152906001019060200180831162002de957829003601f168201915b5050505050905062002e198262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c9062002e479084906004016200ac70565b6020604051808303816000875af115801562002e67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e8d91906200ac85565b5062002e9a828262003c8e565b600080836001600160a01b03166365eda8e56040518163ffffffff1660e01b81526004016000604051808303816000875af115801562002ede573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f0891908101906200b2ac565b9150915062002f1a8484848462004ca0565b836001600160a01b031663505377e26040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002f5657600080fd5b505af115801562002f6b573d6000803e3d6000fd5b505050506200234b848462004e45565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b604080518082019091526000808252602082015262002fc26200a771565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801562002ff75762002ff9565bfe5b50806200303d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b6060816200306a5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200309a578062003081816200ae7c565b9150620030929050600a836200b394565b91506200306e565b6000816001600160401b03811115620030b757620030b76200ac9f565b6040519080825280601f01601f191660200182016040528015620030e2576020820181803683370190505b5090505b84156200315a57620030fa6001836200b3ab565b915062003109600a866200b3c5565b620031169060306200b3dc565b60f81b8183815181106200312e576200312e6200acb5565b60200101906001600160f81b031916908160001a90535062003152600a866200b394565b9450620030e6565b949350505050565b60408051818152601f818301527f5f636f6e66696752616e643a207365742072616e646f6d207365656420746f00606082015262ffffff8516602082015290516000805160206203faec8339815191529181900360800190a16040516001600160e81b031960e885901b16602082015260230160408051601f198184030181529190528051602090910120603755620031fb8262005022565b805162003211916038916020909101906200a78f565b5080516200321f9062005022565b805162003235916039916020909101906200a78f565b5062003245816020015162005022565b80516200325b91603a916020909101906200a78f565b506200326b816040015162005022565b80516200328191603b916020909101906200a78f565b5062003291816060015162005022565b8051620032a791603c916020909101906200a78f565b50620032e160388054620032bb906200ac39565b9050600014156040518060600160405280603081526020016203f8606030913962005086565b6200331a60398054620032f4906200ac39565b9050600014156040518060600160405280603081526020016203fa036030913962005086565b62003353603a80546200332d906200ac39565b9050600014156040518060600160405280603381526020016203f5e26033913962005086565b6200338c603b805462003366906200ac39565b9050600014156040518060600160405280603281526020016203f5326032913962005086565b620033c5603c80546200339f906200ac39565b9050600014156040518060600160405280602f81526020016203f46f602f913962005086565b620033cf620050bf565b6040819055620033e59060019081901b6200b3ab565b604180546001600160c01b0319166001600160c01b039290921691821790556200340f90620051fe565b805162003425916042916020909101906200a78f565b506040805481518281526030928101929092527f5f636f6e66696752616e643a206e756d626572206f662071756f72756d73206260608301526f195a5b99c81a5b9a5d1a585b1a5e995960821b608083015260208201526000805160206203faec8339815191529060a00160405180910390a16040805160608101825260058152613a98602082015260969181019190915260005b60405481101562003737576000620034d1620052d9565b90506000620034df620054d6565b90506000805160206203faec833981519152836040516200353a91906040808252601c908201527f5f636f6e66696752616e643a206372656174696e672071756f72756d000000006060820152602081019190915260800190565b60405180910390a183516040516000805160206203faec8339815191529162003599916040808252601490820152730b4813585e081bdc195c985d1bdc8818dbdd5b9d60621b606082015263ffffffff91909116602082015260800190565b60405180910390a16000805160206203faec8339815191528251604051620035fb91906040808252601b908201527f2d204e756d207374726174656769657320636f6e7369646572656400000000006060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e2d204d696e696d756d207374616b6560881b60608201526001600160601b038316602082015290516000805160206203faec8339815191529181900360800190a1601c5460335460405163ca669fa760e01b81526001600160a01b03918216600482015291169063ca669fa790602401600060405180830381600087803b1580156200369c57600080fd5b505af1158015620036b1573d6000803e3d6000fd5b5050602854604051631aeb699160e31b81526001600160a01b03909116925063d75b4c889150620036eb908790859087906004016200b3f7565b600060405180830381600087803b1580156200370657600080fd5b505af11580156200371b573d6000803e3d6000fd5b50505050505080806200372e906200ae7c565b915050620034ba565b506000620037458262005514565b90506000805160206203f3f4833981519152620037628262003045565b6040516020016200377491906200b44d565b60408051601f198184030181529082905262003790916200ac70565b60405180910390a160005b81811015620038fa576000620037b062003a04565b60405163208c6d5360e21b81529091506001600160a01b03821690638231b54c90620037e2906042906004016200b4b4565b6020604051808303816000875af115801562003802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200382891906200ac85565b5060005b604280546200383b906200ac39565b9050811015620038e2576000604282815462003857906200ac39565b81106200386857620038686200acb5565b815460011615620038885790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60009081526044602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b0385161790555080620038d9816200ae7c565b9150506200382c565b50508080620038f1906200ae7c565b9150506200379b565b506000805160206203f3f483398151915260405162003942906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a16000805160206203f3f4833981519152604051620039a69060208082526024908201527f5f636f6e66696752616e6420636f6d706c6574653b207374617274696e6720746040820152636573742160e01b606082015260800190565b60405180910390a16000805160206203f3f4833981519152604051620039f5906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a15050505050565b60008062003a1460435462003045565b60405160200162003a2691906200b564565b60408051601f1981840301815291905260438054919250600062003a4a836200ae7c565b9190505550600080600062003a5f84620055e6565b925092509250826001600160a01b0316632a34ade86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003aa157600080fd5b505af115801562003ab6573d6000803e3d6000fd5b5050604051630da66deb60e31b81526001600160a01b0386169250636d336f58915062003aea90859085906004016200b15f565b600060405180830381600087803b15801562003b0557600080fd5b505af115801562003b1a573d6000803e3d6000fd5b5050601d546040516336b87bd760e11b81526001600160a01b03878116600483015262003bb494509091169150636d70f7ae90602401602060405180830381865afa15801562003b6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b9491906200b1d9565b6040518060600160405280603181526020016203f9aa6031913962005086565b50909392505050565b62003bf76040518060400160405280601681526020017518da1958dad7d3995d995c97d49959da5cdd195c995960521b8152508262005782565b62003c1c816040518060600160405280603981526020016203f7516039913962005837565b62003c41816040518060600160405280602a81526020016203f37e602a91396200587e565b62003c66816040518060600160405280602881526020016203f49e6028913962005984565b62003c8b816040518060600160405280602c81526020016203fc7b602c913962005a9a565b50565b62003cc660405180604001604052806014815260200173636865636b5f52656769737465725f537461746560601b8152508362005782565b62003ceb826040518060600160405280602381526020016203f5bf6023913962005b38565b62003d10826040518060600160405280602881526020016203fc2f6028913962005c25565b62003d3682826040518060600160405280602e81526020016203fbc3602e913962005cb5565b62003d5c82826040518060600160405280602981526020016203fb6f6029913962005dd7565b62003d81826040518060600160405280602881526020016203f9db6028913962005e98565b62003da782826040518060600160405280603981526020016203f8e860399139620060c1565b62003dcd82826040518060600160405280603e81526020016203fbf1603e913962006201565b62003df382826040518060800160405280604881526020016203f78a60489139620063c9565b62003e18816040518060600160405280603a81526020016203f4f8603a9139620063e7565b62003e3e82826040518060600160405280602881526020016203f67d6028913962006486565b62003e63826040518060600160405280602481526020016203fc576024913962006572565b5050565b62003ea86040518060400160405280601a81526020017f636865636b5f4e6f4368616e67655570646174655f53746174650000000000008152508362005782565b62003ecd826040518060600160405280602581526020016203f80c6025913962006600565b62003ef2826040518060600160405280602f81526020016203f831602f91396200666d565b62003f17816040518060600160405280602381526020016203fac96023913962006713565b62003f3d82826040518060600160405280602381526020016203fa8460239139620067ed565b62003f6382826040518060600160405280602281526020016203faa76022913962006886565b62003fa4816040518060400160405280601f81526020017f746f74616c207374616b652073686f756c6420626520756e6368616e67656400815250620068e1565b62003fc9816040518060600160405280603881526020016203f719603891396200693a565b62003e63816040518060600160405280603181526020016203f64c60319139620069cb565b6200402860405180604001604052806016815260200175636865636b5f446572656769737465725f537461746560501b8152508362005782565b6200404d826040518060600160405280602981526020016203f9616029913962005b38565b6200407382826040518060600160405280603281526020016203f4146032913962006a50565b6200409982826040518060600160405280602c81526020016203fa58602c913962006ba0565b620040be826040518060600160405280602e81526020016203f890602e913962005e98565b620040e482826040518060600160405280604081526020016203f9216040913962006c67565b6200410a82826040518060600160405280603381526020016203f34b6033913962006d74565b6200413082826040518060800160405280604181526020016203fb2e6041913962006eb9565b62004155816040518060600160405280603a81526020016203f7d2603a913962006f89565b62003e6382826040518060600160405280602981526020016203f446602991396200701b565b620041bc6040518060400160405280601e81526020017f636865636b5f436f6d706c657465446572656769737465725f537461746500008152508262005782565b620041e1816040518060600160405280602b81526020016203fb98602b91396200587e565b62004206816040518060600160405280602981526020016203f9616029913962005b38565b62003c66816040518060600160405280602a81526020016203f8be602a9139620070e3565b6000848484846040516200423f906200a81a565b6200424e94939291906200b596565b604051809103906000f0801580156200426b573d6000803e3d6000fd5b506027546031546021546040519394506000936001600160a01b03938416939283169263485cc95560e01b92620042ab928892909116906024016200ad20565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620042ea906200a668565b620042f8939291906200adcb565b604051809103906000f08015801562004315573d6000803e3d6000fd5b506040805160018082528183019092529192506000919060208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905082826000815181106200437657620043766200acb5565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa158015620043dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200440291906200b5e1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200444457600080fd5b505af115801562004459573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b354791506200449190859085906004016200b601565b600060405180830381600087803b158015620044ac57600080fd5b505af1158015620044c1573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b6060806000602f805490506001600160401b038111156200457c576200457c6200ac9f565b604051908082528060200260200182016040528015620045a6578160200160208202803683370190505b50602f549091506000906001600160401b03811115620045ca57620045ca6200ac9f565b604051908082528060200260200182016040528015620045f4578160200160208202803683370190505b5090506000805160206203f59f833981519152856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562004646573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200467091908101906200b112565b6040516200467f91906200b65e565b60405180910390a160005b602f54811015620047bc576000602f8281548110620046ad57620046ad6200acb5565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa15801562004700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200472691906200b5e1565b905060006200473c620f4240624c4b4062007163565b90506200474b828a8362007225565b828685815181106200476157620047616200acb5565b60200260200101906001600160a01b031690816001600160a01b031681525050808585815181106200479757620047976200acb5565b6020026020010181815250505050508080620047b3906200ae7c565b9150506200468a565b509094909350915050565b620047fe60405180604001604052806013815260200172636865636b5f4465706f7369745f537461746560681b8152508562005782565b62004823846040518060600160405280602581526020016203f80c6025913962006600565b62004848846040518060600160405280602f81526020016203f831602f91396200666d565b6200486d836040518060600160405280602381526020016203fac96023913962006713565b6200489384846040518060600160405280603781526020016203f6156037913962007234565b620048b984846040518060600160405280602281526020016203faa76022913962006886565b620048fa836040518060400160405280601f81526020017f746f74616c207374616b652073686f756c6420626520756e6368616e67656400815250620068e1565b6200491f836040518060600160405280602781526020016203f3cd602791396200693a565b62004944836040518060600160405280602581526020016203f3a860259139620069cb565b6200496b8483836040518060600160405280602581526020016203fa3360259139620072cf565b50505050565b606060006200498184846200737f565b90506000620049918585620074c1565b9050600084516001600160401b03811115620049b157620049b16200ac9f565b604051908082528060200260200182016040528015620049db578160200160208202803683370190505b50905060005b855181101562004b0257600084828151811062004a025762004a026200acb5565b60200260200101519050600084838151811062004a235762004a236200acb5565b60200260200101519050806001600160601b0316826001600160601b0316101562004aa95760405162461bcd60e51b815260206004820152602f60248201527f5f67657441646465645765696768743a20657870656374656420706f7369746960448201526e7665207765696768742064656c746160881b606482015260840162003034565b62004ab581836200b6b2565b84848151811062004aca5762004aca6200acb5565b60200260200101906001600160601b031690816001600160601b0316815250505050808062004af9906200ae7c565b915050620049e1565b50925050505b92915050565b62004b4f6040518060400160405280601981526020017f636865636b5f4465706f7369745570646174655f5374617465000000000000008152508462005782565b62004b74836040518060600160405280602581526020016203f80c6025913962006600565b62004b99836040518060600160405280602f81526020016203f831602f91396200666d565b62004bbe826040518060600160405280602381526020016203fac96023913962006713565b62004be483836040518060600160405280603e81526020016203fbf1603e913962006201565b62004c0a83836040518060600160405280603d81526020016203f6dc603d9139620067ed565b62004c318383836040518060600160405280603b81526020016203f564603b9139620075b7565b62004c56826040518060600160405280603881526020016203f719603891396200693a565b62004c7b826040518060600160405280603181526020016203f64c60319139620069cb565b620005b7836040518060600160405280602481526020016203fc576024913962006572565b62004cd860405180604001604052806014815260200173636865636b5f57697468647261775f537461746560601b8152508562005782565b62004cfd846040518060600160405280602581526020016203f80c6025913962006600565b62004d22846040518060600160405280602f81526020016203f831602f91396200666d565b62004d47836040518060600160405280602381526020016203fac96023913962006713565b62004d6d84846040518060600160405280603781526020016203f6a560379139620076fe565b62004d9384846040518060600160405280602281526020016203faa76022913962006886565b62004dd4836040518060400160405280601f81526020017f746f74616c207374616b652073686f756c6420626520756e6368616e67656400815250620068e1565b62004df9836040518060600160405280602781526020016203f3cd602791396200693a565b62004e1e836040518060600160405280602581526020016203f3a860259139620069cb565b6200496b8483836040518060600160405280602281526020016203fb0c6022913962007799565b62004e866040518060400160405280601a81526020017f636865636b5f57697468647261775570646174655f53746174650000000000008152508362005782565b62004eab826040518060600160405280602981526020016203f9616029913962005b38565b62004ed0826040518060600160405280602b81526020016203fb98602b91396200587e565b62004ef5826040518060600160405280602a81526020016203f8be602a9139620070e3565b62004f1b82826040518060600160405280602c81526020016203fa58602c913962006ba0565b62004f40826040518060600160405280602e81526020016203f890602e913962005e98565b62004f6682826040518060600160405280604081526020016203f9216040913962006c67565b62004f8c82826040518060600160405280603381526020016203f34b6033913962006d74565b62004fb282826040518060800160405280604181526020016203fb2e6041913962006eb9565b62004fd7816040518060600160405280603a81526020016203f7d2603a913962006f89565b62004ffd82826040518060600160405280602981526020016203f446602991396200701b565b62003e63826040518060600160405280602c81526020016203fc7b602c913962005a9a565b606060005b61010081101562005080576001811b838116156200506c576040516200505a9084906001851b60f81b906020016200b6dd565b60405160208183030381529060405292505b5062005078816200ae7c565b905062005027565b50919050565b8162003e63576000805160206203f59f83398151915281604051620050ac91906200b70e565b60405180910390a162003e638262007825565b6000806200515f60398054620050d5906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462005103906200ac39565b8015620051545780601f10620051285761010080835404028352916020019162005154565b820191906000526020600020905b8154815290600101906020018083116200513657829003601f168201915b50505050506200788c565b905060018114156200517357600191505090565b60028114156200518557600291505090565b6004811415620051a3576200519d6003600a62007163565b91505090565b60405162461bcd60e51b815260206004820152602560248201527f5f72616e6451756f72756d436f756e743a20666c6167206e6f74207265636f676044820152641b9a5e995960da1b606482015260840162003034565b5090565b60606000806200520e84620078f5565b61ffff166001600160401b038111156200522c576200522c6200ac9f565b6040519080825280601f01601f19166020018201604052801562005257576020820181803683370190505b5090506000805b82518210801562005270575061010081105b15620052cf576001811b935085841615620052bc578060f81b8383815181106200529e576200529e6200acb5565b60200101906001600160f81b031916908160001a9053508160010191505b620052c7816200ae7c565b90506200525e565b5090949350505050565b60606000620052f0603a8054620050d5906200ac39565b9050600060018214156200530757506001620053dd565b60028214156200531a57506002620053dd565b60048214156200534b57602f5462005343906003906200533d906001906200b3ab565b62007163565b9050620053dd565b60088214156200535e5750600f620053dd565b60108214156200537157506014620053dd565b60208214156200538457506019620053dd565b60405162461bcd60e51b815260206004820152602760248201527f5f72616e645374726174656779436f756e743a20666c6167206e6f74207265636044820152661bd9db9a5e995960ca1b606482015260840162003034565b6000816001600160401b03811115620053fa57620053fa6200ac9f565b6040519080825280602002602001820160405280156200544157816020015b6040805180820190915260008082526020820152815260200190600190039081620054195790505b50905060005b8151811015620054ce576040518060400160405280602f83815481106200547257620054726200acb5565b600091825260209182902001546001600160a01b03168252670de0b6b3a76400009101528251839083908110620054ad57620054ad6200acb5565b60200260200101819052508080620054c5906200ae7c565b91505062005447565b509392505050565b600080620054ec603b8054620050d5906200ac39565b905060018114156200550057600091505090565b6002811415620051a357620f424091505090565b6000806200552a603c8054620050d5906200ac39565b905060018114156200553f5750600092915050565b600281141562005574576200556d60018085600001516200556191906200b73f565b63ffffffff1662007163565b9392505050565b60048114156200558a5750505163ffffffff1690565b60405162461bcd60e51b815260206004820152602a60248201527f5f72616e64496e697469616c4f70657261746f72733a20666c6167206e6f74206044820152691c9958dbd9db9a5e995960b21b606482015260840162003034565b6000606080600080620055f862007926565b915091506000806200561260388054620050d5906200ac39565b9050600181141562005663578784846040516200562f906200a828565b6200563d939291906200b75f565b604051809103906000f0801580156200565a573d6000803e3d6000fd5b509150620056d1565b6002811415620056d157876040516020016200568091906200b7bf565b6040516020818303038152906040529750878484604051620056a2906200a836565b620056b0939291906200b75f565b604051809103906000f080158015620056cd573d6000803e3d6000fd5b5091505b6000805160206203f59f833981519152826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005720573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200574a91908101906200b112565b6040516200575991906200b7e9565b60405180910390a16000806200576f8462004557565b949b909a50939850929650505050505050565b6000805160206203f3f483398151915282826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015620057d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620057fc91908101906200b112565b6040516020016200580f9291906200b832565b60408051601f19818403018152908290526200582b916200ac70565b60405180910390a15050565b6000620058448362007af7565b8051909150620058579060008462007b7b565b620005b76000826020015160028111156200587657620058766200b88e565b148362005086565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049846001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620058e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200590991906200ac85565b6040518263ffffffff1660e01b81526004016200592891815260200190565b602060405180830381865afa15801562005946573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200596c91906200b8a4565b9050620005b76001600160c01b038216158362005086565b602a5460405162a1f4cb60e01b81526001600160a01b038481166004830152600092839291169062a1f4cb906024016040805180830381865afa158015620059d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059f691906200b8cf565b602a54604051630378a7eb60e61b81526001600160a01b038881166004830152939550919350600092169063de29fac090602401602060405180830381865afa15801562005a48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a6e91906200ac85565b905062005a7e8360008662007bb7565b62005a8c8260008662007bb7565b6200234b8160008662007b7b565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da39262005ad6929091169087906004016200ad20565b602060405180830381865afa15801562005af4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b1a91906200b8f4565b9050620005b760005b8260018111156200587657620058766200b88e565b6000826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005b79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b9f91906200ac85565b6028546040516309aa152760e11b81526001600160a01b038681166004830152929350600092909116906313542a4e90602401602060405180830381865afa15801562005bf0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c1691906200ac85565b90506200496b82828562007b7b565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562005c71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c9791906200b927565b9050620005b760015b8260028111156200587657620058766200b88e565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005d1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d4091906200ac85565b6040518263ffffffff1660e01b815260040162005d5f91815260200190565b602060405180830381865afa15801562005d7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005da391906200b8a4565b9050600062005db28462007bf3565b90506200234b62005dd06001600160c01b0380841690851681161490565b8462005086565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005e18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005e3e91906200ac85565b9050600062005e4d8462007bf3565b9050600062005e5c8362007d86565b9050600062005e6b8462007df7565b905062005e8f6001600160c01b0382168417836001600160c01b0316148662005086565b50505050505050565b6000826001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562005ed8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005efe91906200b945565b602a5460405162a1f4cb60e01b81526001600160a01b0386811660048301529293506000928392169062a1f4cb906024016040805180830381865afa15801562005f4c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f7291906200b8cf565b8451600090815260208087015190526040812092945090925090602a54604051630378a7eb60e61b81526001600160a01b0389811660048301529293506000929091169063de29fac090602401602060405180830381865afa15801562005fdd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200600391906200ac85565b602a5460405163745dcd7360e11b8152600481018590529192506000916001600160a01b039091169063e8bb9ae690602401602060405180830381865afa15801562006053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200607991906200b5e1565b90506200608c8660000151868962007bb7565b6200609d8660200151858962007bb7565b620060aa83838962007b7b565b620060b788828962007eea565b5050505050505050565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006101573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200612791906200b945565b90506000620061368462007f38565b90506000620061458562008082565b905060005b855181101562005e8f57600062006187858484815181106200617057620061706200acb5565b60200260200101516200810f90919063ffffffff16565b9050620061ba8160000151858481518110620061a757620061a76200acb5565b6020026020010151600001518862007bb7565b620061eb8160200151858481518110620061d857620061d86200acb5565b6020026020010151602001518862007bb7565b5080620061f8816200ae7c565b9150506200614a565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006242573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200626891906200ac85565b905060005b83518110156200234b5760008482815181106200628e576200628e6200acb5565b0160200151602b5460405163c46778a560e01b815260f89290921c6004830181905292506000916001600160a01b039091169063c46778a590602401602060405180830381865afa158015620062e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200630e91906200b97a565b602b54604051635401ed2760e01b81526004810187905260ff851660248201529192506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562006367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200638d91906200b97a565b9050620063b0826001600160601b0316826001600160601b031610158762005086565b5050508080620063c0906200ae7c565b9150506200626d565b6000620063d784846200737f565b90506200496b84848385620075b7565b6000620063f483620081a8565b905060006200640384620082d8565b905060005b84518110156200234b57620064718382815181106200642b576200642b6200acb5565b602002602001015163ffffffff168383815181106200644e576200644e6200acb5565b602002602001015160016200646491906200b9a5565b63ffffffff168662007bb7565b806200647d816200ae7c565b91505062006408565b6000620064938362008365565b90506000620064a284620084a7565b905060005b8451811015620028d55762006506838281518110620064ca57620064ca6200acb5565b602002602001015151838381518110620064e857620064e86200acb5565b6020026020010151516001620064ff91906200b3dc565b8662007bb7565b62006539620065328483815181106200652357620065236200acb5565b60200260200101518862008534565b8562005086565b6200655d620065568383815181106200652357620065236200acb5565b85620085fc565b8062006569816200ae7c565b915050620064a7565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da392620065ae929091169087906004016200ad20565b602060405180830381865afa158015620065cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065f291906200b8f4565b9050620005b7600162005b23565b60006200660d8362007af7565b905060006200661c8462008609565b805183519192506200662f918562007b7b565b6200496b826020015160028111156200664c576200664c6200b88e565b826020015160028111156200666557620066656200b88e565b148462005086565b6000826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620066ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066d491906200ac85565b90506000620066e38262007d86565b90506000620066f28362007df7565b90506200234b826001600160c01b0316826001600160c01b03168662007bb7565b6000620067208362007f38565b905060006200672f8462008082565b905060005b84518110156200234b576200678b8382815181106200675757620067576200acb5565b6020026020010151600001518383815181106200677857620067786200acb5565b6020026020010151600001518662007bb7565b620067d8838281518110620067a457620067a46200acb5565b602002602001015160200151838381518110620067c557620067c56200acb5565b6020026020010151602001518662007bb7565b80620067e4816200ae7c565b91505062006734565b6000620067fb84846200737f565b905060006200680b8585620074c1565b905060005b8451811015620028d557620068718382815181106200683357620068336200acb5565b60200260200101516001600160601b03168383815181106200685957620068596200acb5565b60200260200101516001600160601b03168662007bb7565b806200687d816200ae7c565b91505062006810565b60006200689484846200869c565b90506000620068a4858562008848565b905060005b8451811015620028d557620068cc8382815181106200683357620068336200acb5565b80620068d8816200ae7c565b915050620068a9565b6000620068ee83620088d6565b90506000620068fd8462008a09565b905060005b84518110156200234b57620069258382815181106200683357620068336200acb5565b8062006931816200ae7c565b91505062006902565b60006200694783620081a8565b905060006200695684620082d8565b905060005b84518110156200234b57620069b68382815181106200697e576200697e6200acb5565b602002602001015163ffffffff16838381518110620069a157620069a16200acb5565b602002602001015163ffffffff168662007bb7565b80620069c2816200ae7c565b9150506200695b565b6000620069d88362008365565b90506000620069e784620084a7565b9050600082604051602001620069fe91906200b9d0565b60405160208183030381529060405280519060200120905060008260405160200162006a2b91906200b9d0565b604051602081830303815290604052805190602001209050620028d582828762007b7b565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006ab5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006adb91906200ac85565b6040518263ffffffff1660e01b815260040162006afa91815260200190565b602060405180830381865afa15801562006b18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b3e91906200b8a4565b905060005b83518110156200234b57600084828151811062006b645762006b646200acb5565b60209101015160f81c905062006b8a60016001600160c01b038516831c81161462006556565b508062006b97816200ae7c565b91505062006b43565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006be1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c0791906200ac85565b9050600062006c168462007bf3565b9050600062006c258362007d86565b9050600062006c348462007df7565b905062006c508382166001600160c01b031684145b8662005086565b62005e8f8284166001600160c01b03161562006c49565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006ca7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ccd91906200b945565b9050600062006cdc8462007f38565b9050600062006ceb8562008082565b905060005b855181101562005e8f57600062006d2062006d0b8662008a96565b8484815181106200617057620061706200acb5565b905062006d408160000151858481518110620061a757620061a76200acb5565b62006d5e8160200151858481518110620061d857620061d86200acb5565b508062006d6b816200ae7c565b91505062006cf0565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006db5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ddb91906200ac85565b905060005b83518110156200234b57600084828151811062006e015762006e016200acb5565b0160200151602b54604051635401ed2760e01b81526004810186905260f89290921c6024830181905292506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562006e62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e8891906200b97a565b905062006ea1816001600160601b031660008762007bb7565b5050808062006eb0906200ae7c565b91505062006de0565b600062006ec7848462008848565b9050600062006ed684620088d6565b9050600062006ee58562008a09565b905060005b855181101562005e8f5762006f7483828151811062006f0d5762006f0d6200acb5565b60200260200101516001600160601b031685838151811062006f335762006f336200acb5565b602002602001015184848151811062006f505762006f506200acb5565b602002602001015162006f6491906200b6b2565b6001600160601b03168762007bb7565b8062006f80816200ae7c565b91505062006eea565b600062006f9683620081a8565b9050600062006fa584620082d8565b905060005b84518110156200234b576200700683828151811062006fcd5762006fcd6200acb5565b602002602001015163ffffffff16600184848151811062006ff25762006ff26200acb5565b60200260200101516200646491906200b73f565b8062007012816200ae7c565b91505062006faa565b6000620070288362008365565b905060006200703784620084a7565b905060005b8451811015620028d557620070948382815181106200705f576200705f6200acb5565b60200260200101515160018484815181106200707f576200707f6200acb5565b602002602001015151620064ff91906200b3ab565b620070b1620065568483815181106200652357620065236200acb5565b620070ce620065328383815181106200652357620065236200acb5565b80620070da816200ae7c565b9150506200703c565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa1580156200712f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200715591906200b927565b9050620005b7600262005ca0565b6000806200717284846200b3ab565b6200717f9060016200b3dc565b90506000815b8015620071a4578162007198816200ae7c565b92505060011c62007185565b6000620071b5600180851b6200b3ab565b60375490915081165b848110620071dc5781620071d386836200b3ab565b169050620071be565b603754604051602001620071f291815260200190565b60408051601f1981840301815291905280516020909101206037556200721981896200b3dc565b98975050505050505050565b620005b7838383600062008b56565b60006200724284846200737f565b90506000620072528585620074c1565b905060005b8451811015620028d557620072ba8282815181106200727a576200727a6200acb5565b60200260200101516001600160601b0316848381518110620072a057620072a06200acb5565b60200260200101516001600160601b031610158562005086565b80620072c6816200ae7c565b91505062007257565b6000620072dd858562008d51565b90506000620072ed868662008e79565b905060005b855181101562005e8f576200736a8582815181106200731557620073156200acb5565b60200260200101518383815181106200733257620073326200acb5565b60200260200101516200734691906200b3dc565b8483815181106200735b576200735b6200acb5565b60200260200101518662007bb7565b8062007376816200ae7c565b915050620072f2565b6060600082516001600160401b038111156200739f576200739f6200ac9f565b604051908082528060200260200182016040528015620073c9578160200160208202803683370190505b50905060005b8351811015620054ce57602b5484516001600160a01b0390911690631f9b74e0908690849081106200740557620074056200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526001600160a01b0388166024820152604401602060405180830381865afa15801562007459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200747f91906200b97a565b8282815181106200749457620074946200acb5565b6001600160601b039092166020928302919091019091015280620074b8816200ae7c565b915050620073cf565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200751b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200754191906200ac85565b90506200754f84846200737f565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b1580156200759757600080fd5b505af1158015620075ac573d6000803e3d6000fd5b505050505092915050565b6000620075c585856200869c565b90506000620075d5868662008848565b90506000620075e486620088d6565b90506000620075f38762008a09565b905060005b8751811015620076f357620076828582815181106200761b576200761b6200acb5565b60200260200101516001600160601b03168883815181106200764157620076416200acb5565b60200260200101518684815181106200765e576200765e6200acb5565b60200260200101516200767291906200ba5e565b6001600160601b03168862007bb7565b620076de8382815181106200769b576200769b6200acb5565b60200260200101516001600160601b0316888381518110620076c157620076c16200acb5565b60200260200101518484815181106200765e576200765e6200acb5565b80620076ea816200ae7c565b915050620075f8565b505050505050505050565b60006200770c84846200737f565b905060006200771c8585620074c1565b905060005b8451811015620028d557620077848282815181106200774457620077446200acb5565b60200260200101516001600160601b03168483815181106200776a576200776a6200acb5565b60200260200101516001600160601b031611158562005086565b8062007790816200ae7c565b91505062007721565b6000620077a7858562008d51565b90506000620077b7868662008e79565b905060005b855181101562005e8f5762007810858281518110620077df57620077df6200acb5565b6020026020010151838381518110620077fc57620077fc6200acb5565b60200260200101516200734691906200b3ab565b806200781c816200ae7c565b915050620077bc565b8062003c8b576000805160206203f3f48339815191526040516200787a9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003c8b62008f07565b6000620078b760008351116040518060600160405280603281526020016203f4c66032913962005086565b6000620078cf6000600185516200533d91906200b3ab565b9050828181518110620078e657620078e66200acb5565b016020015160f81c9392505050565b6000805b821562004b08576200790d6001846200b3ab565b90921691806200791d816200ba83565b915050620078f9565b6000620079326200a844565b603e54603d541415620079c65760405162461bcd60e51b815260206004820152604f60248201527f5f66657463684b6579706169723a206e6f7420656e6f7567682067656e65726160448201527f746564206b6579732e20436865636b20496e746567726174696f6e4465706c6f60648201526e3cb2b91731b7b739ba393ab1ba37b960891b608482015260a40162003034565b6000603e603d5481548110620079e057620079e06200acb5565b906000526020600020015490506000603f603d548154811062007a075762007a076200acb5565b60009182526020918290206040805160a0810182526008939093029091018054606084019081526001820154608080860191909152908452825180840184526002808401548252600384015482880152958501528251908101808452939491938584019391926004860192849290830191849182845b81548152602001906001019080831162007a7d57505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831162007ab45750505091909252505050905250603d8054919250600062007ae9836200ae7c565b909155509194909350915050565b6040805180820190915260008082526020820152602854604051631619718360e21b81526001600160a01b03848116600483015290911690635865c60c906024016040805180830381865afa15801562007b55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b0891906200baa8565b818314620005b7576000805160206203f59f8339815191528160405162007ba391906200b70e565b60405180910390a1620005b7838362009015565b818314620005b7576000805160206203f59f8339815191528160405162007bdf91906200b70e565b60405180910390a1620005b78383620090fe565b60006101008251111562007c7e5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40162003034565b815162007c8d57506000919050565b6000808360008151811062007ca65762007ca66200acb5565b0160200151600160f89190911c81901b92505b845181101562003bb45784818151811062007cd85762007cd86200acb5565b0160200151600160f89190911c1b915082821162007d6f5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40162003034565b9181179162007d7e816200ae7c565b905062007cb9565b60285460405163871ef04960e01b8152600481018390526000916001600160a01b03169063871ef04990602401602060405180830381865afa15801562007dd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b0891906200b8a4565b600080602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562007e50573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e7691906200ac85565b905062007e838362007d86565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b15801562007ecb57600080fd5b505af115801562007ee0573d6000803e3d6000fd5b5050505050919050565b816001600160a01b0316836001600160a01b031614620005b7576000805160206203f59f8339815191528160405162007f2491906200b70e565b60405180910390a1620005b78383620091b0565b6060600082516001600160401b0381111562007f585762007f586200ac9f565b60405190808252806020026020018201604052801562007f9f57816020015b604080518082019091526000808252602082015281526020019060019003908162007f775790505b50905060005b83518110156200807b57602a5484516001600160a01b0390911690635f61a8849086908490811062007fdb5762007fdb6200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526024016040805180830381865afa1580156200801f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200804591906200b945565b8282815181106200805a576200805a6200acb5565b6020026020010181905250808062008072906200ae7c565b91505062007fa5565b5092915050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620080dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200810291906200ac85565b905062007e838362007f38565b60408051808201909152600080825260208201526200812d6200a894565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801562002ff75750806200303d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640162003034565b6060600082516001600160401b03811115620081c857620081c86200ac9f565b604051908082528060200260200182016040528015620081f2578160200160208202803683370190505b50905060005b83518110156200807b57602c5484516001600160a01b039091169063f3410922908690849081106200822e576200822e6200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562008273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200829991906200bae3565b828281518110620082ae57620082ae6200acb5565b63ffffffff9092166020928302919091019091015280620082cf816200ae7c565b915050620081f8565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200835891906200ac85565b905062007e8383620081a8565b6060600082516001600160401b038111156200838557620083856200ac9f565b604051908082528060200260200182016040528015620083ba57816020015b6060815260200190600190039081620083a45790505b50905060005b83518110156200807b57602c5484516001600160a01b0390911690638902624590869084908110620083f657620083f66200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201524363ffffffff166024820152604401600060405180830381865afa15801562008447573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200847191908101906200bb0b565b8282815181106200848657620084866200acb5565b602002602001018190525080806200849e906200ae7c565b915050620083c0565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200852791906200ac85565b905062007e838362008365565b600080826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008576573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200859c91906200ac85565b905060005b8451811015620085f15781858281518110620085c157620085c16200acb5565b60200260200101511415620085dc5760019250505062004b08565b80620085e8816200ae7c565b915050620085a1565b506000949350505050565b62003e6382158262005086565b6040805180820190915260008082526020820152602e5460408051632fe1ee0d60e21b815290516000926001600160a01b03169163bf87b834916004808301926020929190829003018187875af115801562008669573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200868f91906200ac85565b905062007e838362007af7565b60606000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620086df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200870591906200ac85565b9050600083516001600160401b038111156200872557620087256200ac9f565b6040519080825280602002602001820160405280156200874f578160200160208202803683370190505b50905060005b84518110156200883f57602b5485516001600160a01b0390911690635401ed279085908890859081106200878d576200878d6200acb5565b01602001516040516001600160e01b031960e085901b168152600481019290925260f81c6024820152604401602060405180830381865afa158015620087d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620087fd91906200b97a565b8282815181106200881257620088126200acb5565b6001600160601b03909216602092830291909101909101528062008836816200ae7c565b91505062008755565b50949350505050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620088a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620088c891906200ac85565b90506200754f84846200869c565b6060600082516001600160401b03811115620088f657620088f66200ac9f565b60405190808252806020026020018201604052801562008920578160200160208202803683370190505b50905060005b83518110156200807b57602b5484516001600160a01b039091169063d5eccc05908690849081106200895c576200895c6200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015620089a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620089c791906200b97a565b828281518110620089dc57620089dc6200acb5565b6001600160601b03909216602092830291909101909101528062008a00816200ae7c565b91505062008926565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008a63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008a8991906200ac85565b905062007e8383620088d6565b6040805180820190915260008082526020820152815115801562008abc57506020820151155b1562008adb575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015162008b2291906200b3c5565b62008b4e907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476200b3ab565b905292915050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009287169162008bac916200b1bb565b600060405180830381855afa9150503d806000811462008be9576040519150601f19603f3d011682016040523d82523d6000602084013e62008bee565b606091505b5091505060008180602001905181019062008c0a91906200ac85565b905062008c448462008c3d8762008c366370a0823160e01b62008c2f600c8d62009299565b90620092bf565b90620092dd565b9062009306565b8215620028d55760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162008c8f91906200b1bb565b600060405180830381855afa9150503d806000811462008ccc576040519150601f19603f3d011682016040523d82523d6000602084013e62008cd1565b606091505b5091505060008180602001905181019062008ced91906200ac85565b90508286101562008d185762008d0486846200b3ab565b62008d1090826200b3ab565b905062008d33565b62008d2483876200b3ab565b62008d3090826200b3dc565b90505b620060b78162008c3d6318160ddd60e01b62008c2f600c8d62009299565b6060600082516001600160401b0381111562008d715762008d716200ac9f565b60405190808252806020026020018201604052801562008d9b578160200160208202803683370190505b50905060005b8351811015620054ce57601d5484516001600160a01b039091169063778e55f390879087908590811062008dd95762008dd96200acb5565b60200260200101516040518363ffffffff1660e01b815260040162008e009291906200ad20565b602060405180830381865afa15801562008e1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e4491906200ac85565b82828151811062008e595762008e596200acb5565b60209081029190910101528062008e70816200ae7c565b91505062008da1565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008ed3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008ef991906200ac85565b90506200754f848462008d51565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200900457604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49062008f7f9083906519985a5b195960d21b906001906020016200bb43565b60408051601f198184030181529082905262008f9f92916020016200b188565b60408051601f198184030181529082905262008fbb916200b1bb565b6000604051808303816000865af19150503d806000811462008ffa576040519150601f19603f3d011682016040523d82523d6000602084013e62008fff565b606091505b505050505b6007805461ff001916610100179055565b80821462003e63576000805160206203f3f48339815191526040516200907a9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974604082015264657333325d60d81b606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620090b391906200bb64565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620090ec91906200bb9d565b60405180910390a162003e6362008f07565b80821462003e63576000805160206203f3f4833981519152604051620091609060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a16000805160206203faec833981519152826040516200918891906200bb64565b60405180910390a16000805160206203faec83398151915281604051620090ec91906200bb9d565b806001600160a01b0316826001600160a01b03161462003e63576000805160206203f3f4833981519152604051620092279060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200926091906200bbc8565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620090ec91906200bc0d565b6005820180546001600160a01b0319166001600160a01b0383161790556000826200556d565b60038201805463ffffffff191660e083901c1790556000826200556d565b6002820180546001810182556000918252602082206001600160a01b038416910155826200556d565b62003e638282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200937f57602002820191906000526020600020905b8154815260200190600101908083116200936a575b50505050509050600083620093948362009684565b604051602001620093a79291906200b188565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620093fb9186918891016200bc38565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200943657620094348762009730565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620094779187918991016200bc38565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620094be91906200b1bb565b600060405180830381855afa9150503d8060008114620094fb576040519150601f19603f3d011682016040523d82523d6000602084013e62009500565b606091505b5091506200951d905081620095178860206200bc74565b6200973d565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562009584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620095aa91906200ac85565b9050808214620095ce5760405162461bcd60e51b815260040162003034906200bc96565b6040516370ca10bb60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906200960b908b9087908e906004016200bb43565b600060405180830381600087803b1580156200962657600080fd5b505af11580156200963b573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200967060028b0160006200a8b2565b896004016000905550505050505050505050565b60606000825160206200969891906200bc74565b6001600160401b03811115620096b257620096b26200ac9f565b6040519080825280601f01601f191660200182016040528015620096dd576020820181803683370190505b50905060005b83518110156200807b5760008482815181106200970457620097046200acb5565b60200260200101519050808260200260200184015250808062009727906200ae7c565b915050620096e3565b600062004b0882620097bd565b600080600060208551116200975457845162009757565b60205b905060005b81811015620052cf57620097728160086200bc74565b866200977f83886200b3dc565b815181106200979257620097926200acb5565b01602001516001600160f81b031916901c929092179180620097b4816200ae7c565b9150506200975c565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200982f57602002820191906000526020600020905b8154815260200190600101908083116200981a575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200987b925085918791016200bc38565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200991a576001600160a01b0384166000908152602087815260408083206001600160e01b03198716845282528083209051909291620098ea9185918791016200bc38565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362009928836200a4f7565b6040516020016200993b9291906200b188565b60405160208183030381529060405290506000805160206203f98a83398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200999a57600080fd5b505af1158015620099af573d6000803e3d6000fd5b50505050600080866001600160a01b031683604051620099d091906200b1bb565b600060405180830381855afa9150503d806000811462009a0d576040519150601f19603f3d011682016040523d82523d6000602084013e62009a12565b606091505b50915062009a2f90508162009a298760206200bc74565b6200a5a3565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562009a91573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262009abb91908101906200bd31565b50905080516001141562009d9d5760006000805160206203f98a83398151915260001c6001600160a01b031663667f9d70898460008151811062009b035762009b036200acb5565b60200260200101516040518363ffffffff1660e01b815260040162009b3d9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009b5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009b8191906200ac85565b90508062009bec577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062009bc15762009bc16200acb5565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462009c0e5760405162461bcd60e51b815260040162003034906200bc96565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162009c469291906200bc38565b604051602081830303815290604052805190602001208560008151811062009c725762009c726200acb5565b602002602001015160001c60405162009c8f94939291906200bd82565b60405180910390a18160008151811062009cad5762009cad6200acb5565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262009cf8918a918c91016200bc38565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162009d62918a918c91016200bc38565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200a37a565b6001815111156200a3095760005b81518110156200a3025760006000805160206203f98a83398151915260001c6001600160a01b031663667f9d708a85858151811062009dee5762009dee6200acb5565b60200260200101516040518363ffffffff1660e01b815260040162009e289291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009e46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009e6c91906200ac85565b90508062009ed6577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062009eab5762009eab6200acb5565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462009ee557506200a2ed565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c9087908790811062009f1d5762009f1d6200acb5565b6020026020010151846040518463ffffffff1660e01b815260040162009f46939291906200bb43565b600060405180830381600087803b15801562009f6157600080fd5b505af115801562009f76573d6000803e3d6000fd5b50505050600060608b6001600160a01b03168860405162009f9891906200b1bb565b600060405180830381855afa9150503d806000811462009fd5576040519150601f19603f3d011682016040523d82523d6000602084013e62009fda565b606091505b50909250905062009ff28162009a298c60206200bc74565b9650508080156200a00257508186145b156200a255577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200a0409291906200bc38565b604051602081830303815290604052805190602001208888815181106200a06b576200a06b6200acb5565b602002602001015160001c6040516200a08894939291906200bd82565b60405180910390a18484815181106200a0a5576200a0a56200acb5565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200a0f0918d918f91016200bc38565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200a17d9291906200bc38565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206203f98a83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200a1ef576200a1ef6200acb5565b6020026020010151866040518463ffffffff1660e01b81526004016200a218939291906200bb43565b600060405180830381600087803b1580156200a23357600080fd5b505af11580156200a248573d6000803e3d6000fd5b505050505050506200a302565b6000805160206203f98a83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200a28c576200a28c6200acb5565b6020026020010151866040518463ffffffff1660e01b81526004016200a2b5939291906200bb43565b600060405180830381600087803b1580156200a2d057600080fd5b505af11580156200a2e5573d6000803e3d6000fd5b505050505050505b806200a2f9816200ae7c565b91505062009dab565b506200a37a565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162003034565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200a3be9188918a91016200bc38565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a44d5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b606482015260840162003034565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200a47e60028a0160006200a8b2565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200a4c49188918a91016200bc38565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200a50b91906200bc74565b6001600160401b038111156200a525576200a5256200ac9f565b6040519080825280601f01601f1916602001820160405280156200a550576020820181803683370190505b50905060005b83518110156200807b5760008482815181106200a577576200a5776200acb5565b6020026020010151905080826020026020018401525080806200a59a906200ae7c565b9150506200a556565b600080600060208551116200a5ba5784516200a5bd565b60205b905060005b81811015620052cf576200a5d88160086200bc74565b866200a5e583886200b3dc565b815181106200a5f8576200a5f86200acb5565b01602001516001600160f81b031916901c9290921791806200a61a816200ae7c565b9150506200a5c2565b610718806200bdb383390190565b610778806200c4cb83390190565b6094806200cc4383390190565b61022a806200ccd783390190565b6103f3806200cf0183390190565b610e81806200d2f483390190565b614ad0806200e17583390190565b6104e48062012c4583390190565b615c46806201312983390190565b61338a8062018d6f83390190565b610efe806201c0f983390190565b613169806201cff783390190565b611f78806202016083390190565b611ab480620220d883390190565b61117d8062023b8c83390190565b6139588062024d0983390190565b61210b806202866183390190565b6113ec806202a76c83390190565b6116e0806202bb5883390190565b616187806202d23883390190565b611a2580620333bf83390190565b60405180604001604052806200a75d6200a8d2565b81526020016200a76c6200a8d2565b905290565b60405180606001604052806003906020820280368337509192915050565b8280546200a79d906200ac39565b90600052602060002090601f0160209004810192826200a7c157600085556200a80c565b82601f106200a7dc57805160ff19168380011785556200a80c565b828001600101855582156200a80c579182015b828111156200a80c5782518255916020019190600101906200a7ef565b50620051fa9291506200a8f0565b610e608062034de483390190565b6146f48062035c4483390190565b615013806203a33883390190565b6040805160a081019091526000606082018181526080830191909152819081526020016200a885604051806040016040528060008152602001600081525090565b81526020016200a76c6200a748565b60405180608001604052806004906020820280368337509192915050565b508054600082559060005260206000209081019062003c8b91906200a8f0565b60405180604001604052806002906020820280368337509192915050565b5b80821115620051fa57600081556001016200a8f1565b6000602082840312156200a91a57600080fd5b813562ffffff811681146200556d57600080fd5b6000602082840312156200a94157600080fd5b5035919050565b8060005b60028110156200496b5781518452602093840193909101906001016200a94c565b6200a97a8282516200a948565b6020810151620005b760408401826200a948565b6080810162004b0882846200a96d565b600081518084526020808501945080840160005b838110156200a9d95781516001600160a01b0316875295820195908201906001016200a9b2565b509495945050505050565b6020815260006200556d60208301846200a99e565b60005b838110156200aa165781810151838201526020016200a9fc565b838111156200496b5750506000910152565b600081518084526200aa428160208601602086016200a9f9565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200ab0c57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200aaf557605f198985030183526200aae28486516200aa28565b948e01949350918d01916001016200aac3565b505050978a0197945050918801916001016200aa7d565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200abc457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200abae5783516001600160e01b0319168252928b019260019290920191908b01906200ab82565b50978a019795505050918701916001016200ab44565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200ac2c57603f198886030184526200ac198583516200aa28565b945092850192908501906001016200abfa565b5092979650505050505050565b600181811c908216806200ac4e57607f821691505b602082108114156200508057634e487b7160e01b600052602260045260246000fd5b6020815260006200556d60208301846200aa28565b6000602082840312156200ac9857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6040815260006200ace060408301856200a99e565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b6001600160a01b0392831681529116602082015260400190565b600081518084526020808501945080840160005b838110156200a9d9578151875295820195908201906001016200ad4e565b6001600160a01b0387811682528616602082015260ff851660408201526060810184905260c0608082018190526000906200adaa908301856200a99e565b82810360a08401526200adbe81856200ad3a565b9998505050505050505050565b6001600160a01b038481168252831660208201526060604082018190526000906200adf9908301846200aa28565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b8152600082516200ae2c81600d8501602087016200a9f9565b91909101600d0192915050565b6214d51560ea1b8152600082516200ae598160038501602087016200a9f9565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156200ae93576200ae936200ae66565b5060010190565b600081518084526020808501945080840160005b838110156200a9d95781516001600160601b0316875295820195908201906001016200aeae565b600081518084526020808501945080840160005b838110156200a9d957815180516001600160a01b031688528301516001600160601b031683880152604090960195908201906001016200aee9565b600081518084526020808501808196508360051b8101915082860160005b858110156200af705782840389526200af5d8483516200aed5565b988501989350908401906001016200af42565b5091979650505050505050565b6001600160a01b038981168252888116602080840191909152888216604084015290871660608084019190915260ff8716608084015261010060a084018190528651908401819052600092610120850192888201929190855b838110156200b020576200b00f868651805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b94810194938201936001016200afd6565b505050505082810360c08401526200b03981866200ae9a565b905082810360e08401526200b04f81856200af24565b9b9a5050505050505050505050565b604080519081016001600160401b03811182821017156200b083576200b0836200ac9f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200b0b4576200b0b46200ac9f565b604052919050565b60006001600160401b038311156200b0d8576200b0d86200ac9f565b6200b0ed601f8401601f19166020016200b089565b90508281528383830111156200b10257600080fd5b6200556d8360208301846200a9f9565b6000602082840312156200b12557600080fd5b81516001600160401b038111156200b13c57600080fd5b8201601f810184136200b14e57600080fd5b6200315a848251602084016200b0bc565b6040815260006200b17460408301856200a99e565b82810360208401526200adf981856200ad3a565b6001600160e01b03198316815281516000906200b1ad8160048501602087016200a9f9565b919091016004019392505050565b600082516200b1cf8184602087016200a9f9565b9190910192915050565b6000602082840312156200b1ec57600080fd5b815180151581146200556d57600080fd5b60006001600160401b038211156200b219576200b2196200ac9f565b5060051b60200190565b6001600160a01b038116811462003c8b57600080fd5b600082601f8301126200b24b57600080fd5b815160206200b2646200b25e836200b1fd565b6200b089565b82815260059290921b840181019181810190868411156200b28457600080fd5b8286015b848110156200b2a157805183529183019183016200b288565b509695505050505050565b600080604083850312156200b2c057600080fd5b82516001600160401b03808211156200b2d857600080fd5b818501915085601f8301126200b2ed57600080fd5b815160206200b3006200b25e836200b1fd565b82815260059290921b840181019181810190898411156200b32057600080fd5b948201945b838610156200b34b5785516200b33b816200b223565b825294820194908201906200b325565b918801519196509093505050808211156200b36557600080fd5b506200b374858286016200b239565b9150509250929050565b634e487b7160e01b600052601260045260246000fd5b6000826200b3a6576200b3a66200b37e565b500490565b6000828210156200b3c0576200b3c06200ae66565b500390565b6000826200b3d7576200b3d76200b37e565b500690565b600082198211156200b3f2576200b3f26200ae66565b500190565b6200b4268185805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b6001600160601b038316606082015260a0608082015260006200adf960a08301846200aed5565b6b02932b3b4b9ba32b934b733960a51b8152600082516200b47681600c8501602087016200a9f9565b7f20696e697469616c206f70657261746f727320696e20656163682071756f7275600c939091019283015250606d60f81b602c820152602d01919050565b600060208083526000845481600182811c9150808316806200b4d757607f831692505b8583108114156200b4f657634e487b7160e01b85526022600452602485fd5b8786018381526020018180156200b51657600181146200b528576200b555565b60ff198616825287820196506200b555565b60008b81526020902060005b868110156200b54f578154848201529085019089016200b534565b83019750505b50949998505050505050505050565b6727b832b930ba37b960c11b8152600082516200b5898160088501602087016200a9f9565b9190910160080192915050565b6080815260006200b5ab60808301876200aa28565b82810360208401526200b5bf81876200aa28565b604084019590955250506001600160a01b039190911660609091015292915050565b6000602082840312156200b5f457600080fd5b81516200556d816200b223565b6040815260006200b61660408301856200a99e565b82810360208481019190915284518083528582019282019060005b818110156200b6515784511515835293830193918301916001016200b631565b5090979650505050505050565b60408152602260408201527f5f6465616c52616e64546f6b656e733a206465616c696e672061737365747320606082015261746f60f01b608082015260a0602082015260006200556d60a08301846200aa28565b60006001600160601b03838116908316818110156200b6d5576200b6d56200ae66565b039392505050565b600083516200b6f18184602088016200a9f9565b6001600160f81b0319939093169190920190815260010192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200556d60808301846200aa28565b600063ffffffff838116908316818110156200b6d5576200b6d56200ae66565b60006101408083526200b775818401876200aa28565b9150508360208301526200b79760408301845180518252602090810151910152565b60208381015180516080850152015160a083015260408301516200883f60c08401826200a96d565b600082516200b7d38184602087016200a9f9565b6317d05b1d60e21b920191825250600401919050565b60408152601760408201527f5f72616e64557365723a2043726561746564207573657200000000000000000060608201526080602082015260006200556d60808301846200aa28565b61016960f51b8152600083516200b8518160028501602088016200a9f9565b600560fb1b60029184019182015283516200b8748160038401602088016200a9f9565b602960f81b60039290910191820152600401949350505050565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200b8b757600080fd5b81516001600160c01b03811681146200556d57600080fd5b600080604083850312156200b8e357600080fd5b505080516020909101519092909150565b6000602082840312156200b90757600080fd5b8151600281106200556d57600080fd5b80516003811062002ae957600080fd5b6000602082840312156200b93a57600080fd5b6200556d826200b917565b6000604082840312156200b95857600080fd5b6200b9626200b05e565b82518152602083015160208201528091505092915050565b6000602082840312156200b98d57600080fd5b81516001600160601b03811681146200556d57600080fd5b600063ffffffff8083168185168083038211156200b9c7576200b9c76200ae66565b01949350505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b838110156200ba5057888603603f19018552825180518088529088019088880190845b818110156200ba395783518352928a0192918a01916001016200ba1b565b50909750505093860193918601916001016200b9f8565b509398975050505050505050565b60006001600160601b038083168185168083038211156200b9c7576200b9c76200ae66565b600061ffff808316818114156200ba9e576200ba9e6200ae66565b6001019392505050565b6000604082840312156200babb57600080fd5b6200bac56200b05e565b825181526200bad7602084016200b917565b60208201529392505050565b6000602082840312156200baf657600080fd5b815163ffffffff811681146200556d57600080fd5b6000602082840312156200bb1e57600080fd5b81516001600160401b038111156200bb3557600080fd5b6200315a848285016200b239565b6001600160a01b039390931683526020830191909152604082015260600190565b6040815260006200bb8f60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200bb8f60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200bbf360408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006200bbf360408301600a8152690808080808149a59da1d60b21b602082015260400190565b825160009082906020808701845b838110156200bc64578151855293820193908201906001016200bc46565b5050948252509092019392505050565b60008160001904831182151516156200bc91576200bc916200ae66565b500290565b6020808252606f908201527f73746453746f726167652066696e642853746453746f72616765293a2050616360408201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560608201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960808201526e39b713ba1039bab83837b93a32b21760891b60a082015260c00190565b600080604083850312156200bd4557600080fd5b82516001600160401b03808211156200bd5d57600080fd5b6200bd6b868387016200b239565b935060208501519150808211156200b36557600080fd5b6001600160a01b039490941684526001600160e01b0319929092166020840152604083015260608201526080019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c00336f70657261746f722073686f756c64206e6f206c6f6e6765722068617665207374616b6520696e20616e792071756f72756d736f70657261746f7220616c726561647920686173206269747320696e2071756f72756d206269746d61706f70657261746f72206c6973742073686f756c64206e6f742068617665206368616e6765646f70657261746f7220636f756e74732073686f756c64206e6f742068617665206368616e67656441304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5063757272656e74206f70657261746f72206269746d61702073686f756c64206e6f7420696e636c7564652071756f72756d736f70657261746f72206c6973742073686f756c642068617665206f6e6520666577657220656e7472795f636f6e66696752616e643a20696e76616c69642066696c6c54797065732c206e6f20666c616773207061737365646f70657261746f7220616c72656164792068617320612072656769737465726564207075626b65795f72616e6456616c75653a20747269656420746f2073656c6563742076616c75652066726f6d20656d707479206172726179746f74616c206f70657261746f7220636f756e742073686f756c64206861766520696e6372656173656420666f7220656163682071756f72756d5f636f6e66696752616e643a20696e76616c6964206d696e696d756d5374616b652c206e6f20666c61677320706173736564776569676874732073686f756c642068617665206265656e20616464656420746f206f70657261746f7220616e6420746f74616c207374616b6573280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35836f70657261746f72496e666f2073686f756c642068617665206f70657261746f7249645f636f6e66696752616e643a20696e76616c6964206e756d537472617465676965732c206e6f20666c616773207061737365646f70657261746f72207765696768742073686f756c64206e6f74206861766520646563726561736564206166746572206465706f7369746f70657261746f72206c6973742073686f756c6420626520756e6368616e67656420666f7220656163682071756f72756d6f70657261746f72206c6973742073686f756c642068617665206f6e65206d6f726520656e7472796f70657261746f72207765696768742073686f756c64206e6f74206861766520696e63726561736564206166746572206465706f7369747570646174654f70657261746f72732073686f756c64206e6f7420656666656374206f70657261746f72207765696768742063616c63756c6174696f6e746f74616c206f70657261746f7220636f756e742073686f756c6420626520756e6368616e67656420666f7220656163682071756f72756d6f70657261746f722073686f756c64206861766520656d70747920696420616e64204e455645525f52454749535445524544207374617475736661696c656420746f20616464206f70657261746f722077656967687420746f206f70657261746f7220616e6420746f74616c207374616b6520696e20656163682071756f72756d746f74616c206f70657261746f7220636f756e742073686f756c6420686176652064656372656173656420666f7220656163682071756f72756d6f70657261746f7220696e666f2073686f756c64206e6f742068617665206368616e6765646f70657261746f72732071756f72756d206269746d61702073686f756c64206e6f742068617665206368616e6765645f636f6e66696752616e643a20696e76616c6964205f7573657254797065732c206e6f20666c616773207061737365646f70657261746f722073686f756c64207374696c6c206861766520612072656769737465726564207075626b65796f70657261746f72496e666f207374617475732073686f756c64206265204445524547495354455245446f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420746f20656163682071756f72756d2061706b6f70657261746f72207075626b65792073686f756c642068617665206265656e20737562747261637465642066726f6d20656163682071756f72756d2061706b6f70657261746f72496e666f2073686f756c64207374696c6c2068617665206f70657261746f724964885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f6e657752616e646f6d4f70657261746f723a206f70657261746f722073686f756c6420626520726567697374657265646f70657261746f722073686f756c64206861766520726567697374657265642061207075626b65795f636f6e66696752616e643a20696e76616c6964206e756d51756f72756d732c206e6f20666c616773207061737365646f70657261746f722073686f756c642068617665206164646974696f6e616c207374616b656f70657261746f7220646964206e6f7420646572656769737465722066726f6d20616c6c2071756f72756d736f70657261746f72207765696768742073686f756c6420626520756e6368616e6765646f70657261746f72207374616b652073686f756c6420626520756e6368616e67656471756f72756d2061706b732073686f756c64206e6f742068617665206368616e676564b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a86f70657261746f722073686f756c6420686176652072656475636564207374616b656661696c656420746f2072656d6f7665206f70657261746f72207765696768742066726f6d20746f74616c207374616b6520666f7220656163682071756f72756d6f70657261746f7220646964206e6f7420726567697374657220666f7220616c6c2071756f72756d736f70657261746f722073686f756c64206e6f74206861766520616e79206269747320696e206269746d617063757272656e74206f70657261746f72206269746d61702073686f756c6420696e636c7564652071756f72756d736f70657261746f722073686f756c642068617665206174206c6561737420746865206d696e696d756d207374616b6520696e20656163682071756f72756d6f70657261746f72496e666f207374617475732073686f756c6420626520524547495354455245446f70657261746f722073686f756c64206265207265676973746572656420746f204156536f70657261746f722073686f756c64206e6f74206265207265676973746572656420746f2074686520415653a264697066735822122020053997f729d7b8df9885e6aeb221dd19d129781cc1ff94b5271ef2ae13503864736f6c634300080c00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@\x81\x90R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\0\x80Q` b\x04\n\xB0\x839\x81Q\x91R`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x81\x17\x90\x92U`2\x80T0\x90\x83\x16\x17\x90U`3\x80T\x90\x91\x16s\xBE\xB9\x86N=j\x1B\xA4N\x13\x1AF/c(\xF2\xD1\xD6\xD5M\x17\x90U\x7F\xA3\xE2\xA0\xC4\xCE k\x9Cfy\xACca\xC04\xF3\x1C\x88D\xAE1\x04\x10\x8FG\xED\x8CA:\xCF32`4\x81\x90U`\x01b^y\xB7`\xE0\x1B\x03\x19\x83R`\x84R\x90c\xFF\xA1\x86I\x90`\xA4\x90` \x90`$\x81\x86Z\xFA\x15\x80\x15b\0\0\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF3\x91\x90b\0\x0B\nV[`5\x80T`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90U`6\x80Tsi\x15\xA6xw\xA1x\xD5\x12\x9A(\xD2\xAF\x87\x1A\xC1\xFC\xEB?\xD3\x92\x16\x91\x90\x91\x17\x90U`\0`=\x81\x90U`CU4\x80\x15b\0\x01JW`\0\x80\xFD[P`\0[b\0\x01[`\x05\x80b\0\x0BRV[c\xFF\xFF\xFF\xFF\x16\x81\x10\x15b\0\x03XWb\0\x01sb\0\t\xFBV[`\0b\0\x01\x82\x83`\x01b\0\x0B}V[`@Q` \x01b\0\x01\x95\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1C\x90Pb\0\x01\xDE\x81b\0\x01\xCAb\0\x03_` \x1Bb\0/{\x17` \x1CV[b\0\x03\x88` \x1Bb\0/\xA4\x17\x90\x91\x90` \x1CV[\x82` \x01\x81\x90RPb\0\x01\xFC\x81b\0\x04(` \x1Bb\0\x19\xBC\x17` \x1CV[`@\x83\x01\x90\x81R`>\x80T`\x01\x81\x81\x01\x90\x92U\x7F\x8D\x80\rf\x14\xD3^\xEDss>\xE4S\x16J;H\x07n\xB3\x13\x8FFj\xDE\xEB\x9D\xEC{\xB3\x1Fp\x01\x83\x90U`?\x80T\x91\x82\x01\x81U`\0R\x83Q\x80Q`\x08\x90\x92\x02\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFD\x81\x01\x92\x83U` \x91\x82\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFE\x82\x01U\x81\x86\x01Q\x80Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFF\x83\x01U\x90\x91\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\0\x82\x01U\x91Q\x80Q\x85\x93\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\x01\x01\x90b\0\x03#\x90\x82\x90`\x02b\0\nPV[P` \x82\x01Qb\0\x03;\x90`\x02\x80\x84\x01\x91\x90b\0\nPV[PPPPPPP\x80\x80b\0\x03O\x90b\0\x0B\x98V[\x91PPb\0\x01NV[Pb\0\r\xC3V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x03\xA6b\0\n\x93V[\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\x15b\0\x03\xDBWb\0\x03\xDDV[\xFE[P\x80b\0\x04 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[b\0\x042b\0\n\xB1V[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x04JW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x04\x93Wb\0\x04\x93b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x04\xD0Wb\0\x04\xD0b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7Ftest/ffi/go/g2mul.go\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81`\x02\x81Q\x81\x10b\0\x05'Wb\0\x05'b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RPb\0\x05H\x83b\0\x08\xDE` \x1Bb\x000E\x17` \x1CV[\x81`\x03\x81Q\x81\x10b\0\x05^Wb\0\x05^b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x05\x99Wb\0\x05\x99b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90`\0\x80Q` b\x04\n\xB0\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x05\xDB\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x06%\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x06=\x91\x90b\0\rKV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x06zWb\0\x06zb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x04\n\xB0\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x06\xB9\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x06\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\x03\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\x1B\x91\x90b\0\rKV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x07NWb\0\x07Nb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x04\n\xB0\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x07\x8D\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\xD7\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\xEF\x91\x90b\0\rKV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x08/Wb\0\x08/b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x04\n\xB0\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x08n\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x08\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x08\xB8\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x08\xD0\x91\x90b\0\rKV[` \x84\x01QRP\x90\x92\x91PPV[``\x81b\0\t\x03WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0\t3W\x80b\0\t\x1A\x81b\0\x0B\x98V[\x91Pb\0\t+\x90P`\n\x83b\0\r{V[\x91Pb\0\t\x07V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\tPWb\0\tPb\0\x0B\xCCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\t{W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0\t\xF3Wb\0\t\x93`\x01\x83b\0\r\x92V[\x91Pb\0\t\xA2`\n\x86b\0\r\xACV[b\0\t\xAF\x90`0b\0\x0B}V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0\t\xC7Wb\0\t\xC7b\0\x0B\xB6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0\t\xEB`\n\x86b\0\r{V[\x94Pb\0\t\x7FV[\x94\x93PPPPV[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\n<`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\nKb\0\n\xB1V[\x90R\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\n\x81W\x91` \x02\x82\x01[\x82\x81\x11\x15b\0\n\x81W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\ndV[Pb\0\n\x8F\x92\x91Pb\0\n\xD5V[P\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80b\0\n\xC6b\0\n\xECV[\x81R` \x01b\0\nKb\0\n\xECV[[\x80\x82\x11\x15b\0\n\x8FW`\0\x81U`\x01\x01b\0\n\xD6V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0\x0B\x1DW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0B5W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15b\0\x0BtWb\0\x0Btb\0\x0B^<#\x14b\0\x02SW\x80c?r\x86\xF4\x14b\0\x02]W\x80cO\x92)\xBB\x14b\0\x02gW\x80cf\xD9\xA9\xA0\x14b\0\x02~W`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01zW\x80c\tl/\xC0\x14b\0\x01\xABW\x80c\n\x92T\xE4\x14b\0\x01\xC4W\x80c\x13\x1E/\x18\x14b\0\x01\xCEW\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xF4W\x80c*\xDE8\x80\x14b\0\x02\rW[`\0\x80\xFD[`5Tb\0\x01\x8E\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[b\0\x01\xC2b\0\x01\xBC6`\x04b\0\xA9\x07V[b\0\x03xV[\0[b\0\x01\xC2b\0\x05\xBCV[b\0\x01\xE5b\0\x01\xDF6`\x04b\0\xA9.V[b\0\x19\xBCV[`@Qb\0\x01\xA2\x91\x90b\0\xA9\x8EV[b\0\x01\xFEb\0\x1ErV[`@Qb\0\x01\xA2\x91\x90b\0\xA9\xE4V[b\0\x02\x17b\0\x1E\xD6V[`@Qb\0\x01\xA2\x91\x90b\0\xAAVV[b\0\x020`4T\x81V[`@Q\x90\x81R` \x01b\0\x01\xA2V[`.Tb\0\x01\x8E\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xFEb\0 $V[b\0\x01\xFEb\0 \x86V[b\0\x01\xC2b\0\x02x6`\x04b\0\xA9\x07V[b\0 \xE8V[b\0\x02\x88b\0#RV[`@Qb\0\x01\xA2\x91\x90b\0\xAB\x1CV[`\x1ETb\0\x01\x8E\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01\x8E\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\xC9b\0$=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xD0\x91\x90b\0\xAC\x85V[Pb\0\x04\xDD\x82\x82b\0<\x8EV[\x81`\x01`\x01`\xA0\x1B\x03\x16cPSw\xE2`@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\x05\x19W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x05.W=`\0\x80>=`\0\xFD[PPPPb\0\x05>\x82\x82b\0>gV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\xCAO-\x97\x90b\0\x05l\x90\x84\x90`\x04\x01b\0\xACpV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x05\x87W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x05\x9CW=`\0\x80>=`\0\xFD[PPPPb\0\x05\xAC\x82\x82b\0?\xEEV[b\0\x05\xB7\x82b\0A{V[PPPV[`@Qb\0\x05\xCA\x90b\0\xA6#V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\xE7W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x06CWb\0\x06Cb\0\xAC\xB5V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x06u\x90b\0\xA61V[b\0\x06\x82\x92\x91\x90b\0\xAC\xCBV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\x9FW=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x06\xD1\x90b\0\xA6?V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xEEW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x06\xFF\x90b\0\xA6LV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\x1CW=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x07K\x90b\0\xA6ZV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07hW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x07\x9D\x90b\0\xA6hV[b\0\x07\xAA\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\xC7W=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x07\xFC\x90b\0\xA6hV[b\0\x08\t\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08&W=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x08[\x90b\0\xA6hV[b\0\x08h\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\x85W=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x08\xBA\x90b\0\xA6hV[b\0\x08\xC7\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\xE4W=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\t\x19\x90b\0\xA6hV[b\0\t&\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tCW=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\t\x81\x90b\0\xA6vV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\xC5W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\t\xF3\x90b\0\xA6\x84V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\n W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\nd\x90b\0\xA6\x92V[`\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\n\xA1W=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\n\xD3\x90b\0\xA6\xA0V[`\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\x0B\x10W=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x0B;\x90b\0\xA6\xAEV[b\0\x0BH\x92\x91\x90b\0\xAD V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0BeW=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x0B\xA5\x90b\0\xA6\xBCV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0B\xF1W=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x0C\x15\x90b\0\xA6\xCAV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0CBW=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\x0C\xA8\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0\xADlV[`@\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\x0C\xF1\x93\x92\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r\x0CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r!W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\r\xB4\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r\xCFW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r\xE4W=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0Ep\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\x8BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E\xA0W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0F6\x93\x91\x16\x91\x8A\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0FQW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0FfW=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0F\xF2\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x10\rW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x10\"W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x10C\x91Pb\0\xA6\xD8V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10pW=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x116W`\0b\0\x10\xAB\x82b\x000EV[\x90P`\0\x81`@Q` \x01b\0\x10\xC2\x91\x90b\0\xAE\x02V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x10\xE8\x91\x90b\0\xAE9V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x11\x1D\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0B+V[PPP\x80\x80b\0\x11-\x90b\0\xAE|V[\x91PPb\0\x10\x94V[P`@Qb\0\x11E\x90b\0\xA6\xE6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11bW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x11\xC1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11\xD6W=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x11\xF9\x90b\0\xA6hV[b\0\x12\x06\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12#W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x12X\x90b\0\xA6hV[b\0\x12e\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12\x82W=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x12\xB7\x90b\0\xA6hV[b\0\x12\xC4\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12\xE1W=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x13\x16\x90b\0\xA6hV[b\0\x13#\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x13@W=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x13u\x90b\0\xA6hV[b\0\x13\x82\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x13\x9FW=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x13\xFBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\x10W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x14:\x90b\0\xA6\xF4V[b\0\x14G\x92\x91\x90b\0\xAD V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x14dW=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x14\x88\x90b\0\xA7\x02V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x14\xB5W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x14\xD9\x90b\0\xA7\x10V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x15\x06W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x158\x90b\0\xA7\x1EV[`\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\x15uW=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\x99\xA8\x8E\xC4\x92b\0\x15\xB0\x92\x16\x90\x88\x90`\x04\x01b\0\xAD V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x15\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15\xE0W=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x16\x1D\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xAD V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x168W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16MW=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x16\x8A\x92\x90\x91\x16\x90\x86\x90`\x04\x01b\0\xAD V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16\xBAW=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x16\xF7\x92\x90\x91\x16\x90\x85\x90`\x04\x01b\0\xAD V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x17\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x17'W=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x17uW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x17\x8AW=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x17\xC2\x90b\0\xA7,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\x18\x07W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x18\x92V[`@\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\x18dW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x18\xC8V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x18\xB2W\x90P[P`@Q`$\x01b\0\x18\xE2\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0\xAF}V[`@\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\x19+\x93\x92\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x19FW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x19[W=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x19m\x90b\0\xA7:V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x19\x8AW=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x19\xC6b\0\xA7HV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x19\xDEW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x1A'Wb\0\x1A'b\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x1AdWb\0\x1Adb\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10b\0\x1A\xB2Wb\0\x1A\xB2b\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RPb\0\x1A\xC8\x83b\x000EV[\x81`\x03\x81Q\x81\x10b\0\x1A\xDEWb\0\x1A\xDEb\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x1B\x19Wb\0\x1B\x19b\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1B`\x90\x85\x90`\x04\x01b\0\xAB\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1B\xAA\x91\x90\x81\x01\x90b\0\xB1\x12V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\xC2\x91\x90b\0\xAC\x85V[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1B\xFFWb\0\x1B\xFFb\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1CC\x90\x85\x90`\x04\x01b\0\xAB\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1CcW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1C\x8D\x91\x90\x81\x01\x90b\0\xB1\x12V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1C\xA5\x91\x90b\0\xAC\x85V[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x1C\xD8Wb\0\x1C\xD8b\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1D\x1C\x90\x85\x90`\x04\x01b\0\xAB\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1D=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1Df\x91\x90\x81\x01\x90b\0\xB1\x12V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1D~\x91\x90b\0\xAC\x85V[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1D\xBEWb\0\x1D\xBEb\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1E\x02\x90\x85\x90`\x04\x01b\0\xAB\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1E\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1EL\x91\x90\x81\x01\x90b\0\xB1\x12V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1Ed\x91\x90b\0\xAC\x85V[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1E\xCCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1E\xADW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0 \x03W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1Fo\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1F\x9D\x90b\0\xAC9V[\x80\x15b\0\x1F\xEEW\x80`\x1F\x10b\0\x1F\xC2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1F\xEEV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1F\xD0W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1FMV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1E\xFAV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1E\xCCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1E\xADWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1E\xCCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1E\xADWPPPPP\x90P\x90V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x02\x91\x81\x01\x91\x90\x91R`\x03``\x82\x01\x81\x90Rb\0!\x1C\x91\x83\x91\x90b\x001bV[`\0b\0!(b\0:\x04V[\x90P`\0`B\x80Tb\0!;\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0!i\x90b\0\xAC9V[\x80\x15b\0!\xBAW\x80`\x1F\x10b\0!\x8EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0!\xBAV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0!\x9CW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0!\xCC\x82b\0;\xBDV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0!\xFA\x90\x84\x90`\x04\x01b\0\xACpV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\"\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\"@\x91\x90b\0\xAC\x85V[Pb\0\"M\x82\x82b\0<\x8EV[`\0\x80b\0\"[\x84b\0EWV[`@Qc\r\xA6m\xEB`\xE3\x1B\x81R\x91\x93P\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cm3oX\x90b\0\"\x90\x90\x85\x90\x85\x90`\x04\x01b\0\xB1_V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\"\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\"\xC0W=`\0\x80>=`\0\xFD[PPPPb\0\"\xD2\x84\x84\x84\x84b\0G\xC7V[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xCAO-\x97\x90b\0#\0\x90\x86\x90`\x04\x01b\0\xACpV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0#\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0#0W=`\0\x80>=`\0\xFD[PPPPb\0#@\x84\x84b\0?\xEEV[b\0#K\x84b\0A{V[PPPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0$#W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0#\xE4W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0#vV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0$\x82\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0$\xB0\x90b\0\xAC9V[\x80\x15b\0%\x01W\x80`\x1F\x10b\0$\xD5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0%\x01V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0$\xE3W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0$`V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0%\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0%\xA8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0%:V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x02\x91\x81\x01\x91\x90\x91R`\x03``\x82\x01\x81\x90Rb\0&4\x91\x83\x91\x90b\x001bV[`\0b\0&@b\0:\x04V[\x90P`\0`B\x80Tb\0&S\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0&\x81\x90b\0\xAC9V[\x80\x15b\0&\xD2W\x80`\x1F\x10b\0&\xA6Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0&\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0&\xB4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0&\xE4\x82b\0;\xBDV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0'\x12\x90\x84\x90`\x04\x01b\0\xACpV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0'2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0'X\x91\x90b\0\xAC\x85V[Pb\0'e\x82\x82b\0<\x8EV[`\0\x80b\0's\x84b\0EWV[`@Qc\r\xA6m\xEB`\xE3\x1B\x81R\x91\x93P\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cm3oX\x90b\0'\xA8\x90\x85\x90\x85\x90`\x04\x01b\0\xB1_V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'\xD8W=`\0\x80>=`\0\xFD[PPPPb\0'\xEA\x84\x84\x84\x84b\0G\xC7V[`\0b\0'\xF8\x85\x85b\0IqV[\x90P\x84`\x01`\x01`\xA0\x1B\x03\x16cPSw\xE2`@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(6W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0(KW=`\0\x80>=`\0\xFD[PPPPb\0(\\\x85\x85\x83b\0K\x0EV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\xCAO-\x97\x90b\0(\x8A\x90\x87\x90`\x04\x01b\0\xACpV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0(\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0(\xBAW=`\0\x80>=`\0\xFD[PPPPb\0(\xCA\x85\x85b\0?\xEEV[b\0(\xD5\x85b\0A{V[PPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0)#\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0)Q\x90b\0\xAC9V[\x80\x15b\0)\xA2W\x80`\x1F\x10b\0)vWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0)\xA2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0)\x84W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0)\x01V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0)\xDAWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0*\xE9W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0*k\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0\xB1\x88V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0*\x87\x91b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0*\xC6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0*\xCBV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0*\xE5\x91\x90b\0\xB1\xD9V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1E\xCCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1E\xADWPPPPP\x90P\x90V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x02\x91\x81\x01\x91\x90\x91R`\x03``\x82\x01\x81\x90Rb\0+\x84\x91\x83\x91\x90b\x001bV[`\0b\0+\x90b\0:\x04V[\x90P`\0`B\x80Tb\0+\xA3\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0+\xD1\x90b\0\xAC9V[\x80\x15b\0,\"W\x80`\x1F\x10b\0+\xF6Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0,\"V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0,\x04W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0,4\x82b\0;\xBDV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0,b\x90\x84\x90`\x04\x01b\0\xACpV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0,\x82W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0,\xA8\x91\x90b\0\xAC\x85V[Pb\0,\xB5\x82\x82b\0<\x8EV[`\0\x80\x83`\x01`\x01`\xA0\x1B\x03\x16ce\xED\xA8\xE5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0,\xF9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0-#\x91\x90\x81\x01\x90b\0\xB2\xACV[\x91P\x91Pb\0\"\xD2\x84\x84\x84\x84b\0L\xA0V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x02\x91\x81\x01\x91\x90\x91R`\x03``\x82\x01\x81\x90Rb\0-i\x91\x83\x91\x90b\x001bV[`\0b\0-ub\0:\x04V[\x90P`\0`B\x80Tb\0-\x88\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0-\xB6\x90b\0\xAC9V[\x80\x15b\0.\x07W\x80`\x1F\x10b\0-\xDBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0.\x07V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0-\xE9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0.\x19\x82b\0;\xBDV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0.G\x90\x84\x90`\x04\x01b\0\xACpV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0.gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0.\x8D\x91\x90b\0\xAC\x85V[Pb\0.\x9A\x82\x82b\0<\x8EV[`\0\x80\x83`\x01`\x01`\xA0\x1B\x03\x16ce\xED\xA8\xE5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0.\xDEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0/\x08\x91\x90\x81\x01\x90b\0\xB2\xACV[\x91P\x91Pb\0/\x1A\x84\x84\x84\x84b\0L\xA0V[\x83`\x01`\x01`\xA0\x1B\x03\x16cPSw\xE2`@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/VW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0/kW=`\0\x80>=`\0\xFD[PPPPb\0#K\x84\x84b\0NEV[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0/\xC2b\0\xA7qV[\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\x15b\0/\xF7Wb\0/\xF9V[\xFE[P\x80b\x000=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\x000jWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\x000\x9AW\x80b\x000\x81\x81b\0\xAE|V[\x91Pb\x000\x92\x90P`\n\x83b\0\xB3\x94V[\x91Pb\x000nV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\x000\xB7Wb\x000\xB7b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\x000\xE2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\x001ZWb\x000\xFA`\x01\x83b\0\xB3\xABV[\x91Pb\x001\t`\n\x86b\0\xB3\xC5V[b\x001\x16\x90`0b\0\xB3\xDCV[`\xF8\x1B\x81\x83\x81Q\x81\x10b\x001.Wb\x001.b\0\xAC\xB5V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\x001R`\n\x86b\0\xB3\x94V[\x94Pb\x000\xE6V[\x94\x93PPPPV[`@\x80Q\x81\x81R`\x1F\x81\x83\x01R\x7F_configRand: set random seed to\0``\x82\x01Rb\xFF\xFF\xFF\x85\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`@Q`\x01`\x01`\xE8\x1B\x03\x19`\xE8\x85\x90\x1B\x16` \x82\x01R`#\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\x001\xFB\x82b\0P\"V[\x80Qb\x002\x11\x91`8\x91` \x90\x91\x01\x90b\0\xA7\x8FV[P\x80Qb\x002\x1F\x90b\0P\"V[\x80Qb\x0025\x91`9\x91` \x90\x91\x01\x90b\0\xA7\x8FV[Pb\x002E\x81` \x01Qb\0P\"V[\x80Qb\x002[\x91`:\x91` \x90\x91\x01\x90b\0\xA7\x8FV[Pb\x002k\x81`@\x01Qb\0P\"V[\x80Qb\x002\x81\x91`;\x91` \x90\x91\x01\x90b\0\xA7\x8FV[Pb\x002\x91\x81``\x01Qb\0P\"V[\x80Qb\x002\xA7\x91`<\x91` \x90\x91\x01\x90b\0\xA7\x8FV[Pb\x002\xE1`8\x80Tb\x002\xBB\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xF8``0\x919b\0P\x86V[b\x003\x1A`9\x80Tb\x002\xF4\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xFA\x03`0\x919b\0P\x86V[b\x003S`:\x80Tb\x003-\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xF5\xE2`3\x919b\0P\x86V[b\x003\x8C`;\x80Tb\x003f\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xF52`2\x919b\0P\x86V[b\x003\xC5`<\x80Tb\x003\x9F\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xF4o`/\x919b\0P\x86V[b\x003\xCFb\0P\xBFV[`@\x81\x90Ub\x003\xE5\x90`\x01\x90\x81\x90\x1Bb\0\xB3\xABV[`A\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\x004\x0F\x90b\0Q\xFEV[\x80Qb\x004%\x91`B\x91` \x90\x91\x01\x90b\0\xA7\x8FV[P`@\x80T\x81Q\x82\x81R`0\x92\x81\x01\x92\x90\x92R\x7F_configRand: number of quorums b``\x83\x01Ro\x19Z[\x99\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`\x82\x1B`\x80\x83\x01R` \x82\x01R`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x90`\xA0\x01`@Q\x80\x91\x03\x90\xA1`@\x80Q``\x81\x01\x82R`\x05\x81Ra:\x98` \x82\x01R`\x96\x91\x81\x01\x91\x90\x91R`\0[`@T\x81\x10\x15b\x0077W`\0b\x004\xD1b\0R\xD9V[\x90P`\0b\x004\xDFb\0T\xD6V[\x90P`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x83`@Qb\x005:\x91\x90`@\x80\x82R`\x1C\x90\x82\x01R\x7F_configRand: creating quorum\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x83Q`@Q`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x91b\x005\x99\x91`@\x80\x82R`\x14\x90\x82\x01Rs\x0BH\x13X^\x08\x1B\xDC\x19\\\x98]\x1B\xDC\x88\x18\xDB\xDD[\x9D`b\x1B``\x82\x01Rc\xFF\xFF\xFF\xFF\x91\x90\x91\x16` \x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x82Q`@Qb\x005\xFB\x91\x90`@\x80\x82R`\x1B\x90\x82\x01R\x7F- Num strategies considered\0\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\x0F\x81\x83\x01Rn- Minimum stake`\x88\x1B``\x82\x01R`\x01`\x01``\x1B\x03\x83\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`\x1CT`3T`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x006\x9CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x006\xB1W=`\0\x80>=`\0\xFD[PP`(T`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xD7[L\x88\x91Pb\x006\xEB\x90\x87\x90\x85\x90\x87\x90`\x04\x01b\0\xB3\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x007\x06W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x007\x1BW=`\0\x80>=`\0\xFD[PPPPPP\x80\x80b\x007.\x90b\0\xAE|V[\x91PPb\x004\xBAV[P`\0b\x007E\x82b\0U\x14V[\x90P`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91Rb\x007b\x82b\x000EV[`@Q` \x01b\x007t\x91\x90b\0\xB4MV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\x007\x90\x91b\0\xACpV[`@Q\x80\x91\x03\x90\xA1`\0[\x81\x81\x10\x15b\08\xFAW`\0b\x007\xB0b\0:\x04V[`@Qc \x8CmS`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x821\xB5L\x90b\x007\xE2\x90`B\x90`\x04\x01b\0\xB4\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\08\x02W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\08(\x91\x90b\0\xAC\x85V[P`\0[`B\x80Tb\08;\x90b\0\xAC9V[\x90P\x81\x10\x15b\08\xE2W`\0`B\x82\x81Tb\08W\x90b\0\xAC9V[\x81\x10b\08hWb\08hb\0\xAC\xB5V[\x81T`\x01\x16\x15b\08\x88W\x90`\0R` `\0 \x90` \x91\x82\x82\x04\x01\x91\x90\x06[\x90T\x90\x1A`\x01`\xF8\x1B\x02`\xF8\x1C`\0\x90\x81R`D` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90UP\x80b\08\xD9\x81b\0\xAE|V[\x91PPb\08,V[PP\x80\x80b\08\xF1\x90b\0\xAE|V[\x91PPb\x007\x9BV[P`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\09B\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\09\xA6\x90` \x80\x82R`$\x90\x82\x01R\x7F_configRand complete; starting t`@\x82\x01Rcest!`\xE0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\09\xF5\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0\x80b\0:\x14`CTb\x000EV[`@Q` \x01b\0:&\x91\x90b\0\xB5dV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R`C\x80T\x91\x92P`\0b\0:J\x83b\0\xAE|V[\x91\x90PUP`\0\x80`\0b\0:_\x84b\0U\xE6V[\x92P\x92P\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16c*4\xAD\xE8`@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:\xA1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0:\xB6W=`\0\x80>=`\0\xFD[PP`@Qc\r\xA6m\xEB`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x92Pcm3oX\x91Pb\0:\xEA\x90\x85\x90\x85\x90`\x04\x01b\0\xB1_V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0;\x05W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0;\x1AW=`\0\x80>=`\0\xFD[PP`\x1DT`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rb\0;\xB4\x94P\x90\x91\x16\x91Pcmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0;nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0;\x94\x91\x90b\0\xB1\xD9V[`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xF9\xAA`1\x919b\0P\x86V[P\x90\x93\x92PPPV[b\0;\xF7`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01u\x18\xDA\x19X\xDA\xD7\xD3\x99]\x99\\\x97\xD4\x99Y\xDA\\\xDD\x19\\\x99Y`R\x1B\x81RP\x82b\0W\x82V[b\0<\x1C\x81`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x03\xF7Q`9\x919b\0X7V[b\0\x81R` \x01b\x03\xFB\xF1`>\x919b\0b\x01V[b\0=\xF3\x82\x82`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01b\x03\xF7\x8A`H\x919b\0c\xC9V[b\0>\x18\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xF4\xF8`:\x919b\0c\xE7V[b\0>>\x82\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xF6}`(\x919b\0d\x86V[b\0>c\x82`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x03\xFCW`$\x919b\0erV[PPV[b\0>\xA8`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7Fcheck_NoChangeUpdate_State\0\0\0\0\0\0\x81RP\x83b\0W\x82V[b\0>\xCD\x82`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x03\xF8\x0C`%\x919b\0f\0V[b\0>\xF2\x82`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xF81`/\x919b\0fmV[b\0?\x17\x81`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFA\xC9`#\x919b\0g\x13V[b\0?=\x82\x82`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFA\x84`#\x919b\0g\xEDV[b\0?c\x82\x82`@Q\x80``\x01`@R\x80`\"\x81R` \x01b\x03\xFA\xA7`\"\x919b\0h\x86V[b\0?\xA4\x81`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7Ftotal stake should be unchanged\0\x81RPb\0h\xE1V[b\0?\xC9\x81`@Q\x80``\x01`@R\x80`8\x81R` \x01b\x03\xF7\x19`8\x919b\0i:V[b\0>c\x81`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xF6L`1\x919b\0i\xCBV[b\0@(`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01ucheck_Deregister_State`P\x1B\x81RP\x83b\0W\x82V[b\0@M\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF9a`)\x919b\0[8V[b\0@s\x82\x82`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xF4\x14`2\x919b\0jPV[b\0@\x99\x82\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xFAX`,\x919b\0k\xA0V[b\0@\xBE\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x03\xF8\x90`.\x919b\0^\x98V[b\0@\xE4\x82\x82`@Q\x80``\x01`@R\x80`@\x81R` \x01b\x03\xF9!`@\x919b\0lgV[b\0A\n\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xF3K`3\x919b\0mtV[b\0A0\x82\x82`@Q\x80`\x80\x01`@R\x80`A\x81R` \x01b\x03\xFB.`A\x919b\0n\xB9V[b\0AU\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xF7\xD2`:\x919b\0o\x89V[b\0>c\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF4F`)\x919b\0p\x1BV[b\0A\xBC`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7Fcheck_CompleteDeregister_State\0\0\x81RP\x82b\0W\x82V[b\0A\xE1\x81`@Q\x80``\x01`@R\x80`+\x81R` \x01b\x03\xFB\x98`+\x919b\0X~V[b\0B\x06\x81`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF9a`)\x919b\0[8V[b\0=`\0\xFD[P`'T`1T`!T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92cH\\\xC9U`\xE0\x1B\x92b\0B\xAB\x92\x88\x92\x90\x91\x16\x90`$\x01b\0\xAD V[`@\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\x90Qb\0B\xEA\x90b\0\xA6hV[b\0B\xF8\x93\x92\x91\x90b\0\xAD\xCBV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0C\x15W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\0CvWb\0Cvb\0\xAC\xB5V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0C\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0D\x02\x91\x90b\0\xB5\xE1V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0DDW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0DYW=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\0D\x91\x90\x85\x90\x85\x90`\x04\x01b\0\xB6\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0D\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0D\xC1W=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0E|Wb\0E|b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0E\xA6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`/T\x90\x91P`\0\x90`\x01`\x01`@\x1B\x03\x81\x11\x15b\0E\xCAWb\0E\xCAb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0E\xF4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x85`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0FFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0Fp\x91\x90\x81\x01\x90b\0\xB1\x12V[`@Qb\0F\x7F\x91\x90b\0\xB6^V[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0G\xBCW`\0`/\x82\x81T\x81\x10b\0F\xADWb\0F\xADb\0\xAC\xB5V[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0G\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0G&\x91\x90b\0\xB5\xE1V[\x90P`\0b\0G\x81R` \x01b\x03\xFB\xF1`>\x919b\0b\x01V[b\0L\n\x83\x83`@Q\x80``\x01`@R\x80`=\x81R` \x01b\x03\xF6\xDC`=\x919b\0g\xEDV[b\0L1\x83\x83\x83`@Q\x80``\x01`@R\x80`;\x81R` \x01b\x03\xF5d`;\x919b\0u\xB7V[b\0LV\x82`@Q\x80``\x01`@R\x80`8\x81R` \x01b\x03\xF7\x19`8\x919b\0i:V[b\0L{\x82`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xF6L`1\x919b\0i\xCBV[b\0\x05\xB7\x83`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x03\xFCW`$\x919b\0erV[b\0L\xD8`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01scheck_Withdraw_State``\x1B\x81RP\x85b\0W\x82V[b\0L\xFD\x84`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x03\xF8\x0C`%\x919b\0f\0V[b\0M\"\x84`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xF81`/\x919b\0fmV[b\0MG\x83`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFA\xC9`#\x919b\0g\x13V[b\0Mm\x84\x84`@Q\x80``\x01`@R\x80`7\x81R` \x01b\x03\xF6\xA5`7\x919b\0v\xFEV[b\0M\x93\x84\x84`@Q\x80``\x01`@R\x80`\"\x81R` \x01b\x03\xFA\xA7`\"\x919b\0h\x86V[b\0M\xD4\x83`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7Ftotal stake should be unchanged\0\x81RPb\0h\xE1V[b\0M\xF9\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01b\x03\xF3\xCD`'\x919b\0i:V[b\0N\x1E\x83`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x03\xF3\xA8`%\x919b\0i\xCBV[b\0Ik\x84\x83\x83`@Q\x80``\x01`@R\x80`\"\x81R` \x01b\x03\xFB\x0C`\"\x919b\0w\x99V[b\0N\x86`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7Fcheck_WithdrawUpdate_State\0\0\0\0\0\0\x81RP\x83b\0W\x82V[b\0N\xAB\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF9a`)\x919b\0[8V[b\0N\xD0\x82`@Q\x80``\x01`@R\x80`+\x81R` \x01b\x03\xFB\x98`+\x919b\0X~V[b\0N\xF5\x82`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x03\xF8\xBE`*\x919b\0p\xE3V[b\0O\x1B\x82\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xFAX`,\x919b\0k\xA0V[b\0O@\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x03\xF8\x90`.\x919b\0^\x98V[b\0Of\x82\x82`@Q\x80``\x01`@R\x80`@\x81R` \x01b\x03\xF9!`@\x919b\0lgV[b\0O\x8C\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xF3K`3\x919b\0mtV[b\0O\xB2\x82\x82`@Q\x80`\x80\x01`@R\x80`A\x81R` \x01b\x03\xFB.`A\x919b\0n\xB9V[b\0O\xD7\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xF7\xD2`:\x919b\0o\x89V[b\0O\xFD\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF4F`)\x919b\0p\x1BV[b\0>c\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xFC{`,\x919b\0Z\x9AV[```\0[a\x01\0\x81\x10\x15b\0P\x80W`\x01\x81\x1B\x83\x81\x16\x15b\0PlW`@Qb\0PZ\x90\x84\x90`\x01\x85\x1B`\xF8\x1B\x90` \x01b\0\xB6\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x92P[Pb\0Px\x81b\0\xAE|V[\x90Pb\0P'V[P\x91\x90PV[\x81b\0>cW`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x81`@Qb\0P\xAC\x91\x90b\0\xB7\x0EV[`@Q\x80\x91\x03\x90\xA1b\0>c\x82b\0x%V[`\0\x80b\0Q_`9\x80Tb\0P\xD5\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0Q\x03\x90b\0\xAC9V[\x80\x15b\0QTW\x80`\x1F\x10b\0Q(Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0QTV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0Q6W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\0x\x8CV[\x90P`\x01\x81\x14\x15b\0QsW`\x01\x91PP\x90V[`\x02\x81\x14\x15b\0Q\x85W`\x02\x91PP\x90V[`\x04\x81\x14\x15b\0Q\xA3Wb\0Q\x9D`\x03`\nb\0qcV[\x91PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7F_randQuorumCount: flag not recog`D\x82\x01Rd\x1B\x9A^\x99Y`\xDA\x1B`d\x82\x01R`\x84\x01b\x0004V[P\x90V[```\0\x80b\0R\x0E\x84b\0x\xF5V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15b\0R,Wb\0R,b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0RWW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15b\0RpWPa\x01\0\x81\x10[\x15b\0R\xCFW`\x01\x81\x1B\x93P\x85\x84\x16\x15b\0R\xBCW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10b\0R\x9EWb\0R\x9Eb\0\xAC\xB5V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[b\0R\xC7\x81b\0\xAE|V[\x90Pb\0R^V[P\x90\x94\x93PPPPV[```\0b\0R\xF0`:\x80Tb\0P\xD5\x90b\0\xAC9V[\x90P`\0`\x01\x82\x14\x15b\0S\x07WP`\x01b\0S\xDDV[`\x02\x82\x14\x15b\0S\x1AWP`\x02b\0S\xDDV[`\x04\x82\x14\x15b\0SKW`/Tb\0SC\x90`\x03\x90b\0S=\x90`\x01\x90b\0\xB3\xABV[b\0qcV[\x90Pb\0S\xDDV[`\x08\x82\x14\x15b\0S^WP`\x0Fb\0S\xDDV[`\x10\x82\x14\x15b\0SqWP`\x14b\0S\xDDV[` \x82\x14\x15b\0S\x84WP`\x19b\0S\xDDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7F_randStrategyCount: flag not rec`D\x82\x01Rf\x1B\xD9\xDB\x9A^\x99Y`\xCA\x1B`d\x82\x01R`\x84\x01b\x0004V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0S\xFAWb\0S\xFAb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0TAW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0T\x19W\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0T\xCEW`@Q\x80`@\x01`@R\x80`/\x83\x81T\x81\x10b\0TrWb\0Trb\0\xAC\xB5V[`\0\x91\x82R` \x91\x82\x90 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x82Rg\r\xE0\xB6\xB3\xA7d\0\0\x91\x01R\x82Q\x83\x90\x83\x90\x81\x10b\0T\xADWb\0T\xADb\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0T\xC5\x90b\0\xAE|V[\x91PPb\0TGV[P\x93\x92PPPV[`\0\x80b\0T\xEC`;\x80Tb\0P\xD5\x90b\0\xAC9V[\x90P`\x01\x81\x14\x15b\0U\0W`\0\x91PP\x90V[`\x02\x81\x14\x15b\0Q\xA3Wb\x0FB@\x91PP\x90V[`\0\x80b\0U*`<\x80Tb\0P\xD5\x90b\0\xAC9V[\x90P`\x01\x81\x14\x15b\0U?WP`\0\x92\x91PPV[`\x02\x81\x14\x15b\0UtWb\0Um`\x01\x80\x85`\0\x01Qb\0Ua\x91\x90b\0\xB7?V[c\xFF\xFF\xFF\xFF\x16b\0qcV[\x93\x92PPPV[`\x04\x81\x14\x15b\0U\x8AWPPQc\xFF\xFF\xFF\xFF\x16\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7F_randInitialOperators: flag not `D\x82\x01Ri\x1C\x99X\xDB\xD9\xDB\x9A^\x99Y`\xB2\x1B`d\x82\x01R`\x84\x01b\x0004V[`\0``\x80`\0\x80b\0U\xF8b\0y&V[\x91P\x91P`\0\x80b\0V\x12`8\x80Tb\0P\xD5\x90b\0\xAC9V[\x90P`\x01\x81\x14\x15b\0VcW\x87\x84\x84`@Qb\0V/\x90b\0\xA8(V[b\0V=\x93\x92\x91\x90b\0\xB7_V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0VZW=`\0\x80>=`\0\xFD[P\x91Pb\0V\xD1V[`\x02\x81\x14\x15b\0V\xD1W\x87`@Q` \x01b\0V\x80\x91\x90b\0\xB7\xBFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x97P\x87\x84\x84`@Qb\0V\xA2\x90b\0\xA86V[b\0V\xB0\x93\x92\x91\x90b\0\xB7_V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0V\xCDW=`\0\x80>=`\0\xFD[P\x91P[`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0W W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0WJ\x91\x90\x81\x01\x90b\0\xB1\x12V[`@Qb\0WY\x91\x90b\0\xB7\xE9V[`@Q\x80\x91\x03\x90\xA1`\0\x80b\0Wo\x84b\0EWV[\x94\x9B\x90\x9AP\x93\x98P\x92\x96PPPPPPPV[`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R\x82\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0W\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0W\xFC\x91\x90\x81\x01\x90b\0\xB1\x12V[`@Q` \x01b\0X\x0F\x92\x91\x90b\0\xB82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0X+\x91b\0\xACpV[`@Q\x80\x91\x03\x90\xA1PPV[`\0b\0XD\x83b\0z\xF7V[\x80Q\x90\x91Pb\0XW\x90`\0\x84b\0{{V[b\0\x05\xB7`\0\x82` \x01Q`\x02\x81\x11\x15b\0XvWb\0Xvb\0\xB8\x8EV[\x14\x83b\0P\x86V[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x84`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0X\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Y\t\x91\x90b\0\xAC\x85V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0Y(\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0YFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Yl\x91\x90b\0\xB8\xA4V[\x90Pb\0\x05\xB7`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x83b\0P\x86V[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x83\x92\x91\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Y\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Y\xF6\x91\x90b\0\xB8\xCFV[`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x93\x95P\x91\x93P`\0\x92\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0ZHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Zn\x91\x90b\0\xAC\x85V[\x90Pb\0Z~\x83`\0\x86b\0{\xB7V[b\0Z\x8C\x82`\0\x86b\0{\xB7V[b\0#K\x81`\0\x86b\0{{V[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0Z\xD6\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xAD V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Z\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0[\x1A\x91\x90b\0\xB8\xF4V[\x90Pb\0\x05\xB7`\0[\x82`\x01\x81\x11\x15b\0XvWb\0Xvb\0\xB8\x8EV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0[yW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0[\x9F\x91\x90b\0\xAC\x85V[`(T`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0[\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\\\x16\x91\x90b\0\xAC\x85V[\x90Pb\0Ik\x82\x82\x85b\0{{V[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\\qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\\\x97\x91\x90b\0\xB9'V[\x90Pb\0\x05\xB7`\x01[\x82`\x02\x81\x11\x15b\0XvWb\0Xvb\0\xB8\x8EV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0]\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0]@\x91\x90b\0\xAC\x85V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0]_\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0]}W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0]\xA3\x91\x90b\0\xB8\xA4V[\x90P`\0b\0]\xB2\x84b\0{\xF3V[\x90Pb\0#Kb\0]\xD0`\x01`\x01`\xC0\x1B\x03\x80\x84\x16\x90\x85\x16\x81\x16\x14\x90V[\x84b\0P\x86V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0^\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0^>\x91\x90b\0\xAC\x85V[\x90P`\0b\0^M\x84b\0{\xF3V[\x90P`\0b\0^\\\x83b\0}\x86V[\x90P`\0b\0^k\x84b\0}\xF7V[\x90Pb\0^\x8F`\x01`\x01`\xC0\x1B\x03\x82\x16\x84\x17\x83`\x01`\x01`\xC0\x1B\x03\x16\x14\x86b\0P\x86V[PPPPPPPV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0^\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0^\xFE\x91\x90b\0\xB9EV[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x83\x92\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0_LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0_r\x91\x90b\0\xB8\xCFV[\x84Q`\0\x90\x81R` \x80\x87\x01Q\x90R`@\x81 \x92\x94P\x90\x92P\x90`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0_\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0`\x03\x91\x90b\0\xAC\x85V[`*T`@Qct]\xCDs`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE8\xBB\x9A\xE6\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0`SW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0`y\x91\x90b\0\xB5\xE1V[\x90Pb\0`\x8C\x86`\0\x01Q\x86\x89b\0{\xB7V[b\0`\x9D\x86` \x01Q\x85\x89b\0{\xB7V[b\0`\xAA\x83\x83\x89b\0{{V[b\0`\xB7\x88\x82\x89b\0~\xEAV[PPPPPPPPV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0a\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0a'\x91\x90b\0\xB9EV[\x90P`\0b\0a6\x84b\0\x7F8V[\x90P`\0b\0aE\x85b\0\x80\x82V[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FW`\0b\0a\x87\x85\x84\x84\x81Q\x81\x10b\0apWb\0apb\0\xAC\xB5V[` \x02` \x01\x01Qb\0\x81\x0F\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90Pb\0a\xBA\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0a\xA7Wb\0a\xA7b\0\xAC\xB5V[` \x02` \x01\x01Q`\0\x01Q\x88b\0{\xB7V[b\0a\xEB\x81` \x01Q\x85\x84\x81Q\x81\x10b\0a\xD8Wb\0a\xD8b\0\xAC\xB5V[` \x02` \x01\x01Q` \x01Q\x88b\0{\xB7V[P\x80b\0a\xF8\x81b\0\xAE|V[\x91PPb\0aJV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0bBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0bh\x91\x90b\0\xAC\x85V[\x90P`\0[\x83Q\x81\x10\x15b\0#KW`\0\x84\x82\x81Q\x81\x10b\0b\x8EWb\0b\x8Eb\0\xAC\xB5V[\x01` \x01Q`+T`@Qc\xC4gx\xA5`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xC4gx\xA5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0b\xE8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0c\x0E\x91\x90b\0\xB9zV[`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x87\x90R`\xFF\x85\x16`$\x82\x01R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0cgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0c\x8D\x91\x90b\0\xB9zV[\x90Pb\0c\xB0\x82`\x01`\x01``\x1B\x03\x16\x82`\x01`\x01``\x1B\x03\x16\x10\x15\x87b\0P\x86V[PPP\x80\x80b\0c\xC0\x90b\0\xAE|V[\x91PPb\0bmV[`\0b\0c\xD7\x84\x84b\0s\x7FV[\x90Pb\0Ik\x84\x84\x83\x85b\0u\xB7V[`\0b\0c\xF4\x83b\0\x81\xA8V[\x90P`\0b\0d\x03\x84b\0\x82\xD8V[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0dq\x83\x82\x81Q\x81\x10b\0d+Wb\0d+b\0\xAC\xB5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0dNWb\0dNb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01b\0dd\x91\x90b\0\xB9\xA5V[c\xFF\xFF\xFF\xFF\x16\x86b\0{\xB7V[\x80b\0d}\x81b\0\xAE|V[\x91PPb\0d\x08V[`\0b\0d\x93\x83b\0\x83eV[\x90P`\0b\0d\xA2\x84b\0\x84\xA7V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0e\x06\x83\x82\x81Q\x81\x10b\0d\xCAWb\0d\xCAb\0\xAC\xB5V[` \x02` \x01\x01QQ\x83\x83\x81Q\x81\x10b\0d\xE8Wb\0d\xE8b\0\xAC\xB5V[` \x02` \x01\x01QQ`\x01b\0d\xFF\x91\x90b\0\xB3\xDCV[\x86b\0{\xB7V[b\0e9b\0e2\x84\x83\x81Q\x81\x10b\0e#Wb\0e#b\0\xAC\xB5V[` \x02` \x01\x01Q\x88b\0\x854V[\x85b\0P\x86V[b\0e]b\0eV\x83\x83\x81Q\x81\x10b\0e#Wb\0e#b\0\xAC\xB5V[\x85b\0\x85\xFCV[\x80b\0ei\x81b\0\xAE|V[\x91PPb\0d\xA7V[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0e\xAE\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xAD V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0e\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0e\xF2\x91\x90b\0\xB8\xF4V[\x90Pb\0\x05\xB7`\x01b\0[#V[`\0b\0f\r\x83b\0z\xF7V[\x90P`\0b\0f\x1C\x84b\0\x86\tV[\x80Q\x83Q\x91\x92Pb\0f/\x91\x85b\0{{V[b\0Ik\x82` \x01Q`\x02\x81\x11\x15b\0fLWb\0fLb\0\xB8\x8EV[\x82` \x01Q`\x02\x81\x11\x15b\0feWb\0feb\0\xB8\x8EV[\x14\x84b\0P\x86V[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0f\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0f\xD4\x91\x90b\0\xAC\x85V[\x90P`\0b\0f\xE3\x82b\0}\x86V[\x90P`\0b\0f\xF2\x83b\0}\xF7V[\x90Pb\0#K\x82`\x01`\x01`\xC0\x1B\x03\x16\x82`\x01`\x01`\xC0\x1B\x03\x16\x86b\0{\xB7V[`\0b\0g \x83b\0\x7F8V[\x90P`\0b\0g/\x84b\0\x80\x82V[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0g\x8B\x83\x82\x81Q\x81\x10b\0gWWb\0gWb\0\xAC\xB5V[` \x02` \x01\x01Q`\0\x01Q\x83\x83\x81Q\x81\x10b\0gxWb\0gxb\0\xAC\xB5V[` \x02` \x01\x01Q`\0\x01Q\x86b\0{\xB7V[b\0g\xD8\x83\x82\x81Q\x81\x10b\0g\xA4Wb\0g\xA4b\0\xAC\xB5V[` \x02` \x01\x01Q` \x01Q\x83\x83\x81Q\x81\x10b\0g\xC5Wb\0g\xC5b\0\xAC\xB5V[` \x02` \x01\x01Q` \x01Q\x86b\0{\xB7V[\x80b\0g\xE4\x81b\0\xAE|V[\x91PPb\0g4V[`\0b\0g\xFB\x84\x84b\0s\x7FV[\x90P`\0b\0h\x0B\x85\x85b\0t\xC1V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0hq\x83\x82\x81Q\x81\x10b\0h3Wb\0h3b\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10b\0hYWb\0hYb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x86b\0{\xB7V[\x80b\0h}\x81b\0\xAE|V[\x91PPb\0h\x10V[`\0b\0h\x94\x84\x84b\0\x86\x9CV[\x90P`\0b\0h\xA4\x85\x85b\0\x88HV[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0h\xCC\x83\x82\x81Q\x81\x10b\0h3Wb\0h3b\0\xAC\xB5V[\x80b\0h\xD8\x81b\0\xAE|V[\x91PPb\0h\xA9V[`\0b\0h\xEE\x83b\0\x88\xD6V[\x90P`\0b\0h\xFD\x84b\0\x8A\tV[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0i%\x83\x82\x81Q\x81\x10b\0h3Wb\0h3b\0\xAC\xB5V[\x80b\0i1\x81b\0\xAE|V[\x91PPb\0i\x02V[`\0b\0iG\x83b\0\x81\xA8V[\x90P`\0b\0iV\x84b\0\x82\xD8V[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0i\xB6\x83\x82\x81Q\x81\x10b\0i~Wb\0i~b\0\xAC\xB5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0i\xA1Wb\0i\xA1b\0\xAC\xB5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x86b\0{\xB7V[\x80b\0i\xC2\x81b\0\xAE|V[\x91PPb\0i[V[`\0b\0i\xD8\x83b\0\x83eV[\x90P`\0b\0i\xE7\x84b\0\x84\xA7V[\x90P`\0\x82`@Q` \x01b\0i\xFE\x91\x90b\0\xB9\xD0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P`\0\x82`@Q` \x01b\0j+\x91\x90b\0\xB9\xD0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90Pb\0(\xD5\x82\x82\x87b\0{{V[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0j\xB5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0j\xDB\x91\x90b\0\xAC\x85V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0j\xFA\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0k\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0k>\x91\x90b\0\xB8\xA4V[\x90P`\0[\x83Q\x81\x10\x15b\0#KW`\0\x84\x82\x81Q\x81\x10b\0kdWb\0kdb\0\xAC\xB5V[` \x91\x01\x01Q`\xF8\x1C\x90Pb\0k\x8A`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x83\x1C\x81\x16\x14b\0eVV[P\x80b\0k\x97\x81b\0\xAE|V[\x91PPb\0kCV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0k\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0l\x07\x91\x90b\0\xAC\x85V[\x90P`\0b\0l\x16\x84b\0{\xF3V[\x90P`\0b\0l%\x83b\0}\x86V[\x90P`\0b\0l4\x84b\0}\xF7V[\x90Pb\0lP\x83\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x84\x14[\x86b\0P\x86V[b\0^\x8F\x82\x84\x16`\x01`\x01`\xC0\x1B\x03\x16\x15b\0lIV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0l\xA7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0l\xCD\x91\x90b\0\xB9EV[\x90P`\0b\0l\xDC\x84b\0\x7F8V[\x90P`\0b\0l\xEB\x85b\0\x80\x82V[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FW`\0b\0m b\0m\x0B\x86b\0\x8A\x96V[\x84\x84\x81Q\x81\x10b\0apWb\0apb\0\xAC\xB5V[\x90Pb\0m@\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0a\xA7Wb\0a\xA7b\0\xAC\xB5V[b\0m^\x81` \x01Q\x85\x84\x81Q\x81\x10b\0a\xD8Wb\0a\xD8b\0\xAC\xB5V[P\x80b\0mk\x81b\0\xAE|V[\x91PPb\0l\xF0V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0m\xB5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0m\xDB\x91\x90b\0\xAC\x85V[\x90P`\0[\x83Q\x81\x10\x15b\0#KW`\0\x84\x82\x81Q\x81\x10b\0n\x01Wb\0n\x01b\0\xAC\xB5V[\x01` \x01Q`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x86\x90R`\xF8\x92\x90\x92\x1C`$\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0nbW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0n\x88\x91\x90b\0\xB9zV[\x90Pb\0n\xA1\x81`\x01`\x01``\x1B\x03\x16`\0\x87b\0{\xB7V[PP\x80\x80b\0n\xB0\x90b\0\xAE|V[\x91PPb\0m\xE0V[`\0b\0n\xC7\x84\x84b\0\x88HV[\x90P`\0b\0n\xD6\x84b\0\x88\xD6V[\x90P`\0b\0n\xE5\x85b\0\x8A\tV[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FWb\0ot\x83\x82\x81Q\x81\x10b\0o\rWb\0o\rb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x85\x83\x81Q\x81\x10b\0o3Wb\0o3b\0\xAC\xB5V[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0oPWb\0oPb\0\xAC\xB5V[` \x02` \x01\x01Qb\0od\x91\x90b\0\xB6\xB2V[`\x01`\x01``\x1B\x03\x16\x87b\0{\xB7V[\x80b\0o\x80\x81b\0\xAE|V[\x91PPb\0n\xEAV[`\0b\0o\x96\x83b\0\x81\xA8V[\x90P`\0b\0o\xA5\x84b\0\x82\xD8V[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0p\x06\x83\x82\x81Q\x81\x10b\0o\xCDWb\0o\xCDb\0\xAC\xB5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16`\x01\x84\x84\x81Q\x81\x10b\0o\xF2Wb\0o\xF2b\0\xAC\xB5V[` \x02` \x01\x01Qb\0dd\x91\x90b\0\xB7?V[\x80b\0p\x12\x81b\0\xAE|V[\x91PPb\0o\xAAV[`\0b\0p(\x83b\0\x83eV[\x90P`\0b\0p7\x84b\0\x84\xA7V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0p\x94\x83\x82\x81Q\x81\x10b\0p_Wb\0p_b\0\xAC\xB5V[` \x02` \x01\x01QQ`\x01\x84\x84\x81Q\x81\x10b\0p\x7FWb\0p\x7Fb\0\xAC\xB5V[` \x02` \x01\x01QQb\0d\xFF\x91\x90b\0\xB3\xABV[b\0p\xB1b\0eV\x84\x83\x81Q\x81\x10b\0e#Wb\0e#b\0\xAC\xB5V[b\0p\xCEb\0e2\x83\x83\x81Q\x81\x10b\0e#Wb\0e#b\0\xAC\xB5V[\x80b\0p\xDA\x81b\0\xAE|V[\x91PPb\0p=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0qU\x91\x90b\0\xB9'V[\x90Pb\0\x05\xB7`\x02b\0\\\xA0V[`\0\x80b\0qr\x84\x84b\0\xB3\xABV[b\0q\x7F\x90`\x01b\0\xB3\xDCV[\x90P`\0\x81[\x80\x15b\0q\xA4W\x81b\0q\x98\x81b\0\xAE|V[\x92PP`\x01\x1Cb\0q\x85V[`\0b\0q\xB5`\x01\x80\x85\x1Bb\0\xB3\xABV[`7T\x90\x91P\x81\x16[\x84\x81\x10b\0q\xDCW\x81b\0q\xD3\x86\x83b\0\xB3\xABV[\x16\x90Pb\0q\xBEV[`7T`@Q` \x01b\0q\xF2\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0r\x19\x81\x89b\0\xB3\xDCV[\x98\x97PPPPPPPPV[b\0\x05\xB7\x83\x83\x83`\0b\0\x8BVV[`\0b\0rB\x84\x84b\0s\x7FV[\x90P`\0b\0rR\x85\x85b\0t\xC1V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0r\xBA\x82\x82\x81Q\x81\x10b\0rzWb\0rzb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x84\x83\x81Q\x81\x10b\0r\xA0Wb\0r\xA0b\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x10\x15\x85b\0P\x86V[\x80b\0r\xC6\x81b\0\xAE|V[\x91PPb\0rWV[`\0b\0r\xDD\x85\x85b\0\x8DQV[\x90P`\0b\0r\xED\x86\x86b\0\x8EyV[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FWb\0sj\x85\x82\x81Q\x81\x10b\0s\x15Wb\0s\x15b\0\xAC\xB5V[` \x02` \x01\x01Q\x83\x83\x81Q\x81\x10b\0s2Wb\0s2b\0\xAC\xB5V[` \x02` \x01\x01Qb\0sF\x91\x90b\0\xB3\xDCV[\x84\x83\x81Q\x81\x10b\0s[Wb\0s[b\0\xAC\xB5V[` \x02` \x01\x01Q\x86b\0{\xB7V[\x80b\0sv\x81b\0\xAE|V[\x91PPb\0r\xF2V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0s\x9FWb\0s\x9Fb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0s\xC9W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0T\xCEW`+T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x1F\x9Bt\xE0\x90\x86\x90\x84\x90\x81\x10b\0t\x05Wb\0t\x05b\0\xAC\xB5V[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x88\x16`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0tYW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0t\x7F\x91\x90b\0\xB9zV[\x82\x82\x81Q\x81\x10b\0t\x94Wb\0t\x94b\0\xAC\xB5V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0t\xB8\x81b\0\xAE|V[\x91PPb\0s\xCFV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0u\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0uA\x91\x90b\0\xAC\x85V[\x90Pb\0uO\x84\x84b\0s\x7FV[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0u\x97W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0u\xACW=`\0\x80>=`\0\xFD[PPPPP\x92\x91PPV[`\0b\0u\xC5\x85\x85b\0\x86\x9CV[\x90P`\0b\0u\xD5\x86\x86b\0\x88HV[\x90P`\0b\0u\xE4\x86b\0\x88\xD6V[\x90P`\0b\0u\xF3\x87b\0\x8A\tV[\x90P`\0[\x87Q\x81\x10\x15b\0v\xF3Wb\0v\x82\x85\x82\x81Q\x81\x10b\0v\x1BWb\0v\x1Bb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0vAWb\0vAb\0\xAC\xB5V[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0v^Wb\0v^b\0\xAC\xB5V[` \x02` \x01\x01Qb\0vr\x91\x90b\0\xBA^V[`\x01`\x01``\x1B\x03\x16\x88b\0{\xB7V[b\0v\xDE\x83\x82\x81Q\x81\x10b\0v\x9BWb\0v\x9Bb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0v\xC1Wb\0v\xC1b\0\xAC\xB5V[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0v^Wb\0v^b\0\xAC\xB5V[\x80b\0v\xEA\x81b\0\xAE|V[\x91PPb\0u\xF8V[PPPPPPPPPV[`\0b\0w\x0C\x84\x84b\0s\x7FV[\x90P`\0b\0w\x1C\x85\x85b\0t\xC1V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0w\x84\x82\x82\x81Q\x81\x10b\0wDWb\0wDb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x84\x83\x81Q\x81\x10b\0wjWb\0wjb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x11\x15\x85b\0P\x86V[\x80b\0w\x90\x81b\0\xAE|V[\x91PPb\0w!V[`\0b\0w\xA7\x85\x85b\0\x8DQV[\x90P`\0b\0w\xB7\x86\x86b\0\x8EyV[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FWb\0x\x10\x85\x82\x81Q\x81\x10b\0w\xDFWb\0w\xDFb\0\xAC\xB5V[` \x02` \x01\x01Q\x83\x83\x81Q\x81\x10b\0w\xFCWb\0w\xFCb\0\xAC\xB5V[` \x02` \x01\x01Qb\0sF\x91\x90b\0\xB3\xABV[\x80b\0x\x1C\x81b\0\xAE|V[\x91PPb\0w\xBCV[\x80b\0<\x8BW`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\0xz\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1b\0<\x8Bb\0\x8F\x07V[`\0b\0x\xB7`\0\x83Q\x11`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xF4\xC6`2\x919b\0P\x86V[`\0b\0x\xCF`\0`\x01\x85Qb\0S=\x91\x90b\0\xB3\xABV[\x90P\x82\x81\x81Q\x81\x10b\0x\xE6Wb\0x\xE6b\0\xAC\xB5V[\x01` \x01Q`\xF8\x1C\x93\x92PPPV[`\0\x80[\x82\x15b\0K\x08Wb\0y\r`\x01\x84b\0\xB3\xABV[\x90\x92\x16\x91\x80b\0y\x1D\x81b\0\xBA\x83V[\x91PPb\0x\xF9V[`\0b\0y2b\0\xA8DV[`>T`=T\x14\x15b\0y\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7F_fetchKeypair: not enough genera`D\x82\x01R\x7Fted keys. Check IntegrationDeplo`d\x82\x01Rn<\xB2\xB9\x171\xB7\xB79\xBA9:\xB1\xBA7\xB9`\x89\x1B`\x84\x82\x01R`\xA4\x01b\x0004V[`\0`>`=T\x81T\x81\x10b\0y\xE0Wb\0y\xE0b\0\xAC\xB5V[\x90`\0R` `\0 \x01T\x90P`\0`?`=T\x81T\x81\x10b\0z\x07Wb\0z\x07b\0\xAC\xB5V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q`\xA0\x81\x01\x82R`\x08\x93\x90\x93\x02\x90\x91\x01\x80T``\x84\x01\x90\x81R`\x01\x82\x01T`\x80\x80\x86\x01\x91\x90\x91R\x90\x84R\x82Q\x80\x84\x01\x84R`\x02\x80\x84\x01T\x82R`\x03\x84\x01T\x82\x88\x01R\x95\x85\x01R\x82Q\x90\x81\x01\x80\x84R\x93\x94\x91\x93\x85\x84\x01\x93\x91\x92`\x04\x86\x01\x92\x84\x92\x90\x83\x01\x91\x84\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0z}WPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0z\xB4WPPP\x91\x90\x92RPPP\x90RP`=\x80T\x91\x92P`\0b\0z\xE9\x83b\0\xAE|V[\x90\x91UP\x91\x94\x90\x93P\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`(T`@Qc\x16\x19q\x83`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90cXe\xC6\x0C\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0{UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0K\x08\x91\x90b\0\xBA\xA8V[\x81\x83\x14b\0\x05\xB7W`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x81`@Qb\0{\xA3\x91\x90b\0\xB7\x0EV[`@Q\x80\x91\x03\x90\xA1b\0\x05\xB7\x83\x83b\0\x90\x15V[\x81\x83\x14b\0\x05\xB7W`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x81`@Qb\0{\xDF\x91\x90b\0\xB7\x0EV[`@Q\x80\x91\x03\x90\xA1b\0\x05\xB7\x83\x83b\0\x90\xFEV[`\0a\x01\0\x82Q\x11\x15b\0|~W`@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\x01b\x0004V[\x81Qb\0|\x8DWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10b\0|\xA6Wb\0|\xA6b\0\xAC\xB5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15b\0;\xB4W\x84\x81\x81Q\x81\x10b\0|\xD8Wb\0|\xD8b\0\xAC\xB5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11b\0}oW`@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\x01b\x0004V[\x91\x81\x17\x91b\0}~\x81b\0\xAE|V[\x90Pb\0|\xB9V[`(T`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0}\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0K\x08\x91\x90b\0\xB8\xA4V[`\0\x80`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0~PW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0~v\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0}\x86V[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0~\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0~\xE0W=`\0\x80>=`\0\xFD[PPPPP\x91\x90PV[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x14b\0\x05\xB7W`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x81`@Qb\0\x7F$\x91\x90b\0\xB7\x0EV[`@Q\x80\x91\x03\x90\xA1b\0\x05\xB7\x83\x83b\0\x91\xB0V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x7FXWb\0\x7FXb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x7F\x9FW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x7FwW\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`*T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c_a\xA8\x84\x90\x86\x90\x84\x90\x81\x10b\0\x7F\xDBWb\0\x7F\xDBb\0\xAC\xB5V[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x80\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x80E\x91\x90b\0\xB9EV[\x82\x82\x81Q\x81\x10b\0\x80ZWb\0\x80Zb\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x80r\x90b\0\xAE|V[\x91PPb\0\x7F\xA5V[P\x92\x91PPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x80\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x81\x02\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0\x7F8V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x81-b\0\xA8\x94V[\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\x15b\0/\xF7WP\x80b\x000=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\x01b\x0004V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x81\xC8Wb\0\x81\xC8b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x81\xF2W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`,T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF3A\t\"\x90\x86\x90\x84\x90\x81\x10b\0\x82.Wb\0\x82.b\0\xAC\xB5V[\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\x15b\0\x82sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x82\x99\x91\x90b\0\xBA\xE3V[\x82\x82\x81Q\x81\x10b\0\x82\xAEWb\0\x82\xAEb\0\xAC\xB5V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x82\xCF\x81b\0\xAE|V[\x91PPb\0\x81\xF8V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x832W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x83X\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0\x81\xA8V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x83\x85Wb\0\x83\x85b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x83\xBAW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x83\xA4W\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`,T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90\x86\x90\x84\x90\x81\x10b\0\x83\xF6Wb\0\x83\xF6b\0\xAC\xB5V[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01RCc\xFF\xFF\xFF\xFF\x16`$\x82\x01R`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x84GW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x84q\x91\x90\x81\x01\x90b\0\xBB\x0BV[\x82\x82\x81Q\x81\x10b\0\x84\x86Wb\0\x84\x86b\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x84\x9E\x90b\0\xAE|V[\x91PPb\0\x83\xC0V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x85\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x85'\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0\x83eV[`\0\x80\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x85vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x85\x9C\x91\x90b\0\xAC\x85V[\x90P`\0[\x84Q\x81\x10\x15b\0\x85\xF1W\x81\x85\x82\x81Q\x81\x10b\0\x85\xC1Wb\0\x85\xC1b\0\xAC\xB5V[` \x02` \x01\x01Q\x14\x15b\0\x85\xDCW`\x01\x92PPPb\0K\x08V[\x80b\0\x85\xE8\x81b\0\xAE|V[\x91PPb\0\x85\xA1V[P`\0\x94\x93PPPPV[b\0>c\x82\x15\x82b\0P\x86V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`.T`@\x80Qc/\xE1\xEE\r`\xE2\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\xBF\x87\xB84\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15b\0\x86iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x86\x8F\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0z\xF7V[```\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x86\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x87\x05\x91\x90b\0\xAC\x85V[\x90P`\0\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x87%Wb\0\x87%b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x87OW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15b\0\x88?W`+T\x85Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90\x85\x90\x88\x90\x85\x90\x81\x10b\0\x87\x8DWb\0\x87\x8Db\0\xAC\xB5V[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x04\x81\x01\x92\x90\x92R`\xF8\x1C`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x87\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x87\xFD\x91\x90b\0\xB9zV[\x82\x82\x81Q\x81\x10b\0\x88\x12Wb\0\x88\x12b\0\xAC\xB5V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x886\x81b\0\xAE|V[\x91PPb\0\x87UV[P\x94\x93PPPPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x88\xA2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x88\xC8\x91\x90b\0\xAC\x85V[\x90Pb\0uO\x84\x84b\0\x86\x9CV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x88\xF6Wb\0\x88\xF6b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x89 W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`+T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xD5\xEC\xCC\x05\x90\x86\x90\x84\x90\x81\x10b\0\x89\\Wb\0\x89\\b\0\xAC\xB5V[\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\x15b\0\x89\xA1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x89\xC7\x91\x90b\0\xB9zV[\x82\x82\x81Q\x81\x10b\0\x89\xDCWb\0\x89\xDCb\0\xAC\xB5V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x8A\0\x81b\0\xAE|V[\x91PPb\0\x89&V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8AcW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8A\x89\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0\x88\xD6V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15b\0\x8A\xBCWP` \x82\x01Q\x15[\x15b\0\x8A\xDBWPP`@\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` \x01Qb\0\x8B\"\x91\x90b\0\xB3\xC5V[b\0\x8BN\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGb\0\xB3\xABV[\x90R\x92\x91PPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cp\xA0\x821`\xE0\x1B\x17\x90R\x91Q`\0\x92\x87\x16\x91b\0\x8B\xAC\x91b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x8B\xE9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x8B\xEEV[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0\x8C\n\x91\x90b\0\xAC\x85V[\x90Pb\0\x8CD\x84b\0\x8C=\x87b\0\x8C6cp\xA0\x821`\xE0\x1Bb\0\x8C/`\x0C\x8Db\0\x92\x99V[\x90b\0\x92\xBFV[\x90b\0\x92\xDDV[\x90b\0\x93\x06V[\x82\x15b\0(\xD5W`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x16\r\xDD`\xE0\x1B\x17\x90R\x90Q`\0\x91`\x01`\x01`\xA0\x1B\x03\x89\x16\x91b\0\x8C\x8F\x91\x90b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x8C\xCCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x8C\xD1V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0\x8C\xED\x91\x90b\0\xAC\x85V[\x90P\x82\x86\x10\x15b\0\x8D\x18Wb\0\x8D\x04\x86\x84b\0\xB3\xABV[b\0\x8D\x10\x90\x82b\0\xB3\xABV[\x90Pb\0\x8D3V[b\0\x8D$\x83\x87b\0\xB3\xABV[b\0\x8D0\x90\x82b\0\xB3\xDCV[\x90P[b\0`\xB7\x81b\0\x8C=c\x18\x16\r\xDD`\xE0\x1Bb\0\x8C/`\x0C\x8Db\0\x92\x99V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8DqWb\0\x8Dqb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x8D\x9BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0T\xCEW`\x1DT\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cw\x8EU\xF3\x90\x87\x90\x87\x90\x85\x90\x81\x10b\0\x8D\xD9Wb\0\x8D\xD9b\0\xAC\xB5V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x8E\0\x92\x91\x90b\0\xAD V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x8E\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8ED\x91\x90b\0\xAC\x85V[\x82\x82\x81Q\x81\x10b\0\x8EYWb\0\x8EYb\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80b\0\x8Ep\x81b\0\xAE|V[\x91PPb\0\x8D\xA1V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8E\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8E\xF9\x91\x90b\0\xAC\x85V[\x90Pb\0uO\x84\x84b\0\x8DQV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\x90\x04W`@Q`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90b\0\x8F\x7F\x90\x83\x90e\x19\x98Z[\x19Y`\xD2\x1B\x90`\x01\x90` \x01b\0\xBBCV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x8F\x9F\x92\x91` \x01b\0\xB1\x88V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x8F\xBB\x91b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\x8F\xFAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x8F\xFFV[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[\x80\x82\x14b\0>cW`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\0\x90z\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [byt`@\x82\x01Rdes32]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x82`@Qb\0\x90\xB3\x91\x90b\0\xBBdV[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x81`@Qb\0\x90\xEC\x91\x90b\0\xBB\x9DV[`@Q\x80\x91\x03\x90\xA1b\0>cb\0\x8F\x07V[\x80\x82\x14b\0>cW`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\0\x91`\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x82`@Qb\0\x91\x88\x91\x90b\0\xBBdV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x81`@Qb\0\x90\xEC\x91\x90b\0\xBB\x9DV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14b\0>cW`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\0\x92'\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [add`@\x82\x01Rdress]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x82`@Qb\0\x92`\x91\x90b\0\xBB\xC8V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x81`@Qb\0\x90\xEC\x91\x90b\0\xBC\rV[`\x05\x82\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`\0\x82b\0UmV[`\x03\x82\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16`\xE0\x83\x90\x1C\x17\x90U`\0\x82b\0UmV[`\x02\x82\x01\x80T`\x01\x81\x01\x82U`\0\x91\x82R` \x82 `\x01`\x01`\xA0\x1B\x03\x84\x16\x91\x01U\x82b\0UmV[b\0>c\x82\x82`\x05\x82\x01T`\x03\x83\x01T`\x04\x84\x01T`\x02\x85\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\x01`\x01`\xA0\x1B\x03\x90\x96\x16\x95`\xE0\x95\x90\x95\x1B\x94`\0\x93\x90\x92\x90\x91\x83\x01\x82\x82\x80\x15b\0\x93\x7FW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0\x93jW[PPPPP\x90P`\0\x83b\0\x93\x94\x83b\0\x96\x84V[`@Q` \x01b\0\x93\xA7\x92\x91\x90b\0\xB1\x88V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x01\x8B\x01` \x90\x81R\x83\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x83R\x81R\x92\x81 \x91\x94P\x90\x92\x90\x91b\0\x93\xFB\x91\x86\x91\x88\x91\x01b\0\xBC8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\x946Wb\0\x944\x87b\0\x970V[P[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R` \x88\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x88\x16\x84R\x82R\x80\x83 \x90Q\x90\x91\x83\x91b\0\x94w\x91\x87\x91\x89\x91\x01b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T`\0\x1B\x90P`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qb\0\x94\xBE\x91\x90b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x94\xFBW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x95\0V[``\x91P[P\x91Pb\0\x95\x1D\x90P\x81b\0\x95\x17\x88` b\0\xBCtV[b\0\x97=V[`@Qc\x06g\xF9\xD7`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x95\x84W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x95\xAA\x91\x90b\0\xAC\x85V[\x90P\x80\x82\x14b\0\x95\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\x0004\x90b\0\xBC\x96V[`@Qcp\xCA\x10\xBB`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cp\xCA\x10\xBB\x90b\0\x96\x0B\x90\x8B\x90\x87\x90\x8E\x90`\x04\x01b\0\xBBCV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x96&W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x96;W=`\0\x80>=`\0\xFD[PPP`\x05\x8B\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UP`\x03\x8A\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\x96p`\x02\x8B\x01`\0b\0\xA8\xB2V[\x89`\x04\x01`\0\x90UPPPPPPPPPPV[```\0\x82Q` b\0\x96\x98\x91\x90b\0\xBCtV[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x96\xB2Wb\0\x96\xB2b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\x96\xDDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`\0\x84\x82\x81Q\x81\x10b\0\x97\x04Wb\0\x97\x04b\0\xAC\xB5V[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\x97'\x90b\0\xAE|V[\x91PPb\0\x96\xE3V[`\0b\0K\x08\x82b\0\x97\xBDV[`\0\x80`\0` \x85Q\x11b\0\x97TW\x84Qb\0\x97WV[` [\x90P`\0[\x81\x81\x10\x15b\0R\xCFWb\0\x97r\x81`\x08b\0\xBCtV[\x86b\0\x97\x7F\x83\x88b\0\xB3\xDCV[\x81Q\x81\x10b\0\x97\x92Wb\0\x97\x92b\0\xAC\xB5V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0\x97\xB4\x81b\0\xAE|V[\x91PPb\0\x97\\V[`\x05\x81\x01T`\x03\x82\x01T`\x04\x83\x01T`\x02\x84\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\0\x96`\x01`\x01`\xA0\x1B\x03\x16\x95`\xE0\x1B\x94\x93\x87\x93\x91\x92\x90\x91\x90\x83\x01\x82\x82\x80\x15b\0\x98/W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0\x98\x1AW[PPP`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x95\x96P\x94\x91\x93Pb\0\x98{\x92P\x85\x91\x87\x91\x01b\0\xBC8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16\x15b\0\x99\x1AW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R` \x87\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x87\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\x98\xEA\x91\x85\x91\x87\x91\x01b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x94PPPPP\x91\x90PV[`\0\x83b\0\x99(\x83b\0\xA4\xF7V[`@Q` \x01b\0\x99;\x92\x91\x90b\0\xB1\x88V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` b\x03\xF9\x8A\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c&l\xF1\t`@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\x99\x9AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x99\xAFW=`\0\x80>=`\0\xFD[PPPP`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qb\0\x99\xD0\x91\x90b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x9A\rW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x9A\x12V[``\x91P[P\x91Pb\0\x9A/\x90P\x81b\0\x9A)\x87` b\0\xBCtV[b\0\xA5\xA3V[`@Qce\xBC\x94\x81`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16`\x04\x82\x01R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ce\xBC\x94\x81\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x9A\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x9A\xBB\x91\x90\x81\x01\x90b\0\xBD1V[P\x90P\x80Q`\x01\x14\x15b\0\x9D\x9DW`\0`\0\x80Q` b\x03\xF9\x8A\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cf\x7F\x9Dp\x89\x84`\0\x81Q\x81\x10b\0\x9B\x03Wb\0\x9B\x03b\0\xAC\xB5V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x9B=\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x9B[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x9B\x81\x91\x90b\0\xAC\x85V[\x90P\x80b\0\x9B\xECW\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x9El\x91\x90b\0\xAC\x85V[\x90P\x80b\0\x9E\xD6W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`\0``\x8B`\x01`\x01`\xA0\x1B\x03\x16\x88`@Qb\0\x9F\x98\x91\x90b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x9F\xD5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x9F\xDAV[``\x91P[P\x90\x92P\x90Pb\0\x9F\xF2\x81b\0\x9A)\x8C` b\0\xBCtV[\x96PP\x80\x80\x15b\0\xA0\x02WP\x81\x86\x14[\x15b\0\xA2UW\x7F\x9C\x95U\xB1\xE3\x10.<\xF4\x8FB}y\xCBg\x8F]\x9B\xD1\xED\n\xD5t8\x94a\xE2U\xF9Qp\xED\x8B\x8B\x8A\x8C`@Q` \x01b\0\xA0@\x92\x91\x90b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x88\x88\x81Q\x81\x10b\0\xA0kWb\0\xA0kb\0\xAC\xB5V[` \x02` \x01\x01Q`\0\x1C`@Qb\0\xA0\x88\x94\x93\x92\x91\x90b\0\xBD\x82V[`@Q\x80\x91\x03\x90\xA1\x84\x84\x81Q\x81\x10b\0\xA0\xA5Wb\0\xA0\xA5b\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x8D\x16`\0\x90\x81R\x8F\x83R`@\x80\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8F\x16\x83R\x84R\x80\x82 \x90Q\x92\x93\x90\x92b\0\xA0\xF0\x91\x8D\x91\x8F\x91\x01b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 \x81\x90UP`\x01\x8D`\x01\x01`\0\x8D`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8C`\x01`\x01`\xE0\x1B\x03\x19\x16`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8A\x8C`@Q` \x01b\0\xA1}\x92\x91\x90b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\0\x80Q` b\x03\xF9\x8A\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\xA1\xEFWb\0\xA1\xEFb\0\xAC\xB5V[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA2\x18\x93\x92\x91\x90b\0\xBBCV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\xA23W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\xA2HW=`\0\x80>=`\0\xFD[PPPPPPPb\0\xA3\x02V[`\0\x80Q` b\x03\xF9\x8A\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\xA2\x8CWb\0\xA2\x8Cb\0\xAC\xB5V[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA2\xB5\x93\x92\x91\x90b\0\xBBCV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\xA2\xD0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\xA2\xE5W=`\0\x80>=`\0\xFD[PPPPPPP[\x80b\0\xA2\xF9\x81b\0\xAE|V[\x91PPb\0\x9D\xABV[Pb\0\xA3zV[`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FstdStorage find(StdStorage): No `D\x82\x01R\x7Fstorage use detected for target.`d\x82\x01R`\x84\x01b\x0004V[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\xA3\xBE\x91\x88\x91\x8A\x91\x01b\0\xBC8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\xA4MW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FstdStorage find(StdStorage): Slo`D\x82\x01Rn:\x149\x94\x9077\xBA\x1037\xBA\xB72\x17`\x89\x1B`d\x82\x01R`\x84\x01b\x0004V[`\x05\x89\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`\x03\x89\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\xA4~`\x02\x8A\x01`\0b\0\xA8\xB2V[`\0`\x04\x8A\x01\x81\x90U`\x01`\x01`\xA0\x1B\x03\x88\x16\x81R` \x8A\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\xA4\xC4\x91\x88\x91\x8A\x91\x01b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x97PPPPPPPP\x91\x90PV[```\0\x82Q` b\0\xA5\x0B\x91\x90b\0\xBCtV[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\xA5%Wb\0\xA5%b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\xA5PW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`\0\x84\x82\x81Q\x81\x10b\0\xA5wWb\0\xA5wb\0\xAC\xB5V[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\xA5\x9A\x90b\0\xAE|V[\x91PPb\0\xA5VV[`\0\x80`\0` \x85Q\x11b\0\xA5\xBAW\x84Qb\0\xA5\xBDV[` [\x90P`\0[\x81\x81\x10\x15b\0R\xCFWb\0\xA5\xD8\x81`\x08b\0\xBCtV[\x86b\0\xA5\xE5\x83\x88b\0\xB3\xDCV[\x81Q\x81\x10b\0\xA5\xF8Wb\0\xA5\xF8b\0\xAC\xB5V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0\xA6\x1A\x81b\0\xAE|V[\x91PPb\0\xA5\xC2V[a\x07\x18\x80b\0\xBD\xB3\x839\x01\x90V[a\x07x\x80b\0\xC4\xCB\x839\x01\x90V[`\x94\x80b\0\xCCC\x839\x01\x90V[a\x02*\x80b\0\xCC\xD7\x839\x01\x90V[a\x03\xF3\x80b\0\xCF\x01\x839\x01\x90V[a\x0E\x81\x80b\0\xD2\xF4\x839\x01\x90V[aJ\xD0\x80b\0\xE1u\x839\x01\x90V[a\x04\xE4\x80b\x01,E\x839\x01\x90V[a\\F\x80b\x011)\x839\x01\x90V[a3\x8A\x80b\x01\x8Do\x839\x01\x90V[a\x0E\xFE\x80b\x01\xC0\xF9\x839\x01\x90V[a1i\x80b\x01\xCF\xF7\x839\x01\x90V[a\x1Fx\x80b\x02\x01`\x839\x01\x90V[a\x1A\xB4\x80b\x02 \xD8\x839\x01\x90V[a\x11}\x80b\x02;\x8C\x839\x01\x90V[a9X\x80b\x02M\t\x839\x01\x90V[a!\x0B\x80b\x02\x86a\x839\x01\x90V[a\x13\xEC\x80b\x02\xA7l\x839\x01\x90V[a\x16\xE0\x80b\x02\xBBX\x839\x01\x90V[aa\x87\x80b\x02\xD28\x839\x01\x90V[a\x1A%\x80b\x033\xBF\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0\xA7]b\0\xA8\xD2V[\x81R` \x01b\0\xA7lb\0\xA8\xD2V[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x82\x80Tb\0\xA7\x9D\x90b\0\xAC9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\xA7\xC1W`\0\x85Ub\0\xA8\x0CV[\x82`\x1F\x10b\0\xA7\xDCW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\xA8\x0CV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\xA8\x0CW\x91\x82\x01[\x82\x81\x11\x15b\0\xA8\x0CW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\xA7\xEFV[Pb\0Q\xFA\x92\x91Pb\0\xA8\xF0V[a\x0E`\x80b\x03M\xE4\x839\x01\x90V[aF\xF4\x80b\x03\\D\x839\x01\x90V[aP\x13\x80b\x03\xA38\x839\x01\x90V[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\xA8\x85`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\xA7lb\0\xA7HV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90b\0<\x8B\x91\x90b\0\xA8\xF0V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0Q\xFAW`\0\x81U`\x01\x01b\0\xA8\xF1V[`\0` \x82\x84\x03\x12\x15b\0\xA9\x1AW`\0\x80\xFD[\x815b\xFF\xFF\xFF\x81\x16\x81\x14b\0UmW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15b\0\xA9AW`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15b\0IkW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01b\0\xA9LV[b\0\xA9z\x82\x82Qb\0\xA9HV[` \x81\x01Qb\0\x05\xB7`@\x84\x01\x82b\0\xA9HV[`\x80\x81\x01b\0K\x08\x82\x84b\0\xA9mV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0\xA9\xD9W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0\xA9\xB2V[P\x94\x95\x94PPPPPV[` \x81R`\0b\0Um` \x83\x01\x84b\0\xA9\x9EV[`\0[\x83\x81\x10\x15b\0\xAA\x16W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\xA9\xFCV[\x83\x81\x11\x15b\0IkWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Rb\0\xAAB\x81` \x86\x01` \x86\x01b\0\xA9\xF9V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0\xAB\x0CW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0\xAA\xF5W`_\x19\x89\x85\x03\x01\x83Rb\0\xAA\xE2\x84\x86Qb\0\xAA(V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0\xAA\xC3V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0\xAA}V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0\xAB\xC4W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0\xAB\xAEW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0\xAB\x82V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0\xABDV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0\xAC,W`?\x19\x88\x86\x03\x01\x84Rb\0\xAC\x19\x85\x83Qb\0\xAA(V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0\xAB\xFAV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\xACNW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0P\x80WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[` \x81R`\0b\0Um` \x83\x01\x84b\0\xAA(V[`\0` \x82\x84\x03\x12\x15b\0\xAC\x98W`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0\xAC\xE0`@\x83\x01\x85b\0\xA9\x9EV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90\x82\x01R`\x80\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0\xA9\xD9W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0\xADNV[`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x82R\x86\x16` \x82\x01R`\xFF\x85\x16`@\x82\x01R``\x81\x01\x84\x90R`\xC0`\x80\x82\x01\x81\x90R`\0\x90b\0\xAD\xAA\x90\x83\x01\x85b\0\xA9\x9EV[\x82\x81\x03`\xA0\x84\x01Rb\0\xAD\xBE\x81\x85b\0\xAD:V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0\xAD\xF9\x90\x83\x01\x84b\0\xAA(V[\x95\x94PPPPPV[l)\xBA90\xBA2\xB3\xBC\xAA7\xB5\xB2\xB7`\x99\x1B\x81R`\0\x82Qb\0\xAE,\x81`\r\x85\x01` \x87\x01b\0\xA9\xF9V[\x91\x90\x91\x01`\r\x01\x92\x91PPV[b\x14\xD5\x15`\xEA\x1B\x81R`\0\x82Qb\0\xAEY\x81`\x03\x85\x01` \x87\x01b\0\xA9\xF9V[\x91\x90\x91\x01`\x03\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15b\0\xAE\x93Wb\0\xAE\x93b\0\xAEfV[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0\xA9\xD9W\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0\xAE\xAEV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0\xA9\xD9W\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x88R\x83\x01Q`\x01`\x01``\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01b\0\xAE\xE9V[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15b\0\xAFpW\x82\x84\x03\x89Rb\0\xAF]\x84\x83Qb\0\xAE\xD5V[\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01b\0\xAFBV[P\x91\x97\x96PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x89\x81\x16\x82R\x88\x81\x16` \x80\x84\x01\x91\x90\x91R\x88\x82\x16`@\x84\x01R\x90\x87\x16``\x80\x84\x01\x91\x90\x91R`\xFF\x87\x16`\x80\x84\x01Ra\x01\0`\xA0\x84\x01\x81\x90R\x86Q\x90\x84\x01\x81\x90R`\0\x92a\x01 \x85\x01\x92\x88\x82\x01\x92\x91\x90\x85[\x83\x81\x10\x15b\0\xB0 Wb\0\xB0\x0F\x86\x86Q\x80Qc\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Qa\xFF\xFF\x90\x81\x16\x91\x84\x01\x91\x90\x91R`@\x91\x82\x01Q\x16\x91\x01RV[\x94\x81\x01\x94\x93\x82\x01\x93`\x01\x01b\0\xAF\xD6V[PPPPP\x82\x81\x03`\xC0\x84\x01Rb\0\xB09\x81\x86b\0\xAE\x9AV[\x90P\x82\x81\x03`\xE0\x84\x01Rb\0\xB0O\x81\x85b\0\xAF$V[\x9B\x9APPPPPPPPPPPV[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\xB0\x83Wb\0\xB0\x83b\0\xAC\x9FV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\xB0\xB4Wb\0\xB0\xB4b\0\xAC\x9FV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15b\0\xB0\xD8Wb\0\xB0\xD8b\0\xAC\x9FV[b\0\xB0\xED`\x1F\x84\x01`\x1F\x19\x16` \x01b\0\xB0\x89V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15b\0\xB1\x02W`\0\x80\xFD[b\0Um\x83` \x83\x01\x84b\0\xA9\xF9V[`\0` \x82\x84\x03\x12\x15b\0\xB1%W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\xB1a\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003operator should no longer have stake in any quorumsoperator already has bits in quorum bitmapoperator list should not have changedoperator counts should not have changedA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPcurrent operator bitmap should not include quorumsoperator list should have one fewer entry_configRand: invalid fillTypes, no flags passedoperator already has a registered pubkey_randValue: tried to select value from empty arraytotal operator count should have increased for each quorum_configRand: invalid minimumStake, no flags passedweights should have been added to operator and total stakes(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83operatorInfo should have operatorId_configRand: invalid numStrategies, no flags passedoperator weight should not have decreased after depositoperator list should be unchanged for each quorumoperator list should have one more entryoperator weight should not have increased after depositupdateOperators should not effect operator weight calculationtotal operator count should be unchanged for each quorumoperator should have empty id and NEVER_REGISTERED statusfailed to add operator weight to operator and total stake in each quorumtotal operator count should have decreased for each quorumoperator info should not have changedoperators quorum bitmap should not have changed_configRand: invalid _userTypes, no flags passedoperator should still have a registered pubkeyoperatorInfo status should be DEREGISTEREDoperator pubkey should have been added to each quorum apkoperator pubkey should have been subtracted from each quorum apkoperatorInfo should still have operatorId\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_newRandomOperator: operator should be registeredoperator should have registered a pubkey_configRand: invalid numQuorums, no flags passedoperator should have additional stakeoperator did not deregister from all quorumsoperator weight should be unchangedoperator stake should be unchangedquorum apks should not have changed\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8operator should have reduced stakefailed to remove operator weight from total stake for each quorumoperator did not register for all quorumsoperator should not have any bits in bitmapcurrent operator bitmap should include quorumsoperator should have at least the minimum stake in each quorumoperatorInfo status should be REGISTEREDoperator should be registered to AVSoperator should not be registered to the AVS\xA2dipfsX\"\x12 \x059\x97\xF7)\xD7\xB8\xDF\x98\x85\xE6\xAE\xB2!\xDD\x19\xD1)x\x1C\xC1\xFF\x94\xB5'\x1E\xF2\xAE\x13P8dsolcC\0\x08\x0C\x003\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060043610620001755760003560e01c80636b3aa72e11620000d3578063b5508aa91162000086578063b5508aa9146200030d578063ba414fa61462000317578063e20c9f711462000332578063e389bbb3146200033c578063fa7626d41462000353578063fe0ea5f1146200036157600080fd5b80636b3aa72e14620002975780636d14a98714620002ab57806385226c8114620002bf578063916a17c614620002d85780639d8b9cb414620002e2578063b27b5ab514620002f657600080fd5b80632dbcb04c116200012c5780632dbcb04c14620002265780633dfb40e0146200023f5780633e5e3c2314620002535780633f7286f4146200025d5780634f9229bb146200026757806366d9a9a0146200027e57600080fd5b8063054310e6146200017a578063096c2fc014620001ab5780630a9254e414620001c4578063131e2f1814620001ce5780631ed7831c14620001f45780632ade3880146200020d575b600080fd5b6035546200018e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001c2620001bc3660046200a907565b62000378565b005b620001c2620005bc565b620001e5620001df3660046200a92e565b620019bc565b604051620001a291906200a98e565b620001fe62001e72565b604051620001a291906200a9e4565b6200021762001ed6565b604051620001a291906200aa56565b6200023060345481565b604051908152602001620001a2565b602e546200018e906001600160a01b031681565b620001fe62002024565b620001fe62002086565b620001c2620002783660046200a907565b620020e8565b6200028862002352565b604051620001a291906200ab1c565b601e546200018e906001600160a01b031681565b6028546200018e906001600160a01b031681565b620002c96200243c565b604051620001a291906200abd3565b6200028862002516565b6033546200018e906001600160a01b031681565b620001c2620003073660046200a907565b62002600565b620002c9620028dd565b62000321620029b7565b6040519015158152602001620001a2565b620001fe62002aee565b620001c26200034d3660046200a907565b62002b50565b600754620003219060ff1681565b620001c2620003723660046200a907565b62002d35565b6040805160808101825260078082526020820152600291810191909152600360608201819052620003ac9183919062003162565b6000620003b862003a04565b9050600060428054620003cb906200ac39565b80601f0160208091040260200160405190810160405280929190818152602001828054620003f9906200ac39565b80156200044a5780601f106200041e576101008083540402835291602001916200044a565b820191906000526020600020905b8154815290600101906020018083116200042c57829003601f168201915b505050505090506200045c8262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c906200048a9084906004016200ac70565b6020604051808303816000875af1158015620004aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d091906200ac85565b50620004dd828262003c8e565b816001600160a01b031663505377e26040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200051957600080fd5b505af11580156200052e573d6000803e3d6000fd5b505050506200053e828262003e67565b60405163ca4f2d9760e01b81526001600160a01b0383169063ca4f2d97906200056c9084906004016200ac70565b600060405180830381600087803b1580156200058757600080fd5b505af11580156200059c573d6000803e3d6000fd5b50505050620005ac828262003fee565b620005b7826200417b565b505050565b604051620005ca906200a623565b604051809103906000f080158015620005e7573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b816000815181106200064357620006436200acb5565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c60405162000675906200a631565b620006829291906200accb565b604051809103906000f0801580156200069f573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620006d1906200a63f565b604051809103906000f080158015620006ee573d6000803e3d6000fd5b509050604051620006ff906200a64c565b604051809103906000f0801580156200071c573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03929092169190911790556040516200074b906200a65a565b604051809103906000f08015801562000768573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200079d906200a668565b620007aa9291906200acf7565b604051809103906000f080158015620007c7573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620007fc906200a668565b620008099291906200acf7565b604051809103906000f08015801562000826573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200085b906200a668565b620008689291906200acf7565b604051809103906000f08015801562000885573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620008ba906200a668565b620008c79291906200acf7565b604051809103906000f080158015620008e4573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000919906200a668565b620009269291906200acf7565b604051809103906000f08015801562000943573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039283161790556025546020546040519183169216906407735940009062000981906200a676565b6001600160a01b0393841681529290911660208301526001600160401b03166040820152606001604051809103906000f080158015620009c5573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620009f3906200a684565b6001600160a01b039091168152602001604051809103906000f08015801562000a20573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f546022546020546040516000949384169392831692919091169062000a64906200a692565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000aa1573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b0393841693928316929091169062000ad3906200a6a0565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000b10573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b03928316929091169062000b3b906200a6ae565b62000b489291906200ad20565b604051809103906000f08015801562000b65573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b03958616959485169493841693928316929091169062000ba5906200a6bc565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000bf1573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b039091169062000c15906200a6ca565b6001600160a01b039091168152602001604051809103906000f08015801562000c42573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b9362000ca8939183169216908b8b8b606482016200ad6c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000cf19392916004016200adcb565b600060405180830381600087803b15801562000d0c57600080fd5b505af115801562000d21573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000db49391909216918c916004016200adcb565b600060405180830381600087803b15801562000dcf57600080fd5b505af115801562000de4573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000e709391909216918b916004016200adcb565b600060405180830381600087803b15801562000e8b57600080fd5b505af115801562000ea0573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000f36939116918a916004016200adcb565b600060405180830381600087803b15801562000f5157600080fd5b505af115801562000f66573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000ff293919092169189916004016200adcb565b600060405180830381600087803b1580156200100d57600080fd5b505af115801562001022573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200104391506200a6d8565b6001600160a01b039091168152602001604051809103906000f08015801562001070573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562001136576000620010ab8262003045565b9050600081604051602001620010c291906200ae02565b6040516020818303038152906040529050600082604051602001620010e891906200ae39565b60405160208183030381529060405290506200111d82827502ac3a4edbbfb8014e3ba83411e915e8000000000000306200422b565b50505080806200112d906200ae7c565b91505062001094565b5060405162001145906200a6e6565b604051809103906000f08015801562001162573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b158015620011c157600080fd5b505af1158015620011d6573d6000803e3d6000fd5b50506031546040518c93506001600160a01b039091169150620011f9906200a668565b620012069291906200acf7565b604051809103906000f08015801562001223573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062001258906200a668565b620012659291906200acf7565b604051809103906000f08015801562001282573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620012b7906200a668565b620012c49291906200acf7565b604051809103906000f080158015620012e1573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062001316906200a668565b620013239291906200acf7565b604051809103906000f08015801562001340573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062001375906200a668565b620013829291906200acf7565b604051809103906000f0801580156200139f573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b158015620013fb57600080fd5b505af115801562001410573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b0392831693509116906200143a906200a6f4565b620014479291906200ad20565b604051809103906000f08015801562001464573d6000803e3d6000fd5b506028546040519192506000916001600160a01b039091169062001488906200a702565b6001600160a01b039091168152602001604051809103906000f080158015620014b5573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620014d9906200a710565b6001600160a01b039091168152602001604051809103906000f08015801562001506573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b0393841693928316929091169062001538906200a71e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562001575573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81529293506001600160a01b03918216926399a88ec492620015b092169088906004016200ad20565b600060405180830381600087803b158015620015cb57600080fd5b505af1158015620015e0573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200161d929091169087906004016200ad20565b600060405180830381600087803b1580156200163857600080fd5b505af11580156200164d573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200168a929091169086906004016200ad20565b600060405180830381600087803b158015620016a557600080fd5b505af1158015620016ba573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0392831694506399a88ec49350620016f7929091169085906004016200ad20565b600060405180830381600087803b1580156200171257600080fd5b505af115801562001727573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b1580156200177557600080fd5b505af11580156200178a573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b0394851695509284169391821692911690620017c2906200a72c565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001807573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b969082169590821694908216939116918162001892565b6040805160608101825260008082526020808301829052928201528252600019909201910181620018645790505b5060408051600080825260208201818152828401909352909190620018c8565b6060815260200190600190039081620018b25790505b50604051602401620018e29897969594939291906200af7d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b90921682526200192b9392916004016200adcb565b600060405180830381600087803b1580156200194657600080fd5b505af11580156200195b573d6000803e3d6000fd5b505050506040516200196d906200a73a565b604051809103906000f0801580156200198a573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b620019c66200a748565b60408051600580825260c08201909252600091816020015b6060815260200190600190039081620019de57905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062001a275762001a276200acb5565b602002602001018190525060405180604001604052806003815260200162393ab760e91b8152508160018151811062001a645762001a646200acb5565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b8152508160028151811062001ab25762001ab26200acb5565b602002602001018190525062001ac88362003045565b8160038151811062001ade5762001ade6200acb5565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062001b195762001b196200acb5565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b609085906004016200abd3565b6000604051808303816000875af115801562001b80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001baa91908101906200b112565b90508080602001905181019062001bc291906200ac85565b83516001602002018181525050604051806040016040528060018152602001601960f91b8152508260048151811062001bff5762001bff6200acb5565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001c439085906004016200abd3565b6000604051808303816000875af115801562001c63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c8d91908101906200b112565b90508080602001905181019062001ca591906200ac85565b8351526040805180820190915260018152603360f81b602082015282518390600490811062001cd85762001cd86200acb5565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001d1c9085906004016200abd3565b6000604051808303816000875af115801562001d3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d6691908101906200b112565b90508080602001905181019062001d7e91906200ac85565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001dbe5762001dbe6200acb5565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001e029085906004016200abd3565b6000604051808303816000875af115801562001e22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e4c91908101906200b112565b90508080602001905181019062001e6491906200ac85565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001ecc57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001ead575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200201b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200200357838290600052602060002001805462001f6f906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462001f9d906200ac39565b801562001fee5780601f1062001fc25761010080835404028352916020019162001fee565b820191906000526020600020905b81548152906001019060200180831162001fd057829003601f168201915b50505050508152602001906001019062001f4d565b50505050815250508152602001906001019062001efa565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001ecc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001ead575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001ecc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001ead575050505050905090565b60408051608081018252600780825260208201526002918101919091526003606082018190526200211c9183919062003162565b60006200212862003a04565b90506000604280546200213b906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002169906200ac39565b8015620021ba5780601f106200218e57610100808354040283529160200191620021ba565b820191906000526020600020905b8154815290600101906020018083116200219c57829003601f168201915b50505050509050620021cc8262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c90620021fa9084906004016200ac70565b6020604051808303816000875af11580156200221a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200224091906200ac85565b506200224d828262003c8e565b6000806200225b8462004557565b604051630da66deb60e31b815291935091506001600160a01b03851690636d336f58906200229090859085906004016200b15f565b600060405180830381600087803b158015620022ab57600080fd5b505af1158015620022c0573d6000803e3d6000fd5b50505050620022d284848484620047c7565b60405163ca4f2d9760e01b81526001600160a01b0385169063ca4f2d9790620023009086906004016200ac70565b600060405180830381600087803b1580156200231b57600080fd5b505af115801562002330573d6000803e3d6000fd5b5050505062002340848462003fee565b6200234b846200417b565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200201b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200242357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023e45790505b5050505050815250508152602001906001019062002376565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200201b57838290600052602060002001805462002482906200ac39565b80601f0160208091040260200160405190810160405280929190818152602001828054620024b0906200ac39565b8015620025015780601f10620024d55761010080835404028352916020019162002501565b820191906000526020600020905b815481529060010190602001808311620024e357829003601f168201915b50505050508152602001906001019062002460565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200201b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620025e757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620025a85790505b505050505081525050815260200190600101906200253a565b6040805160808101825260078082526020820152600291810191909152600360608201819052620026349183919062003162565b60006200264062003a04565b905060006042805462002653906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002681906200ac39565b8015620026d25780601f10620026a657610100808354040283529160200191620026d2565b820191906000526020600020905b815481529060010190602001808311620026b457829003601f168201915b50505050509050620026e48262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c90620027129084906004016200ac70565b6020604051808303816000875af115801562002732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200275891906200ac85565b5062002765828262003c8e565b600080620027738462004557565b604051630da66deb60e31b815291935091506001600160a01b03851690636d336f5890620027a890859085906004016200b15f565b600060405180830381600087803b158015620027c357600080fd5b505af1158015620027d8573d6000803e3d6000fd5b50505050620027ea84848484620047c7565b6000620027f8858562004971565b9050846001600160a01b031663505377e26040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200283657600080fd5b505af11580156200284b573d6000803e3d6000fd5b505050506200285c85858362004b0e565b60405163ca4f2d9760e01b81526001600160a01b0386169063ca4f2d97906200288a9087906004016200ac70565b600060405180830381600087803b158015620028a557600080fd5b505af1158015620028ba573d6000803e3d6000fd5b50505050620028ca858562003fee565b620028d5856200417b565b505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200201b57838290600052602060002001805462002923906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002951906200ac39565b8015620029a25780601f106200297657610100808354040283529160200191620029a2565b820191906000526020600020905b8154815290600101906020018083116200298457829003601f168201915b50505050508152602001906001019062002901565b600754600090610100900460ff1615620029da5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002ae95760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002a6b917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200b188565b60408051601f198184030181529082905262002a87916200b1bb565b6000604051808303816000865af19150503d806000811462002ac6576040519150601f19603f3d011682016040523d82523d6000602084013e62002acb565b606091505b509150508080602001905181019062002ae591906200b1d9565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001ecc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001ead575050505050905090565b604080516080810182526007808252602082015260029181019190915260036060820181905262002b849183919062003162565b600062002b9062003a04565b905060006042805462002ba3906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002bd1906200ac39565b801562002c225780601f1062002bf65761010080835404028352916020019162002c22565b820191906000526020600020905b81548152906001019060200180831162002c0457829003601f168201915b5050505050905062002c348262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c9062002c629084906004016200ac70565b6020604051808303816000875af115801562002c82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ca891906200ac85565b5062002cb5828262003c8e565b600080836001600160a01b03166365eda8e56040518163ffffffff1660e01b81526004016000604051808303816000875af115801562002cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d2391908101906200b2ac565b91509150620022d28484848462004ca0565b604080516080810182526007808252602082015260029181019190915260036060820181905262002d699183919062003162565b600062002d7562003a04565b905060006042805462002d88906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462002db6906200ac39565b801562002e075780601f1062002ddb5761010080835404028352916020019162002e07565b820191906000526020600020905b81548152906001019060200180831162002de957829003601f168201915b5050505050905062002e198262003bbd565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c9062002e479084906004016200ac70565b6020604051808303816000875af115801562002e67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e8d91906200ac85565b5062002e9a828262003c8e565b600080836001600160a01b03166365eda8e56040518163ffffffff1660e01b81526004016000604051808303816000875af115801562002ede573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f0891908101906200b2ac565b9150915062002f1a8484848462004ca0565b836001600160a01b031663505377e26040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002f5657600080fd5b505af115801562002f6b573d6000803e3d6000fd5b505050506200234b848462004e45565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b604080518082019091526000808252602082015262002fc26200a771565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801562002ff75762002ff9565bfe5b50806200303d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b6060816200306a5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200309a578062003081816200ae7c565b9150620030929050600a836200b394565b91506200306e565b6000816001600160401b03811115620030b757620030b76200ac9f565b6040519080825280601f01601f191660200182016040528015620030e2576020820181803683370190505b5090505b84156200315a57620030fa6001836200b3ab565b915062003109600a866200b3c5565b620031169060306200b3dc565b60f81b8183815181106200312e576200312e6200acb5565b60200101906001600160f81b031916908160001a90535062003152600a866200b394565b9450620030e6565b949350505050565b60408051818152601f818301527f5f636f6e66696752616e643a207365742072616e646f6d207365656420746f00606082015262ffffff8516602082015290516000805160206203faec8339815191529181900360800190a16040516001600160e81b031960e885901b16602082015260230160408051601f198184030181529190528051602090910120603755620031fb8262005022565b805162003211916038916020909101906200a78f565b5080516200321f9062005022565b805162003235916039916020909101906200a78f565b5062003245816020015162005022565b80516200325b91603a916020909101906200a78f565b506200326b816040015162005022565b80516200328191603b916020909101906200a78f565b5062003291816060015162005022565b8051620032a791603c916020909101906200a78f565b50620032e160388054620032bb906200ac39565b9050600014156040518060600160405280603081526020016203f8606030913962005086565b6200331a60398054620032f4906200ac39565b9050600014156040518060600160405280603081526020016203fa036030913962005086565b62003353603a80546200332d906200ac39565b9050600014156040518060600160405280603381526020016203f5e26033913962005086565b6200338c603b805462003366906200ac39565b9050600014156040518060600160405280603281526020016203f5326032913962005086565b620033c5603c80546200339f906200ac39565b9050600014156040518060600160405280602f81526020016203f46f602f913962005086565b620033cf620050bf565b6040819055620033e59060019081901b6200b3ab565b604180546001600160c01b0319166001600160c01b039290921691821790556200340f90620051fe565b805162003425916042916020909101906200a78f565b506040805481518281526030928101929092527f5f636f6e66696752616e643a206e756d626572206f662071756f72756d73206260608301526f195a5b99c81a5b9a5d1a585b1a5e995960821b608083015260208201526000805160206203faec8339815191529060a00160405180910390a16040805160608101825260058152613a98602082015260969181019190915260005b60405481101562003737576000620034d1620052d9565b90506000620034df620054d6565b90506000805160206203faec833981519152836040516200353a91906040808252601c908201527f5f636f6e66696752616e643a206372656174696e672071756f72756d000000006060820152602081019190915260800190565b60405180910390a183516040516000805160206203faec8339815191529162003599916040808252601490820152730b4813585e081bdc195c985d1bdc8818dbdd5b9d60621b606082015263ffffffff91909116602082015260800190565b60405180910390a16000805160206203faec8339815191528251604051620035fb91906040808252601b908201527f2d204e756d207374726174656769657320636f6e7369646572656400000000006060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e2d204d696e696d756d207374616b6560881b60608201526001600160601b038316602082015290516000805160206203faec8339815191529181900360800190a1601c5460335460405163ca669fa760e01b81526001600160a01b03918216600482015291169063ca669fa790602401600060405180830381600087803b1580156200369c57600080fd5b505af1158015620036b1573d6000803e3d6000fd5b5050602854604051631aeb699160e31b81526001600160a01b03909116925063d75b4c889150620036eb908790859087906004016200b3f7565b600060405180830381600087803b1580156200370657600080fd5b505af11580156200371b573d6000803e3d6000fd5b50505050505080806200372e906200ae7c565b915050620034ba565b506000620037458262005514565b90506000805160206203f3f4833981519152620037628262003045565b6040516020016200377491906200b44d565b60408051601f198184030181529082905262003790916200ac70565b60405180910390a160005b81811015620038fa576000620037b062003a04565b60405163208c6d5360e21b81529091506001600160a01b03821690638231b54c90620037e2906042906004016200b4b4565b6020604051808303816000875af115801562003802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200382891906200ac85565b5060005b604280546200383b906200ac39565b9050811015620038e2576000604282815462003857906200ac39565b81106200386857620038686200acb5565b815460011615620038885790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60009081526044602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b0385161790555080620038d9816200ae7c565b9150506200382c565b50508080620038f1906200ae7c565b9150506200379b565b506000805160206203f3f483398151915260405162003942906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a16000805160206203f3f4833981519152604051620039a69060208082526024908201527f5f636f6e66696752616e6420636f6d706c6574653b207374617274696e6720746040820152636573742160e01b606082015260800190565b60405180910390a16000805160206203f3f4833981519152604051620039f5906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a15050505050565b60008062003a1460435462003045565b60405160200162003a2691906200b564565b60408051601f1981840301815291905260438054919250600062003a4a836200ae7c565b9190505550600080600062003a5f84620055e6565b925092509250826001600160a01b0316632a34ade86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003aa157600080fd5b505af115801562003ab6573d6000803e3d6000fd5b5050604051630da66deb60e31b81526001600160a01b0386169250636d336f58915062003aea90859085906004016200b15f565b600060405180830381600087803b15801562003b0557600080fd5b505af115801562003b1a573d6000803e3d6000fd5b5050601d546040516336b87bd760e11b81526001600160a01b03878116600483015262003bb494509091169150636d70f7ae90602401602060405180830381865afa15801562003b6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b9491906200b1d9565b6040518060600160405280603181526020016203f9aa6031913962005086565b50909392505050565b62003bf76040518060400160405280601681526020017518da1958dad7d3995d995c97d49959da5cdd195c995960521b8152508262005782565b62003c1c816040518060600160405280603981526020016203f7516039913962005837565b62003c41816040518060600160405280602a81526020016203f37e602a91396200587e565b62003c66816040518060600160405280602881526020016203f49e6028913962005984565b62003c8b816040518060600160405280602c81526020016203fc7b602c913962005a9a565b50565b62003cc660405180604001604052806014815260200173636865636b5f52656769737465725f537461746560601b8152508362005782565b62003ceb826040518060600160405280602381526020016203f5bf6023913962005b38565b62003d10826040518060600160405280602881526020016203fc2f6028913962005c25565b62003d3682826040518060600160405280602e81526020016203fbc3602e913962005cb5565b62003d5c82826040518060600160405280602981526020016203fb6f6029913962005dd7565b62003d81826040518060600160405280602881526020016203f9db6028913962005e98565b62003da782826040518060600160405280603981526020016203f8e860399139620060c1565b62003dcd82826040518060600160405280603e81526020016203fbf1603e913962006201565b62003df382826040518060800160405280604881526020016203f78a60489139620063c9565b62003e18816040518060600160405280603a81526020016203f4f8603a9139620063e7565b62003e3e82826040518060600160405280602881526020016203f67d6028913962006486565b62003e63826040518060600160405280602481526020016203fc576024913962006572565b5050565b62003ea86040518060400160405280601a81526020017f636865636b5f4e6f4368616e67655570646174655f53746174650000000000008152508362005782565b62003ecd826040518060600160405280602581526020016203f80c6025913962006600565b62003ef2826040518060600160405280602f81526020016203f831602f91396200666d565b62003f17816040518060600160405280602381526020016203fac96023913962006713565b62003f3d82826040518060600160405280602381526020016203fa8460239139620067ed565b62003f6382826040518060600160405280602281526020016203faa76022913962006886565b62003fa4816040518060400160405280601f81526020017f746f74616c207374616b652073686f756c6420626520756e6368616e67656400815250620068e1565b62003fc9816040518060600160405280603881526020016203f719603891396200693a565b62003e63816040518060600160405280603181526020016203f64c60319139620069cb565b6200402860405180604001604052806016815260200175636865636b5f446572656769737465725f537461746560501b8152508362005782565b6200404d826040518060600160405280602981526020016203f9616029913962005b38565b6200407382826040518060600160405280603281526020016203f4146032913962006a50565b6200409982826040518060600160405280602c81526020016203fa58602c913962006ba0565b620040be826040518060600160405280602e81526020016203f890602e913962005e98565b620040e482826040518060600160405280604081526020016203f9216040913962006c67565b6200410a82826040518060600160405280603381526020016203f34b6033913962006d74565b6200413082826040518060800160405280604181526020016203fb2e6041913962006eb9565b62004155816040518060600160405280603a81526020016203f7d2603a913962006f89565b62003e6382826040518060600160405280602981526020016203f446602991396200701b565b620041bc6040518060400160405280601e81526020017f636865636b5f436f6d706c657465446572656769737465725f537461746500008152508262005782565b620041e1816040518060600160405280602b81526020016203fb98602b91396200587e565b62004206816040518060600160405280602981526020016203f9616029913962005b38565b62003c66816040518060600160405280602a81526020016203f8be602a9139620070e3565b6000848484846040516200423f906200a81a565b6200424e94939291906200b596565b604051809103906000f0801580156200426b573d6000803e3d6000fd5b506027546031546021546040519394506000936001600160a01b03938416939283169263485cc95560e01b92620042ab928892909116906024016200ad20565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620042ea906200a668565b620042f8939291906200adcb565b604051809103906000f08015801562004315573d6000803e3d6000fd5b506040805160018082528183019092529192506000919060208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905082826000815181106200437657620043766200acb5565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa158015620043dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200440291906200b5e1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200444457600080fd5b505af115801562004459573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b354791506200449190859085906004016200b601565b600060405180830381600087803b158015620044ac57600080fd5b505af1158015620044c1573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b6060806000602f805490506001600160401b038111156200457c576200457c6200ac9f565b604051908082528060200260200182016040528015620045a6578160200160208202803683370190505b50602f549091506000906001600160401b03811115620045ca57620045ca6200ac9f565b604051908082528060200260200182016040528015620045f4578160200160208202803683370190505b5090506000805160206203f59f833981519152856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562004646573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200467091908101906200b112565b6040516200467f91906200b65e565b60405180910390a160005b602f54811015620047bc576000602f8281548110620046ad57620046ad6200acb5565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa15801562004700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200472691906200b5e1565b905060006200473c620f4240624c4b4062007163565b90506200474b828a8362007225565b828685815181106200476157620047616200acb5565b60200260200101906001600160a01b031690816001600160a01b031681525050808585815181106200479757620047976200acb5565b6020026020010181815250505050508080620047b3906200ae7c565b9150506200468a565b509094909350915050565b620047fe60405180604001604052806013815260200172636865636b5f4465706f7369745f537461746560681b8152508562005782565b62004823846040518060600160405280602581526020016203f80c6025913962006600565b62004848846040518060600160405280602f81526020016203f831602f91396200666d565b6200486d836040518060600160405280602381526020016203fac96023913962006713565b6200489384846040518060600160405280603781526020016203f6156037913962007234565b620048b984846040518060600160405280602281526020016203faa76022913962006886565b620048fa836040518060400160405280601f81526020017f746f74616c207374616b652073686f756c6420626520756e6368616e67656400815250620068e1565b6200491f836040518060600160405280602781526020016203f3cd602791396200693a565b62004944836040518060600160405280602581526020016203f3a860259139620069cb565b6200496b8483836040518060600160405280602581526020016203fa3360259139620072cf565b50505050565b606060006200498184846200737f565b90506000620049918585620074c1565b9050600084516001600160401b03811115620049b157620049b16200ac9f565b604051908082528060200260200182016040528015620049db578160200160208202803683370190505b50905060005b855181101562004b0257600084828151811062004a025762004a026200acb5565b60200260200101519050600084838151811062004a235762004a236200acb5565b60200260200101519050806001600160601b0316826001600160601b0316101562004aa95760405162461bcd60e51b815260206004820152602f60248201527f5f67657441646465645765696768743a20657870656374656420706f7369746960448201526e7665207765696768742064656c746160881b606482015260840162003034565b62004ab581836200b6b2565b84848151811062004aca5762004aca6200acb5565b60200260200101906001600160601b031690816001600160601b0316815250505050808062004af9906200ae7c565b915050620049e1565b50925050505b92915050565b62004b4f6040518060400160405280601981526020017f636865636b5f4465706f7369745570646174655f5374617465000000000000008152508462005782565b62004b74836040518060600160405280602581526020016203f80c6025913962006600565b62004b99836040518060600160405280602f81526020016203f831602f91396200666d565b62004bbe826040518060600160405280602381526020016203fac96023913962006713565b62004be483836040518060600160405280603e81526020016203fbf1603e913962006201565b62004c0a83836040518060600160405280603d81526020016203f6dc603d9139620067ed565b62004c318383836040518060600160405280603b81526020016203f564603b9139620075b7565b62004c56826040518060600160405280603881526020016203f719603891396200693a565b62004c7b826040518060600160405280603181526020016203f64c60319139620069cb565b620005b7836040518060600160405280602481526020016203fc576024913962006572565b62004cd860405180604001604052806014815260200173636865636b5f57697468647261775f537461746560601b8152508562005782565b62004cfd846040518060600160405280602581526020016203f80c6025913962006600565b62004d22846040518060600160405280602f81526020016203f831602f91396200666d565b62004d47836040518060600160405280602381526020016203fac96023913962006713565b62004d6d84846040518060600160405280603781526020016203f6a560379139620076fe565b62004d9384846040518060600160405280602281526020016203faa76022913962006886565b62004dd4836040518060400160405280601f81526020017f746f74616c207374616b652073686f756c6420626520756e6368616e67656400815250620068e1565b62004df9836040518060600160405280602781526020016203f3cd602791396200693a565b62004e1e836040518060600160405280602581526020016203f3a860259139620069cb565b6200496b8483836040518060600160405280602281526020016203fb0c6022913962007799565b62004e866040518060400160405280601a81526020017f636865636b5f57697468647261775570646174655f53746174650000000000008152508362005782565b62004eab826040518060600160405280602981526020016203f9616029913962005b38565b62004ed0826040518060600160405280602b81526020016203fb98602b91396200587e565b62004ef5826040518060600160405280602a81526020016203f8be602a9139620070e3565b62004f1b82826040518060600160405280602c81526020016203fa58602c913962006ba0565b62004f40826040518060600160405280602e81526020016203f890602e913962005e98565b62004f6682826040518060600160405280604081526020016203f9216040913962006c67565b62004f8c82826040518060600160405280603381526020016203f34b6033913962006d74565b62004fb282826040518060800160405280604181526020016203fb2e6041913962006eb9565b62004fd7816040518060600160405280603a81526020016203f7d2603a913962006f89565b62004ffd82826040518060600160405280602981526020016203f446602991396200701b565b62003e63826040518060600160405280602c81526020016203fc7b602c913962005a9a565b606060005b61010081101562005080576001811b838116156200506c576040516200505a9084906001851b60f81b906020016200b6dd565b60405160208183030381529060405292505b5062005078816200ae7c565b905062005027565b50919050565b8162003e63576000805160206203f59f83398151915281604051620050ac91906200b70e565b60405180910390a162003e638262007825565b6000806200515f60398054620050d5906200ac39565b80601f016020809104026020016040519081016040528092919081815260200182805462005103906200ac39565b8015620051545780601f10620051285761010080835404028352916020019162005154565b820191906000526020600020905b8154815290600101906020018083116200513657829003601f168201915b50505050506200788c565b905060018114156200517357600191505090565b60028114156200518557600291505090565b6004811415620051a3576200519d6003600a62007163565b91505090565b60405162461bcd60e51b815260206004820152602560248201527f5f72616e6451756f72756d436f756e743a20666c6167206e6f74207265636f676044820152641b9a5e995960da1b606482015260840162003034565b5090565b60606000806200520e84620078f5565b61ffff166001600160401b038111156200522c576200522c6200ac9f565b6040519080825280601f01601f19166020018201604052801562005257576020820181803683370190505b5090506000805b82518210801562005270575061010081105b15620052cf576001811b935085841615620052bc578060f81b8383815181106200529e576200529e6200acb5565b60200101906001600160f81b031916908160001a9053508160010191505b620052c7816200ae7c565b90506200525e565b5090949350505050565b60606000620052f0603a8054620050d5906200ac39565b9050600060018214156200530757506001620053dd565b60028214156200531a57506002620053dd565b60048214156200534b57602f5462005343906003906200533d906001906200b3ab565b62007163565b9050620053dd565b60088214156200535e5750600f620053dd565b60108214156200537157506014620053dd565b60208214156200538457506019620053dd565b60405162461bcd60e51b815260206004820152602760248201527f5f72616e645374726174656779436f756e743a20666c6167206e6f74207265636044820152661bd9db9a5e995960ca1b606482015260840162003034565b6000816001600160401b03811115620053fa57620053fa6200ac9f565b6040519080825280602002602001820160405280156200544157816020015b6040805180820190915260008082526020820152815260200190600190039081620054195790505b50905060005b8151811015620054ce576040518060400160405280602f83815481106200547257620054726200acb5565b600091825260209182902001546001600160a01b03168252670de0b6b3a76400009101528251839083908110620054ad57620054ad6200acb5565b60200260200101819052508080620054c5906200ae7c565b91505062005447565b509392505050565b600080620054ec603b8054620050d5906200ac39565b905060018114156200550057600091505090565b6002811415620051a357620f424091505090565b6000806200552a603c8054620050d5906200ac39565b905060018114156200553f5750600092915050565b600281141562005574576200556d60018085600001516200556191906200b73f565b63ffffffff1662007163565b9392505050565b60048114156200558a5750505163ffffffff1690565b60405162461bcd60e51b815260206004820152602a60248201527f5f72616e64496e697469616c4f70657261746f72733a20666c6167206e6f74206044820152691c9958dbd9db9a5e995960b21b606482015260840162003034565b6000606080600080620055f862007926565b915091506000806200561260388054620050d5906200ac39565b9050600181141562005663578784846040516200562f906200a828565b6200563d939291906200b75f565b604051809103906000f0801580156200565a573d6000803e3d6000fd5b509150620056d1565b6002811415620056d157876040516020016200568091906200b7bf565b6040516020818303038152906040529750878484604051620056a2906200a836565b620056b0939291906200b75f565b604051809103906000f080158015620056cd573d6000803e3d6000fd5b5091505b6000805160206203f59f833981519152826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005720573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200574a91908101906200b112565b6040516200575991906200b7e9565b60405180910390a16000806200576f8462004557565b949b909a50939850929650505050505050565b6000805160206203f3f483398151915282826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015620057d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620057fc91908101906200b112565b6040516020016200580f9291906200b832565b60408051601f19818403018152908290526200582b916200ac70565b60405180910390a15050565b6000620058448362007af7565b8051909150620058579060008462007b7b565b620005b76000826020015160028111156200587657620058766200b88e565b148362005086565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049846001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620058e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200590991906200ac85565b6040518263ffffffff1660e01b81526004016200592891815260200190565b602060405180830381865afa15801562005946573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200596c91906200b8a4565b9050620005b76001600160c01b038216158362005086565b602a5460405162a1f4cb60e01b81526001600160a01b038481166004830152600092839291169062a1f4cb906024016040805180830381865afa158015620059d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059f691906200b8cf565b602a54604051630378a7eb60e61b81526001600160a01b038881166004830152939550919350600092169063de29fac090602401602060405180830381865afa15801562005a48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a6e91906200ac85565b905062005a7e8360008662007bb7565b62005a8c8260008662007bb7565b6200234b8160008662007b7b565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da39262005ad6929091169087906004016200ad20565b602060405180830381865afa15801562005af4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b1a91906200b8f4565b9050620005b760005b8260018111156200587657620058766200b88e565b6000826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005b79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b9f91906200ac85565b6028546040516309aa152760e11b81526001600160a01b038681166004830152929350600092909116906313542a4e90602401602060405180830381865afa15801562005bf0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c1691906200ac85565b90506200496b82828562007b7b565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562005c71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c9791906200b927565b9050620005b760015b8260028111156200587657620058766200b88e565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005d1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d4091906200ac85565b6040518263ffffffff1660e01b815260040162005d5f91815260200190565b602060405180830381865afa15801562005d7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005da391906200b8a4565b9050600062005db28462007bf3565b90506200234b62005dd06001600160c01b0380841690851681161490565b8462005086565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005e18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005e3e91906200ac85565b9050600062005e4d8462007bf3565b9050600062005e5c8362007d86565b9050600062005e6b8462007df7565b905062005e8f6001600160c01b0382168417836001600160c01b0316148662005086565b50505050505050565b6000826001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562005ed8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005efe91906200b945565b602a5460405162a1f4cb60e01b81526001600160a01b0386811660048301529293506000928392169062a1f4cb906024016040805180830381865afa15801562005f4c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f7291906200b8cf565b8451600090815260208087015190526040812092945090925090602a54604051630378a7eb60e61b81526001600160a01b0389811660048301529293506000929091169063de29fac090602401602060405180830381865afa15801562005fdd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200600391906200ac85565b602a5460405163745dcd7360e11b8152600481018590529192506000916001600160a01b039091169063e8bb9ae690602401602060405180830381865afa15801562006053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200607991906200b5e1565b90506200608c8660000151868962007bb7565b6200609d8660200151858962007bb7565b620060aa83838962007b7b565b620060b788828962007eea565b5050505050505050565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006101573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200612791906200b945565b90506000620061368462007f38565b90506000620061458562008082565b905060005b855181101562005e8f57600062006187858484815181106200617057620061706200acb5565b60200260200101516200810f90919063ffffffff16565b9050620061ba8160000151858481518110620061a757620061a76200acb5565b6020026020010151600001518862007bb7565b620061eb8160200151858481518110620061d857620061d86200acb5565b6020026020010151602001518862007bb7565b5080620061f8816200ae7c565b9150506200614a565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006242573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200626891906200ac85565b905060005b83518110156200234b5760008482815181106200628e576200628e6200acb5565b0160200151602b5460405163c46778a560e01b815260f89290921c6004830181905292506000916001600160a01b039091169063c46778a590602401602060405180830381865afa158015620062e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200630e91906200b97a565b602b54604051635401ed2760e01b81526004810187905260ff851660248201529192506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562006367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200638d91906200b97a565b9050620063b0826001600160601b0316826001600160601b031610158762005086565b5050508080620063c0906200ae7c565b9150506200626d565b6000620063d784846200737f565b90506200496b84848385620075b7565b6000620063f483620081a8565b905060006200640384620082d8565b905060005b84518110156200234b57620064718382815181106200642b576200642b6200acb5565b602002602001015163ffffffff168383815181106200644e576200644e6200acb5565b602002602001015160016200646491906200b9a5565b63ffffffff168662007bb7565b806200647d816200ae7c565b91505062006408565b6000620064938362008365565b90506000620064a284620084a7565b905060005b8451811015620028d55762006506838281518110620064ca57620064ca6200acb5565b602002602001015151838381518110620064e857620064e86200acb5565b6020026020010151516001620064ff91906200b3dc565b8662007bb7565b62006539620065328483815181106200652357620065236200acb5565b60200260200101518862008534565b8562005086565b6200655d620065568383815181106200652357620065236200acb5565b85620085fc565b8062006569816200ae7c565b915050620064a7565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da392620065ae929091169087906004016200ad20565b602060405180830381865afa158015620065cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065f291906200b8f4565b9050620005b7600162005b23565b60006200660d8362007af7565b905060006200661c8462008609565b805183519192506200662f918562007b7b565b6200496b826020015160028111156200664c576200664c6200b88e565b826020015160028111156200666557620066656200b88e565b148462005086565b6000826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620066ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066d491906200ac85565b90506000620066e38262007d86565b90506000620066f28362007df7565b90506200234b826001600160c01b0316826001600160c01b03168662007bb7565b6000620067208362007f38565b905060006200672f8462008082565b905060005b84518110156200234b576200678b8382815181106200675757620067576200acb5565b6020026020010151600001518383815181106200677857620067786200acb5565b6020026020010151600001518662007bb7565b620067d8838281518110620067a457620067a46200acb5565b602002602001015160200151838381518110620067c557620067c56200acb5565b6020026020010151602001518662007bb7565b80620067e4816200ae7c565b91505062006734565b6000620067fb84846200737f565b905060006200680b8585620074c1565b905060005b8451811015620028d557620068718382815181106200683357620068336200acb5565b60200260200101516001600160601b03168383815181106200685957620068596200acb5565b60200260200101516001600160601b03168662007bb7565b806200687d816200ae7c565b91505062006810565b60006200689484846200869c565b90506000620068a4858562008848565b905060005b8451811015620028d557620068cc8382815181106200683357620068336200acb5565b80620068d8816200ae7c565b915050620068a9565b6000620068ee83620088d6565b90506000620068fd8462008a09565b905060005b84518110156200234b57620069258382815181106200683357620068336200acb5565b8062006931816200ae7c565b91505062006902565b60006200694783620081a8565b905060006200695684620082d8565b905060005b84518110156200234b57620069b68382815181106200697e576200697e6200acb5565b602002602001015163ffffffff16838381518110620069a157620069a16200acb5565b602002602001015163ffffffff168662007bb7565b80620069c2816200ae7c565b9150506200695b565b6000620069d88362008365565b90506000620069e784620084a7565b9050600082604051602001620069fe91906200b9d0565b60405160208183030381529060405280519060200120905060008260405160200162006a2b91906200b9d0565b604051602081830303815290604052805190602001209050620028d582828762007b7b565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006ab5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006adb91906200ac85565b6040518263ffffffff1660e01b815260040162006afa91815260200190565b602060405180830381865afa15801562006b18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b3e91906200b8a4565b905060005b83518110156200234b57600084828151811062006b645762006b646200acb5565b60209101015160f81c905062006b8a60016001600160c01b038516831c81161462006556565b508062006b97816200ae7c565b91505062006b43565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006be1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c0791906200ac85565b9050600062006c168462007bf3565b9050600062006c258362007d86565b9050600062006c348462007df7565b905062006c508382166001600160c01b031684145b8662005086565b62005e8f8284166001600160c01b03161562006c49565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562006ca7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ccd91906200b945565b9050600062006cdc8462007f38565b9050600062006ceb8562008082565b905060005b855181101562005e8f57600062006d2062006d0b8662008a96565b8484815181106200617057620061706200acb5565b905062006d408160000151858481518110620061a757620061a76200acb5565b62006d5e8160200151858481518110620061d857620061d86200acb5565b508062006d6b816200ae7c565b91505062006cf0565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006db5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ddb91906200ac85565b905060005b83518110156200234b57600084828151811062006e015762006e016200acb5565b0160200151602b54604051635401ed2760e01b81526004810186905260f89290921c6024830181905292506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562006e62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e8891906200b97a565b905062006ea1816001600160601b031660008762007bb7565b5050808062006eb0906200ae7c565b91505062006de0565b600062006ec7848462008848565b9050600062006ed684620088d6565b9050600062006ee58562008a09565b905060005b855181101562005e8f5762006f7483828151811062006f0d5762006f0d6200acb5565b60200260200101516001600160601b031685838151811062006f335762006f336200acb5565b602002602001015184848151811062006f505762006f506200acb5565b602002602001015162006f6491906200b6b2565b6001600160601b03168762007bb7565b8062006f80816200ae7c565b91505062006eea565b600062006f9683620081a8565b9050600062006fa584620082d8565b905060005b84518110156200234b576200700683828151811062006fcd5762006fcd6200acb5565b602002602001015163ffffffff16600184848151811062006ff25762006ff26200acb5565b60200260200101516200646491906200b73f565b8062007012816200ae7c565b91505062006faa565b6000620070288362008365565b905060006200703784620084a7565b905060005b8451811015620028d557620070948382815181106200705f576200705f6200acb5565b60200260200101515160018484815181106200707f576200707f6200acb5565b602002602001015151620064ff91906200b3ab565b620070b1620065568483815181106200652357620065236200acb5565b620070ce620065328383815181106200652357620065236200acb5565b80620070da816200ae7c565b9150506200703c565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa1580156200712f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200715591906200b927565b9050620005b7600262005ca0565b6000806200717284846200b3ab565b6200717f9060016200b3dc565b90506000815b8015620071a4578162007198816200ae7c565b92505060011c62007185565b6000620071b5600180851b6200b3ab565b60375490915081165b848110620071dc5781620071d386836200b3ab565b169050620071be565b603754604051602001620071f291815260200190565b60408051601f1981840301815291905280516020909101206037556200721981896200b3dc565b98975050505050505050565b620005b7838383600062008b56565b60006200724284846200737f565b90506000620072528585620074c1565b905060005b8451811015620028d557620072ba8282815181106200727a576200727a6200acb5565b60200260200101516001600160601b0316848381518110620072a057620072a06200acb5565b60200260200101516001600160601b031610158562005086565b80620072c6816200ae7c565b91505062007257565b6000620072dd858562008d51565b90506000620072ed868662008e79565b905060005b855181101562005e8f576200736a8582815181106200731557620073156200acb5565b60200260200101518383815181106200733257620073326200acb5565b60200260200101516200734691906200b3dc565b8483815181106200735b576200735b6200acb5565b60200260200101518662007bb7565b8062007376816200ae7c565b915050620072f2565b6060600082516001600160401b038111156200739f576200739f6200ac9f565b604051908082528060200260200182016040528015620073c9578160200160208202803683370190505b50905060005b8351811015620054ce57602b5484516001600160a01b0390911690631f9b74e0908690849081106200740557620074056200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526001600160a01b0388166024820152604401602060405180830381865afa15801562007459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200747f91906200b97a565b8282815181106200749457620074946200acb5565b6001600160601b039092166020928302919091019091015280620074b8816200ae7c565b915050620073cf565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200751b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200754191906200ac85565b90506200754f84846200737f565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b1580156200759757600080fd5b505af1158015620075ac573d6000803e3d6000fd5b505050505092915050565b6000620075c585856200869c565b90506000620075d5868662008848565b90506000620075e486620088d6565b90506000620075f38762008a09565b905060005b8751811015620076f357620076828582815181106200761b576200761b6200acb5565b60200260200101516001600160601b03168883815181106200764157620076416200acb5565b60200260200101518684815181106200765e576200765e6200acb5565b60200260200101516200767291906200ba5e565b6001600160601b03168862007bb7565b620076de8382815181106200769b576200769b6200acb5565b60200260200101516001600160601b0316888381518110620076c157620076c16200acb5565b60200260200101518484815181106200765e576200765e6200acb5565b80620076ea816200ae7c565b915050620075f8565b505050505050505050565b60006200770c84846200737f565b905060006200771c8585620074c1565b905060005b8451811015620028d557620077848282815181106200774457620077446200acb5565b60200260200101516001600160601b03168483815181106200776a576200776a6200acb5565b60200260200101516001600160601b031611158562005086565b8062007790816200ae7c565b91505062007721565b6000620077a7858562008d51565b90506000620077b7868662008e79565b905060005b855181101562005e8f5762007810858281518110620077df57620077df6200acb5565b6020026020010151838381518110620077fc57620077fc6200acb5565b60200260200101516200734691906200b3ab565b806200781c816200ae7c565b915050620077bc565b8062003c8b576000805160206203f3f48339815191526040516200787a9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003c8b62008f07565b6000620078b760008351116040518060600160405280603281526020016203f4c66032913962005086565b6000620078cf6000600185516200533d91906200b3ab565b9050828181518110620078e657620078e66200acb5565b016020015160f81c9392505050565b6000805b821562004b08576200790d6001846200b3ab565b90921691806200791d816200ba83565b915050620078f9565b6000620079326200a844565b603e54603d541415620079c65760405162461bcd60e51b815260206004820152604f60248201527f5f66657463684b6579706169723a206e6f7420656e6f7567682067656e65726160448201527f746564206b6579732e20436865636b20496e746567726174696f6e4465706c6f60648201526e3cb2b91731b7b739ba393ab1ba37b960891b608482015260a40162003034565b6000603e603d5481548110620079e057620079e06200acb5565b906000526020600020015490506000603f603d548154811062007a075762007a076200acb5565b60009182526020918290206040805160a0810182526008939093029091018054606084019081526001820154608080860191909152908452825180840184526002808401548252600384015482880152958501528251908101808452939491938584019391926004860192849290830191849182845b81548152602001906001019080831162007a7d57505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831162007ab45750505091909252505050905250603d8054919250600062007ae9836200ae7c565b909155509194909350915050565b6040805180820190915260008082526020820152602854604051631619718360e21b81526001600160a01b03848116600483015290911690635865c60c906024016040805180830381865afa15801562007b55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b0891906200baa8565b818314620005b7576000805160206203f59f8339815191528160405162007ba391906200b70e565b60405180910390a1620005b7838362009015565b818314620005b7576000805160206203f59f8339815191528160405162007bdf91906200b70e565b60405180910390a1620005b78383620090fe565b60006101008251111562007c7e5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40162003034565b815162007c8d57506000919050565b6000808360008151811062007ca65762007ca66200acb5565b0160200151600160f89190911c81901b92505b845181101562003bb45784818151811062007cd85762007cd86200acb5565b0160200151600160f89190911c1b915082821162007d6f5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40162003034565b9181179162007d7e816200ae7c565b905062007cb9565b60285460405163871ef04960e01b8152600481018390526000916001600160a01b03169063871ef04990602401602060405180830381865afa15801562007dd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b0891906200b8a4565b600080602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562007e50573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e7691906200ac85565b905062007e838362007d86565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b15801562007ecb57600080fd5b505af115801562007ee0573d6000803e3d6000fd5b5050505050919050565b816001600160a01b0316836001600160a01b031614620005b7576000805160206203f59f8339815191528160405162007f2491906200b70e565b60405180910390a1620005b78383620091b0565b6060600082516001600160401b0381111562007f585762007f586200ac9f565b60405190808252806020026020018201604052801562007f9f57816020015b604080518082019091526000808252602082015281526020019060019003908162007f775790505b50905060005b83518110156200807b57602a5484516001600160a01b0390911690635f61a8849086908490811062007fdb5762007fdb6200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526024016040805180830381865afa1580156200801f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200804591906200b945565b8282815181106200805a576200805a6200acb5565b6020026020010181905250808062008072906200ae7c565b91505062007fa5565b5092915050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620080dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200810291906200ac85565b905062007e838362007f38565b60408051808201909152600080825260208201526200812d6200a894565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801562002ff75750806200303d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640162003034565b6060600082516001600160401b03811115620081c857620081c86200ac9f565b604051908082528060200260200182016040528015620081f2578160200160208202803683370190505b50905060005b83518110156200807b57602c5484516001600160a01b039091169063f3410922908690849081106200822e576200822e6200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562008273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200829991906200bae3565b828281518110620082ae57620082ae6200acb5565b63ffffffff9092166020928302919091019091015280620082cf816200ae7c565b915050620081f8565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200835891906200ac85565b905062007e8383620081a8565b6060600082516001600160401b038111156200838557620083856200ac9f565b604051908082528060200260200182016040528015620083ba57816020015b6060815260200190600190039081620083a45790505b50905060005b83518110156200807b57602c5484516001600160a01b0390911690638902624590869084908110620083f657620083f66200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201524363ffffffff166024820152604401600060405180830381865afa15801562008447573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200847191908101906200bb0b565b8282815181106200848657620084866200acb5565b602002602001018190525080806200849e906200ae7c565b915050620083c0565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200852791906200ac85565b905062007e838362008365565b600080826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008576573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200859c91906200ac85565b905060005b8451811015620085f15781858281518110620085c157620085c16200acb5565b60200260200101511415620085dc5760019250505062004b08565b80620085e8816200ae7c565b915050620085a1565b506000949350505050565b62003e6382158262005086565b6040805180820190915260008082526020820152602e5460408051632fe1ee0d60e21b815290516000926001600160a01b03169163bf87b834916004808301926020929190829003018187875af115801562008669573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200868f91906200ac85565b905062007e838362007af7565b60606000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620086df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200870591906200ac85565b9050600083516001600160401b038111156200872557620087256200ac9f565b6040519080825280602002602001820160405280156200874f578160200160208202803683370190505b50905060005b84518110156200883f57602b5485516001600160a01b0390911690635401ed279085908890859081106200878d576200878d6200acb5565b01602001516040516001600160e01b031960e085901b168152600481019290925260f81c6024820152604401602060405180830381865afa158015620087d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620087fd91906200b97a565b8282815181106200881257620088126200acb5565b6001600160601b03909216602092830291909101909101528062008836816200ae7c565b91505062008755565b50949350505050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620088a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620088c891906200ac85565b90506200754f84846200869c565b6060600082516001600160401b03811115620088f657620088f66200ac9f565b60405190808252806020026020018201604052801562008920578160200160208202803683370190505b50905060005b83518110156200807b57602b5484516001600160a01b039091169063d5eccc05908690849081106200895c576200895c6200acb5565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015620089a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620089c791906200b97a565b828281518110620089dc57620089dc6200acb5565b6001600160601b03909216602092830291909101909101528062008a00816200ae7c565b91505062008926565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008a63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008a8991906200ac85565b905062007e8383620088d6565b6040805180820190915260008082526020820152815115801562008abc57506020820151155b1562008adb575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015162008b2291906200b3c5565b62008b4e907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476200b3ab565b905292915050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009287169162008bac916200b1bb565b600060405180830381855afa9150503d806000811462008be9576040519150601f19603f3d011682016040523d82523d6000602084013e62008bee565b606091505b5091505060008180602001905181019062008c0a91906200ac85565b905062008c448462008c3d8762008c366370a0823160e01b62008c2f600c8d62009299565b90620092bf565b90620092dd565b9062009306565b8215620028d55760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162008c8f91906200b1bb565b600060405180830381855afa9150503d806000811462008ccc576040519150601f19603f3d011682016040523d82523d6000602084013e62008cd1565b606091505b5091505060008180602001905181019062008ced91906200ac85565b90508286101562008d185762008d0486846200b3ab565b62008d1090826200b3ab565b905062008d33565b62008d2483876200b3ab565b62008d3090826200b3dc565b90505b620060b78162008c3d6318160ddd60e01b62008c2f600c8d62009299565b6060600082516001600160401b0381111562008d715762008d716200ac9f565b60405190808252806020026020018201604052801562008d9b578160200160208202803683370190505b50905060005b8351811015620054ce57601d5484516001600160a01b039091169063778e55f390879087908590811062008dd95762008dd96200acb5565b60200260200101516040518363ffffffff1660e01b815260040162008e009291906200ad20565b602060405180830381865afa15801562008e1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e4491906200ac85565b82828151811062008e595762008e596200acb5565b60209081029190910101528062008e70816200ae7c565b91505062008da1565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008ed3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008ef991906200ac85565b90506200754f848462008d51565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200900457604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49062008f7f9083906519985a5b195960d21b906001906020016200bb43565b60408051601f198184030181529082905262008f9f92916020016200b188565b60408051601f198184030181529082905262008fbb916200b1bb565b6000604051808303816000865af19150503d806000811462008ffa576040519150601f19603f3d011682016040523d82523d6000602084013e62008fff565b606091505b505050505b6007805461ff001916610100179055565b80821462003e63576000805160206203f3f48339815191526040516200907a9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974604082015264657333325d60d81b606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620090b391906200bb64565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620090ec91906200bb9d565b60405180910390a162003e6362008f07565b80821462003e63576000805160206203f3f4833981519152604051620091609060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a16000805160206203faec833981519152826040516200918891906200bb64565b60405180910390a16000805160206203faec83398151915281604051620090ec91906200bb9d565b806001600160a01b0316826001600160a01b03161462003e63576000805160206203f3f4833981519152604051620092279060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200926091906200bbc8565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620090ec91906200bc0d565b6005820180546001600160a01b0319166001600160a01b0383161790556000826200556d565b60038201805463ffffffff191660e083901c1790556000826200556d565b6002820180546001810182556000918252602082206001600160a01b038416910155826200556d565b62003e638282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200937f57602002820191906000526020600020905b8154815260200190600101908083116200936a575b50505050509050600083620093948362009684565b604051602001620093a79291906200b188565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620093fb9186918891016200bc38565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200943657620094348762009730565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620094779187918991016200bc38565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620094be91906200b1bb565b600060405180830381855afa9150503d8060008114620094fb576040519150601f19603f3d011682016040523d82523d6000602084013e62009500565b606091505b5091506200951d905081620095178860206200bc74565b6200973d565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562009584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620095aa91906200ac85565b9050808214620095ce5760405162461bcd60e51b815260040162003034906200bc96565b6040516370ca10bb60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906200960b908b9087908e906004016200bb43565b600060405180830381600087803b1580156200962657600080fd5b505af11580156200963b573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200967060028b0160006200a8b2565b896004016000905550505050505050505050565b60606000825160206200969891906200bc74565b6001600160401b03811115620096b257620096b26200ac9f565b6040519080825280601f01601f191660200182016040528015620096dd576020820181803683370190505b50905060005b83518110156200807b5760008482815181106200970457620097046200acb5565b60200260200101519050808260200260200184015250808062009727906200ae7c565b915050620096e3565b600062004b0882620097bd565b600080600060208551116200975457845162009757565b60205b905060005b81811015620052cf57620097728160086200bc74565b866200977f83886200b3dc565b815181106200979257620097926200acb5565b01602001516001600160f81b031916901c929092179180620097b4816200ae7c565b9150506200975c565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200982f57602002820191906000526020600020905b8154815260200190600101908083116200981a575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200987b925085918791016200bc38565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200991a576001600160a01b0384166000908152602087815260408083206001600160e01b03198716845282528083209051909291620098ea9185918791016200bc38565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362009928836200a4f7565b6040516020016200993b9291906200b188565b60405160208183030381529060405290506000805160206203f98a83398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200999a57600080fd5b505af1158015620099af573d6000803e3d6000fd5b50505050600080866001600160a01b031683604051620099d091906200b1bb565b600060405180830381855afa9150503d806000811462009a0d576040519150601f19603f3d011682016040523d82523d6000602084013e62009a12565b606091505b50915062009a2f90508162009a298760206200bc74565b6200a5a3565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562009a91573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262009abb91908101906200bd31565b50905080516001141562009d9d5760006000805160206203f98a83398151915260001c6001600160a01b031663667f9d70898460008151811062009b035762009b036200acb5565b60200260200101516040518363ffffffff1660e01b815260040162009b3d9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009b5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009b8191906200ac85565b90508062009bec577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062009bc15762009bc16200acb5565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462009c0e5760405162461bcd60e51b815260040162003034906200bc96565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162009c469291906200bc38565b604051602081830303815290604052805190602001208560008151811062009c725762009c726200acb5565b602002602001015160001c60405162009c8f94939291906200bd82565b60405180910390a18160008151811062009cad5762009cad6200acb5565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262009cf8918a918c91016200bc38565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162009d62918a918c91016200bc38565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200a37a565b6001815111156200a3095760005b81518110156200a3025760006000805160206203f98a83398151915260001c6001600160a01b031663667f9d708a85858151811062009dee5762009dee6200acb5565b60200260200101516040518363ffffffff1660e01b815260040162009e289291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009e46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009e6c91906200ac85565b90508062009ed6577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062009eab5762009eab6200acb5565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462009ee557506200a2ed565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c9087908790811062009f1d5762009f1d6200acb5565b6020026020010151846040518463ffffffff1660e01b815260040162009f46939291906200bb43565b600060405180830381600087803b15801562009f6157600080fd5b505af115801562009f76573d6000803e3d6000fd5b50505050600060608b6001600160a01b03168860405162009f9891906200b1bb565b600060405180830381855afa9150503d806000811462009fd5576040519150601f19603f3d011682016040523d82523d6000602084013e62009fda565b606091505b50909250905062009ff28162009a298c60206200bc74565b9650508080156200a00257508186145b156200a255577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200a0409291906200bc38565b604051602081830303815290604052805190602001208888815181106200a06b576200a06b6200acb5565b602002602001015160001c6040516200a08894939291906200bd82565b60405180910390a18484815181106200a0a5576200a0a56200acb5565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200a0f0918d918f91016200bc38565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200a17d9291906200bc38565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206203f98a83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200a1ef576200a1ef6200acb5565b6020026020010151866040518463ffffffff1660e01b81526004016200a218939291906200bb43565b600060405180830381600087803b1580156200a23357600080fd5b505af11580156200a248573d6000803e3d6000fd5b505050505050506200a302565b6000805160206203f98a83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200a28c576200a28c6200acb5565b6020026020010151866040518463ffffffff1660e01b81526004016200a2b5939291906200bb43565b600060405180830381600087803b1580156200a2d057600080fd5b505af11580156200a2e5573d6000803e3d6000fd5b505050505050505b806200a2f9816200ae7c565b91505062009dab565b506200a37a565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162003034565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200a3be9188918a91016200bc38565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a44d5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b606482015260840162003034565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200a47e60028a0160006200a8b2565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200a4c49188918a91016200bc38565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200a50b91906200bc74565b6001600160401b038111156200a525576200a5256200ac9f565b6040519080825280601f01601f1916602001820160405280156200a550576020820181803683370190505b50905060005b83518110156200807b5760008482815181106200a577576200a5776200acb5565b6020026020010151905080826020026020018401525080806200a59a906200ae7c565b9150506200a556565b600080600060208551116200a5ba5784516200a5bd565b60205b905060005b81811015620052cf576200a5d88160086200bc74565b866200a5e583886200b3dc565b815181106200a5f8576200a5f86200acb5565b01602001516001600160f81b031916901c9290921791806200a61a816200ae7c565b9150506200a5c2565b610718806200bdb383390190565b610778806200c4cb83390190565b6094806200cc4383390190565b61022a806200ccd783390190565b6103f3806200cf0183390190565b610e81806200d2f483390190565b614ad0806200e17583390190565b6104e48062012c4583390190565b615c46806201312983390190565b61338a8062018d6f83390190565b610efe806201c0f983390190565b613169806201cff783390190565b611f78806202016083390190565b611ab480620220d883390190565b61117d8062023b8c83390190565b6139588062024d0983390190565b61210b806202866183390190565b6113ec806202a76c83390190565b6116e0806202bb5883390190565b616187806202d23883390190565b611a2580620333bf83390190565b60405180604001604052806200a75d6200a8d2565b81526020016200a76c6200a8d2565b905290565b60405180606001604052806003906020820280368337509192915050565b8280546200a79d906200ac39565b90600052602060002090601f0160209004810192826200a7c157600085556200a80c565b82601f106200a7dc57805160ff19168380011785556200a80c565b828001600101855582156200a80c579182015b828111156200a80c5782518255916020019190600101906200a7ef565b50620051fa9291506200a8f0565b610e608062034de483390190565b6146f48062035c4483390190565b615013806203a33883390190565b6040805160a081019091526000606082018181526080830191909152819081526020016200a885604051806040016040528060008152602001600081525090565b81526020016200a76c6200a748565b60405180608001604052806004906020820280368337509192915050565b508054600082559060005260206000209081019062003c8b91906200a8f0565b60405180604001604052806002906020820280368337509192915050565b5b80821115620051fa57600081556001016200a8f1565b6000602082840312156200a91a57600080fd5b813562ffffff811681146200556d57600080fd5b6000602082840312156200a94157600080fd5b5035919050565b8060005b60028110156200496b5781518452602093840193909101906001016200a94c565b6200a97a8282516200a948565b6020810151620005b760408401826200a948565b6080810162004b0882846200a96d565b600081518084526020808501945080840160005b838110156200a9d95781516001600160a01b0316875295820195908201906001016200a9b2565b509495945050505050565b6020815260006200556d60208301846200a99e565b60005b838110156200aa165781810151838201526020016200a9fc565b838111156200496b5750506000910152565b600081518084526200aa428160208601602086016200a9f9565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200ab0c57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200aaf557605f198985030183526200aae28486516200aa28565b948e01949350918d01916001016200aac3565b505050978a0197945050918801916001016200aa7d565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200abc457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200abae5783516001600160e01b0319168252928b019260019290920191908b01906200ab82565b50978a019795505050918701916001016200ab44565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200ac2c57603f198886030184526200ac198583516200aa28565b945092850192908501906001016200abfa565b5092979650505050505050565b600181811c908216806200ac4e57607f821691505b602082108114156200508057634e487b7160e01b600052602260045260246000fd5b6020815260006200556d60208301846200aa28565b6000602082840312156200ac9857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6040815260006200ace060408301856200a99e565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b6001600160a01b0392831681529116602082015260400190565b600081518084526020808501945080840160005b838110156200a9d9578151875295820195908201906001016200ad4e565b6001600160a01b0387811682528616602082015260ff851660408201526060810184905260c0608082018190526000906200adaa908301856200a99e565b82810360a08401526200adbe81856200ad3a565b9998505050505050505050565b6001600160a01b038481168252831660208201526060604082018190526000906200adf9908301846200aa28565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b8152600082516200ae2c81600d8501602087016200a9f9565b91909101600d0192915050565b6214d51560ea1b8152600082516200ae598160038501602087016200a9f9565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156200ae93576200ae936200ae66565b5060010190565b600081518084526020808501945080840160005b838110156200a9d95781516001600160601b0316875295820195908201906001016200aeae565b600081518084526020808501945080840160005b838110156200a9d957815180516001600160a01b031688528301516001600160601b031683880152604090960195908201906001016200aee9565b600081518084526020808501808196508360051b8101915082860160005b858110156200af705782840389526200af5d8483516200aed5565b988501989350908401906001016200af42565b5091979650505050505050565b6001600160a01b038981168252888116602080840191909152888216604084015290871660608084019190915260ff8716608084015261010060a084018190528651908401819052600092610120850192888201929190855b838110156200b020576200b00f868651805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b94810194938201936001016200afd6565b505050505082810360c08401526200b03981866200ae9a565b905082810360e08401526200b04f81856200af24565b9b9a5050505050505050505050565b604080519081016001600160401b03811182821017156200b083576200b0836200ac9f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200b0b4576200b0b46200ac9f565b604052919050565b60006001600160401b038311156200b0d8576200b0d86200ac9f565b6200b0ed601f8401601f19166020016200b089565b90508281528383830111156200b10257600080fd5b6200556d8360208301846200a9f9565b6000602082840312156200b12557600080fd5b81516001600160401b038111156200b13c57600080fd5b8201601f810184136200b14e57600080fd5b6200315a848251602084016200b0bc565b6040815260006200b17460408301856200a99e565b82810360208401526200adf981856200ad3a565b6001600160e01b03198316815281516000906200b1ad8160048501602087016200a9f9565b919091016004019392505050565b600082516200b1cf8184602087016200a9f9565b9190910192915050565b6000602082840312156200b1ec57600080fd5b815180151581146200556d57600080fd5b60006001600160401b038211156200b219576200b2196200ac9f565b5060051b60200190565b6001600160a01b038116811462003c8b57600080fd5b600082601f8301126200b24b57600080fd5b815160206200b2646200b25e836200b1fd565b6200b089565b82815260059290921b840181019181810190868411156200b28457600080fd5b8286015b848110156200b2a157805183529183019183016200b288565b509695505050505050565b600080604083850312156200b2c057600080fd5b82516001600160401b03808211156200b2d857600080fd5b818501915085601f8301126200b2ed57600080fd5b815160206200b3006200b25e836200b1fd565b82815260059290921b840181019181810190898411156200b32057600080fd5b948201945b838610156200b34b5785516200b33b816200b223565b825294820194908201906200b325565b918801519196509093505050808211156200b36557600080fd5b506200b374858286016200b239565b9150509250929050565b634e487b7160e01b600052601260045260246000fd5b6000826200b3a6576200b3a66200b37e565b500490565b6000828210156200b3c0576200b3c06200ae66565b500390565b6000826200b3d7576200b3d76200b37e565b500690565b600082198211156200b3f2576200b3f26200ae66565b500190565b6200b4268185805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b6001600160601b038316606082015260a0608082015260006200adf960a08301846200aed5565b6b02932b3b4b9ba32b934b733960a51b8152600082516200b47681600c8501602087016200a9f9565b7f20696e697469616c206f70657261746f727320696e20656163682071756f7275600c939091019283015250606d60f81b602c820152602d01919050565b600060208083526000845481600182811c9150808316806200b4d757607f831692505b8583108114156200b4f657634e487b7160e01b85526022600452602485fd5b8786018381526020018180156200b51657600181146200b528576200b555565b60ff198616825287820196506200b555565b60008b81526020902060005b868110156200b54f578154848201529085019089016200b534565b83019750505b50949998505050505050505050565b6727b832b930ba37b960c11b8152600082516200b5898160088501602087016200a9f9565b9190910160080192915050565b6080815260006200b5ab60808301876200aa28565b82810360208401526200b5bf81876200aa28565b604084019590955250506001600160a01b039190911660609091015292915050565b6000602082840312156200b5f457600080fd5b81516200556d816200b223565b6040815260006200b61660408301856200a99e565b82810360208481019190915284518083528582019282019060005b818110156200b6515784511515835293830193918301916001016200b631565b5090979650505050505050565b60408152602260408201527f5f6465616c52616e64546f6b656e733a206465616c696e672061737365747320606082015261746f60f01b608082015260a0602082015260006200556d60a08301846200aa28565b60006001600160601b03838116908316818110156200b6d5576200b6d56200ae66565b039392505050565b600083516200b6f18184602088016200a9f9565b6001600160f81b0319939093169190920190815260010192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200556d60808301846200aa28565b600063ffffffff838116908316818110156200b6d5576200b6d56200ae66565b60006101408083526200b775818401876200aa28565b9150508360208301526200b79760408301845180518252602090810151910152565b60208381015180516080850152015160a083015260408301516200883f60c08401826200a96d565b600082516200b7d38184602087016200a9f9565b6317d05b1d60e21b920191825250600401919050565b60408152601760408201527f5f72616e64557365723a2043726561746564207573657200000000000000000060608201526080602082015260006200556d60808301846200aa28565b61016960f51b8152600083516200b8518160028501602088016200a9f9565b600560fb1b60029184019182015283516200b8748160038401602088016200a9f9565b602960f81b60039290910191820152600401949350505050565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200b8b757600080fd5b81516001600160c01b03811681146200556d57600080fd5b600080604083850312156200b8e357600080fd5b505080516020909101519092909150565b6000602082840312156200b90757600080fd5b8151600281106200556d57600080fd5b80516003811062002ae957600080fd5b6000602082840312156200b93a57600080fd5b6200556d826200b917565b6000604082840312156200b95857600080fd5b6200b9626200b05e565b82518152602083015160208201528091505092915050565b6000602082840312156200b98d57600080fd5b81516001600160601b03811681146200556d57600080fd5b600063ffffffff8083168185168083038211156200b9c7576200b9c76200ae66565b01949350505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b838110156200ba5057888603603f19018552825180518088529088019088880190845b818110156200ba395783518352928a0192918a01916001016200ba1b565b50909750505093860193918601916001016200b9f8565b509398975050505050505050565b60006001600160601b038083168185168083038211156200b9c7576200b9c76200ae66565b600061ffff808316818114156200ba9e576200ba9e6200ae66565b6001019392505050565b6000604082840312156200babb57600080fd5b6200bac56200b05e565b825181526200bad7602084016200b917565b60208201529392505050565b6000602082840312156200baf657600080fd5b815163ffffffff811681146200556d57600080fd5b6000602082840312156200bb1e57600080fd5b81516001600160401b038111156200bb3557600080fd5b6200315a848285016200b239565b6001600160a01b039390931683526020830191909152604082015260600190565b6040815260006200bb8f60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200bb8f60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200bbf360408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006200bbf360408301600a8152690808080808149a59da1d60b21b602082015260400190565b825160009082906020808701845b838110156200bc64578151855293820193908201906001016200bc46565b5050948252509092019392505050565b60008160001904831182151516156200bc91576200bc916200ae66565b500290565b6020808252606f908201527f73746453746f726167652066696e642853746453746f72616765293a2050616360408201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560608201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960808201526e39b713ba1039bab83837b93a32b21760891b60a082015260c00190565b600080604083850312156200bd4557600080fd5b82516001600160401b03808211156200bd5d57600080fd5b6200bd6b868387016200b239565b935060208501519150808211156200b36557600080fd5b6001600160a01b039490941684526001600160e01b0319929092166020840152604083015260608201526080019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c00336f70657261746f722073686f756c64206e6f206c6f6e6765722068617665207374616b6520696e20616e792071756f72756d736f70657261746f7220616c726561647920686173206269747320696e2071756f72756d206269746d61706f70657261746f72206c6973742073686f756c64206e6f742068617665206368616e6765646f70657261746f7220636f756e74732073686f756c64206e6f742068617665206368616e67656441304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5063757272656e74206f70657261746f72206269746d61702073686f756c64206e6f7420696e636c7564652071756f72756d736f70657261746f72206c6973742073686f756c642068617665206f6e6520666577657220656e7472795f636f6e66696752616e643a20696e76616c69642066696c6c54797065732c206e6f20666c616773207061737365646f70657261746f7220616c72656164792068617320612072656769737465726564207075626b65795f72616e6456616c75653a20747269656420746f2073656c6563742076616c75652066726f6d20656d707479206172726179746f74616c206f70657261746f7220636f756e742073686f756c64206861766520696e6372656173656420666f7220656163682071756f72756d5f636f6e66696752616e643a20696e76616c6964206d696e696d756d5374616b652c206e6f20666c61677320706173736564776569676874732073686f756c642068617665206265656e20616464656420746f206f70657261746f7220616e6420746f74616c207374616b6573280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35836f70657261746f72496e666f2073686f756c642068617665206f70657261746f7249645f636f6e66696752616e643a20696e76616c6964206e756d537472617465676965732c206e6f20666c616773207061737365646f70657261746f72207765696768742073686f756c64206e6f74206861766520646563726561736564206166746572206465706f7369746f70657261746f72206c6973742073686f756c6420626520756e6368616e67656420666f7220656163682071756f72756d6f70657261746f72206c6973742073686f756c642068617665206f6e65206d6f726520656e7472796f70657261746f72207765696768742073686f756c64206e6f74206861766520696e63726561736564206166746572206465706f7369747570646174654f70657261746f72732073686f756c64206e6f7420656666656374206f70657261746f72207765696768742063616c63756c6174696f6e746f74616c206f70657261746f7220636f756e742073686f756c6420626520756e6368616e67656420666f7220656163682071756f72756d6f70657261746f722073686f756c64206861766520656d70747920696420616e64204e455645525f52454749535445524544207374617475736661696c656420746f20616464206f70657261746f722077656967687420746f206f70657261746f7220616e6420746f74616c207374616b6520696e20656163682071756f72756d746f74616c206f70657261746f7220636f756e742073686f756c6420686176652064656372656173656420666f7220656163682071756f72756d6f70657261746f7220696e666f2073686f756c64206e6f742068617665206368616e6765646f70657261746f72732071756f72756d206269746d61702073686f756c64206e6f742068617665206368616e6765645f636f6e66696752616e643a20696e76616c6964205f7573657254797065732c206e6f20666c616773207061737365646f70657261746f722073686f756c64207374696c6c206861766520612072656769737465726564207075626b65796f70657261746f72496e666f207374617475732073686f756c64206265204445524547495354455245446f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420746f20656163682071756f72756d2061706b6f70657261746f72207075626b65792073686f756c642068617665206265656e20737562747261637465642066726f6d20656163682071756f72756d2061706b6f70657261746f72496e666f2073686f756c64207374696c6c2068617665206f70657261746f724964885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f6e657752616e646f6d4f70657261746f723a206f70657261746f722073686f756c6420626520726567697374657265646f70657261746f722073686f756c64206861766520726567697374657265642061207075626b65795f636f6e66696752616e643a20696e76616c6964206e756d51756f72756d732c206e6f20666c616773207061737365646f70657261746f722073686f756c642068617665206164646974696f6e616c207374616b656f70657261746f7220646964206e6f7420646572656769737465722066726f6d20616c6c2071756f72756d736f70657261746f72207765696768742073686f756c6420626520756e6368616e6765646f70657261746f72207374616b652073686f756c6420626520756e6368616e67656471756f72756d2061706b732073686f756c64206e6f742068617665206368616e676564b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a86f70657261746f722073686f756c6420686176652072656475636564207374616b656661696c656420746f2072656d6f7665206f70657261746f72207765696768742066726f6d20746f74616c207374616b6520666f7220656163682071756f72756d6f70657261746f7220646964206e6f7420726567697374657220666f7220616c6c2071756f72756d736f70657261746f722073686f756c64206e6f74206861766520616e79206269747320696e206269746d617063757272656e74206f70657261746f72206269746d61702073686f756c6420696e636c7564652071756f72756d736f70657261746f722073686f756c642068617665206174206c6561737420746865206d696e696d756d207374616b6520696e20656163682071756f72756d6f70657261746f72496e666f207374617475732073686f756c6420626520524547495354455245446f70657261746f722073686f756c64206265207265676973746572656420746f204156536f70657261746f722073686f756c64206e6f74206265207265676973746572656420746f2074686520415653a264697066735822122020053997f729d7b8df9885e6aeb221dd19d129781cc1ff94b5271ef2ae13503864736f6c634300080c0033 + /// ``` + #[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\x01uW`\x005`\xE0\x1C\x80ck:\xA7.\x11b\0\0\xD3W\x80c\xB5P\x8A\xA9\x11b\0\0\x86W\x80c\xB5P\x8A\xA9\x14b\0\x03\rW\x80c\xBAAO\xA6\x14b\0\x03\x17W\x80c\xE2\x0C\x9Fq\x14b\0\x032W\x80c\xE3\x89\xBB\xB3\x14b\0\x03^<#\x14b\0\x02SW\x80c?r\x86\xF4\x14b\0\x02]W\x80cO\x92)\xBB\x14b\0\x02gW\x80cf\xD9\xA9\xA0\x14b\0\x02~W`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01zW\x80c\tl/\xC0\x14b\0\x01\xABW\x80c\n\x92T\xE4\x14b\0\x01\xC4W\x80c\x13\x1E/\x18\x14b\0\x01\xCEW\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xF4W\x80c*\xDE8\x80\x14b\0\x02\rW[`\0\x80\xFD[`5Tb\0\x01\x8E\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[b\0\x01\xC2b\0\x01\xBC6`\x04b\0\xA9\x07V[b\0\x03xV[\0[b\0\x01\xC2b\0\x05\xBCV[b\0\x01\xE5b\0\x01\xDF6`\x04b\0\xA9.V[b\0\x19\xBCV[`@Qb\0\x01\xA2\x91\x90b\0\xA9\x8EV[b\0\x01\xFEb\0\x1ErV[`@Qb\0\x01\xA2\x91\x90b\0\xA9\xE4V[b\0\x02\x17b\0\x1E\xD6V[`@Qb\0\x01\xA2\x91\x90b\0\xAAVV[b\0\x020`4T\x81V[`@Q\x90\x81R` \x01b\0\x01\xA2V[`.Tb\0\x01\x8E\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xFEb\0 $V[b\0\x01\xFEb\0 \x86V[b\0\x01\xC2b\0\x02x6`\x04b\0\xA9\x07V[b\0 \xE8V[b\0\x02\x88b\0#RV[`@Qb\0\x01\xA2\x91\x90b\0\xAB\x1CV[`\x1ETb\0\x01\x8E\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01\x8E\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\xC9b\0$=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xD0\x91\x90b\0\xAC\x85V[Pb\0\x04\xDD\x82\x82b\0<\x8EV[\x81`\x01`\x01`\xA0\x1B\x03\x16cPSw\xE2`@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\x05\x19W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x05.W=`\0\x80>=`\0\xFD[PPPPb\0\x05>\x82\x82b\0>gV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\xCAO-\x97\x90b\0\x05l\x90\x84\x90`\x04\x01b\0\xACpV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x05\x87W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x05\x9CW=`\0\x80>=`\0\xFD[PPPPb\0\x05\xAC\x82\x82b\0?\xEEV[b\0\x05\xB7\x82b\0A{V[PPPV[`@Qb\0\x05\xCA\x90b\0\xA6#V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\xE7W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x06CWb\0\x06Cb\0\xAC\xB5V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x06u\x90b\0\xA61V[b\0\x06\x82\x92\x91\x90b\0\xAC\xCBV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\x9FW=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x06\xD1\x90b\0\xA6?V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xEEW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x06\xFF\x90b\0\xA6LV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\x1CW=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x07K\x90b\0\xA6ZV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07hW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x07\x9D\x90b\0\xA6hV[b\0\x07\xAA\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\xC7W=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x07\xFC\x90b\0\xA6hV[b\0\x08\t\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08&W=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x08[\x90b\0\xA6hV[b\0\x08h\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\x85W=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x08\xBA\x90b\0\xA6hV[b\0\x08\xC7\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\xE4W=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\t\x19\x90b\0\xA6hV[b\0\t&\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tCW=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\t\x81\x90b\0\xA6vV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\xC5W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\t\xF3\x90b\0\xA6\x84V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\n W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\nd\x90b\0\xA6\x92V[`\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\n\xA1W=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\n\xD3\x90b\0\xA6\xA0V[`\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\x0B\x10W=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x0B;\x90b\0\xA6\xAEV[b\0\x0BH\x92\x91\x90b\0\xAD V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0BeW=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x0B\xA5\x90b\0\xA6\xBCV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0B\xF1W=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x0C\x15\x90b\0\xA6\xCAV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0CBW=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\x0C\xA8\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0\xADlV[`@\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\x0C\xF1\x93\x92\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r\x0CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r!W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\r\xB4\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r\xCFW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r\xE4W=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0Ep\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\x8BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E\xA0W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0F6\x93\x91\x16\x91\x8A\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0FQW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0FfW=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0F\xF2\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x10\rW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x10\"W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x10C\x91Pb\0\xA6\xD8V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10pW=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x116W`\0b\0\x10\xAB\x82b\x000EV[\x90P`\0\x81`@Q` \x01b\0\x10\xC2\x91\x90b\0\xAE\x02V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x10\xE8\x91\x90b\0\xAE9V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x11\x1D\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0B+V[PPP\x80\x80b\0\x11-\x90b\0\xAE|V[\x91PPb\0\x10\x94V[P`@Qb\0\x11E\x90b\0\xA6\xE6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11bW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x11\xC1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11\xD6W=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x11\xF9\x90b\0\xA6hV[b\0\x12\x06\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12#W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x12X\x90b\0\xA6hV[b\0\x12e\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12\x82W=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x12\xB7\x90b\0\xA6hV[b\0\x12\xC4\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12\xE1W=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x13\x16\x90b\0\xA6hV[b\0\x13#\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x13@W=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x13u\x90b\0\xA6hV[b\0\x13\x82\x92\x91\x90b\0\xAC\xF7V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x13\x9FW=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x13\xFBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\x10W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x14:\x90b\0\xA6\xF4V[b\0\x14G\x92\x91\x90b\0\xAD V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x14dW=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x14\x88\x90b\0\xA7\x02V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x14\xB5W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x14\xD9\x90b\0\xA7\x10V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x15\x06W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x158\x90b\0\xA7\x1EV[`\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\x15uW=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\x99\xA8\x8E\xC4\x92b\0\x15\xB0\x92\x16\x90\x88\x90`\x04\x01b\0\xAD V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x15\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15\xE0W=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x16\x1D\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xAD V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x168W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16MW=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x16\x8A\x92\x90\x91\x16\x90\x86\x90`\x04\x01b\0\xAD V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16\xBAW=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x16\xF7\x92\x90\x91\x16\x90\x85\x90`\x04\x01b\0\xAD V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x17\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x17'W=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x17uW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x17\x8AW=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x17\xC2\x90b\0\xA7,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\x18\x07W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x18\x92V[`@\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\x18dW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x18\xC8V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x18\xB2W\x90P[P`@Q`$\x01b\0\x18\xE2\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0\xAF}V[`@\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\x19+\x93\x92\x91`\x04\x01b\0\xAD\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x19FW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x19[W=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x19m\x90b\0\xA7:V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x19\x8AW=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x19\xC6b\0\xA7HV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x19\xDEW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x1A'Wb\0\x1A'b\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x1AdWb\0\x1Adb\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10b\0\x1A\xB2Wb\0\x1A\xB2b\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RPb\0\x1A\xC8\x83b\x000EV[\x81`\x03\x81Q\x81\x10b\0\x1A\xDEWb\0\x1A\xDEb\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x1B\x19Wb\0\x1B\x19b\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1B`\x90\x85\x90`\x04\x01b\0\xAB\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1B\xAA\x91\x90\x81\x01\x90b\0\xB1\x12V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\xC2\x91\x90b\0\xAC\x85V[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1B\xFFWb\0\x1B\xFFb\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1CC\x90\x85\x90`\x04\x01b\0\xAB\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1CcW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1C\x8D\x91\x90\x81\x01\x90b\0\xB1\x12V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1C\xA5\x91\x90b\0\xAC\x85V[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x1C\xD8Wb\0\x1C\xD8b\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1D\x1C\x90\x85\x90`\x04\x01b\0\xAB\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1D=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1Df\x91\x90\x81\x01\x90b\0\xB1\x12V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1D~\x91\x90b\0\xAC\x85V[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1D\xBEWb\0\x1D\xBEb\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1E\x02\x90\x85\x90`\x04\x01b\0\xAB\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1E\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1EL\x91\x90\x81\x01\x90b\0\xB1\x12V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1Ed\x91\x90b\0\xAC\x85V[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1E\xCCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1E\xADW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0 \x03W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1Fo\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1F\x9D\x90b\0\xAC9V[\x80\x15b\0\x1F\xEEW\x80`\x1F\x10b\0\x1F\xC2Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1F\xEEV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1F\xD0W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1FMV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1E\xFAV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1E\xCCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1E\xADWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1E\xCCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1E\xADWPPPPP\x90P\x90V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x02\x91\x81\x01\x91\x90\x91R`\x03``\x82\x01\x81\x90Rb\0!\x1C\x91\x83\x91\x90b\x001bV[`\0b\0!(b\0:\x04V[\x90P`\0`B\x80Tb\0!;\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0!i\x90b\0\xAC9V[\x80\x15b\0!\xBAW\x80`\x1F\x10b\0!\x8EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0!\xBAV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0!\x9CW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0!\xCC\x82b\0;\xBDV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0!\xFA\x90\x84\x90`\x04\x01b\0\xACpV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\"\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\"@\x91\x90b\0\xAC\x85V[Pb\0\"M\x82\x82b\0<\x8EV[`\0\x80b\0\"[\x84b\0EWV[`@Qc\r\xA6m\xEB`\xE3\x1B\x81R\x91\x93P\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cm3oX\x90b\0\"\x90\x90\x85\x90\x85\x90`\x04\x01b\0\xB1_V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\"\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\"\xC0W=`\0\x80>=`\0\xFD[PPPPb\0\"\xD2\x84\x84\x84\x84b\0G\xC7V[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xCAO-\x97\x90b\0#\0\x90\x86\x90`\x04\x01b\0\xACpV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0#\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0#0W=`\0\x80>=`\0\xFD[PPPPb\0#@\x84\x84b\0?\xEEV[b\0#K\x84b\0A{V[PPPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0$#W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0#\xE4W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0#vV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0$\x82\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0$\xB0\x90b\0\xAC9V[\x80\x15b\0%\x01W\x80`\x1F\x10b\0$\xD5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0%\x01V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0$\xE3W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0$`V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0%\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0%\xA8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0%:V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x02\x91\x81\x01\x91\x90\x91R`\x03``\x82\x01\x81\x90Rb\0&4\x91\x83\x91\x90b\x001bV[`\0b\0&@b\0:\x04V[\x90P`\0`B\x80Tb\0&S\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0&\x81\x90b\0\xAC9V[\x80\x15b\0&\xD2W\x80`\x1F\x10b\0&\xA6Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0&\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0&\xB4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0&\xE4\x82b\0;\xBDV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0'\x12\x90\x84\x90`\x04\x01b\0\xACpV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0'2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0'X\x91\x90b\0\xAC\x85V[Pb\0'e\x82\x82b\0<\x8EV[`\0\x80b\0's\x84b\0EWV[`@Qc\r\xA6m\xEB`\xE3\x1B\x81R\x91\x93P\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cm3oX\x90b\0'\xA8\x90\x85\x90\x85\x90`\x04\x01b\0\xB1_V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'\xD8W=`\0\x80>=`\0\xFD[PPPPb\0'\xEA\x84\x84\x84\x84b\0G\xC7V[`\0b\0'\xF8\x85\x85b\0IqV[\x90P\x84`\x01`\x01`\xA0\x1B\x03\x16cPSw\xE2`@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(6W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0(KW=`\0\x80>=`\0\xFD[PPPPb\0(\\\x85\x85\x83b\0K\x0EV[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\xCAO-\x97\x90b\0(\x8A\x90\x87\x90`\x04\x01b\0\xACpV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0(\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0(\xBAW=`\0\x80>=`\0\xFD[PPPPb\0(\xCA\x85\x85b\0?\xEEV[b\0(\xD5\x85b\0A{V[PPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0 \x1BW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0)#\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0)Q\x90b\0\xAC9V[\x80\x15b\0)\xA2W\x80`\x1F\x10b\0)vWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0)\xA2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0)\x84W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0)\x01V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0)\xDAWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0*\xE9W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0*k\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0\xB1\x88V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0*\x87\x91b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0*\xC6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0*\xCBV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0*\xE5\x91\x90b\0\xB1\xD9V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1E\xCCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1E\xADWPPPPP\x90P\x90V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x02\x91\x81\x01\x91\x90\x91R`\x03``\x82\x01\x81\x90Rb\0+\x84\x91\x83\x91\x90b\x001bV[`\0b\0+\x90b\0:\x04V[\x90P`\0`B\x80Tb\0+\xA3\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0+\xD1\x90b\0\xAC9V[\x80\x15b\0,\"W\x80`\x1F\x10b\0+\xF6Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0,\"V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0,\x04W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0,4\x82b\0;\xBDV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0,b\x90\x84\x90`\x04\x01b\0\xACpV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0,\x82W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0,\xA8\x91\x90b\0\xAC\x85V[Pb\0,\xB5\x82\x82b\0<\x8EV[`\0\x80\x83`\x01`\x01`\xA0\x1B\x03\x16ce\xED\xA8\xE5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0,\xF9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0-#\x91\x90\x81\x01\x90b\0\xB2\xACV[\x91P\x91Pb\0\"\xD2\x84\x84\x84\x84b\0L\xA0V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x02\x91\x81\x01\x91\x90\x91R`\x03``\x82\x01\x81\x90Rb\0-i\x91\x83\x91\x90b\x001bV[`\0b\0-ub\0:\x04V[\x90P`\0`B\x80Tb\0-\x88\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0-\xB6\x90b\0\xAC9V[\x80\x15b\0.\x07W\x80`\x1F\x10b\0-\xDBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0.\x07V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0-\xE9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0.\x19\x82b\0;\xBDV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0.G\x90\x84\x90`\x04\x01b\0\xACpV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0.gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0.\x8D\x91\x90b\0\xAC\x85V[Pb\0.\x9A\x82\x82b\0<\x8EV[`\0\x80\x83`\x01`\x01`\xA0\x1B\x03\x16ce\xED\xA8\xE5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0.\xDEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0/\x08\x91\x90\x81\x01\x90b\0\xB2\xACV[\x91P\x91Pb\0/\x1A\x84\x84\x84\x84b\0L\xA0V[\x83`\x01`\x01`\xA0\x1B\x03\x16cPSw\xE2`@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/VW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0/kW=`\0\x80>=`\0\xFD[PPPPb\0#K\x84\x84b\0NEV[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0/\xC2b\0\xA7qV[\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\x15b\0/\xF7Wb\0/\xF9V[\xFE[P\x80b\x000=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\x000jWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\x000\x9AW\x80b\x000\x81\x81b\0\xAE|V[\x91Pb\x000\x92\x90P`\n\x83b\0\xB3\x94V[\x91Pb\x000nV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\x000\xB7Wb\x000\xB7b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\x000\xE2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\x001ZWb\x000\xFA`\x01\x83b\0\xB3\xABV[\x91Pb\x001\t`\n\x86b\0\xB3\xC5V[b\x001\x16\x90`0b\0\xB3\xDCV[`\xF8\x1B\x81\x83\x81Q\x81\x10b\x001.Wb\x001.b\0\xAC\xB5V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\x001R`\n\x86b\0\xB3\x94V[\x94Pb\x000\xE6V[\x94\x93PPPPV[`@\x80Q\x81\x81R`\x1F\x81\x83\x01R\x7F_configRand: set random seed to\0``\x82\x01Rb\xFF\xFF\xFF\x85\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`@Q`\x01`\x01`\xE8\x1B\x03\x19`\xE8\x85\x90\x1B\x16` \x82\x01R`#\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\x001\xFB\x82b\0P\"V[\x80Qb\x002\x11\x91`8\x91` \x90\x91\x01\x90b\0\xA7\x8FV[P\x80Qb\x002\x1F\x90b\0P\"V[\x80Qb\x0025\x91`9\x91` \x90\x91\x01\x90b\0\xA7\x8FV[Pb\x002E\x81` \x01Qb\0P\"V[\x80Qb\x002[\x91`:\x91` \x90\x91\x01\x90b\0\xA7\x8FV[Pb\x002k\x81`@\x01Qb\0P\"V[\x80Qb\x002\x81\x91`;\x91` \x90\x91\x01\x90b\0\xA7\x8FV[Pb\x002\x91\x81``\x01Qb\0P\"V[\x80Qb\x002\xA7\x91`<\x91` \x90\x91\x01\x90b\0\xA7\x8FV[Pb\x002\xE1`8\x80Tb\x002\xBB\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xF8``0\x919b\0P\x86V[b\x003\x1A`9\x80Tb\x002\xF4\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xFA\x03`0\x919b\0P\x86V[b\x003S`:\x80Tb\x003-\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xF5\xE2`3\x919b\0P\x86V[b\x003\x8C`;\x80Tb\x003f\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xF52`2\x919b\0P\x86V[b\x003\xC5`<\x80Tb\x003\x9F\x90b\0\xAC9V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xF4o`/\x919b\0P\x86V[b\x003\xCFb\0P\xBFV[`@\x81\x90Ub\x003\xE5\x90`\x01\x90\x81\x90\x1Bb\0\xB3\xABV[`A\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\x004\x0F\x90b\0Q\xFEV[\x80Qb\x004%\x91`B\x91` \x90\x91\x01\x90b\0\xA7\x8FV[P`@\x80T\x81Q\x82\x81R`0\x92\x81\x01\x92\x90\x92R\x7F_configRand: number of quorums b``\x83\x01Ro\x19Z[\x99\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`\x82\x1B`\x80\x83\x01R` \x82\x01R`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x90`\xA0\x01`@Q\x80\x91\x03\x90\xA1`@\x80Q``\x81\x01\x82R`\x05\x81Ra:\x98` \x82\x01R`\x96\x91\x81\x01\x91\x90\x91R`\0[`@T\x81\x10\x15b\x0077W`\0b\x004\xD1b\0R\xD9V[\x90P`\0b\x004\xDFb\0T\xD6V[\x90P`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x83`@Qb\x005:\x91\x90`@\x80\x82R`\x1C\x90\x82\x01R\x7F_configRand: creating quorum\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x83Q`@Q`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x91b\x005\x99\x91`@\x80\x82R`\x14\x90\x82\x01Rs\x0BH\x13X^\x08\x1B\xDC\x19\\\x98]\x1B\xDC\x88\x18\xDB\xDD[\x9D`b\x1B``\x82\x01Rc\xFF\xFF\xFF\xFF\x91\x90\x91\x16` \x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x82Q`@Qb\x005\xFB\x91\x90`@\x80\x82R`\x1B\x90\x82\x01R\x7F- Num strategies considered\0\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\x0F\x81\x83\x01Rn- Minimum stake`\x88\x1B``\x82\x01R`\x01`\x01``\x1B\x03\x83\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`\x1CT`3T`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x006\x9CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x006\xB1W=`\0\x80>=`\0\xFD[PP`(T`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xD7[L\x88\x91Pb\x006\xEB\x90\x87\x90\x85\x90\x87\x90`\x04\x01b\0\xB3\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x007\x06W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x007\x1BW=`\0\x80>=`\0\xFD[PPPPPP\x80\x80b\x007.\x90b\0\xAE|V[\x91PPb\x004\xBAV[P`\0b\x007E\x82b\0U\x14V[\x90P`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91Rb\x007b\x82b\x000EV[`@Q` \x01b\x007t\x91\x90b\0\xB4MV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\x007\x90\x91b\0\xACpV[`@Q\x80\x91\x03\x90\xA1`\0[\x81\x81\x10\x15b\08\xFAW`\0b\x007\xB0b\0:\x04V[`@Qc \x8CmS`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x821\xB5L\x90b\x007\xE2\x90`B\x90`\x04\x01b\0\xB4\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\08\x02W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\08(\x91\x90b\0\xAC\x85V[P`\0[`B\x80Tb\08;\x90b\0\xAC9V[\x90P\x81\x10\x15b\08\xE2W`\0`B\x82\x81Tb\08W\x90b\0\xAC9V[\x81\x10b\08hWb\08hb\0\xAC\xB5V[\x81T`\x01\x16\x15b\08\x88W\x90`\0R` `\0 \x90` \x91\x82\x82\x04\x01\x91\x90\x06[\x90T\x90\x1A`\x01`\xF8\x1B\x02`\xF8\x1C`\0\x90\x81R`D` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90UP\x80b\08\xD9\x81b\0\xAE|V[\x91PPb\08,V[PP\x80\x80b\08\xF1\x90b\0\xAE|V[\x91PPb\x007\x9BV[P`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\09B\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\09\xA6\x90` \x80\x82R`$\x90\x82\x01R\x7F_configRand complete; starting t`@\x82\x01Rcest!`\xE0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\09\xF5\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0\x80b\0:\x14`CTb\x000EV[`@Q` \x01b\0:&\x91\x90b\0\xB5dV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R`C\x80T\x91\x92P`\0b\0:J\x83b\0\xAE|V[\x91\x90PUP`\0\x80`\0b\0:_\x84b\0U\xE6V[\x92P\x92P\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16c*4\xAD\xE8`@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:\xA1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0:\xB6W=`\0\x80>=`\0\xFD[PP`@Qc\r\xA6m\xEB`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x92Pcm3oX\x91Pb\0:\xEA\x90\x85\x90\x85\x90`\x04\x01b\0\xB1_V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0;\x05W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0;\x1AW=`\0\x80>=`\0\xFD[PP`\x1DT`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rb\0;\xB4\x94P\x90\x91\x16\x91Pcmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0;nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0;\x94\x91\x90b\0\xB1\xD9V[`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xF9\xAA`1\x919b\0P\x86V[P\x90\x93\x92PPPV[b\0;\xF7`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01u\x18\xDA\x19X\xDA\xD7\xD3\x99]\x99\\\x97\xD4\x99Y\xDA\\\xDD\x19\\\x99Y`R\x1B\x81RP\x82b\0W\x82V[b\0<\x1C\x81`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x03\xF7Q`9\x919b\0X7V[b\0\x81R` \x01b\x03\xFB\xF1`>\x919b\0b\x01V[b\0=\xF3\x82\x82`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01b\x03\xF7\x8A`H\x919b\0c\xC9V[b\0>\x18\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xF4\xF8`:\x919b\0c\xE7V[b\0>>\x82\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xF6}`(\x919b\0d\x86V[b\0>c\x82`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x03\xFCW`$\x919b\0erV[PPV[b\0>\xA8`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7Fcheck_NoChangeUpdate_State\0\0\0\0\0\0\x81RP\x83b\0W\x82V[b\0>\xCD\x82`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x03\xF8\x0C`%\x919b\0f\0V[b\0>\xF2\x82`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xF81`/\x919b\0fmV[b\0?\x17\x81`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFA\xC9`#\x919b\0g\x13V[b\0?=\x82\x82`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFA\x84`#\x919b\0g\xEDV[b\0?c\x82\x82`@Q\x80``\x01`@R\x80`\"\x81R` \x01b\x03\xFA\xA7`\"\x919b\0h\x86V[b\0?\xA4\x81`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7Ftotal stake should be unchanged\0\x81RPb\0h\xE1V[b\0?\xC9\x81`@Q\x80``\x01`@R\x80`8\x81R` \x01b\x03\xF7\x19`8\x919b\0i:V[b\0>c\x81`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xF6L`1\x919b\0i\xCBV[b\0@(`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01ucheck_Deregister_State`P\x1B\x81RP\x83b\0W\x82V[b\0@M\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF9a`)\x919b\0[8V[b\0@s\x82\x82`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xF4\x14`2\x919b\0jPV[b\0@\x99\x82\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xFAX`,\x919b\0k\xA0V[b\0@\xBE\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x03\xF8\x90`.\x919b\0^\x98V[b\0@\xE4\x82\x82`@Q\x80``\x01`@R\x80`@\x81R` \x01b\x03\xF9!`@\x919b\0lgV[b\0A\n\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xF3K`3\x919b\0mtV[b\0A0\x82\x82`@Q\x80`\x80\x01`@R\x80`A\x81R` \x01b\x03\xFB.`A\x919b\0n\xB9V[b\0AU\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xF7\xD2`:\x919b\0o\x89V[b\0>c\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF4F`)\x919b\0p\x1BV[b\0A\xBC`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7Fcheck_CompleteDeregister_State\0\0\x81RP\x82b\0W\x82V[b\0A\xE1\x81`@Q\x80``\x01`@R\x80`+\x81R` \x01b\x03\xFB\x98`+\x919b\0X~V[b\0B\x06\x81`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF9a`)\x919b\0[8V[b\0=`\0\xFD[P`'T`1T`!T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92cH\\\xC9U`\xE0\x1B\x92b\0B\xAB\x92\x88\x92\x90\x91\x16\x90`$\x01b\0\xAD V[`@\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\x90Qb\0B\xEA\x90b\0\xA6hV[b\0B\xF8\x93\x92\x91\x90b\0\xAD\xCBV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0C\x15W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\0CvWb\0Cvb\0\xAC\xB5V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0C\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0D\x02\x91\x90b\0\xB5\xE1V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0DDW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0DYW=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\0D\x91\x90\x85\x90\x85\x90`\x04\x01b\0\xB6\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0D\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0D\xC1W=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0E|Wb\0E|b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0E\xA6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`/T\x90\x91P`\0\x90`\x01`\x01`@\x1B\x03\x81\x11\x15b\0E\xCAWb\0E\xCAb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0E\xF4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x85`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0FFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0Fp\x91\x90\x81\x01\x90b\0\xB1\x12V[`@Qb\0F\x7F\x91\x90b\0\xB6^V[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0G\xBCW`\0`/\x82\x81T\x81\x10b\0F\xADWb\0F\xADb\0\xAC\xB5V[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0G\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0G&\x91\x90b\0\xB5\xE1V[\x90P`\0b\0G\x81R` \x01b\x03\xFB\xF1`>\x919b\0b\x01V[b\0L\n\x83\x83`@Q\x80``\x01`@R\x80`=\x81R` \x01b\x03\xF6\xDC`=\x919b\0g\xEDV[b\0L1\x83\x83\x83`@Q\x80``\x01`@R\x80`;\x81R` \x01b\x03\xF5d`;\x919b\0u\xB7V[b\0LV\x82`@Q\x80``\x01`@R\x80`8\x81R` \x01b\x03\xF7\x19`8\x919b\0i:V[b\0L{\x82`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xF6L`1\x919b\0i\xCBV[b\0\x05\xB7\x83`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x03\xFCW`$\x919b\0erV[b\0L\xD8`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01scheck_Withdraw_State``\x1B\x81RP\x85b\0W\x82V[b\0L\xFD\x84`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x03\xF8\x0C`%\x919b\0f\0V[b\0M\"\x84`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xF81`/\x919b\0fmV[b\0MG\x83`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xFA\xC9`#\x919b\0g\x13V[b\0Mm\x84\x84`@Q\x80``\x01`@R\x80`7\x81R` \x01b\x03\xF6\xA5`7\x919b\0v\xFEV[b\0M\x93\x84\x84`@Q\x80``\x01`@R\x80`\"\x81R` \x01b\x03\xFA\xA7`\"\x919b\0h\x86V[b\0M\xD4\x83`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7Ftotal stake should be unchanged\0\x81RPb\0h\xE1V[b\0M\xF9\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01b\x03\xF3\xCD`'\x919b\0i:V[b\0N\x1E\x83`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x03\xF3\xA8`%\x919b\0i\xCBV[b\0Ik\x84\x83\x83`@Q\x80``\x01`@R\x80`\"\x81R` \x01b\x03\xFB\x0C`\"\x919b\0w\x99V[b\0N\x86`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7Fcheck_WithdrawUpdate_State\0\0\0\0\0\0\x81RP\x83b\0W\x82V[b\0N\xAB\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF9a`)\x919b\0[8V[b\0N\xD0\x82`@Q\x80``\x01`@R\x80`+\x81R` \x01b\x03\xFB\x98`+\x919b\0X~V[b\0N\xF5\x82`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x03\xF8\xBE`*\x919b\0p\xE3V[b\0O\x1B\x82\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xFAX`,\x919b\0k\xA0V[b\0O@\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x03\xF8\x90`.\x919b\0^\x98V[b\0Of\x82\x82`@Q\x80``\x01`@R\x80`@\x81R` \x01b\x03\xF9!`@\x919b\0lgV[b\0O\x8C\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xF3K`3\x919b\0mtV[b\0O\xB2\x82\x82`@Q\x80`\x80\x01`@R\x80`A\x81R` \x01b\x03\xFB.`A\x919b\0n\xB9V[b\0O\xD7\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xF7\xD2`:\x919b\0o\x89V[b\0O\xFD\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xF4F`)\x919b\0p\x1BV[b\0>c\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xFC{`,\x919b\0Z\x9AV[```\0[a\x01\0\x81\x10\x15b\0P\x80W`\x01\x81\x1B\x83\x81\x16\x15b\0PlW`@Qb\0PZ\x90\x84\x90`\x01\x85\x1B`\xF8\x1B\x90` \x01b\0\xB6\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x92P[Pb\0Px\x81b\0\xAE|V[\x90Pb\0P'V[P\x91\x90PV[\x81b\0>cW`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x81`@Qb\0P\xAC\x91\x90b\0\xB7\x0EV[`@Q\x80\x91\x03\x90\xA1b\0>c\x82b\0x%V[`\0\x80b\0Q_`9\x80Tb\0P\xD5\x90b\0\xAC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0Q\x03\x90b\0\xAC9V[\x80\x15b\0QTW\x80`\x1F\x10b\0Q(Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0QTV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0Q6W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\0x\x8CV[\x90P`\x01\x81\x14\x15b\0QsW`\x01\x91PP\x90V[`\x02\x81\x14\x15b\0Q\x85W`\x02\x91PP\x90V[`\x04\x81\x14\x15b\0Q\xA3Wb\0Q\x9D`\x03`\nb\0qcV[\x91PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7F_randQuorumCount: flag not recog`D\x82\x01Rd\x1B\x9A^\x99Y`\xDA\x1B`d\x82\x01R`\x84\x01b\x0004V[P\x90V[```\0\x80b\0R\x0E\x84b\0x\xF5V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15b\0R,Wb\0R,b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0RWW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15b\0RpWPa\x01\0\x81\x10[\x15b\0R\xCFW`\x01\x81\x1B\x93P\x85\x84\x16\x15b\0R\xBCW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10b\0R\x9EWb\0R\x9Eb\0\xAC\xB5V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[b\0R\xC7\x81b\0\xAE|V[\x90Pb\0R^V[P\x90\x94\x93PPPPV[```\0b\0R\xF0`:\x80Tb\0P\xD5\x90b\0\xAC9V[\x90P`\0`\x01\x82\x14\x15b\0S\x07WP`\x01b\0S\xDDV[`\x02\x82\x14\x15b\0S\x1AWP`\x02b\0S\xDDV[`\x04\x82\x14\x15b\0SKW`/Tb\0SC\x90`\x03\x90b\0S=\x90`\x01\x90b\0\xB3\xABV[b\0qcV[\x90Pb\0S\xDDV[`\x08\x82\x14\x15b\0S^WP`\x0Fb\0S\xDDV[`\x10\x82\x14\x15b\0SqWP`\x14b\0S\xDDV[` \x82\x14\x15b\0S\x84WP`\x19b\0S\xDDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7F_randStrategyCount: flag not rec`D\x82\x01Rf\x1B\xD9\xDB\x9A^\x99Y`\xCA\x1B`d\x82\x01R`\x84\x01b\x0004V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0S\xFAWb\0S\xFAb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0TAW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0T\x19W\x90P[P\x90P`\0[\x81Q\x81\x10\x15b\0T\xCEW`@Q\x80`@\x01`@R\x80`/\x83\x81T\x81\x10b\0TrWb\0Trb\0\xAC\xB5V[`\0\x91\x82R` \x91\x82\x90 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x82Rg\r\xE0\xB6\xB3\xA7d\0\0\x91\x01R\x82Q\x83\x90\x83\x90\x81\x10b\0T\xADWb\0T\xADb\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0T\xC5\x90b\0\xAE|V[\x91PPb\0TGV[P\x93\x92PPPV[`\0\x80b\0T\xEC`;\x80Tb\0P\xD5\x90b\0\xAC9V[\x90P`\x01\x81\x14\x15b\0U\0W`\0\x91PP\x90V[`\x02\x81\x14\x15b\0Q\xA3Wb\x0FB@\x91PP\x90V[`\0\x80b\0U*`<\x80Tb\0P\xD5\x90b\0\xAC9V[\x90P`\x01\x81\x14\x15b\0U?WP`\0\x92\x91PPV[`\x02\x81\x14\x15b\0UtWb\0Um`\x01\x80\x85`\0\x01Qb\0Ua\x91\x90b\0\xB7?V[c\xFF\xFF\xFF\xFF\x16b\0qcV[\x93\x92PPPV[`\x04\x81\x14\x15b\0U\x8AWPPQc\xFF\xFF\xFF\xFF\x16\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7F_randInitialOperators: flag not `D\x82\x01Ri\x1C\x99X\xDB\xD9\xDB\x9A^\x99Y`\xB2\x1B`d\x82\x01R`\x84\x01b\x0004V[`\0``\x80`\0\x80b\0U\xF8b\0y&V[\x91P\x91P`\0\x80b\0V\x12`8\x80Tb\0P\xD5\x90b\0\xAC9V[\x90P`\x01\x81\x14\x15b\0VcW\x87\x84\x84`@Qb\0V/\x90b\0\xA8(V[b\0V=\x93\x92\x91\x90b\0\xB7_V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0VZW=`\0\x80>=`\0\xFD[P\x91Pb\0V\xD1V[`\x02\x81\x14\x15b\0V\xD1W\x87`@Q` \x01b\0V\x80\x91\x90b\0\xB7\xBFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x97P\x87\x84\x84`@Qb\0V\xA2\x90b\0\xA86V[b\0V\xB0\x93\x92\x91\x90b\0\xB7_V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0V\xCDW=`\0\x80>=`\0\xFD[P\x91P[`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0W W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0WJ\x91\x90\x81\x01\x90b\0\xB1\x12V[`@Qb\0WY\x91\x90b\0\xB7\xE9V[`@Q\x80\x91\x03\x90\xA1`\0\x80b\0Wo\x84b\0EWV[\x94\x9B\x90\x9AP\x93\x98P\x92\x96PPPPPPPV[`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R\x82\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0W\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0W\xFC\x91\x90\x81\x01\x90b\0\xB1\x12V[`@Q` \x01b\0X\x0F\x92\x91\x90b\0\xB82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0X+\x91b\0\xACpV[`@Q\x80\x91\x03\x90\xA1PPV[`\0b\0XD\x83b\0z\xF7V[\x80Q\x90\x91Pb\0XW\x90`\0\x84b\0{{V[b\0\x05\xB7`\0\x82` \x01Q`\x02\x81\x11\x15b\0XvWb\0Xvb\0\xB8\x8EV[\x14\x83b\0P\x86V[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x84`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0X\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Y\t\x91\x90b\0\xAC\x85V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0Y(\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0YFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Yl\x91\x90b\0\xB8\xA4V[\x90Pb\0\x05\xB7`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x83b\0P\x86V[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x83\x92\x91\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Y\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Y\xF6\x91\x90b\0\xB8\xCFV[`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x93\x95P\x91\x93P`\0\x92\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0ZHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Zn\x91\x90b\0\xAC\x85V[\x90Pb\0Z~\x83`\0\x86b\0{\xB7V[b\0Z\x8C\x82`\0\x86b\0{\xB7V[b\0#K\x81`\0\x86b\0{{V[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0Z\xD6\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xAD V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Z\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0[\x1A\x91\x90b\0\xB8\xF4V[\x90Pb\0\x05\xB7`\0[\x82`\x01\x81\x11\x15b\0XvWb\0Xvb\0\xB8\x8EV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0[yW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0[\x9F\x91\x90b\0\xAC\x85V[`(T`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0[\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\\\x16\x91\x90b\0\xAC\x85V[\x90Pb\0Ik\x82\x82\x85b\0{{V[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\\qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\\\x97\x91\x90b\0\xB9'V[\x90Pb\0\x05\xB7`\x01[\x82`\x02\x81\x11\x15b\0XvWb\0Xvb\0\xB8\x8EV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0]\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0]@\x91\x90b\0\xAC\x85V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0]_\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0]}W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0]\xA3\x91\x90b\0\xB8\xA4V[\x90P`\0b\0]\xB2\x84b\0{\xF3V[\x90Pb\0#Kb\0]\xD0`\x01`\x01`\xC0\x1B\x03\x80\x84\x16\x90\x85\x16\x81\x16\x14\x90V[\x84b\0P\x86V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0^\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0^>\x91\x90b\0\xAC\x85V[\x90P`\0b\0^M\x84b\0{\xF3V[\x90P`\0b\0^\\\x83b\0}\x86V[\x90P`\0b\0^k\x84b\0}\xF7V[\x90Pb\0^\x8F`\x01`\x01`\xC0\x1B\x03\x82\x16\x84\x17\x83`\x01`\x01`\xC0\x1B\x03\x16\x14\x86b\0P\x86V[PPPPPPPV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0^\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0^\xFE\x91\x90b\0\xB9EV[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x83\x92\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0_LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0_r\x91\x90b\0\xB8\xCFV[\x84Q`\0\x90\x81R` \x80\x87\x01Q\x90R`@\x81 \x92\x94P\x90\x92P\x90`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0_\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0`\x03\x91\x90b\0\xAC\x85V[`*T`@Qct]\xCDs`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE8\xBB\x9A\xE6\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0`SW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0`y\x91\x90b\0\xB5\xE1V[\x90Pb\0`\x8C\x86`\0\x01Q\x86\x89b\0{\xB7V[b\0`\x9D\x86` \x01Q\x85\x89b\0{\xB7V[b\0`\xAA\x83\x83\x89b\0{{V[b\0`\xB7\x88\x82\x89b\0~\xEAV[PPPPPPPPV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0a\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0a'\x91\x90b\0\xB9EV[\x90P`\0b\0a6\x84b\0\x7F8V[\x90P`\0b\0aE\x85b\0\x80\x82V[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FW`\0b\0a\x87\x85\x84\x84\x81Q\x81\x10b\0apWb\0apb\0\xAC\xB5V[` \x02` \x01\x01Qb\0\x81\x0F\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90Pb\0a\xBA\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0a\xA7Wb\0a\xA7b\0\xAC\xB5V[` \x02` \x01\x01Q`\0\x01Q\x88b\0{\xB7V[b\0a\xEB\x81` \x01Q\x85\x84\x81Q\x81\x10b\0a\xD8Wb\0a\xD8b\0\xAC\xB5V[` \x02` \x01\x01Q` \x01Q\x88b\0{\xB7V[P\x80b\0a\xF8\x81b\0\xAE|V[\x91PPb\0aJV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0bBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0bh\x91\x90b\0\xAC\x85V[\x90P`\0[\x83Q\x81\x10\x15b\0#KW`\0\x84\x82\x81Q\x81\x10b\0b\x8EWb\0b\x8Eb\0\xAC\xB5V[\x01` \x01Q`+T`@Qc\xC4gx\xA5`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xC4gx\xA5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0b\xE8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0c\x0E\x91\x90b\0\xB9zV[`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x87\x90R`\xFF\x85\x16`$\x82\x01R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0cgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0c\x8D\x91\x90b\0\xB9zV[\x90Pb\0c\xB0\x82`\x01`\x01``\x1B\x03\x16\x82`\x01`\x01``\x1B\x03\x16\x10\x15\x87b\0P\x86V[PPP\x80\x80b\0c\xC0\x90b\0\xAE|V[\x91PPb\0bmV[`\0b\0c\xD7\x84\x84b\0s\x7FV[\x90Pb\0Ik\x84\x84\x83\x85b\0u\xB7V[`\0b\0c\xF4\x83b\0\x81\xA8V[\x90P`\0b\0d\x03\x84b\0\x82\xD8V[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0dq\x83\x82\x81Q\x81\x10b\0d+Wb\0d+b\0\xAC\xB5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0dNWb\0dNb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01b\0dd\x91\x90b\0\xB9\xA5V[c\xFF\xFF\xFF\xFF\x16\x86b\0{\xB7V[\x80b\0d}\x81b\0\xAE|V[\x91PPb\0d\x08V[`\0b\0d\x93\x83b\0\x83eV[\x90P`\0b\0d\xA2\x84b\0\x84\xA7V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0e\x06\x83\x82\x81Q\x81\x10b\0d\xCAWb\0d\xCAb\0\xAC\xB5V[` \x02` \x01\x01QQ\x83\x83\x81Q\x81\x10b\0d\xE8Wb\0d\xE8b\0\xAC\xB5V[` \x02` \x01\x01QQ`\x01b\0d\xFF\x91\x90b\0\xB3\xDCV[\x86b\0{\xB7V[b\0e9b\0e2\x84\x83\x81Q\x81\x10b\0e#Wb\0e#b\0\xAC\xB5V[` \x02` \x01\x01Q\x88b\0\x854V[\x85b\0P\x86V[b\0e]b\0eV\x83\x83\x81Q\x81\x10b\0e#Wb\0e#b\0\xAC\xB5V[\x85b\0\x85\xFCV[\x80b\0ei\x81b\0\xAE|V[\x91PPb\0d\xA7V[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0e\xAE\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\xAD V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0e\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0e\xF2\x91\x90b\0\xB8\xF4V[\x90Pb\0\x05\xB7`\x01b\0[#V[`\0b\0f\r\x83b\0z\xF7V[\x90P`\0b\0f\x1C\x84b\0\x86\tV[\x80Q\x83Q\x91\x92Pb\0f/\x91\x85b\0{{V[b\0Ik\x82` \x01Q`\x02\x81\x11\x15b\0fLWb\0fLb\0\xB8\x8EV[\x82` \x01Q`\x02\x81\x11\x15b\0feWb\0feb\0\xB8\x8EV[\x14\x84b\0P\x86V[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0f\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0f\xD4\x91\x90b\0\xAC\x85V[\x90P`\0b\0f\xE3\x82b\0}\x86V[\x90P`\0b\0f\xF2\x83b\0}\xF7V[\x90Pb\0#K\x82`\x01`\x01`\xC0\x1B\x03\x16\x82`\x01`\x01`\xC0\x1B\x03\x16\x86b\0{\xB7V[`\0b\0g \x83b\0\x7F8V[\x90P`\0b\0g/\x84b\0\x80\x82V[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0g\x8B\x83\x82\x81Q\x81\x10b\0gWWb\0gWb\0\xAC\xB5V[` \x02` \x01\x01Q`\0\x01Q\x83\x83\x81Q\x81\x10b\0gxWb\0gxb\0\xAC\xB5V[` \x02` \x01\x01Q`\0\x01Q\x86b\0{\xB7V[b\0g\xD8\x83\x82\x81Q\x81\x10b\0g\xA4Wb\0g\xA4b\0\xAC\xB5V[` \x02` \x01\x01Q` \x01Q\x83\x83\x81Q\x81\x10b\0g\xC5Wb\0g\xC5b\0\xAC\xB5V[` \x02` \x01\x01Q` \x01Q\x86b\0{\xB7V[\x80b\0g\xE4\x81b\0\xAE|V[\x91PPb\0g4V[`\0b\0g\xFB\x84\x84b\0s\x7FV[\x90P`\0b\0h\x0B\x85\x85b\0t\xC1V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0hq\x83\x82\x81Q\x81\x10b\0h3Wb\0h3b\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10b\0hYWb\0hYb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x86b\0{\xB7V[\x80b\0h}\x81b\0\xAE|V[\x91PPb\0h\x10V[`\0b\0h\x94\x84\x84b\0\x86\x9CV[\x90P`\0b\0h\xA4\x85\x85b\0\x88HV[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0h\xCC\x83\x82\x81Q\x81\x10b\0h3Wb\0h3b\0\xAC\xB5V[\x80b\0h\xD8\x81b\0\xAE|V[\x91PPb\0h\xA9V[`\0b\0h\xEE\x83b\0\x88\xD6V[\x90P`\0b\0h\xFD\x84b\0\x8A\tV[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0i%\x83\x82\x81Q\x81\x10b\0h3Wb\0h3b\0\xAC\xB5V[\x80b\0i1\x81b\0\xAE|V[\x91PPb\0i\x02V[`\0b\0iG\x83b\0\x81\xA8V[\x90P`\0b\0iV\x84b\0\x82\xD8V[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0i\xB6\x83\x82\x81Q\x81\x10b\0i~Wb\0i~b\0\xAC\xB5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0i\xA1Wb\0i\xA1b\0\xAC\xB5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x86b\0{\xB7V[\x80b\0i\xC2\x81b\0\xAE|V[\x91PPb\0i[V[`\0b\0i\xD8\x83b\0\x83eV[\x90P`\0b\0i\xE7\x84b\0\x84\xA7V[\x90P`\0\x82`@Q` \x01b\0i\xFE\x91\x90b\0\xB9\xD0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P`\0\x82`@Q` \x01b\0j+\x91\x90b\0\xB9\xD0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90Pb\0(\xD5\x82\x82\x87b\0{{V[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0j\xB5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0j\xDB\x91\x90b\0\xAC\x85V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0j\xFA\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0k\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0k>\x91\x90b\0\xB8\xA4V[\x90P`\0[\x83Q\x81\x10\x15b\0#KW`\0\x84\x82\x81Q\x81\x10b\0kdWb\0kdb\0\xAC\xB5V[` \x91\x01\x01Q`\xF8\x1C\x90Pb\0k\x8A`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x83\x1C\x81\x16\x14b\0eVV[P\x80b\0k\x97\x81b\0\xAE|V[\x91PPb\0kCV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0k\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0l\x07\x91\x90b\0\xAC\x85V[\x90P`\0b\0l\x16\x84b\0{\xF3V[\x90P`\0b\0l%\x83b\0}\x86V[\x90P`\0b\0l4\x84b\0}\xF7V[\x90Pb\0lP\x83\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x84\x14[\x86b\0P\x86V[b\0^\x8F\x82\x84\x16`\x01`\x01`\xC0\x1B\x03\x16\x15b\0lIV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0l\xA7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0l\xCD\x91\x90b\0\xB9EV[\x90P`\0b\0l\xDC\x84b\0\x7F8V[\x90P`\0b\0l\xEB\x85b\0\x80\x82V[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FW`\0b\0m b\0m\x0B\x86b\0\x8A\x96V[\x84\x84\x81Q\x81\x10b\0apWb\0apb\0\xAC\xB5V[\x90Pb\0m@\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0a\xA7Wb\0a\xA7b\0\xAC\xB5V[b\0m^\x81` \x01Q\x85\x84\x81Q\x81\x10b\0a\xD8Wb\0a\xD8b\0\xAC\xB5V[P\x80b\0mk\x81b\0\xAE|V[\x91PPb\0l\xF0V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0m\xB5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0m\xDB\x91\x90b\0\xAC\x85V[\x90P`\0[\x83Q\x81\x10\x15b\0#KW`\0\x84\x82\x81Q\x81\x10b\0n\x01Wb\0n\x01b\0\xAC\xB5V[\x01` \x01Q`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x86\x90R`\xF8\x92\x90\x92\x1C`$\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0nbW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0n\x88\x91\x90b\0\xB9zV[\x90Pb\0n\xA1\x81`\x01`\x01``\x1B\x03\x16`\0\x87b\0{\xB7V[PP\x80\x80b\0n\xB0\x90b\0\xAE|V[\x91PPb\0m\xE0V[`\0b\0n\xC7\x84\x84b\0\x88HV[\x90P`\0b\0n\xD6\x84b\0\x88\xD6V[\x90P`\0b\0n\xE5\x85b\0\x8A\tV[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FWb\0ot\x83\x82\x81Q\x81\x10b\0o\rWb\0o\rb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x85\x83\x81Q\x81\x10b\0o3Wb\0o3b\0\xAC\xB5V[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0oPWb\0oPb\0\xAC\xB5V[` \x02` \x01\x01Qb\0od\x91\x90b\0\xB6\xB2V[`\x01`\x01``\x1B\x03\x16\x87b\0{\xB7V[\x80b\0o\x80\x81b\0\xAE|V[\x91PPb\0n\xEAV[`\0b\0o\x96\x83b\0\x81\xA8V[\x90P`\0b\0o\xA5\x84b\0\x82\xD8V[\x90P`\0[\x84Q\x81\x10\x15b\0#KWb\0p\x06\x83\x82\x81Q\x81\x10b\0o\xCDWb\0o\xCDb\0\xAC\xB5V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16`\x01\x84\x84\x81Q\x81\x10b\0o\xF2Wb\0o\xF2b\0\xAC\xB5V[` \x02` \x01\x01Qb\0dd\x91\x90b\0\xB7?V[\x80b\0p\x12\x81b\0\xAE|V[\x91PPb\0o\xAAV[`\0b\0p(\x83b\0\x83eV[\x90P`\0b\0p7\x84b\0\x84\xA7V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0p\x94\x83\x82\x81Q\x81\x10b\0p_Wb\0p_b\0\xAC\xB5V[` \x02` \x01\x01QQ`\x01\x84\x84\x81Q\x81\x10b\0p\x7FWb\0p\x7Fb\0\xAC\xB5V[` \x02` \x01\x01QQb\0d\xFF\x91\x90b\0\xB3\xABV[b\0p\xB1b\0eV\x84\x83\x81Q\x81\x10b\0e#Wb\0e#b\0\xAC\xB5V[b\0p\xCEb\0e2\x83\x83\x81Q\x81\x10b\0e#Wb\0e#b\0\xAC\xB5V[\x80b\0p\xDA\x81b\0\xAE|V[\x91PPb\0p=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0qU\x91\x90b\0\xB9'V[\x90Pb\0\x05\xB7`\x02b\0\\\xA0V[`\0\x80b\0qr\x84\x84b\0\xB3\xABV[b\0q\x7F\x90`\x01b\0\xB3\xDCV[\x90P`\0\x81[\x80\x15b\0q\xA4W\x81b\0q\x98\x81b\0\xAE|V[\x92PP`\x01\x1Cb\0q\x85V[`\0b\0q\xB5`\x01\x80\x85\x1Bb\0\xB3\xABV[`7T\x90\x91P\x81\x16[\x84\x81\x10b\0q\xDCW\x81b\0q\xD3\x86\x83b\0\xB3\xABV[\x16\x90Pb\0q\xBEV[`7T`@Q` \x01b\0q\xF2\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0r\x19\x81\x89b\0\xB3\xDCV[\x98\x97PPPPPPPPV[b\0\x05\xB7\x83\x83\x83`\0b\0\x8BVV[`\0b\0rB\x84\x84b\0s\x7FV[\x90P`\0b\0rR\x85\x85b\0t\xC1V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0r\xBA\x82\x82\x81Q\x81\x10b\0rzWb\0rzb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x84\x83\x81Q\x81\x10b\0r\xA0Wb\0r\xA0b\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x10\x15\x85b\0P\x86V[\x80b\0r\xC6\x81b\0\xAE|V[\x91PPb\0rWV[`\0b\0r\xDD\x85\x85b\0\x8DQV[\x90P`\0b\0r\xED\x86\x86b\0\x8EyV[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FWb\0sj\x85\x82\x81Q\x81\x10b\0s\x15Wb\0s\x15b\0\xAC\xB5V[` \x02` \x01\x01Q\x83\x83\x81Q\x81\x10b\0s2Wb\0s2b\0\xAC\xB5V[` \x02` \x01\x01Qb\0sF\x91\x90b\0\xB3\xDCV[\x84\x83\x81Q\x81\x10b\0s[Wb\0s[b\0\xAC\xB5V[` \x02` \x01\x01Q\x86b\0{\xB7V[\x80b\0sv\x81b\0\xAE|V[\x91PPb\0r\xF2V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0s\x9FWb\0s\x9Fb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0s\xC9W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0T\xCEW`+T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x1F\x9Bt\xE0\x90\x86\x90\x84\x90\x81\x10b\0t\x05Wb\0t\x05b\0\xAC\xB5V[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x88\x16`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0tYW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0t\x7F\x91\x90b\0\xB9zV[\x82\x82\x81Q\x81\x10b\0t\x94Wb\0t\x94b\0\xAC\xB5V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0t\xB8\x81b\0\xAE|V[\x91PPb\0s\xCFV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0u\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0uA\x91\x90b\0\xAC\x85V[\x90Pb\0uO\x84\x84b\0s\x7FV[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0u\x97W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0u\xACW=`\0\x80>=`\0\xFD[PPPPP\x92\x91PPV[`\0b\0u\xC5\x85\x85b\0\x86\x9CV[\x90P`\0b\0u\xD5\x86\x86b\0\x88HV[\x90P`\0b\0u\xE4\x86b\0\x88\xD6V[\x90P`\0b\0u\xF3\x87b\0\x8A\tV[\x90P`\0[\x87Q\x81\x10\x15b\0v\xF3Wb\0v\x82\x85\x82\x81Q\x81\x10b\0v\x1BWb\0v\x1Bb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0vAWb\0vAb\0\xAC\xB5V[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0v^Wb\0v^b\0\xAC\xB5V[` \x02` \x01\x01Qb\0vr\x91\x90b\0\xBA^V[`\x01`\x01``\x1B\x03\x16\x88b\0{\xB7V[b\0v\xDE\x83\x82\x81Q\x81\x10b\0v\x9BWb\0v\x9Bb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0v\xC1Wb\0v\xC1b\0\xAC\xB5V[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0v^Wb\0v^b\0\xAC\xB5V[\x80b\0v\xEA\x81b\0\xAE|V[\x91PPb\0u\xF8V[PPPPPPPPPV[`\0b\0w\x0C\x84\x84b\0s\x7FV[\x90P`\0b\0w\x1C\x85\x85b\0t\xC1V[\x90P`\0[\x84Q\x81\x10\x15b\0(\xD5Wb\0w\x84\x82\x82\x81Q\x81\x10b\0wDWb\0wDb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x84\x83\x81Q\x81\x10b\0wjWb\0wjb\0\xAC\xB5V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x11\x15\x85b\0P\x86V[\x80b\0w\x90\x81b\0\xAE|V[\x91PPb\0w!V[`\0b\0w\xA7\x85\x85b\0\x8DQV[\x90P`\0b\0w\xB7\x86\x86b\0\x8EyV[\x90P`\0[\x85Q\x81\x10\x15b\0^\x8FWb\0x\x10\x85\x82\x81Q\x81\x10b\0w\xDFWb\0w\xDFb\0\xAC\xB5V[` \x02` \x01\x01Q\x83\x83\x81Q\x81\x10b\0w\xFCWb\0w\xFCb\0\xAC\xB5V[` \x02` \x01\x01Qb\0sF\x91\x90b\0\xB3\xABV[\x80b\0x\x1C\x81b\0\xAE|V[\x91PPb\0w\xBCV[\x80b\0<\x8BW`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\0xz\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1b\0<\x8Bb\0\x8F\x07V[`\0b\0x\xB7`\0\x83Q\x11`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xF4\xC6`2\x919b\0P\x86V[`\0b\0x\xCF`\0`\x01\x85Qb\0S=\x91\x90b\0\xB3\xABV[\x90P\x82\x81\x81Q\x81\x10b\0x\xE6Wb\0x\xE6b\0\xAC\xB5V[\x01` \x01Q`\xF8\x1C\x93\x92PPPV[`\0\x80[\x82\x15b\0K\x08Wb\0y\r`\x01\x84b\0\xB3\xABV[\x90\x92\x16\x91\x80b\0y\x1D\x81b\0\xBA\x83V[\x91PPb\0x\xF9V[`\0b\0y2b\0\xA8DV[`>T`=T\x14\x15b\0y\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7F_fetchKeypair: not enough genera`D\x82\x01R\x7Fted keys. Check IntegrationDeplo`d\x82\x01Rn<\xB2\xB9\x171\xB7\xB79\xBA9:\xB1\xBA7\xB9`\x89\x1B`\x84\x82\x01R`\xA4\x01b\x0004V[`\0`>`=T\x81T\x81\x10b\0y\xE0Wb\0y\xE0b\0\xAC\xB5V[\x90`\0R` `\0 \x01T\x90P`\0`?`=T\x81T\x81\x10b\0z\x07Wb\0z\x07b\0\xAC\xB5V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q`\xA0\x81\x01\x82R`\x08\x93\x90\x93\x02\x90\x91\x01\x80T``\x84\x01\x90\x81R`\x01\x82\x01T`\x80\x80\x86\x01\x91\x90\x91R\x90\x84R\x82Q\x80\x84\x01\x84R`\x02\x80\x84\x01T\x82R`\x03\x84\x01T\x82\x88\x01R\x95\x85\x01R\x82Q\x90\x81\x01\x80\x84R\x93\x94\x91\x93\x85\x84\x01\x93\x91\x92`\x04\x86\x01\x92\x84\x92\x90\x83\x01\x91\x84\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0z}WPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0z\xB4WPPP\x91\x90\x92RPPP\x90RP`=\x80T\x91\x92P`\0b\0z\xE9\x83b\0\xAE|V[\x90\x91UP\x91\x94\x90\x93P\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`(T`@Qc\x16\x19q\x83`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90cXe\xC6\x0C\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0{UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0K\x08\x91\x90b\0\xBA\xA8V[\x81\x83\x14b\0\x05\xB7W`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x81`@Qb\0{\xA3\x91\x90b\0\xB7\x0EV[`@Q\x80\x91\x03\x90\xA1b\0\x05\xB7\x83\x83b\0\x90\x15V[\x81\x83\x14b\0\x05\xB7W`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x81`@Qb\0{\xDF\x91\x90b\0\xB7\x0EV[`@Q\x80\x91\x03\x90\xA1b\0\x05\xB7\x83\x83b\0\x90\xFEV[`\0a\x01\0\x82Q\x11\x15b\0|~W`@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\x01b\x0004V[\x81Qb\0|\x8DWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10b\0|\xA6Wb\0|\xA6b\0\xAC\xB5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15b\0;\xB4W\x84\x81\x81Q\x81\x10b\0|\xD8Wb\0|\xD8b\0\xAC\xB5V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11b\0}oW`@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\x01b\x0004V[\x91\x81\x17\x91b\0}~\x81b\0\xAE|V[\x90Pb\0|\xB9V[`(T`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0}\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0K\x08\x91\x90b\0\xB8\xA4V[`\0\x80`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0~PW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0~v\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0}\x86V[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0~\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0~\xE0W=`\0\x80>=`\0\xFD[PPPPP\x91\x90PV[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x14b\0\x05\xB7W`\0\x80Q` b\x03\xF5\x9F\x839\x81Q\x91R\x81`@Qb\0\x7F$\x91\x90b\0\xB7\x0EV[`@Q\x80\x91\x03\x90\xA1b\0\x05\xB7\x83\x83b\0\x91\xB0V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x7FXWb\0\x7FXb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x7F\x9FW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x7FwW\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`*T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c_a\xA8\x84\x90\x86\x90\x84\x90\x81\x10b\0\x7F\xDBWb\0\x7F\xDBb\0\xAC\xB5V[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x80\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x80E\x91\x90b\0\xB9EV[\x82\x82\x81Q\x81\x10b\0\x80ZWb\0\x80Zb\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x80r\x90b\0\xAE|V[\x91PPb\0\x7F\xA5V[P\x92\x91PPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x80\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x81\x02\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0\x7F8V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x81-b\0\xA8\x94V[\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\x15b\0/\xF7WP\x80b\x000=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\x01b\x0004V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x81\xC8Wb\0\x81\xC8b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x81\xF2W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`,T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF3A\t\"\x90\x86\x90\x84\x90\x81\x10b\0\x82.Wb\0\x82.b\0\xAC\xB5V[\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\x15b\0\x82sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x82\x99\x91\x90b\0\xBA\xE3V[\x82\x82\x81Q\x81\x10b\0\x82\xAEWb\0\x82\xAEb\0\xAC\xB5V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x82\xCF\x81b\0\xAE|V[\x91PPb\0\x81\xF8V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x832W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x83X\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0\x81\xA8V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x83\x85Wb\0\x83\x85b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x83\xBAW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x83\xA4W\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`,T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90\x86\x90\x84\x90\x81\x10b\0\x83\xF6Wb\0\x83\xF6b\0\xAC\xB5V[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01RCc\xFF\xFF\xFF\xFF\x16`$\x82\x01R`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x84GW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x84q\x91\x90\x81\x01\x90b\0\xBB\x0BV[\x82\x82\x81Q\x81\x10b\0\x84\x86Wb\0\x84\x86b\0\xAC\xB5V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x84\x9E\x90b\0\xAE|V[\x91PPb\0\x83\xC0V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x85\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x85'\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0\x83eV[`\0\x80\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x85vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x85\x9C\x91\x90b\0\xAC\x85V[\x90P`\0[\x84Q\x81\x10\x15b\0\x85\xF1W\x81\x85\x82\x81Q\x81\x10b\0\x85\xC1Wb\0\x85\xC1b\0\xAC\xB5V[` \x02` \x01\x01Q\x14\x15b\0\x85\xDCW`\x01\x92PPPb\0K\x08V[\x80b\0\x85\xE8\x81b\0\xAE|V[\x91PPb\0\x85\xA1V[P`\0\x94\x93PPPPV[b\0>c\x82\x15\x82b\0P\x86V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`.T`@\x80Qc/\xE1\xEE\r`\xE2\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\xBF\x87\xB84\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15b\0\x86iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x86\x8F\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0z\xF7V[```\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x86\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x87\x05\x91\x90b\0\xAC\x85V[\x90P`\0\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x87%Wb\0\x87%b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x87OW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15b\0\x88?W`+T\x85Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90\x85\x90\x88\x90\x85\x90\x81\x10b\0\x87\x8DWb\0\x87\x8Db\0\xAC\xB5V[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x04\x81\x01\x92\x90\x92R`\xF8\x1C`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x87\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x87\xFD\x91\x90b\0\xB9zV[\x82\x82\x81Q\x81\x10b\0\x88\x12Wb\0\x88\x12b\0\xAC\xB5V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x886\x81b\0\xAE|V[\x91PPb\0\x87UV[P\x94\x93PPPPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x88\xA2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x88\xC8\x91\x90b\0\xAC\x85V[\x90Pb\0uO\x84\x84b\0\x86\x9CV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x88\xF6Wb\0\x88\xF6b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x89 W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`+T\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xD5\xEC\xCC\x05\x90\x86\x90\x84\x90\x81\x10b\0\x89\\Wb\0\x89\\b\0\xAC\xB5V[\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\x15b\0\x89\xA1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x89\xC7\x91\x90b\0\xB9zV[\x82\x82\x81Q\x81\x10b\0\x89\xDCWb\0\x89\xDCb\0\xAC\xB5V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0\x8A\0\x81b\0\xAE|V[\x91PPb\0\x89&V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8AcW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8A\x89\x91\x90b\0\xAC\x85V[\x90Pb\0~\x83\x83b\0\x88\xD6V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15b\0\x8A\xBCWP` \x82\x01Q\x15[\x15b\0\x8A\xDBWPP`@\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` \x01Qb\0\x8B\"\x91\x90b\0\xB3\xC5V[b\0\x8BN\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGb\0\xB3\xABV[\x90R\x92\x91PPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cp\xA0\x821`\xE0\x1B\x17\x90R\x91Q`\0\x92\x87\x16\x91b\0\x8B\xAC\x91b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x8B\xE9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x8B\xEEV[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0\x8C\n\x91\x90b\0\xAC\x85V[\x90Pb\0\x8CD\x84b\0\x8C=\x87b\0\x8C6cp\xA0\x821`\xE0\x1Bb\0\x8C/`\x0C\x8Db\0\x92\x99V[\x90b\0\x92\xBFV[\x90b\0\x92\xDDV[\x90b\0\x93\x06V[\x82\x15b\0(\xD5W`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x16\r\xDD`\xE0\x1B\x17\x90R\x90Q`\0\x91`\x01`\x01`\xA0\x1B\x03\x89\x16\x91b\0\x8C\x8F\x91\x90b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x8C\xCCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x8C\xD1V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0\x8C\xED\x91\x90b\0\xAC\x85V[\x90P\x82\x86\x10\x15b\0\x8D\x18Wb\0\x8D\x04\x86\x84b\0\xB3\xABV[b\0\x8D\x10\x90\x82b\0\xB3\xABV[\x90Pb\0\x8D3V[b\0\x8D$\x83\x87b\0\xB3\xABV[b\0\x8D0\x90\x82b\0\xB3\xDCV[\x90P[b\0`\xB7\x81b\0\x8C=c\x18\x16\r\xDD`\xE0\x1Bb\0\x8C/`\x0C\x8Db\0\x92\x99V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8DqWb\0\x8Dqb\0\xAC\x9FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x8D\x9BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0T\xCEW`\x1DT\x84Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cw\x8EU\xF3\x90\x87\x90\x87\x90\x85\x90\x81\x10b\0\x8D\xD9Wb\0\x8D\xD9b\0\xAC\xB5V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x8E\0\x92\x91\x90b\0\xAD V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x8E\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8ED\x91\x90b\0\xAC\x85V[\x82\x82\x81Q\x81\x10b\0\x8EYWb\0\x8EYb\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80b\0\x8Ep\x81b\0\xAE|V[\x91PPb\0\x8D\xA1V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x8E\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x8E\xF9\x91\x90b\0\xAC\x85V[\x90Pb\0uO\x84\x84b\0\x8DQV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\x90\x04W`@Q`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90b\0\x8F\x7F\x90\x83\x90e\x19\x98Z[\x19Y`\xD2\x1B\x90`\x01\x90` \x01b\0\xBBCV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x8F\x9F\x92\x91` \x01b\0\xB1\x88V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x8F\xBB\x91b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\x8F\xFAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x8F\xFFV[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[\x80\x82\x14b\0>cW`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\0\x90z\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [byt`@\x82\x01Rdes32]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x82`@Qb\0\x90\xB3\x91\x90b\0\xBBdV[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x81`@Qb\0\x90\xEC\x91\x90b\0\xBB\x9DV[`@Q\x80\x91\x03\x90\xA1b\0>cb\0\x8F\x07V[\x80\x82\x14b\0>cW`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\0\x91`\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x82`@Qb\0\x91\x88\x91\x90b\0\xBBdV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xFA\xEC\x839\x81Q\x91R\x81`@Qb\0\x90\xEC\x91\x90b\0\xBB\x9DV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14b\0>cW`\0\x80Q` b\x03\xF3\xF4\x839\x81Q\x91R`@Qb\0\x92'\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [add`@\x82\x01Rdress]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x82`@Qb\0\x92`\x91\x90b\0\xBB\xC8V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x81`@Qb\0\x90\xEC\x91\x90b\0\xBC\rV[`\x05\x82\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`\0\x82b\0UmV[`\x03\x82\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16`\xE0\x83\x90\x1C\x17\x90U`\0\x82b\0UmV[`\x02\x82\x01\x80T`\x01\x81\x01\x82U`\0\x91\x82R` \x82 `\x01`\x01`\xA0\x1B\x03\x84\x16\x91\x01U\x82b\0UmV[b\0>c\x82\x82`\x05\x82\x01T`\x03\x83\x01T`\x04\x84\x01T`\x02\x85\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\x01`\x01`\xA0\x1B\x03\x90\x96\x16\x95`\xE0\x95\x90\x95\x1B\x94`\0\x93\x90\x92\x90\x91\x83\x01\x82\x82\x80\x15b\0\x93\x7FW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0\x93jW[PPPPP\x90P`\0\x83b\0\x93\x94\x83b\0\x96\x84V[`@Q` \x01b\0\x93\xA7\x92\x91\x90b\0\xB1\x88V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x01\x8B\x01` \x90\x81R\x83\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x83R\x81R\x92\x81 \x91\x94P\x90\x92\x90\x91b\0\x93\xFB\x91\x86\x91\x88\x91\x01b\0\xBC8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\x946Wb\0\x944\x87b\0\x970V[P[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R` \x88\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x88\x16\x84R\x82R\x80\x83 \x90Q\x90\x91\x83\x91b\0\x94w\x91\x87\x91\x89\x91\x01b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T`\0\x1B\x90P`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qb\0\x94\xBE\x91\x90b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x94\xFBW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x95\0V[``\x91P[P\x91Pb\0\x95\x1D\x90P\x81b\0\x95\x17\x88` b\0\xBCtV[b\0\x97=V[`@Qc\x06g\xF9\xD7`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x95\x84W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x95\xAA\x91\x90b\0\xAC\x85V[\x90P\x80\x82\x14b\0\x95\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\x0004\x90b\0\xBC\x96V[`@Qcp\xCA\x10\xBB`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cp\xCA\x10\xBB\x90b\0\x96\x0B\x90\x8B\x90\x87\x90\x8E\x90`\x04\x01b\0\xBBCV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x96&W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x96;W=`\0\x80>=`\0\xFD[PPP`\x05\x8B\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UP`\x03\x8A\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\x96p`\x02\x8B\x01`\0b\0\xA8\xB2V[\x89`\x04\x01`\0\x90UPPPPPPPPPPV[```\0\x82Q` b\0\x96\x98\x91\x90b\0\xBCtV[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x96\xB2Wb\0\x96\xB2b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\x96\xDDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`\0\x84\x82\x81Q\x81\x10b\0\x97\x04Wb\0\x97\x04b\0\xAC\xB5V[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\x97'\x90b\0\xAE|V[\x91PPb\0\x96\xE3V[`\0b\0K\x08\x82b\0\x97\xBDV[`\0\x80`\0` \x85Q\x11b\0\x97TW\x84Qb\0\x97WV[` [\x90P`\0[\x81\x81\x10\x15b\0R\xCFWb\0\x97r\x81`\x08b\0\xBCtV[\x86b\0\x97\x7F\x83\x88b\0\xB3\xDCV[\x81Q\x81\x10b\0\x97\x92Wb\0\x97\x92b\0\xAC\xB5V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0\x97\xB4\x81b\0\xAE|V[\x91PPb\0\x97\\V[`\x05\x81\x01T`\x03\x82\x01T`\x04\x83\x01T`\x02\x84\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\0\x96`\x01`\x01`\xA0\x1B\x03\x16\x95`\xE0\x1B\x94\x93\x87\x93\x91\x92\x90\x91\x90\x83\x01\x82\x82\x80\x15b\0\x98/W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0\x98\x1AW[PPP`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x95\x96P\x94\x91\x93Pb\0\x98{\x92P\x85\x91\x87\x91\x01b\0\xBC8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16\x15b\0\x99\x1AW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R` \x87\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x87\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\x98\xEA\x91\x85\x91\x87\x91\x01b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x94PPPPP\x91\x90PV[`\0\x83b\0\x99(\x83b\0\xA4\xF7V[`@Q` \x01b\0\x99;\x92\x91\x90b\0\xB1\x88V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` b\x03\xF9\x8A\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c&l\xF1\t`@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\x99\x9AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x99\xAFW=`\0\x80>=`\0\xFD[PPPP`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qb\0\x99\xD0\x91\x90b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x9A\rW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x9A\x12V[``\x91P[P\x91Pb\0\x9A/\x90P\x81b\0\x9A)\x87` b\0\xBCtV[b\0\xA5\xA3V[`@Qce\xBC\x94\x81`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16`\x04\x82\x01R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ce\xBC\x94\x81\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x9A\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x9A\xBB\x91\x90\x81\x01\x90b\0\xBD1V[P\x90P\x80Q`\x01\x14\x15b\0\x9D\x9DW`\0`\0\x80Q` b\x03\xF9\x8A\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cf\x7F\x9Dp\x89\x84`\0\x81Q\x81\x10b\0\x9B\x03Wb\0\x9B\x03b\0\xAC\xB5V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x9B=\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x9B[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x9B\x81\x91\x90b\0\xAC\x85V[\x90P\x80b\0\x9B\xECW\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x9El\x91\x90b\0\xAC\x85V[\x90P\x80b\0\x9E\xD6W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`\0``\x8B`\x01`\x01`\xA0\x1B\x03\x16\x88`@Qb\0\x9F\x98\x91\x90b\0\xB1\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x9F\xD5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x9F\xDAV[``\x91P[P\x90\x92P\x90Pb\0\x9F\xF2\x81b\0\x9A)\x8C` b\0\xBCtV[\x96PP\x80\x80\x15b\0\xA0\x02WP\x81\x86\x14[\x15b\0\xA2UW\x7F\x9C\x95U\xB1\xE3\x10.<\xF4\x8FB}y\xCBg\x8F]\x9B\xD1\xED\n\xD5t8\x94a\xE2U\xF9Qp\xED\x8B\x8B\x8A\x8C`@Q` \x01b\0\xA0@\x92\x91\x90b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x88\x88\x81Q\x81\x10b\0\xA0kWb\0\xA0kb\0\xAC\xB5V[` \x02` \x01\x01Q`\0\x1C`@Qb\0\xA0\x88\x94\x93\x92\x91\x90b\0\xBD\x82V[`@Q\x80\x91\x03\x90\xA1\x84\x84\x81Q\x81\x10b\0\xA0\xA5Wb\0\xA0\xA5b\0\xAC\xB5V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x8D\x16`\0\x90\x81R\x8F\x83R`@\x80\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8F\x16\x83R\x84R\x80\x82 \x90Q\x92\x93\x90\x92b\0\xA0\xF0\x91\x8D\x91\x8F\x91\x01b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 \x81\x90UP`\x01\x8D`\x01\x01`\0\x8D`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8C`\x01`\x01`\xE0\x1B\x03\x19\x16`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8A\x8C`@Q` \x01b\0\xA1}\x92\x91\x90b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\0\x80Q` b\x03\xF9\x8A\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\xA1\xEFWb\0\xA1\xEFb\0\xAC\xB5V[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA2\x18\x93\x92\x91\x90b\0\xBBCV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\xA23W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\xA2HW=`\0\x80>=`\0\xFD[PPPPPPPb\0\xA3\x02V[`\0\x80Q` b\x03\xF9\x8A\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\xA2\x8CWb\0\xA2\x8Cb\0\xAC\xB5V[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\xA2\xB5\x93\x92\x91\x90b\0\xBBCV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\xA2\xD0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\xA2\xE5W=`\0\x80>=`\0\xFD[PPPPPPP[\x80b\0\xA2\xF9\x81b\0\xAE|V[\x91PPb\0\x9D\xABV[Pb\0\xA3zV[`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FstdStorage find(StdStorage): No `D\x82\x01R\x7Fstorage use detected for target.`d\x82\x01R`\x84\x01b\x0004V[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\xA3\xBE\x91\x88\x91\x8A\x91\x01b\0\xBC8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\xA4MW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FstdStorage find(StdStorage): Slo`D\x82\x01Rn:\x149\x94\x9077\xBA\x1037\xBA\xB72\x17`\x89\x1B`d\x82\x01R`\x84\x01b\x0004V[`\x05\x89\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`\x03\x89\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\xA4~`\x02\x8A\x01`\0b\0\xA8\xB2V[`\0`\x04\x8A\x01\x81\x90U`\x01`\x01`\xA0\x1B\x03\x88\x16\x81R` \x8A\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\xA4\xC4\x91\x88\x91\x8A\x91\x01b\0\xBC8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x97PPPPPPPP\x91\x90PV[```\0\x82Q` b\0\xA5\x0B\x91\x90b\0\xBCtV[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\xA5%Wb\0\xA5%b\0\xAC\x9FV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\xA5PW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15b\0\x80{W`\0\x84\x82\x81Q\x81\x10b\0\xA5wWb\0\xA5wb\0\xAC\xB5V[` \x02` \x01\x01Q\x90P\x80\x82` \x02` \x01\x84\x01RP\x80\x80b\0\xA5\x9A\x90b\0\xAE|V[\x91PPb\0\xA5VV[`\0\x80`\0` \x85Q\x11b\0\xA5\xBAW\x84Qb\0\xA5\xBDV[` [\x90P`\0[\x81\x81\x10\x15b\0R\xCFWb\0\xA5\xD8\x81`\x08b\0\xBCtV[\x86b\0\xA5\xE5\x83\x88b\0\xB3\xDCV[\x81Q\x81\x10b\0\xA5\xF8Wb\0\xA5\xF8b\0\xAC\xB5V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x92\x90\x92\x17\x91\x80b\0\xA6\x1A\x81b\0\xAE|V[\x91PPb\0\xA5\xC2V[a\x07\x18\x80b\0\xBD\xB3\x839\x01\x90V[a\x07x\x80b\0\xC4\xCB\x839\x01\x90V[`\x94\x80b\0\xCCC\x839\x01\x90V[a\x02*\x80b\0\xCC\xD7\x839\x01\x90V[a\x03\xF3\x80b\0\xCF\x01\x839\x01\x90V[a\x0E\x81\x80b\0\xD2\xF4\x839\x01\x90V[aJ\xD0\x80b\0\xE1u\x839\x01\x90V[a\x04\xE4\x80b\x01,E\x839\x01\x90V[a\\F\x80b\x011)\x839\x01\x90V[a3\x8A\x80b\x01\x8Do\x839\x01\x90V[a\x0E\xFE\x80b\x01\xC0\xF9\x839\x01\x90V[a1i\x80b\x01\xCF\xF7\x839\x01\x90V[a\x1Fx\x80b\x02\x01`\x839\x01\x90V[a\x1A\xB4\x80b\x02 \xD8\x839\x01\x90V[a\x11}\x80b\x02;\x8C\x839\x01\x90V[a9X\x80b\x02M\t\x839\x01\x90V[a!\x0B\x80b\x02\x86a\x839\x01\x90V[a\x13\xEC\x80b\x02\xA7l\x839\x01\x90V[a\x16\xE0\x80b\x02\xBBX\x839\x01\x90V[aa\x87\x80b\x02\xD28\x839\x01\x90V[a\x1A%\x80b\x033\xBF\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0\xA7]b\0\xA8\xD2V[\x81R` \x01b\0\xA7lb\0\xA8\xD2V[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x82\x80Tb\0\xA7\x9D\x90b\0\xAC9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\xA7\xC1W`\0\x85Ub\0\xA8\x0CV[\x82`\x1F\x10b\0\xA7\xDCW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\xA8\x0CV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\xA8\x0CW\x91\x82\x01[\x82\x81\x11\x15b\0\xA8\x0CW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\xA7\xEFV[Pb\0Q\xFA\x92\x91Pb\0\xA8\xF0V[a\x0E`\x80b\x03M\xE4\x839\x01\x90V[aF\xF4\x80b\x03\\D\x839\x01\x90V[aP\x13\x80b\x03\xA38\x839\x01\x90V[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\xA8\x85`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\xA7lb\0\xA7HV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90b\0<\x8B\x91\x90b\0\xA8\xF0V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0Q\xFAW`\0\x81U`\x01\x01b\0\xA8\xF1V[`\0` \x82\x84\x03\x12\x15b\0\xA9\x1AW`\0\x80\xFD[\x815b\xFF\xFF\xFF\x81\x16\x81\x14b\0UmW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15b\0\xA9AW`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15b\0IkW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01b\0\xA9LV[b\0\xA9z\x82\x82Qb\0\xA9HV[` \x81\x01Qb\0\x05\xB7`@\x84\x01\x82b\0\xA9HV[`\x80\x81\x01b\0K\x08\x82\x84b\0\xA9mV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0\xA9\xD9W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0\xA9\xB2V[P\x94\x95\x94PPPPPV[` \x81R`\0b\0Um` \x83\x01\x84b\0\xA9\x9EV[`\0[\x83\x81\x10\x15b\0\xAA\x16W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\xA9\xFCV[\x83\x81\x11\x15b\0IkWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Rb\0\xAAB\x81` \x86\x01` \x86\x01b\0\xA9\xF9V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0\xAB\x0CW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0\xAA\xF5W`_\x19\x89\x85\x03\x01\x83Rb\0\xAA\xE2\x84\x86Qb\0\xAA(V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0\xAA\xC3V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0\xAA}V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0\xAB\xC4W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0\xAB\xAEW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0\xAB\x82V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0\xABDV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0\xAC,W`?\x19\x88\x86\x03\x01\x84Rb\0\xAC\x19\x85\x83Qb\0\xAA(V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0\xAB\xFAV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\xACNW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0P\x80WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[` \x81R`\0b\0Um` \x83\x01\x84b\0\xAA(V[`\0` \x82\x84\x03\x12\x15b\0\xAC\x98W`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0\xAC\xE0`@\x83\x01\x85b\0\xA9\x9EV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90\x82\x01R`\x80\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0\xA9\xD9W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0\xADNV[`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x82R\x86\x16` \x82\x01R`\xFF\x85\x16`@\x82\x01R``\x81\x01\x84\x90R`\xC0`\x80\x82\x01\x81\x90R`\0\x90b\0\xAD\xAA\x90\x83\x01\x85b\0\xA9\x9EV[\x82\x81\x03`\xA0\x84\x01Rb\0\xAD\xBE\x81\x85b\0\xAD:V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0\xAD\xF9\x90\x83\x01\x84b\0\xAA(V[\x95\x94PPPPPV[l)\xBA90\xBA2\xB3\xBC\xAA7\xB5\xB2\xB7`\x99\x1B\x81R`\0\x82Qb\0\xAE,\x81`\r\x85\x01` \x87\x01b\0\xA9\xF9V[\x91\x90\x91\x01`\r\x01\x92\x91PPV[b\x14\xD5\x15`\xEA\x1B\x81R`\0\x82Qb\0\xAEY\x81`\x03\x85\x01` \x87\x01b\0\xA9\xF9V[\x91\x90\x91\x01`\x03\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15b\0\xAE\x93Wb\0\xAE\x93b\0\xAEfV[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0\xA9\xD9W\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0\xAE\xAEV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0\xA9\xD9W\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x88R\x83\x01Q`\x01`\x01``\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01b\0\xAE\xE9V[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15b\0\xAFpW\x82\x84\x03\x89Rb\0\xAF]\x84\x83Qb\0\xAE\xD5V[\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01b\0\xAFBV[P\x91\x97\x96PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x89\x81\x16\x82R\x88\x81\x16` \x80\x84\x01\x91\x90\x91R\x88\x82\x16`@\x84\x01R\x90\x87\x16``\x80\x84\x01\x91\x90\x91R`\xFF\x87\x16`\x80\x84\x01Ra\x01\0`\xA0\x84\x01\x81\x90R\x86Q\x90\x84\x01\x81\x90R`\0\x92a\x01 \x85\x01\x92\x88\x82\x01\x92\x91\x90\x85[\x83\x81\x10\x15b\0\xB0 Wb\0\xB0\x0F\x86\x86Q\x80Qc\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Qa\xFF\xFF\x90\x81\x16\x91\x84\x01\x91\x90\x91R`@\x91\x82\x01Q\x16\x91\x01RV[\x94\x81\x01\x94\x93\x82\x01\x93`\x01\x01b\0\xAF\xD6V[PPPPP\x82\x81\x03`\xC0\x84\x01Rb\0\xB09\x81\x86b\0\xAE\x9AV[\x90P\x82\x81\x03`\xE0\x84\x01Rb\0\xB0O\x81\x85b\0\xAF$V[\x9B\x9APPPPPPPPPPPV[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\xB0\x83Wb\0\xB0\x83b\0\xAC\x9FV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\xB0\xB4Wb\0\xB0\xB4b\0\xAC\x9FV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15b\0\xB0\xD8Wb\0\xB0\xD8b\0\xAC\x9FV[b\0\xB0\xED`\x1F\x84\x01`\x1F\x19\x16` \x01b\0\xB0\x89V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15b\0\xB1\x02W`\0\x80\xFD[b\0Um\x83` \x83\x01\x84b\0\xA9\xF9V[`\0` \x82\x84\x03\x12\x15b\0\xB1%W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\xB1a\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003operator should no longer have stake in any quorumsoperator already has bits in quorum bitmapoperator list should not have changedoperator counts should not have changedA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPcurrent operator bitmap should not include quorumsoperator list should have one fewer entry_configRand: invalid fillTypes, no flags passedoperator already has a registered pubkey_randValue: tried to select value from empty arraytotal operator count should have increased for each quorum_configRand: invalid minimumStake, no flags passedweights should have been added to operator and total stakes(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83operatorInfo should have operatorId_configRand: invalid numStrategies, no flags passedoperator weight should not have decreased after depositoperator list should be unchanged for each quorumoperator list should have one more entryoperator weight should not have increased after depositupdateOperators should not effect operator weight calculationtotal operator count should be unchanged for each quorumoperator should have empty id and NEVER_REGISTERED statusfailed to add operator weight to operator and total stake in each quorumtotal operator count should have decreased for each quorumoperator info should not have changedoperators quorum bitmap should not have changed_configRand: invalid _userTypes, no flags passedoperator should still have a registered pubkeyoperatorInfo status should be DEREGISTEREDoperator pubkey should have been added to each quorum apkoperator pubkey should have been subtracted from each quorum apkoperatorInfo should still have operatorId\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_newRandomOperator: operator should be registeredoperator should have registered a pubkey_configRand: invalid numQuorums, no flags passedoperator should have additional stakeoperator did not deregister from all quorumsoperator weight should be unchangedoperator stake should be unchangedquorum apks should not have changed\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8operator should have reduced stakefailed to remove operator weight from total stake for each quorumoperator did not register for all quorumsoperator should not have any bits in bitmapcurrent operator bitmap should include quorumsoperator should have at least the minimum stake in each quorumoperatorInfo status should be REGISTEREDoperator should be registered to AVSoperator should not be registered to the AVS\xA2dipfsX\"\x12 \x059\x97\xF7)\xD7\xB8\xDF\x98\x85\xE6\xAE\xB2!\xDD\x19\xD1)x\x1C\xC1\xFF\x94\xB5'\x1E\xF2\xAE\x13P8dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mul(uint256)` and selector `0x131e2f18`. + ```solidity + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulCall { + pub x: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mul(uint256)`](mulCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulReturn { + pub g2Point: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: mulCall) -> Self { + (value.x,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { x: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: mulReturn) -> Self { + (value.g2Point,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { g2Point: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mulCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mulReturn; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mul(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 30u8, 47u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.x, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `testFuzz_registerAll_decreaseCoreBalance_deregisterAll(uint24)` and selector `0xe389bbb3`. + ```solidity + function testFuzz_registerAll_decreaseCoreBalance_deregisterAll(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_decreaseCoreBalance_deregisterAllCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_registerAll_decreaseCoreBalance_deregisterAll(uint24)`](testFuzz_registerAll_decreaseCoreBalance_deregisterAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_decreaseCoreBalance_deregisterAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: testFuzz_registerAll_decreaseCoreBalance_deregisterAllCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_decreaseCoreBalance_deregisterAllCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_registerAll_decreaseCoreBalance_deregisterAllReturn, + ) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_decreaseCoreBalance_deregisterAllReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_registerAll_decreaseCoreBalance_deregisterAllCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_registerAll_decreaseCoreBalance_deregisterAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "testFuzz_registerAll_decreaseCoreBalance_deregisterAll(uint24)"; + const SELECTOR: [u8; 4] = [227u8, 137u8, 187u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `testFuzz_registerAll_decreaseCoreBalance_update(uint24)` and selector `0xfe0ea5f1`. + ```solidity + function testFuzz_registerAll_decreaseCoreBalance_update(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_decreaseCoreBalance_updateCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_registerAll_decreaseCoreBalance_update(uint24)`](testFuzz_registerAll_decreaseCoreBalance_updateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_decreaseCoreBalance_updateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: testFuzz_registerAll_decreaseCoreBalance_updateCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_decreaseCoreBalance_updateCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_registerAll_decreaseCoreBalance_updateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_decreaseCoreBalance_updateReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_registerAll_decreaseCoreBalance_updateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_registerAll_decreaseCoreBalance_updateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "testFuzz_registerAll_decreaseCoreBalance_update(uint24)"; + const SELECTOR: [u8; 4] = [254u8, 14u8, 165u8, 241u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `testFuzz_registerAll_increaseCoreBalance_deregisterAll(uint24)` and selector `0x4f9229bb`. + ```solidity + function testFuzz_registerAll_increaseCoreBalance_deregisterAll(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_increaseCoreBalance_deregisterAllCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_registerAll_increaseCoreBalance_deregisterAll(uint24)`](testFuzz_registerAll_increaseCoreBalance_deregisterAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_increaseCoreBalance_deregisterAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: testFuzz_registerAll_increaseCoreBalance_deregisterAllCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_increaseCoreBalance_deregisterAllCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_registerAll_increaseCoreBalance_deregisterAllReturn, + ) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_increaseCoreBalance_deregisterAllReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_registerAll_increaseCoreBalance_deregisterAllCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_registerAll_increaseCoreBalance_deregisterAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "testFuzz_registerAll_increaseCoreBalance_deregisterAll(uint24)"; + const SELECTOR: [u8; 4] = [79u8, 146u8, 41u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `testFuzz_registerAll_increaseCoreBalance_update_deregisterAll(uint24)` and selector `0xb27b5ab5`. + ```solidity + function testFuzz_registerAll_increaseCoreBalance_update_deregisterAll(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_registerAll_increaseCoreBalance_update_deregisterAll(uint24)`](testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_increaseCoreBalance_update_deregisterAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl + ::core::convert::From< + testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall, + > for UnderlyingRustTuple<'_> + { + fn from( + value: testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall, + ) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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< + testFuzz_registerAll_increaseCoreBalance_update_deregisterAllReturn, + > for UnderlyingRustTuple<'_> + { + fn from( + value: testFuzz_registerAll_increaseCoreBalance_update_deregisterAllReturn, + ) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_increaseCoreBalance_update_deregisterAllReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall + for testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall + { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_registerAll_increaseCoreBalance_update_deregisterAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "testFuzz_registerAll_increaseCoreBalance_update_deregisterAll(uint24)"; + const SELECTOR: [u8; 4] = [178u8, 123u8, 90u8, 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._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `testFuzz_registerAll_update_deregisterAll(uint24)` and selector `0x096c2fc0`. + ```solidity + function testFuzz_registerAll_update_deregisterAll(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_update_deregisterAllCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_registerAll_update_deregisterAll(uint24)`](testFuzz_registerAll_update_deregisterAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_update_deregisterAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: testFuzz_registerAll_update_deregisterAllCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_update_deregisterAllCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_registerAll_update_deregisterAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerAll_update_deregisterAllReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_registerAll_update_deregisterAllCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_registerAll_update_deregisterAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "testFuzz_registerAll_update_deregisterAll(uint24)"; + const SELECTOR: [u8; 4] = [9u8, 108u8, 47u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`Integration_NonFull_Register_CoreBalanceChange_Update`](self) function calls. + pub enum Integration_NonFull_Register_CoreBalanceChange_UpdateCalls { + IS_TEST(IS_TESTCall), + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mul(mulCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + testFuzz_registerAll_decreaseCoreBalance_deregisterAll( + testFuzz_registerAll_decreaseCoreBalance_deregisterAllCall, + ), + testFuzz_registerAll_decreaseCoreBalance_update( + testFuzz_registerAll_decreaseCoreBalance_updateCall, + ), + testFuzz_registerAll_increaseCoreBalance_deregisterAll( + testFuzz_registerAll_increaseCoreBalance_deregisterAllCall, + ), + testFuzz_registerAll_increaseCoreBalance_update_deregisterAll( + testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall, + ), + testFuzz_registerAll_update_deregisterAll(testFuzz_registerAll_update_deregisterAllCall), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl Integration_NonFull_Register_CoreBalanceChange_UpdateCalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [9u8, 108u8, 47u8, 192u8], + [10u8, 146u8, 84u8, 228u8], + [19u8, 30u8, 47u8, 24u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [45u8, 188u8, 176u8, 76u8], + [61u8, 251u8, 64u8, 224u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [79u8, 146u8, 41u8, 187u8], + [102u8, 217u8, 169u8, 160u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [178u8, 123u8, 90u8, 181u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [227u8, 137u8, 187u8, 179u8], + [250u8, 118u8, 38u8, 212u8], + [254u8, 14u8, 165u8, 241u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for Integration_NonFull_Register_CoreBalanceChange_UpdateCalls { + const NAME: &'static str = "Integration_NonFull_Register_CoreBalanceChange_UpdateCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 24usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::avsDirectory(_) => { + ::SELECTOR + } + Self::churnApprover(_) => { + ::SELECTOR + } + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mul(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => { + ::SELECTOR + } + Self::testFuzz_registerAll_decreaseCoreBalance_deregisterAll(_) => { + ::SELECTOR + } + Self::testFuzz_registerAll_decreaseCoreBalance_update(_) => { + ::SELECTOR + } + Self::testFuzz_registerAll_increaseCoreBalance_deregisterAll(_) => { + ::SELECTOR + } + Self::testFuzz_registerAll_increaseCoreBalance_update_deregisterAll( + _, + ) => { + ::SELECTOR + } + Self::testFuzz_registerAll_update_deregisterAll(_) => { + ::SELECTOR + } + Self::timeMachine(_) => { + ::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< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + >] = &[ + { + fn churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::churnApprover, + ) + } + churnApprover + }, + { + fn testFuzz_registerAll_update_deregisterAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::testFuzz_registerAll_update_deregisterAll, + ) + } + testFuzz_registerAll_update_deregisterAll + }, + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw(data, validate) + .map(Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::setUp) + } + setUp + }, + { + fn mul( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw(data, validate) + .map(Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::mul) + } + mul + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::excludeSenders, + ) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::targetInterfaces, + ) + } + targetInterfaces + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::churnApproverPrivateKey, + ) + } + churnApproverPrivateKey + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::timeMachine, + ) + } + timeMachine + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::targetSenders, + ) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::targetContracts, + ) + } + targetContracts + }, + { + fn testFuzz_registerAll_increaseCoreBalance_deregisterAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::testFuzz_registerAll_increaseCoreBalance_deregisterAll, + ) + } + testFuzz_registerAll_increaseCoreBalance_deregisterAll + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::targetArtifactSelectors, + ) + } + targetArtifactSelectors + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::avsDirectory, + ) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::registryCoordinator, + ) + } + registryCoordinator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::targetArtifacts, + ) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::targetSelectors, + ) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::registryCoordinatorOwner, + ) + } + registryCoordinatorOwner + }, + { + fn testFuzz_registerAll_increaseCoreBalance_update_deregisterAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::testFuzz_registerAll_increaseCoreBalance_update_deregisterAll, + ) + } + testFuzz_registerAll_increaseCoreBalance_update_deregisterAll + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::excludeArtifacts, + ) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw(data, validate) + .map(Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::excludeContracts, + ) + } + excludeContracts + }, + { + fn testFuzz_registerAll_decreaseCoreBalance_deregisterAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::testFuzz_registerAll_decreaseCoreBalance_deregisterAll, + ) + } + testFuzz_registerAll_decreaseCoreBalance_deregisterAll + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw(data, validate) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::IS_TEST, + ) + } + IS_TEST + }, + { + fn testFuzz_registerAll_decreaseCoreBalance_update( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_CoreBalanceChange_UpdateCalls::testFuzz_registerAll_decreaseCoreBalance_update, + ) + } + testFuzz_registerAll_decreaseCoreBalance_update + }, + ]; + 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_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::churnApprover(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mul(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_registerAll_decreaseCoreBalance_deregisterAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_registerAll_decreaseCoreBalance_update(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_registerAll_increaseCoreBalance_deregisterAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_registerAll_increaseCoreBalance_update_deregisterAll( + inner, + ) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_registerAll_update_deregisterAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::timeMachine(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::churnApprover(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mul(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_registerAll_decreaseCoreBalance_deregisterAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_registerAll_decreaseCoreBalance_update(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_registerAll_increaseCoreBalance_deregisterAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_registerAll_increaseCoreBalance_update_deregisterAll( + inner, + ) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_registerAll_update_deregisterAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::timeMachine(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`Integration_NonFull_Register_CoreBalanceChange_Update`](self) events. + pub enum Integration_NonFull_Register_CoreBalanceChange_UpdateEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl Integration_NonFull_Register_CoreBalanceChange_UpdateEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface + for Integration_NonFull_Register_CoreBalanceChange_UpdateEvents + { + const NAME: &'static str = "Integration_NonFull_Register_CoreBalanceChange_UpdateEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 Integration_NonFull_Register_CoreBalanceChange_UpdateEvents + { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Integration_NonFull_Register_CoreBalanceChange_Update`](self) contract instance. + + See the [wrapper's documentation](`Integration_NonFull_Register_CoreBalanceChange_UpdateInstance`) 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, + ) -> Integration_NonFull_Register_CoreBalanceChange_UpdateInstance { + Integration_NonFull_Register_CoreBalanceChange_UpdateInstance::::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< + Integration_NonFull_Register_CoreBalanceChange_UpdateInstance, + >, + > { + Integration_NonFull_Register_CoreBalanceChange_UpdateInstance::::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 { + Integration_NonFull_Register_CoreBalanceChange_UpdateInstance::::deploy_builder( + provider, + ) + } + /**A [`Integration_NonFull_Register_CoreBalanceChange_Update`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Integration_NonFull_Register_CoreBalanceChange_Update`](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 Integration_NonFull_Register_CoreBalanceChange_UpdateInstance< + 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 Integration_NonFull_Register_CoreBalanceChange_UpdateInstance + { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("Integration_NonFull_Register_CoreBalanceChange_UpdateInstance") + .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, + > Integration_NonFull_Register_CoreBalanceChange_UpdateInstance + { + /**Creates a new wrapper around an on-chain [`Integration_NonFull_Register_CoreBalanceChange_Update`](self) contract instance. + + See the [wrapper's documentation](`Integration_NonFull_Register_CoreBalanceChange_UpdateInstance`) 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< + Integration_NonFull_Register_CoreBalanceChange_UpdateInstance, + > { + 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 + Integration_NonFull_Register_CoreBalanceChange_UpdateInstance + { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> Integration_NonFull_Register_CoreBalanceChange_UpdateInstance { + Integration_NonFull_Register_CoreBalanceChange_UpdateInstance { + 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, + > Integration_NonFull_Register_CoreBalanceChange_UpdateInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mul`] function. + pub fn mul( + &self, + x: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mulCall { x }) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`testFuzz_registerAll_decreaseCoreBalance_deregisterAll`] function. + pub fn testFuzz_registerAll_decreaseCoreBalance_deregisterAll( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_registerAll_decreaseCoreBalance_deregisterAllCall, + N, + > { + self.call_builder( + &testFuzz_registerAll_decreaseCoreBalance_deregisterAllCall { _random }, + ) + } + ///Creates a new call builder for the [`testFuzz_registerAll_decreaseCoreBalance_update`] function. + pub fn testFuzz_registerAll_decreaseCoreBalance_update( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_registerAll_decreaseCoreBalance_updateCall, + N, + > { + self.call_builder(&testFuzz_registerAll_decreaseCoreBalance_updateCall { _random }) + } + ///Creates a new call builder for the [`testFuzz_registerAll_increaseCoreBalance_deregisterAll`] function. + pub fn testFuzz_registerAll_increaseCoreBalance_deregisterAll( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_registerAll_increaseCoreBalance_deregisterAllCall, + N, + > { + self.call_builder( + &testFuzz_registerAll_increaseCoreBalance_deregisterAllCall { _random }, + ) + } + ///Creates a new call builder for the [`testFuzz_registerAll_increaseCoreBalance_update_deregisterAll`] function. + pub fn testFuzz_registerAll_increaseCoreBalance_update_deregisterAll( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall, + N, + > { + self.call_builder( + &testFuzz_registerAll_increaseCoreBalance_update_deregisterAllCall { _random }, + ) + } + ///Creates a new call builder for the [`testFuzz_registerAll_update_deregisterAll`] function. + pub fn testFuzz_registerAll_update_deregisterAll( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&testFuzz_registerAll_update_deregisterAllCall { _random }) + } + ///Creates a new call builder for the [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Integration_NonFull_Register_CoreBalanceChange_UpdateInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/integration_nonfull_register_deregister.rs b/crates/utils/src/middleware/integration_nonfull_register_deregister.rs new file mode 100644 index 00000000..fcd7624f --- /dev/null +++ b/crates/utils/src/middleware/integration_nonfull_register_deregister.rs @@ -0,0 +1,8034 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface Integration_NonFull_Register_Deregister { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + function registryCoordinator() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function testFuzz_registerAll_deregisterAll(uint24 _random) external; + function testFuzz_registerSome_deregisterSome_deregisterRemaining(uint24 _random) external; + function testFuzz_registerSome_deregisterSome_reregisterSome(uint24 _random) external; + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "g2Point", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "testFuzz_registerAll_deregisterAll", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "testFuzz_registerSome_deregisterSome_deregisterRemaining", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "testFuzz_registerSome_deregisterSome_reregisterSome", + "inputs": [ + { + "name": "_random", + "type": "uint24", + "internalType": "uint24" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Integration_NonFull_Register_Deregister { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604081905260078054600160ff199182168117909255600b80549091169091179055601c80546000805160206203eff08339815191526001600160a01b0319918216811790925560328054309083161790556033805490911673beb9864e3d6a1ba44e131a462f6328f2d1d6d54d1790557fa3e2a0c4ce206b9c6679ac6361c034f31c8844ae3104108f47ed8c413acf333260348190556001625e79b760e01b031983526084529063ffa186499060a490602090602481865afa158015620000cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f3919062000b0a565b603580546001600160a01b03929092166001600160a01b031992831617905560368054736915a67877a178d5129a28d2af871ac1fceb3fd392169190911790556000603d8190556043553480156200014a57600080fd5b5060005b6200015b60058062000b52565b63ffffffff16811015620003585762000173620009fb565b60006200018283600162000b7d565b6040516020016200019591815260200190565b6040516020818303038152906040528051906020012060001c9050620001de81620001ca6200035f60201b620029d11760201c565b6200038860201b620029fa1790919060201c565b8260200181905250620001fc816200042860201b620017321760201c565b60408301908152603e805460018181019092557f8d800d6614d35eed73733ee453164a3b48076eb3138f466adeeb9dec7bb31f7001839055603f805491820181556000528351805160089092027fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd81019283556020918201517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fe8201558186015180517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58ff830155909101517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b59008201559151805185937fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b5901019062000323908290600262000a50565b5060208201516200033b906002808401919062000a50565b5050505050505080806200034f9062000b98565b9150506200014e565b5062000dc3565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b6040805180820190915260008082526020820152620003a662000a93565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620003db57620003dd565bfe5b5080620004205760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b6200043262000ab1565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200044a57905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062000493576200049362000bb6565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620004d057620004d062000bb6565b60200260200101819052506040518060400160405280601481526020017f746573742f6666692f676f2f67326d756c2e676f0000000000000000000000008152508160028151811062000527576200052762000bb6565b60200260200101819052506200054883620008de60201b62002a9b1760201c565b816003815181106200055e576200055e62000bb6565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062000599576200059962000bb6565b6020908102919091010152604051638916046760e01b81526000906000805160206203eff083398151915290638916046790620005db90859060040162000c15565b6000604051808303816000875af1158015620005fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000625919081019062000c93565b9050808060200190518101906200063d919062000d4b565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200067a576200067a62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206203eff083398151915290638916046790620006b990859060040162000c15565b6000604051808303816000875af1158015620006d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000703919081019062000c93565b9050808060200190518101906200071b919062000d4b565b8351526040805180820190915260018152603360f81b60208201528251839060049081106200074e576200074e62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206203eff0833981519152906389160467906200078d90859060040162000c15565b6000604051808303816000875af1158015620007ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007d7919081019062000c93565b905080806020019051810190620007ef919062000d4b565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b815250826004815181106200082f576200082f62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206203eff0833981519152906389160467906200086e90859060040162000c15565b6000604051808303816000875af11580156200088e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008b8919081019062000c93565b905080806020019051810190620008d0919062000d4b565b602084015152509092915050565b606081620009035750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200093357806200091a8162000b98565b91506200092b9050600a8362000d7b565b915062000907565b6000816001600160401b0381111562000950576200095062000bcc565b6040519080825280601f01601f1916602001820160405280156200097b576020820181803683370190505b5090505b8415620009f3576200099360018362000d92565b9150620009a2600a8662000dac565b620009af90603062000b7d565b60f81b818381518110620009c757620009c762000bb6565b60200101906001600160f81b031916908160001a905350620009eb600a8662000d7b565b94506200097f565b949350505050565b6040805160a0810190915260006060820181815260808301919091528190815260200162000a3c604051806040016040528060008152602001600081525090565b815260200162000a4b62000ab1565b905290565b826002810192821562000a81579160200282015b8281111562000a8157825182559160200191906001019062000a64565b5062000a8f92915062000ad5565b5090565b60405180606001604052806003906020820280368337509192915050565b604051806040016040528062000ac662000aec565b815260200162000a4b62000aec565b5b8082111562000a8f576000815560010162000ad6565b60405180604001604052806002906020820280368337509192915050565b60006020828403121562000b1d57600080fd5b81516001600160a01b038116811462000b3557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681851680830382111562000b745762000b7462000b3c565b01949350505050565b6000821982111562000b935762000b9362000b3c565b500190565b600060001982141562000baf5762000baf62000b3c565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000bff57818101518382015260200162000be5565b8381111562000c0f576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562000c8657878503603f190184528151805180875262000c66818989018a850162000be2565b601f01601f19169590950186019450928501929085019060010162000c3c565b5092979650505050505050565b60006020828403121562000ca657600080fd5b81516001600160401b038082111562000cbe57600080fd5b818401915084601f83011262000cd357600080fd5b81518181111562000ce85762000ce862000bcc565b604051601f8201601f19908116603f0116810190838211818310171562000d135762000d1362000bcc565b8160405282815287602084870101111562000d2d57600080fd5b62000d4083602083016020880162000be2565b979650505050505050565b60006020828403121562000d5e57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008262000d8d5762000d8d62000d65565b500490565b60008282101562000da75762000da762000b3c565b500390565b60008262000dbe5762000dbe62000d65565b500690565b6203e21c8062000dd46000396000f3fe60806040523480156200001157600080fd5b50600436106200015d5760003560e01c80636b3aa72e11620000c75780639c23c2ab11620000865780639c23c2ab14620002ca5780639d8b9cb414620002e1578063b5508aa914620002f5578063ba414fa614620002ff578063e20c9f71146200031a578063fa7626d4146200032457600080fd5b80636b3aa72e14620002685780636d14a987146200027c57806385226c811462000290578063916a17c614620002a9578063929111e014620002b357600080fd5b80632dbcb04c11620001205780632dbcb04c14620001f75780633dfb40e014620002105780633e5e3c2314620002245780633f7286f4146200022e57806343096339146200023857806366d9a9a0146200024f57600080fd5b8063054310e614620001625780630a9254e41462000193578063131e2f18146200019f5780631ed7831c14620001c55780632ade388014620001de575b600080fd5b60355462000176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6200019d62000332565b005b620001b6620001b03660046200920a565b62001732565b6040516200018a91906200926a565b620001cf62001be8565b6040516200018a9190620092c0565b620001e862001c4c565b6040516200018a919062009332565b6200020160345481565b6040519081526020016200018a565b602e5462000176906001600160a01b031681565b620001cf62001d9a565b620001cf62001dfc565b6200019d62000249366004620093f8565b62001e5e565b62000259620020e1565b6040516200018a91906200941f565b601e5462000176906001600160a01b031681565b60285462000176906001600160a01b031681565b6200029a620021cb565b6040516200018a9190620094d6565b62000259620022a5565b6200019d620002c4366004620093f8565b6200238f565b6200019d620002db366004620093f8565b6200256e565b60335462000176906001600160a01b031681565b6200029a6200275e565b6200030962002838565b60405190151581526020016200018a565b620001cf6200296f565b600754620003099060ff1681565b604051620003409062008f26565b604051809103906000f0801580156200035d573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b81600081518110620003b957620003b962009552565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c604051620003eb9062008f34565b620003f892919062009568565b604051809103906000f08015801562000415573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620004479062008f42565b604051809103906000f08015801562000464573d6000803e3d6000fd5b509050604051620004759062008f4f565b604051809103906000f08015801562000492573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b0392909216919091179055604051620004c19062008f5d565b604051809103906000f080158015620004de573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005139062008f6b565b6200052092919062009594565b604051809103906000f0801580156200053d573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005729062008f6b565b6200057f92919062009594565b604051809103906000f0801580156200059c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005d19062008f6b565b620005de92919062009594565b604051809103906000f080158015620005fb573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620006309062008f6b565b6200063d92919062009594565b604051809103906000f0801580156200065a573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200068f9062008f6b565b6200069c92919062009594565b604051809103906000f080158015620006b9573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392831617905560255460205460405191831692169064077359400090620006f79062008f79565b6001600160a01b0393841681529290911660208301526001600160401b03166040820152606001604051809103906000f0801580156200073b573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620007699062008f87565b6001600160a01b039091168152602001604051809103906000f08015801562000796573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f5460225460205460405160009493841693928316929190911690620007da9062008f95565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000817573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b03938416939283169290911690620008499062008fa3565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000886573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b039283169290911690620008b19062008fb1565b620008be929190620095bd565b604051809103906000f080158015620008db573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b0395861695948516949384169392831692909116906200091b9062008fbf565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000967573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b03909116906200098b9062008fcd565b6001600160a01b039091168152602001604051809103906000f080158015620009b8573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b9362000a1e939183169216908b8b8b6064820162009609565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000a6793929160040162009668565b600060405180830381600087803b15801562000a8257600080fd5b505af115801562000a97573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000b2a9391909216918c9160040162009668565b600060405180830381600087803b15801562000b4557600080fd5b505af115801562000b5a573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000be69391909216918b9160040162009668565b600060405180830381600087803b15801562000c0157600080fd5b505af115801562000c16573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000cac939116918a9160040162009668565b600060405180830381600087803b15801562000cc757600080fd5b505af115801562000cdc573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000d68939190921691899160040162009668565b600060405180830381600087803b15801562000d8357600080fd5b505af115801562000d98573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000db9915062008fdb565b6001600160a01b039091168152602001604051809103906000f08015801562000de6573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000eac57600062000e218262002a9b565b905060008160405160200162000e3891906200969f565b604051602081830303815290604052905060008260405160200162000e5e9190620096d6565b604051602081830303815290604052905062000e9382827502ac3a4edbbfb8014e3ba83411e915e80000000000003062002bb8565b505050808062000ea39062009719565b91505062000e0a565b5060405162000ebb9062008fe9565b604051809103906000f08015801562000ed8573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000f3757600080fd5b505af115801562000f4c573d6000803e3d6000fd5b50506031546040518c93506001600160a01b03909116915062000f6f9062008f6b565b62000f7c92919062009594565b604051809103906000f08015801562000f99573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000fce9062008f6b565b62000fdb92919062009594565b604051809103906000f08015801562000ff8573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200102d9062008f6b565b6200103a92919062009594565b604051809103906000f08015801562001057573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200108c9062008f6b565b6200109992919062009594565b604051809103906000f080158015620010b6573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620010eb9062008f6b565b620010f892919062009594565b604051809103906000f08015801562001115573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200117157600080fd5b505af115801562001186573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b039283169350911690620011b09062008ff7565b620011bd929190620095bd565b604051809103906000f080158015620011da573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011fe9062009005565b6001600160a01b039091168152602001604051809103906000f0801580156200122b573d6000803e3d6000fd5b506028546040519192506000916001600160a01b03909116906200124f9062009013565b6001600160a01b039091168152602001604051809103906000f0801580156200127c573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b03938416939283169290911690620012ae9062009021565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620012eb573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81529293506001600160a01b03918216926399a88ec492620013269216908890600401620095bd565b600060405180830381600087803b1580156200134157600080fd5b505af115801562001356573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200139392909116908790600401620095bd565b600060405180830381600087803b158015620013ae57600080fd5b505af1158015620013c3573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200140092909116908690600401620095bd565b600060405180830381600087803b1580156200141b57600080fd5b505af115801562001430573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200146d92909116908590600401620095bd565b600060405180830381600087803b1580156200148857600080fd5b505af11580156200149d573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b158015620014eb57600080fd5b505af115801562001500573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b039485169550928416939182169291169062001538906200902f565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200157d573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b969082169590821694908216939116918162001608565b6040805160608101825260008082526020808301829052928201528252600019909201910181620015da5790505b50604080516000808252602082018181528284019093529091906200163e565b6060815260200190600190039081620016285790505b50604051602401620016589897969594939291906200981a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b9092168252620016a193929160040162009668565b600060405180830381600087803b158015620016bc57600080fd5b505af1158015620016d1573d6000803e3d6000fd5b50505050604051620016e3906200903d565b604051809103906000f08015801562001700573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b6200173c6200904b565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200175457905050905060405180604001604052806002815260200161676f60f01b815250816000815181106200179d576200179d62009552565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620017da57620017da62009552565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b8152508160028151811062001828576200182862009552565b60200260200101819052506200183e8362002a9b565b8160038151811062001854576200185462009552565b6020026020010181905250604051806040016040528060018152602001603160f81b815250816004815181106200188f576200188f62009552565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790620018d6908590600401620094d6565b6000604051808303816000875af1158015620018f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019209190810190620099af565b905080806020019051810190620019389190620099fc565b83516001602002018181525050604051806040016040528060018152602001601960f91b8152508260048151811062001975576200197562009552565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790620019b9908590600401620094d6565b6000604051808303816000875af1158015620019d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a039190810190620099af565b90508080602001905181019062001a1b9190620099fc565b8351526040805180820190915260018152603360f81b602082015282518390600490811062001a4e5762001a4e62009552565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001a92908590600401620094d6565b6000604051808303816000875af115801562001ab2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001adc9190810190620099af565b90508080602001905181019062001af49190620099fc565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001b345762001b3462009552565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b78908590600401620094d6565b6000604051808303816000875af115801562001b98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001bc29190810190620099af565b90508080602001905181019062001bda9190620099fc565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001c4257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001c23575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d9157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001d7957838290600052602060002001805462001ce59062009a16565b80601f016020809104026020016040519081016040528092919081815260200182805462001d139062009a16565b801562001d645780601f1062001d385761010080835404028352916020019162001d64565b820191906000526020600020905b81548152906001019060200180831162001d4657829003601f168201915b50505050508152602001906001019062001cc3565b50505050815250508152602001906001019062001c70565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b604080516080810182526007808252602082015260039181018290526060810182905262001e8e91839162002ee4565b600062001e9a62003786565b9050600062001f3b6042805462001eb19062009a16565b80601f016020809104026020016040519081016040528092919081815260200182805462001edf9062009a16565b801562001f305780601f1062001f045761010080835404028352916020019162001f30565b820191906000526020600020905b81548152906001019060200180831162001f1257829003601f168201915b50505050506200393f565b905062001f488262003b0f565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c9062001f7690849060040162009a4d565b6020604051808303816000875af115801562001f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fbc9190620099fc565b5062001fc9828262003be0565b600062001fd6826200393f565b60405163ca4f2d9760e01b81529091506001600160a01b0384169063ca4f2d97906200200790849060040162009a4d565b600060405180830381600087803b1580156200202257600080fd5b505af115801562002037573d6000803e3d6000fd5b5050505062002047838262003db9565b600062002055838362003f46565b90508051600014620020cf5760405163ca4f2d9760e01b81526001600160a01b0385169063ca4f2d97906200208f90849060040162009a4d565b600060405180830381600087803b158015620020aa57600080fd5b505af1158015620020bf573d6000803e3d6000fd5b50505050620020cf848262003db9565b620020da8462003f7f565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001d915760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021b257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620021735790505b5050505050815250508152602001906001019062002105565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001d91578382906000526020600020018054620022119062009a16565b80601f01602080910402602001604051908101604052809291908181526020018280546200223f9062009a16565b8015620022905780601f10620022645761010080835404028352916020019162002290565b820191906000526020600020905b8154815290600101906020018083116200227257829003601f168201915b505050505081526020019060010190620021ef565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001d915760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200237657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023375790505b50505050508152505081526020019060010190620022c9565b6040805160808101825260078082526020820152600391810182905260608101829052620023bf91839162002ee4565b6000620023cb62003786565b9050600060428054620023de9062009a16565b80601f01602080910402602001604051908101604052809291908181526020018280546200240c9062009a16565b80156200245d5780601f1062002431576101008083540402835291602001916200245d565b820191906000526020600020905b8154815290600101906020018083116200243f57829003601f168201915b505050505090506200246f8262003b0f565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c906200249d90849060040162009a4d565b6020604051808303816000875af1158015620024bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024e39190620099fc565b50620024f0828262003be0565b60405163ca4f2d9760e01b81526001600160a01b0383169063ca4f2d97906200251e90849060040162009a4d565b600060405180830381600087803b1580156200253957600080fd5b505af11580156200254e573d6000803e3d6000fd5b505050506200255e828262003db9565b620025698262003f7f565b505050565b60408051608081018252600780825260208201526003918101829052606081018290526200259e91839162002ee4565b6000620025aa62003786565b90506000620025c16042805462001eb19062009a16565b9050620025ce8262003b0f565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c90620025fc90849060040162009a4d565b6020604051808303816000875af11580156200261c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026429190620099fc565b506200264f828262003be0565b60006200265c826200393f565b60405163ca4f2d9760e01b81529091506001600160a01b0384169063ca4f2d97906200268d90849060040162009a4d565b600060405180830381600087803b158015620026a857600080fd5b505af1158015620026bd573d6000803e3d6000fd5b50505050620026cd838262003db9565b6000620026da826200393f565b60405163208c6d5360e21b81529091506001600160a01b03851690638231b54c906200270b90849060040162009a4d565b6020604051808303816000875af11580156200272b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027519190620099fc565b50620020da848262003be0565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001d91578382906000526020600020018054620027a49062009a16565b80601f0160208091040260200160405190810160405280929190818152602001828054620027d29062009a16565b8015620028235780601f10620027f75761010080835404028352916020019162002823565b820191906000526020600020905b8154815290600101906020018083116200280557829003601f168201915b50505050508152602001906001019062002782565b600754600090610100900460ff16156200285b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200296a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620028ec917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162009a62565b60408051601f1981840301815290829052620029089162009a95565b6000604051808303816000865af19150503d806000811462002947576040519150601f19603f3d011682016040523d82523d6000602084013e6200294c565b606091505b509150508080602001905181019062002966919062009ab3565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b604080518082019091526000808252602082015262002a1862009074565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801562002a4d5762002a4f565bfe5b508062002a935760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b60608162002ac05750506040805180820190915260018152600360fc1b602082015290565b8160005b811562002af0578062002ad78162009719565b915062002ae89050600a8362009aed565b915062002ac4565b6000816001600160401b0381111562002b0d5762002b0d6200953c565b6040519080825280601f01601f19166020018201604052801562002b38576020820181803683370190505b5090505b841562002bb05762002b5060018362009b04565b915062002b5f600a8662009b1e565b62002b6c90603062009b35565b60f81b81838151811062002b845762002b8462009552565b60200101906001600160f81b031916908160001a90535062002ba8600a8662009aed565b945062002b3c565b949350505050565b60008484848460405162002bcc9062009092565b62002bdb949392919062009b50565b604051809103906000f08015801562002bf8573d6000803e3d6000fd5b506027546031546021546040519394506000936001600160a01b03938416939283169263485cc95560e01b9262002c3892889290911690602401620095bd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905162002c779062008f6b565b62002c859392919062009668565b604051809103906000f08015801562002ca2573d6000803e3d6000fd5b5060408051600180825281830190925291925060009190602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050828260008151811062002d035762002d0362009552565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa15801562002d69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d8f919062009bb1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801562002dd157600080fd5b505af115801562002de6573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b3547915062002e1e908590859060040162009bd1565b600060405180830381600087803b15801562002e3957600080fd5b505af115801562002e4e573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b60408051818152601f818301527f5f636f6e66696752616e643a207365742072616e646f6d207365656420746f00606082015262ffffff8516602082015290516000805160206203e04e8339815191529181900360800190a16040516001600160e81b031960e885901b16602082015260230160408051601f19818403018152919052805160209091012060375562002f7d826200402f565b805162002f9391603891602090910190620090a0565b50805162002fa1906200402f565b805162002fb791603991602090910190620090a0565b5062002fc781602001516200402f565b805162002fdd91603a91602090910190620090a0565b5062002fed81604001516200402f565b80516200300391603b91602090910190620090a0565b506200301381606001516200402f565b80516200302991603c91602090910190620090a0565b5062003063603880546200303d9062009a16565b9050600014156040518060600160405280603081526020016203de4f6030913962004093565b6200309c60398054620030769062009a16565b9050600014156040518060600160405280603081526020016203dff26030913962004093565b620030d5603a8054620030af9062009a16565b9050600014156040518060600160405280603381526020016203dd396033913962004093565b6200310e603b8054620030e89062009a16565b9050600014156040518060600160405280603281526020016203dc916032913962004093565b62003147603c8054620031219062009a16565b9050600014156040518060600160405280602f81526020016203dbce602f913962004093565b62003151620040cc565b6040819055620031679060019081901b62009b04565b604180546001600160c01b0319166001600160c01b0392909216918217905562003191906200420b565b8051620031a791604291602090910190620090a0565b506040805481518281526030928101929092527f5f636f6e66696752616e643a206e756d626572206f662071756f72756d73206260608301526f195a5b99c81a5b9a5d1a585b1a5e995960821b608083015260208201526000805160206203e04e8339815191529060a00160405180910390a16040805160608101825260058152613a98602082015260969181019190915260005b604054811015620034b957600062003253620042e6565b9050600062003261620044e3565b90506000805160206203e04e83398151915283604051620032bc91906040808252601c908201527f5f636f6e66696752616e643a206372656174696e672071756f72756d000000006060820152602081019190915260800190565b60405180910390a183516040516000805160206203e04e833981519152916200331b916040808252601490820152730b4813585e081bdc195c985d1bdc8818dbdd5b9d60621b606082015263ffffffff91909116602082015260800190565b60405180910390a16000805160206203e04e83398151915282516040516200337d91906040808252601b908201527f2d204e756d207374726174656769657320636f6e7369646572656400000000006060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e2d204d696e696d756d207374616b6560881b60608201526001600160601b038316602082015290516000805160206203e04e8339815191529181900360800190a1601c5460335460405163ca669fa760e01b81526001600160a01b03918216600482015291169063ca669fa790602401600060405180830381600087803b1580156200341e57600080fd5b505af115801562003433573d6000803e3d6000fd5b5050602854604051631aeb699160e31b81526001600160a01b03909116925063d75b4c8891506200346d9087908590879060040162009c2e565b600060405180830381600087803b1580156200348857600080fd5b505af11580156200349d573d6000803e3d6000fd5b5050505050508080620034b09062009719565b9150506200323c565b506000620034c78262004521565b90506000805160206203db53833981519152620034e48262002a9b565b604051602001620034f6919062009c84565b60408051601f1981840301815290829052620035129162009a4d565b60405180910390a160005b818110156200367c5760006200353262003786565b60405163208c6d5360e21b81529091506001600160a01b03821690638231b54c90620035649060429060040162009ceb565b6020604051808303816000875af115801562003584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035aa9190620099fc565b5060005b60428054620035bd9062009a16565b9050811015620036645760006042828154620035d99062009a16565b8110620035ea57620035ea62009552565b8154600116156200360a5790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60009081526044602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b03851617905550806200365b8162009719565b915050620035ae565b50508080620036739062009719565b9150506200351d565b506000805160206203db53833981519152604051620036c4906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a16000805160206203db53833981519152604051620037289060208082526024908201527f5f636f6e66696752616e6420636f6d706c6574653b207374617274696e6720746040820152636573742160e01b606082015260800190565b60405180910390a16000805160206203db5383398151915260405162003777906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a15050505050565b6000806200379660435462002a9b565b604051602001620037a8919062009d9b565b60408051601f19818403018152919052604380549192506000620037cc8362009719565b91905055506000806000620037e184620045f3565b925092509250826001600160a01b0316632a34ade86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200382357600080fd5b505af115801562003838573d6000803e3d6000fd5b5050604051630da66deb60e31b81526001600160a01b0386169250636d336f5891506200386c908590859060040162009dcd565b600060405180830381600087803b1580156200388757600080fd5b505af11580156200389c573d6000803e3d6000fd5b5050601d546040516336b87bd760e11b81526001600160a01b0387811660048301526200393694509091169150636d70f7ae90602401602060405180830381865afa158015620038f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003916919062009ab3565b6040518060600160405280603181526020016203df996031913962004093565b50909392505050565b60606200396b8251600014156040518060600160405280603381526020016203dcc36033913962004093565b6000805b8351811015620039d757620039836200478f565b15620039c257620039bf848281518110620039a257620039a262009552565b602091010151600160f89190911c1b6001600160c01b0384161790565b91505b80620039ce8162009719565b9150506200396f565b506001600160c01b03811662003a215762003a1e8360008151811062003a015762003a0162009552565b602091010151600160f89190911c1b6001600160c01b0383161790565b90505b600062003a37826001600160c01b03166200420b565b90506000805160206203e04e833981519152845160405162003a9391906040808252601f908201527f5f73656c65637452616e643a20696e7075742071756f72756d20636f756e74006060820152602081019190915260800190565b60405180910390a16000805160206203e04e833981519152815160405162003b00919060408082526022908201527f5f73656c65637452616e643a2073656c65637465642071756f72756d20636f756060820152611b9d60f21b6080820152602081019190915260a00190565b60405180910390a19392505050565b62003b496040518060400160405280601681526020017518da1958dad7d3995d995c97d49959da5cdd195c995960521b81525082620047a5565b62003b6e816040518060600160405280603981526020016203dd94603991396200485a565b62003b93816040518060600160405280602a81526020016203db29602a9139620048a1565b62003bb8816040518060600160405280602881526020016203dbfd60289139620049a7565b62003bdd816040518060600160405280602c81526020016203e1bb602c913962004abd565b50565b62003c1860405180604001604052806014815260200173636865636b5f52656769737465725f537461746560601b81525083620047a5565b62003c3d826040518060600160405280602381526020016203dd166023913962004b5b565b62003c62826040518060600160405280602881526020016203e16f6028913962004c4e565b62003c8882826040518060600160405280602e81526020016203e103602e913962004cde565b62003cae82826040518060600160405280602981526020016203e0af6029913962004e00565b62003cd3826040518060600160405280602881526020016203dfca6028913962004ec1565b62003cf982826040518060600160405280603981526020016203ded760399139620050ea565b62003d1f82826040518060600160405280603e81526020016203e131603e91396200522a565b62003d4582826040518060800160405280604881526020016203ddcd60489139620053f2565b62003d6a816040518060600160405280603a81526020016203dc57603a913962005410565b62003d9082826040518060600160405280602881526020016203dd6c60289139620054af565b62003db5826040518060600160405280602481526020016203e19760249139620055a3565b5050565b62003df360405180604001604052806016815260200175636865636b5f446572656769737465725f537461746560501b81525083620047a5565b62003e18826040518060600160405280602981526020016203df506029913962004b5b565b62003e3e82826040518060600160405280603281526020016203db736032913962005631565b62003e6482826040518060600160405280602c81526020016203e022602c913962005781565b62003e89826040518060600160405280602e81526020016203de7f602e913962004ec1565b62003eaf82826040518060600160405280604081526020016203df106040913962005848565b62003ed582826040518060600160405280603381526020016203daf66033913962005955565b62003efb82826040518060800160405280604181526020016203e06e6041913962005a9a565b62003f20816040518060600160405280603a81526020016203de15603a913962005b6a565b62003db582826040518060600160405280602981526020016203dba56029913962005bfc565b6060600062003f558462005cc4565b9050600062003f648462005cc4565b905062003f74811983166200420b565b925050505b92915050565b62003fc06040518060400160405280601e81526020017f636865636b5f436f6d706c657465446572656769737465725f5374617465000081525082620047a5565b62003fe5816040518060600160405280602b81526020016203e0d8602b9139620048a1565b6200400a816040518060600160405280602981526020016203df506029913962004b5b565b62003bb8816040518060600160405280602a81526020016203dead602a913962005e57565b606060005b6101008110156200408d576001811b838116156200407957604051620040679084906001851b60f81b9060200162009df6565b60405160208183030381529060405292505b50620040858162009719565b905062004034565b50919050565b8162003db5576000805160206203dcf683398151915281604051620040b9919062009e27565b60405180910390a162003db58262005ed7565b6000806200416c60398054620040e29062009a16565b80601f0160208091040260200160405190810160405280929190818152602001828054620041109062009a16565b8015620041615780601f10620041355761010080835404028352916020019162004161565b820191906000526020600020905b8154815290600101906020018083116200414357829003601f168201915b505050505062005f3e565b905060018114156200418057600191505090565b60028114156200419257600291505090565b6004811415620041b057620041aa6003600a62005fa7565b91505090565b60405162461bcd60e51b815260206004820152602560248201527f5f72616e6451756f72756d436f756e743a20666c6167206e6f74207265636f676044820152641b9a5e995960da1b606482015260840162002a8a565b5090565b60606000806200421b8462006069565b61ffff166001600160401b038111156200423957620042396200953c565b6040519080825280601f01601f19166020018201604052801562004264576020820181803683370190505b5090506000805b8251821080156200427d575061010081105b15620042dc576001811b935085841615620042c9578060f81b838381518110620042ab57620042ab62009552565b60200101906001600160f81b031916908160001a9053508160010191505b620042d48162009719565b90506200426b565b5090949350505050565b60606000620042fd603a8054620040e29062009a16565b9050600060018214156200431457506001620043ea565b60028214156200432757506002620043ea565b60048214156200435857602f5462004350906003906200434a9060019062009b04565b62005fa7565b9050620043ea565b60088214156200436b5750600f620043ea565b60108214156200437e57506014620043ea565b60208214156200439157506019620043ea565b60405162461bcd60e51b815260206004820152602760248201527f5f72616e645374726174656779436f756e743a20666c6167206e6f74207265636044820152661bd9db9a5e995960ca1b606482015260840162002a8a565b6000816001600160401b038111156200440757620044076200953c565b6040519080825280602002602001820160405280156200444e57816020015b6040805180820190915260008082526020820152815260200190600190039081620044265790505b50905060005b8151811015620044db576040518060400160405280602f83815481106200447f576200447f62009552565b600091825260209182902001546001600160a01b03168252670de0b6b3a76400009101528251839083908110620044ba57620044ba62009552565b60200260200101819052508080620044d29062009719565b91505062004454565b509392505050565b600080620044f9603b8054620040e29062009a16565b905060018114156200450d57600091505090565b6002811415620041b057620f424091505090565b60008062004537603c8054620040e29062009a16565b905060018114156200454c5750600092915050565b600281141562004581576200457a60018085600001516200456e919062009e58565b63ffffffff1662005fa7565b9392505050565b6004811415620045975750505163ffffffff1690565b60405162461bcd60e51b815260206004820152602a60248201527f5f72616e64496e697469616c4f70657261746f72733a20666c6167206e6f74206044820152691c9958dbd9db9a5e995960b21b606482015260840162002a8a565b6000606080600080620046056200609a565b915091506000806200461f60388054620040e29062009a16565b9050600181141562004670578784846040516200463c906200912b565b6200464a9392919062009e80565b604051809103906000f08015801562004667573d6000803e3d6000fd5b509150620046de565b6002811415620046de57876040516020016200468d919062009ee0565b6040516020818303038152906040529750878484604051620046af9062009139565b620046bd9392919062009e80565b604051809103906000f080158015620046da573d6000803e3d6000fd5b5091505b6000805160206203dcf6833981519152826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200472d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620047579190810190620099af565b60405162004766919062009f0a565b60405180910390a16000806200477c846200626b565b949b909a50939850929650505050505050565b60006200479f6000600162005fa7565b15919050565b6000805160206203db5383398151915282826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015620047f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200481f9190810190620099af565b6040516020016200483292919062009f53565b60408051601f19818403018152908290526200484e9162009a4d565b60405180910390a15050565b60006200486783620064db565b80519091506200487a906000846200655f565b6200256960008260200151600281111562004899576200489962009faf565b148362004093565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049846001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004906573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200492c9190620099fc565b6040518263ffffffff1660e01b81526004016200494b91815260200190565b602060405180830381865afa15801562004969573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200498f919062009fc5565b9050620025696001600160c01b038216158362004093565b602a5460405162a1f4cb60e01b81526001600160a01b038481166004830152600092839291169062a1f4cb906024016040805180830381865afa158015620049f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a19919062009ff0565b602a54604051630378a7eb60e61b81526001600160a01b038881166004830152939550919350600092169063de29fac090602401602060405180830381865afa15801562004a6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a919190620099fc565b905062004aa1836000866200659b565b62004aaf826000866200659b565b620020da816000866200655f565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da39262004af992909116908790600401620095bd565b602060405180830381865afa15801562004b17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b3d91906200a015565b90506200256960005b82600181111562004899576200489962009faf565b6000826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004b9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bc29190620099fc565b6028546040516309aa152760e11b81526001600160a01b038681166004830152929350600092909116906313542a4e90602401602060405180830381865afa15801562004c13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c399190620099fc565b905062004c488282856200655f565b50505050565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562004c9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cc091906200a048565b90506200256960015b82600281111562004899576200489962009faf565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d699190620099fc565b6040518263ffffffff1660e01b815260040162004d8891815260200190565b602060405180830381865afa15801562004da6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004dcc919062009fc5565b9050600062004ddb8462005cc4565b9050620020da62004df96001600160c01b0380841690851681161490565b8462004093565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004e41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e679190620099fc565b9050600062004e768462005cc4565b9050600062004e8583620065d7565b9050600062004e948462006648565b905062004eb86001600160c01b0382168417836001600160c01b0316148662004093565b50505050505050565b6000826001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562004f01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f2791906200a066565b602a5460405162a1f4cb60e01b81526001600160a01b0386811660048301529293506000928392169062a1f4cb906024016040805180830381865afa15801562004f75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f9b919062009ff0565b8451600090815260208087015190526040812092945090925090602a54604051630378a7eb60e61b81526001600160a01b0389811660048301529293506000929091169063de29fac090602401602060405180830381865afa15801562005006573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200502c9190620099fc565b602a5460405163745dcd7360e11b8152600481018590529192506000916001600160a01b039091169063e8bb9ae690602401602060405180830381865afa1580156200507c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050a2919062009bb1565b9050620050b5866000015186896200659b565b620050c6866020015185896200659b565b620050d38383896200655f565b620050e08882896200673b565b5050505050505050565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa1580156200512a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200515091906200a066565b905060006200515f8462006789565b905060006200516e85620068d3565b905060005b855181101562004eb8576000620051b08584848151811062005199576200519962009552565b60200260200101516200696090919063ffffffff16565b9050620051e38160000151858481518110620051d057620051d062009552565b602002602001015160000151886200659b565b62005214816020015185848151811062005201576200520162009552565b602002602001015160200151886200659b565b5080620052218162009719565b91505062005173565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200526b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052919190620099fc565b905060005b8351811015620020da576000848281518110620052b757620052b762009552565b0160200151602b5460405163c46778a560e01b815260f89290921c6004830181905292506000916001600160a01b039091169063c46778a590602401602060405180830381865afa15801562005311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200533791906200a09b565b602b54604051635401ed2760e01b81526004810187905260ff851660248201529192506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562005390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053b691906200a09b565b9050620053d9826001600160601b0316826001600160601b031610158762004093565b5050508080620053e99062009719565b91505062005296565b6000620054008484620069f9565b905062004c488484838562006b3b565b60006200541d8362006c82565b905060006200542c8462006db2565b905060005b8451811015620020da576200549a83828151811062005454576200545462009552565b602002602001015163ffffffff1683838151811062005477576200547762009552565b602002602001015160016200548d91906200a0c6565b63ffffffff16866200659b565b80620054a68162009719565b91505062005431565b6000620054bc8362006e3f565b90506000620054cb8462006f81565b905060005b84518110156200559b576200552f838281518110620054f357620054f362009552565b60200260200101515183838151811062005511576200551162009552565b602002602001015151600162005528919062009b35565b866200659b565b620055626200555b8483815181106200554c576200554c62009552565b6020026020010151886200700e565b8562004093565b620055866200557f8383815181106200554c576200554c62009552565b85620070d6565b80620055928162009719565b915050620054d0565b505050505050565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da392620055df92909116908790600401620095bd565b602060405180830381865afa158015620055fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200562391906200a015565b905062002569600162004b46565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005696573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056bc9190620099fc565b6040518263ffffffff1660e01b8152600401620056db91815260200190565b602060405180830381865afa158015620056f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200571f919062009fc5565b905060005b8351811015620020da57600084828151811062005745576200574562009552565b60209101015160f81c90506200576b60016001600160c01b038516831c8116146200557f565b5080620057788162009719565b91505062005724565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620057c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620057e89190620099fc565b90506000620057f78462005cc4565b905060006200580683620065d7565b90506000620058158462006648565b9050620058318382166001600160c01b031684145b8662004093565b62004eb88284166001600160c01b0316156200582a565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562005888573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058ae91906200a066565b90506000620058bd8462006789565b90506000620058cc85620068d3565b905060005b855181101562004eb857600062005901620058ec86620070e3565b84848151811062005199576200519962009552565b9050620059218160000151858481518110620051d057620051d062009552565b6200593f816020015185848151811062005201576200520162009552565b50806200594c8162009719565b915050620058d1565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005996573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059bc9190620099fc565b905060005b8351811015620020da576000848281518110620059e257620059e262009552565b0160200151602b54604051635401ed2760e01b81526004810186905260f89290921c6024830181905292506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562005a43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a6991906200a09b565b905062005a82816001600160601b03166000876200659b565b5050808062005a919062009719565b915050620059c1565b600062005aa88484620071a3565b9050600062005ab78462007299565b9050600062005ac685620073cc565b905060005b855181101562004eb85762005b5583828151811062005aee5762005aee62009552565b60200260200101516001600160601b031685838151811062005b145762005b1462009552565b602002602001015184848151811062005b315762005b3162009552565b602002602001015162005b4591906200a0f1565b6001600160601b0316876200659b565b8062005b618162009719565b91505062005acb565b600062005b778362006c82565b9050600062005b868462006db2565b905060005b8451811015620020da5762005be783828151811062005bae5762005bae62009552565b602002602001015163ffffffff16600184848151811062005bd35762005bd362009552565b60200260200101516200548d919062009e58565b8062005bf38162009719565b91505062005b8b565b600062005c098362006e3f565b9050600062005c188462006f81565b905060005b84518110156200559b5762005c7583828151811062005c405762005c4062009552565b602002602001015151600184848151811062005c605762005c6062009552565b60200260200101515162005528919062009b04565b62005c926200557f8483815181106200554c576200554c62009552565b62005caf6200555b8383815181106200554c576200554c62009552565b8062005cbb8162009719565b91505062005c1d565b60006101008251111562005d4f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40162002a8a565b815162005d5e57506000919050565b6000808360008151811062005d775762005d7762009552565b0160200151600160f89190911c81901b92505b8451811015620039365784818151811062005da95762005da962009552565b0160200151600160f89190911c1b915082821162005e405760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40162002a8a565b9181179162005e4f8162009719565b905062005d8a565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562005ea3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005ec991906200a048565b905062002569600262004cc9565b8062003bdd576000805160206203db5383398151915260405162005f2c9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003bdd62007459565b600062005f6960008351116040518060600160405280603281526020016203dc256032913962004093565b600062005f816000600185516200434a919062009b04565b905082818151811062005f985762005f9862009552565b016020015160f81c9392505050565b60008062005fb6848462009b04565b62005fc390600162009b35565b90506000815b801562005fe8578162005fdc8162009719565b92505060011c62005fc9565b600062005ff9600180851b62009b04565b60375490915081165b84811062006020578162006017868362009b04565b16905062006002565b6037546040516020016200603691815260200190565b60408051601f1981840301815291905280516020909101206037556200605d818962009b35565b98975050505050505050565b6000805b821562003f79576200608160018462009b04565b909216918062006091816200a114565b9150506200606d565b6000620060a662009147565b603e54603d5414156200613a5760405162461bcd60e51b815260206004820152604f60248201527f5f66657463684b6579706169723a206e6f7420656e6f7567682067656e65726160448201527f746564206b6579732e20436865636b20496e746567726174696f6e4465706c6f60648201526e3cb2b91731b7b739ba393ab1ba37b960891b608482015260a40162002a8a565b6000603e603d548154811062006154576200615462009552565b906000526020600020015490506000603f603d54815481106200617b576200617b62009552565b60009182526020918290206040805160a0810182526008939093029091018054606084019081526001820154608080860191909152908452825180840184526002808401548252600384015482880152958501528251908101808452939491938584019391926004860192849290830191849182845b815481526020019060010190808311620061f157505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311620062285750505091909252505050905250603d805491925060006200625d8362009719565b909155509194909350915050565b6060806000602f805490506001600160401b038111156200629057620062906200953c565b604051908082528060200260200182016040528015620062ba578160200160208202803683370190505b50602f549091506000906001600160401b03811115620062de57620062de6200953c565b60405190808252806020026020018201604052801562006308578160200160208202803683370190505b5090506000805160206203dcf6833981519152856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200635a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620063849190810190620099af565b6040516200639391906200a139565b60405180910390a160005b602f54811015620064d0576000602f8281548110620063c157620063c162009552565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa15801562006414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200643a919062009bb1565b9050600062006450620f4240624c4b4062005fa7565b90506200645f828a8362007567565b8286858151811062006475576200647562009552565b60200260200101906001600160a01b031690816001600160a01b03168152505080858581518110620064ab57620064ab62009552565b6020026020010181815250505050508080620064c79062009719565b9150506200639e565b509094909350915050565b6040805180820190915260008082526020820152602854604051631619718360e21b81526001600160a01b03848116600483015290911690635865c60c906024016040805180830381865afa15801562006539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f7991906200a18d565b81831462002569576000805160206203dcf68339815191528160405162006587919062009e27565b60405180910390a162002569838362007576565b81831462002569576000805160206203dcf683398151915281604051620065c3919062009e27565b60405180910390a16200256983836200765f565b60285460405163871ef04960e01b8152600481018390526000916001600160a01b03169063871ef04990602401602060405180830381865afa15801562006622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f79919062009fc5565b600080602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620066a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066c79190620099fc565b9050620066d483620065d7565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b1580156200671c57600080fd5b505af115801562006731573d6000803e3d6000fd5b5050505050919050565b816001600160a01b0316836001600160a01b03161462002569576000805160206203dcf68339815191528160405162006775919062009e27565b60405180910390a162002569838362007711565b6060600082516001600160401b03811115620067a957620067a96200953c565b604051908082528060200260200182016040528015620067f057816020015b6040805180820190915260008082526020820152815260200190600190039081620067c85790505b50905060005b8351811015620068cc57602a5484516001600160a01b0390911690635f61a884908690849081106200682c576200682c62009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526024016040805180830381865afa15801562006870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200689691906200a066565b828281518110620068ab57620068ab62009552565b60200260200101819052508080620068c39062009719565b915050620067f6565b5092915050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200692d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069539190620099fc565b9050620066d48362006789565b60408051808201909152600080825260208201526200697e62009197565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801562002a4d57508062002a935760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640162002a8a565b6060600082516001600160401b0381111562006a195762006a196200953c565b60405190808252806020026020018201604052801562006a43578160200160208202803683370190505b50905060005b8351811015620044db57602b5484516001600160a01b0390911690631f9b74e09086908490811062006a7f5762006a7f62009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526001600160a01b0388166024820152604401602060405180830381865afa15801562006ad3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006af991906200a09b565b82828151811062006b0e5762006b0e62009552565b6001600160601b03909216602092830291909101909101528062006b328162009719565b91505062006a49565b600062006b498585620077fa565b9050600062006b598686620071a3565b9050600062006b688662007299565b9050600062006b7787620073cc565b905060005b875181101562006c775762006c0685828151811062006b9f5762006b9f62009552565b60200260200101516001600160601b031688838151811062006bc55762006bc562009552565b602002602001015186848151811062006be25762006be262009552565b602002602001015162006bf691906200a1c8565b6001600160601b0316886200659b565b62006c6283828151811062006c1f5762006c1f62009552565b60200260200101516001600160601b031688838151811062006c455762006c4562009552565b602002602001015184848151811062006be25762006be262009552565b8062006c6e8162009719565b91505062006b7c565b505050505050505050565b6060600082516001600160401b0381111562006ca25762006ca26200953c565b60405190808252806020026020018201604052801562006ccc578160200160208202803683370190505b50905060005b8351811015620068cc57602c5484516001600160a01b039091169063f34109229086908490811062006d085762006d0862009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562006d4d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006d7391906200a1ed565b82828151811062006d885762006d8862009552565b63ffffffff909216602092830291909101909101528062006da98162009719565b91505062006cd2565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562006e0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e329190620099fc565b9050620066d48362006c82565b6060600082516001600160401b0381111562006e5f5762006e5f6200953c565b60405190808252806020026020018201604052801562006e9457816020015b606081526020019060019003908162006e7e5790505b50905060005b8351811015620068cc57602c5484516001600160a01b039091169063890262459086908490811062006ed05762006ed062009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201524363ffffffff166024820152604401600060405180830381865afa15801562006f21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006f4b91908101906200a29d565b82828151811062006f605762006f6062009552565b6020026020010181905250808062006f789062009719565b91505062006e9a565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562006fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620070019190620099fc565b9050620066d48362006e3f565b600080826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007050573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620070769190620099fc565b905060005b8451811015620070cb57818582815181106200709b576200709b62009552565b60200260200101511415620070b65760019250505062003f79565b80620070c28162009719565b9150506200707b565b506000949350505050565b62003db582158262004093565b604080518082019091526000808252602082015281511580156200710957506020820151155b1562007128575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516200716f919062009b1e565b6200719b907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4762009b04565b905292915050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620071fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620072239190620099fc565b9050620072318484620077fa565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b1580156200727957600080fd5b505af11580156200728e573d6000803e3d6000fd5b505050505092915050565b6060600082516001600160401b03811115620072b957620072b96200953c565b604051908082528060200260200182016040528015620072e3578160200160208202803683370190505b50905060005b8351811015620068cc57602b5484516001600160a01b039091169063d5eccc05908690849081106200731f576200731f62009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562007364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200738a91906200a09b565b8282815181106200739f576200739f62009552565b6001600160601b039092166020928302919091019091015280620073c38162009719565b915050620072e9565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562007426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200744c9190620099fc565b9050620066d48362007299565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200755657604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490620074d19083906519985a5b195960d21b906001906020016200a2d5565b60408051601f1981840301815290829052620074f1929160200162009a62565b60408051601f19818403018152908290526200750d9162009a95565b6000604051808303816000865af19150503d80600081146200754c576040519150601f19603f3d011682016040523d82523d6000602084013e62007551565b606091505b505050505b6007805461ff001916610100179055565b620025698383836000620079a6565b80821462003db5576000805160206203db53833981519152604051620075db9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974604082015264657333325d60d81b606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99826040516200761491906200a2f6565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99816040516200764d91906200a32f565b60405180910390a162003db562007459565b80821462003db5576000805160206203db53833981519152604051620076c19060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a16000805160206203e04e83398151915282604051620076e991906200a2f6565b60405180910390a16000805160206203e04e833981519152816040516200764d91906200a32f565b806001600160a01b0316826001600160a01b03161462003db5576000805160206203db53833981519152604051620077889060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620077c191906200a35a565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f816040516200764d91906200a39f565b60606000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200783d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620078639190620099fc565b9050600083516001600160401b038111156200788357620078836200953c565b604051908082528060200260200182016040528015620078ad578160200160208202803683370190505b50905060005b84518110156200799d57602b5485516001600160a01b0390911690635401ed27908590889085908110620078eb57620078eb62009552565b01602001516040516001600160e01b031960e085901b168152600481019290925260f81c6024820152604401602060405180830381865afa15801562007935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200795b91906200a09b565b82828151811062007970576200797062009552565b6001600160601b039092166020928302919091019091015280620079948162009719565b915050620078b3565b50949350505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620079fc9162009a95565b600060405180830381855afa9150503d806000811462007a39576040519150601f19603f3d011682016040523d82523d6000602084013e62007a3e565b606091505b5091505060008180602001905181019062007a5a9190620099fc565b905062007a948462007a8d8762007a866370a0823160e01b62007a7f600c8d62007b9c565b9062007bc2565b9062007be0565b9062007c09565b82156200559b5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162007adf919062009a95565b600060405180830381855afa9150503d806000811462007b1c576040519150601f19603f3d011682016040523d82523d6000602084013e62007b21565b606091505b5091505060008180602001905181019062007b3d9190620099fc565b90508286101562007b685762007b54868462009b04565b62007b60908262009b04565b905062007b83565b62007b74838762009b04565b62007b80908262009b35565b90505b620050e08162007a8d6318160ddd60e01b62007a7f600c8d5b6005820180546001600160a01b0319166001600160a01b0383161790556000826200457a565b60038201805463ffffffff191660e083901c1790556000826200457a565b6002820180546001810182556000918252602082206001600160a01b038416910155826200457a565b62003db58282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562007c8257602002820191906000526020600020905b81548152602001906001019080831162007c6d575b5050505050905060008362007c978362007f87565b60405160200162007caa92919062009a62565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162007cfe9186918891016200a3ca565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007d395762007d378762008033565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162007d7a9187918991016200a3ca565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162007dc1919062009a95565b600060405180830381855afa9150503d806000811462007dfe576040519150601f19603f3d011682016040523d82523d6000602084013e62007e03565b606091505b50915062007e2090508162007e1a8860206200a406565b62008040565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562007e87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ead9190620099fc565b905080821462007ed15760405162461bcd60e51b815260040162002a8a906200a428565b6040516370ca10bb60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb9062007f0e908b9087908e906004016200a2d5565b600060405180830381600087803b15801562007f2957600080fd5b505af115801562007f3e573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562007f7360028b016000620091b5565b896004016000905550505050505050505050565b606060008251602062007f9b91906200a406565b6001600160401b0381111562007fb55762007fb56200953c565b6040519080825280601f01601f19166020018201604052801562007fe0576020820181803683370190505b50905060005b8351811015620068cc57600084828151811062008007576200800762009552565b6020026020010151905080826020026020018401525080806200802a9062009719565b91505062007fe6565b600062003f7982620080c0565b60008060006020855111620080575784516200805a565b60205b905060005b81811015620042dc57620080758160086200a406565b8662008082838862009b35565b8151811062008095576200809562009552565b01602001516001600160f81b031916901c929092179180620080b78162009719565b9150506200805f565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200813257602002820191906000526020600020905b8154815260200190600101908083116200811d575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200817e925085918791016200a3ca565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200821d576001600160a01b0384166000908152602087815260408083206001600160e01b03198716845282528083209051909291620081ed9185918791016200a3ca565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200822b8362008dfa565b6040516020016200823e92919062009a62565b60405160208183030381529060405290506000805160206203df7983398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200829d57600080fd5b505af1158015620082b2573d6000803e3d6000fd5b50505050600080866001600160a01b031683604051620082d3919062009a95565b600060405180830381855afa9150503d806000811462008310576040519150601f19603f3d011682016040523d82523d6000602084013e62008315565b606091505b509150620083329050816200832c8760206200a406565b62008ea6565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562008394573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620083be91908101906200a4c3565b509050805160011415620086a05760006000805160206203df7983398151915260001c6001600160a01b031663667f9d70898460008151811062008406576200840662009552565b60200260200101516040518363ffffffff1660e01b8152600401620084409291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200845e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620084849190620099fc565b905080620084ef577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58883600081518110620084c457620084c462009552565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620085115760405162461bcd60e51b815260040162002a8a906200a428565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620085499291906200a3ca565b604051602081830303815290604052805190602001208560008151811062008575576200857562009552565b602002602001015160001c6040516200859294939291906200a52d565b60405180910390a181600081518110620085b057620085b062009552565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c1683528452808220905192939092620085fb918a918c91016200a3ca565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162008665918a918c91016200a3ca565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062008c7d565b60018151111562008c0c5760005b815181101562008c055760006000805160206203df7983398151915260001c6001600160a01b031663667f9d708a858581518110620086f157620086f162009552565b60200260200101516040518363ffffffff1660e01b81526004016200872b9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562008749573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200876f9190620099fc565b905080620087d9577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620087ae57620087ae62009552565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620087e8575062008bf0565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c9087908790811062008820576200882062009552565b6020026020010151846040518463ffffffff1660e01b815260040162008849939291906200a2d5565b600060405180830381600087803b1580156200886457600080fd5b505af115801562008879573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200889b919062009a95565b600060405180830381855afa9150503d8060008114620088d8576040519150601f19603f3d011682016040523d82523d6000602084013e620088dd565b606091505b509092509050620088f5816200832c8c60206200a406565b9650508080156200890557508186145b1562008b58577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620089439291906200a3ca565b604051602081830303815290604052805190602001208888815181106200896e576200896e62009552565b602002602001015160001c6040516200898b94939291906200a52d565b60405180910390a1848481518110620089a857620089a862009552565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f1683528452808220905192939092620089f3918d918f91016200a3ca565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c60405160200162008a809291906200a3ca565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206203df7983398151915260001c6001600160a01b03166370ca10bb8c87878151811062008af25762008af262009552565b6020026020010151866040518463ffffffff1660e01b815260040162008b1b939291906200a2d5565b600060405180830381600087803b15801562008b3657600080fd5b505af115801562008b4b573d6000803e3d6000fd5b5050505050505062008c05565b6000805160206203df7983398151915260001c6001600160a01b03166370ca10bb8c87878151811062008b8f5762008b8f62009552565b6020026020010151866040518463ffffffff1660e01b815260040162008bb8939291906200a2d5565b600060405180830381600087803b15801562008bd357600080fd5b505af115801562008be8573d6000803e3d6000fd5b505050505050505b8062008bfc8162009719565b915050620086ae565b5062008c7d565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002a8a565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162008cc19188918a91016200a3ca565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662008d505760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b606482015260840162002a8a565b6005890180546001600160a01b031916905560038901805463ffffffff1916905562008d8160028a016000620091b5565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a1684528252808320905190929162008dc79188918a91016200a3ca565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062008e0e91906200a406565b6001600160401b0381111562008e285762008e286200953c565b6040519080825280601f01601f19166020018201604052801562008e53576020820181803683370190505b50905060005b8351811015620068cc57600084828151811062008e7a5762008e7a62009552565b60200260200101519050808260200260200184015250808062008e9d9062009719565b91505062008e59565b6000806000602085511162008ebd57845162008ec0565b60205b905060005b81811015620042dc5762008edb8160086200a406565b8662008ee8838862009b35565b8151811062008efb5762008efb62009552565b01602001516001600160f81b031916901c92909217918062008f1d8162009719565b91505062008ec5565b610718806200a55e83390190565b610778806200ac7683390190565b6094806200b3ee83390190565b61022a806200b48283390190565b6103f3806200b6ac83390190565b610e81806200ba9f83390190565b614ad0806200c92083390190565b6104e480620113f083390190565b615c4680620118d483390190565b61338a806201751a83390190565b610efe806201a8a483390190565b613169806201b7a283390190565b611f78806201e90b83390190565b611ab4806202088383390190565b61117d806202233783390190565b61395880620234b483390190565b61210b8062026e0c83390190565b6113ec8062028f1783390190565b6116e0806202a30383390190565b616187806202b9e383390190565b611a258062031b6a83390190565b604051806040016040528062009060620091d5565b81526020016200906f620091d5565b905290565b60405180606001604052806003906020820280368337509192915050565b610e60806203358f83390190565b828054620090ae9062009a16565b90600052602060002090601f016020900481019282620090d257600085556200911d565b82601f10620090ed57805160ff19168380011785556200911d565b828001600101855582156200911d579182015b828111156200911d57825182559160200191906001019062009100565b5062004207929150620091f3565b6146f480620343ef83390190565b6150138062038ae383390190565b6040805160a0810190915260006060820181815260808301919091528190815260200162009188604051806040016040528060008152602001600081525090565b81526020016200906f6200904b565b60405180608001604052806004906020820280368337509192915050565b508054600082559060005260206000209081019062003bdd9190620091f3565b60405180604001604052806002906020820280368337509192915050565b5b80821115620042075760008155600101620091f4565b6000602082840312156200921d57600080fd5b5035919050565b8060005b600281101562004c4857815184526020938401939091019060010162009228565b6200925682825162009224565b602081015162002569604084018262009224565b6080810162003f79828462009249565b600081518084526020808501945080840160005b83811015620092b55781516001600160a01b0316875295820195908201906001016200928e565b509495945050505050565b6020815260006200457a60208301846200927a565b60005b83811015620092f2578181015183820152602001620092d8565b8381111562004c485750506000910152565b600081518084526200931e816020860160208601620092d5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620093e857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015620093d157605f19898503018352620093be84865162009304565b948e01949350918d01916001016200939f565b505050978a01979450509188019160010162009359565b50919a9950505050505050505050565b6000602082840312156200940b57600080fd5b813562ffffff811681146200457a57600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620094c757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620094b15783516001600160e01b0319168252928b019260019290920191908b019062009485565b50978a0197955050509187019160010162009447565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200952f57603f198886030184526200951c85835162009304565b94509285019290850190600101620094fd565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6040815260006200957d60408301856200927a565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b6001600160a01b0392831681529116602082015260400190565b600081518084526020808501945080840160005b83811015620092b557815187529582019590820190600101620095eb565b6001600160a01b0387811682528616602082015260ff851660408201526060810184905260c06080820181905260009062009647908301856200927a565b82810360a08401526200965b8185620095d7565b9998505050505050505050565b6001600160a01b03848116825283166020820152606060408201819052600090620096969083018462009304565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b815260008251620096c981600d850160208701620092d5565b91909101600d0192915050565b6214d51560ea1b815260008251620096f6816003850160208701620092d5565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b600060001982141562009730576200973062009703565b5060010190565b600081518084526020808501945080840160005b83811015620092b55781516001600160601b0316875295820195908201906001016200974b565b600081518084526020808501945080840160005b83811015620092b557815180516001600160a01b031688528301516001600160601b0316838801526040909601959082019060010162009786565b600081518084526020808501808196508360051b8101915082860160005b858110156200980d578284038952620097fa84835162009772565b98850198935090840190600101620097df565b5091979650505050505050565b6001600160a01b038981168252888116602080840191909152888216604084015290871660608084019190915260ff8716608084015261010060a084018190528651908401819052600092610120850192888201929190855b83811015620098bd57620098ac868651805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b948101949382019360010162009873565b505050505082810360c0840152620098d6818662009737565b905082810360e0840152620098ec8185620097c1565b9b9a5050505050505050505050565b604080519081016001600160401b03811182821017156200992057620099206200953c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200995157620099516200953c565b604052919050565b60006001600160401b038311156200997557620099756200953c565b6200998a601f8401601f191660200162009926565b90508281528383830111156200999f57600080fd5b6200457a836020830184620092d5565b600060208284031215620099c257600080fd5b81516001600160401b03811115620099d957600080fd5b8201601f81018413620099eb57600080fd5b62002bb08482516020840162009959565b60006020828403121562009a0f57600080fd5b5051919050565b600181811c9082168062009a2b57607f821691505b602082108114156200408d57634e487b7160e01b600052602260045260246000fd5b6020815260006200457a602083018462009304565b6001600160e01b031983168152815160009062009a87816004850160208701620092d5565b919091016004019392505050565b6000825162009aa9818460208701620092d5565b9190910192915050565b60006020828403121562009ac657600080fd5b815180151581146200457a57600080fd5b634e487b7160e01b600052601260045260246000fd5b60008262009aff5762009aff62009ad7565b500490565b60008282101562009b195762009b1962009703565b500390565b60008262009b305762009b3062009ad7565b500690565b6000821982111562009b4b5762009b4b62009703565b500190565b60808152600062009b65608083018762009304565b828103602084015262009b79818762009304565b604084019590955250506001600160a01b039190911660609091015292915050565b6001600160a01b038116811462003bdd57600080fd5b60006020828403121562009bc457600080fd5b81516200457a8162009b9b565b60408152600062009be660408301856200927a565b82810360208481019190915284518083528582019282019060005b8181101562009c2157845115158352938301939183019160010162009c01565b5090979650505050505050565b62009c5d8185805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b6001600160601b038316606082015260a0608082015260006200969660a083018462009772565b6b02932b3b4b9ba32b934b733960a51b81526000825162009cad81600c850160208701620092d5565b7f20696e697469616c206f70657261746f727320696e20656163682071756f7275600c939091019283015250606d60f81b602c820152602d01919050565b600060208083526000845481600182811c91508083168062009d0e57607f831692505b85831081141562009d2d57634e487b7160e01b85526022600452602485fd5b87860183815260200181801562009d4d576001811462009d5f5762009d8c565b60ff1986168252878201965062009d8c565b60008b81526020902060005b8681101562009d865781548482015290850190890162009d6b565b83019750505b50949998505050505050505050565b6727b832b930ba37b960c11b81526000825162009dc0816008850160208701620092d5565b9190910160080192915050565b60408152600062009de260408301856200927a565b8281036020840152620096968185620095d7565b6000835162009e0a818460208801620092d5565b6001600160f81b0319939093169190920190815260010192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200457a608083018462009304565b600063ffffffff8381169083168181101562009e785762009e7862009703565b039392505050565b600061014080835262009e968184018762009304565b91505083602083015262009eb860408301845180518252602090810151910152565b60208381015180516080850152015160a083015260408301516200799d60c084018262009249565b6000825162009ef4818460208701620092d5565b6317d05b1d60e21b920191825250600401919050565b60408152601760408201527f5f72616e64557365723a2043726561746564207573657200000000000000000060608201526080602082015260006200457a608083018462009304565b61016960f51b81526000835162009f72816002850160208801620092d5565b600560fb1b600291840191820152835162009f95816003840160208801620092d5565b602960f81b60039290910191820152600401949350505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121562009fd857600080fd5b81516001600160c01b03811681146200457a57600080fd5b600080604083850312156200a00457600080fd5b505080516020909101519092909150565b6000602082840312156200a02857600080fd5b8151600281106200457a57600080fd5b8051600381106200296a57600080fd5b6000602082840312156200a05b57600080fd5b6200457a826200a038565b6000604082840312156200a07957600080fd5b6200a083620098fb565b82518152602083015160208201528091505092915050565b6000602082840312156200a0ae57600080fd5b81516001600160601b03811681146200457a57600080fd5b600063ffffffff8083168185168083038211156200a0e8576200a0e862009703565b01949350505050565b60006001600160601b038381169083168181101562009e785762009e7862009703565b600061ffff808316818114156200a12f576200a12f62009703565b6001019392505050565b60408152602260408201527f5f6465616c52616e64546f6b656e733a206465616c696e672061737365747320606082015261746f60f01b608082015260a0602082015260006200457a60a083018462009304565b6000604082840312156200a1a057600080fd5b6200a1aa620098fb565b825181526200a1bc602084016200a038565b60208201529392505050565b60006001600160601b038083168185168083038211156200a0e8576200a0e862009703565b6000602082840312156200a20057600080fd5b815163ffffffff811681146200457a57600080fd5b600082601f8301126200a22757600080fd5b815160206001600160401b038211156200a245576200a2456200953c565b8160051b6200a25682820162009926565b92835284810182019282810190878511156200a27157600080fd5b83870192505b848310156200a292578251825291830191908301906200a277565b979650505050505050565b6000602082840312156200a2b057600080fd5b81516001600160401b038111156200a2c757600080fd5b62002bb0848285016200a215565b6001600160a01b039390931683526020830191909152604082015260600190565b6040815260006200a32160408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200a32160408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200a38560408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006200a38560408301600a8152690808080808149a59da1d60b21b602082015260400190565b825160009082906020808701845b838110156200a3f6578151855293820193908201906001016200a3d8565b5050948252509092019392505050565b60008160001904831182151516156200a423576200a42362009703565b500290565b6020808252606f908201527f73746453746f726167652066696e642853746453746f72616765293a2050616360408201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560608201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960808201526e39b713ba1039bab83837b93a32b21760891b60a082015260c00190565b600080604083850312156200a4d757600080fd5b82516001600160401b03808211156200a4ef57600080fd5b6200a4fd868387016200a215565b935060208501519150808211156200a51457600080fd5b506200a523858286016200a215565b9150509250929050565b6001600160a01b039490941684526001600160e01b0319929092166020840152604083015260608201526080019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c00336f70657261746f722073686f756c64206e6f206c6f6e6765722068617665207374616b6520696e20616e792071756f72756d736f70657261746f7220616c726561647920686173206269747320696e2071756f72756d206269746d617041304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5063757272656e74206f70657261746f72206269746d61702073686f756c64206e6f7420696e636c7564652071756f72756d736f70657261746f72206c6973742073686f756c642068617665206f6e6520666577657220656e7472795f636f6e66696752616e643a20696e76616c69642066696c6c54797065732c206e6f20666c616773207061737365646f70657261746f7220616c72656164792068617320612072656769737465726564207075626b65795f72616e6456616c75653a20747269656420746f2073656c6563742076616c75652066726f6d20656d707479206172726179746f74616c206f70657261746f7220636f756e742073686f756c64206861766520696e6372656173656420666f7220656163682071756f72756d5f636f6e66696752616e643a20696e76616c6964206d696e696d756d5374616b652c206e6f20666c616773207061737365645f73656c65637452616e643a20747269656420746f2073656c6563742066726f6d20656d7074792071756f72756d206c697374280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35836f70657261746f72496e666f2073686f756c642068617665206f70657261746f7249645f636f6e66696752616e643a20696e76616c6964206e756d537472617465676965732c206e6f20666c616773207061737365646f70657261746f72206c6973742073686f756c642068617665206f6e65206d6f726520656e7472796f70657261746f722073686f756c64206861766520656d70747920696420616e64204e455645525f52454749535445524544207374617475736661696c656420746f20616464206f70657261746f722077656967687420746f206f70657261746f7220616e6420746f74616c207374616b6520696e20656163682071756f72756d746f74616c206f70657261746f7220636f756e742073686f756c6420686176652064656372656173656420666f7220656163682071756f72756d5f636f6e66696752616e643a20696e76616c6964205f7573657254797065732c206e6f20666c616773207061737365646f70657261746f722073686f756c64207374696c6c206861766520612072656769737465726564207075626b65796f70657261746f72496e666f207374617475732073686f756c64206265204445524547495354455245446f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420746f20656163682071756f72756d2061706b6f70657261746f72207075626b65792073686f756c642068617665206265656e20737562747261637465642066726f6d20656163682071756f72756d2061706b6f70657261746f72496e666f2073686f756c64207374696c6c2068617665206f70657261746f724964885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f6e657752616e646f6d4f70657261746f723a206f70657261746f722073686f756c6420626520726567697374657265646f70657261746f722073686f756c64206861766520726567697374657265642061207075626b65795f636f6e66696752616e643a20696e76616c6964206e756d51756f72756d732c206e6f20666c616773207061737365646f70657261746f7220646964206e6f7420646572656769737465722066726f6d20616c6c2071756f72756d73b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a86661696c656420746f2072656d6f7665206f70657261746f72207765696768742066726f6d20746f74616c207374616b6520666f7220656163682071756f72756d6f70657261746f7220646964206e6f7420726567697374657220666f7220616c6c2071756f72756d736f70657261746f722073686f756c64206e6f74206861766520616e79206269747320696e206269746d617063757272656e74206f70657261746f72206269746d61702073686f756c6420696e636c7564652071756f72756d736f70657261746f722073686f756c642068617665206174206c6561737420746865206d696e696d756d207374616b6520696e20656163682071756f72756d6f70657261746f72496e666f207374617475732073686f756c6420626520524547495354455245446f70657261746f722073686f756c64206265207265676973746572656420746f204156536f70657261746f722073686f756c64206e6f74206265207265676973746572656420746f2074686520415653a26469706673582212202b5328a5946b3ef8f09a6169b96b86ab0656e5a15fca54352cae28e4bf5d213164736f6c634300080c00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@\x81\x90R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\0\x80Q` b\x03\xEF\xF0\x839\x81Q\x91R`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x81\x17\x90\x92U`2\x80T0\x90\x83\x16\x17\x90U`3\x80T\x90\x91\x16s\xBE\xB9\x86N=j\x1B\xA4N\x13\x1AF/c(\xF2\xD1\xD6\xD5M\x17\x90U\x7F\xA3\xE2\xA0\xC4\xCE k\x9Cfy\xACca\xC04\xF3\x1C\x88D\xAE1\x04\x10\x8FG\xED\x8CA:\xCF32`4\x81\x90U`\x01b^y\xB7`\xE0\x1B\x03\x19\x83R`\x84R\x90c\xFF\xA1\x86I\x90`\xA4\x90` \x90`$\x81\x86Z\xFA\x15\x80\x15b\0\0\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF3\x91\x90b\0\x0B\nV[`5\x80T`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90U`6\x80Tsi\x15\xA6xw\xA1x\xD5\x12\x9A(\xD2\xAF\x87\x1A\xC1\xFC\xEB?\xD3\x92\x16\x91\x90\x91\x17\x90U`\0`=\x81\x90U`CU4\x80\x15b\0\x01JW`\0\x80\xFD[P`\0[b\0\x01[`\x05\x80b\0\x0BRV[c\xFF\xFF\xFF\xFF\x16\x81\x10\x15b\0\x03XWb\0\x01sb\0\t\xFBV[`\0b\0\x01\x82\x83`\x01b\0\x0B}V[`@Q` \x01b\0\x01\x95\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1C\x90Pb\0\x01\xDE\x81b\0\x01\xCAb\0\x03_` \x1Bb\0)\xD1\x17` \x1CV[b\0\x03\x88` \x1Bb\0)\xFA\x17\x90\x91\x90` \x1CV[\x82` \x01\x81\x90RPb\0\x01\xFC\x81b\0\x04(` \x1Bb\0\x172\x17` \x1CV[`@\x83\x01\x90\x81R`>\x80T`\x01\x81\x81\x01\x90\x92U\x7F\x8D\x80\rf\x14\xD3^\xEDss>\xE4S\x16J;H\x07n\xB3\x13\x8FFj\xDE\xEB\x9D\xEC{\xB3\x1Fp\x01\x83\x90U`?\x80T\x91\x82\x01\x81U`\0R\x83Q\x80Q`\x08\x90\x92\x02\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFD\x81\x01\x92\x83U` \x91\x82\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFE\x82\x01U\x81\x86\x01Q\x80Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFF\x83\x01U\x90\x91\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\0\x82\x01U\x91Q\x80Q\x85\x93\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\x01\x01\x90b\0\x03#\x90\x82\x90`\x02b\0\nPV[P` \x82\x01Qb\0\x03;\x90`\x02\x80\x84\x01\x91\x90b\0\nPV[PPPPPPP\x80\x80b\0\x03O\x90b\0\x0B\x98V[\x91PPb\0\x01NV[Pb\0\r\xC3V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x03\xA6b\0\n\x93V[\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\x15b\0\x03\xDBWb\0\x03\xDDV[\xFE[P\x80b\0\x04 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[b\0\x042b\0\n\xB1V[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x04JW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x04\x93Wb\0\x04\x93b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x04\xD0Wb\0\x04\xD0b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7Ftest/ffi/go/g2mul.go\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81`\x02\x81Q\x81\x10b\0\x05'Wb\0\x05'b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RPb\0\x05H\x83b\0\x08\xDE` \x1Bb\0*\x9B\x17` \x1CV[\x81`\x03\x81Q\x81\x10b\0\x05^Wb\0\x05^b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x05\x99Wb\0\x05\x99b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90`\0\x80Q` b\x03\xEF\xF0\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x05\xDB\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x06%\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x06=\x91\x90b\0\rKV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x06zWb\0\x06zb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xEF\xF0\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x06\xB9\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x06\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\x03\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\x1B\x91\x90b\0\rKV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x07NWb\0\x07Nb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xEF\xF0\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x07\x8D\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\xD7\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\xEF\x91\x90b\0\rKV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x08/Wb\0\x08/b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x03\xEF\xF0\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x08n\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x08\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x08\xB8\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x08\xD0\x91\x90b\0\rKV[` \x84\x01QRP\x90\x92\x91PPV[``\x81b\0\t\x03WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0\t3W\x80b\0\t\x1A\x81b\0\x0B\x98V[\x91Pb\0\t+\x90P`\n\x83b\0\r{V[\x91Pb\0\t\x07V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\tPWb\0\tPb\0\x0B\xCCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\t{W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0\t\xF3Wb\0\t\x93`\x01\x83b\0\r\x92V[\x91Pb\0\t\xA2`\n\x86b\0\r\xACV[b\0\t\xAF\x90`0b\0\x0B}V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0\t\xC7Wb\0\t\xC7b\0\x0B\xB6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0\t\xEB`\n\x86b\0\r{V[\x94Pb\0\t\x7FV[\x94\x93PPPPV[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\n<`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\nKb\0\n\xB1V[\x90R\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\n\x81W\x91` \x02\x82\x01[\x82\x81\x11\x15b\0\n\x81W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\ndV[Pb\0\n\x8F\x92\x91Pb\0\n\xD5V[P\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80b\0\n\xC6b\0\n\xECV[\x81R` \x01b\0\nKb\0\n\xECV[[\x80\x82\x11\x15b\0\n\x8FW`\0\x81U`\x01\x01b\0\n\xD6V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0\x0B\x1DW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0B5W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15b\0\x0BtWb\0\x0Btb\0\x0B^<#\x14b\0\x02$W\x80c?r\x86\xF4\x14b\0\x02.W\x80cC\tc9\x14b\0\x028W\x80cf\xD9\xA9\xA0\x14b\0\x02OW`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01bW\x80c\n\x92T\xE4\x14b\0\x01\x93W\x80c\x13\x1E/\x18\x14b\0\x01\x9FW\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xC5W\x80c*\xDE8\x80\x14b\0\x01\xDEW[`\0\x80\xFD[`5Tb\0\x01v\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[b\0\x01\x9Db\0\x032V[\0[b\0\x01\xB6b\0\x01\xB06`\x04b\0\x92\nV[b\0\x172V[`@Qb\0\x01\x8A\x91\x90b\0\x92jV[b\0\x01\xCFb\0\x1B\xE8V[`@Qb\0\x01\x8A\x91\x90b\0\x92\xC0V[b\0\x01\xE8b\0\x1CLV[`@Qb\0\x01\x8A\x91\x90b\0\x932V[b\0\x02\x01`4T\x81V[`@Q\x90\x81R` \x01b\0\x01\x8AV[`.Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xCFb\0\x1D\x9AV[b\0\x01\xCFb\0\x1D\xFCV[b\0\x01\x9Db\0\x02I6`\x04b\0\x93\xF8V[b\0\x1E^V[b\0\x02Yb\0 \xE1V[`@Qb\0\x01\x8A\x91\x90b\0\x94\x1FV[`\x1ETb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\x9Ab\0!\xCBV[`@Qb\0\x01\x8A\x91\x90b\0\x94\xD6V[b\0\x02Yb\0\"\xA5V[b\0\x01\x9Db\0\x02\xC46`\x04b\0\x93\xF8V[b\0#\x8FV[b\0\x01\x9Db\0\x02\xDB6`\x04b\0\x93\xF8V[b\0%nV[`3Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\x9Ab\0'^V[b\0\x03\tb\0(8V[`@Q\x90\x15\x15\x81R` \x01b\0\x01\x8AV[b\0\x01\xCFb\0)oV[`\x07Tb\0\x03\t\x90`\xFF\x16\x81V[`@Qb\0\x03@\x90b\0\x8F&V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03]W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x03\xB9Wb\0\x03\xB9b\0\x95RV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x03\xEB\x90b\0\x8F4V[b\0\x03\xF8\x92\x91\x90b\0\x95hV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\x15W=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x04G\x90b\0\x8FBV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04dW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x04u\x90b\0\x8FOV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\x92W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x04\xC1\x90b\0\x8F]V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xDEW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\x13\x90b\0\x8FkV[b\0\x05 \x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05=W=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05r\x90b\0\x8FkV[b\0\x05\x7F\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\x9CW=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xD1\x90b\0\x8FkV[b\0\x05\xDE\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x060\x90b\0\x8FkV[b\0\x06=\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06ZW=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06\x8F\x90b\0\x8FkV[b\0\x06\x9C\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xB9W=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x06\xF7\x90b\0\x8FyV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07;W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07i\x90b\0\x8F\x87V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\x96W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x07\xDA\x90b\0\x8F\x95V[`\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\x08\x17W=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08I\x90b\0\x8F\xA3V[`\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\x08\x86W=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xB1\x90b\0\x8F\xB1V[b\0\x08\xBE\x92\x91\x90b\0\x95\xBDV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\xDBW=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\t\x1B\x90b\0\x8F\xBFV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tgW=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\t\x8B\x90b\0\x8F\xCDV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\xB8W=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\n\x1E\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0\x96\tV[`@\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\ng\x93\x92\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\x97W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B*\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0BEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0BZW=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\xE6\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\x01W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\x16W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0C\xAC\x93\x91\x16\x91\x8A\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\xC7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\xDCW=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\rh\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r\x98W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\r\xB9\x91Pb\0\x8F\xDBV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\xE6W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0E\xACW`\0b\0\x0E!\x82b\0*\x9BV[\x90P`\0\x81`@Q` \x01b\0\x0E8\x91\x90b\0\x96\x9FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E^\x91\x90b\0\x96\xD6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0E\x93\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0+\xB8V[PPP\x80\x80b\0\x0E\xA3\x90b\0\x97\x19V[\x91PPb\0\x0E\nV[P`@Qb\0\x0E\xBB\x90b\0\x8F\xE9V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0E\xD8W=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0F7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0FLW=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x0Fo\x90b\0\x8FkV[b\0\x0F|\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\x99W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0F\xCE\x90b\0\x8FkV[b\0\x0F\xDB\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\xF8W=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10-\x90b\0\x8FkV[b\0\x10:\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10WW=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\x8C\x90b\0\x8FkV[b\0\x10\x99\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\xB6W=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\xEB\x90b\0\x8FkV[b\0\x10\xF8\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\x15W=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x11qW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11\x86W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x11\xB0\x90b\0\x8F\xF7V[b\0\x11\xBD\x92\x91\x90b\0\x95\xBDV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xDAW=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xFE\x90b\0\x90\x05V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12+W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x12O\x90b\0\x90\x13V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12|W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x12\xAE\x90b\0\x90!V[`\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\x12\xEBW=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\x99\xA8\x8E\xC4\x92b\0\x13&\x92\x16\x90\x88\x90`\x04\x01b\0\x95\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13VW=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x13\x93\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\x95\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xC3W=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x14\0\x92\x90\x91\x16\x90\x86\x90`\x04\x01b\0\x95\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x140W=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x14m\x92\x90\x91\x16\x90\x85\x90`\x04\x01b\0\x95\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\x9DW=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15\0W=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x158\x90b\0\x90/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\x15}W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x16\x08V[`@\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\x15\xDAW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x16>V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16(W\x90P[P`@Q`$\x01b\0\x16X\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0\x98\x1AV[`@\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\x16\xA1\x93\x92\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16\xBCW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16\xD1W=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x16\xE3\x90b\0\x90=V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x17\0W=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x17\x83b\0*\x9BV[\x81`\x03\x81Q\x81\x10b\0\x18TWb\0\x18Tb\0\x95RV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x18\x8FWb\0\x18\x8Fb\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x18\xD6\x90\x85\x90`\x04\x01b\0\x94\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\xF6W=`\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\x99\xAFV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x198\x91\x90b\0\x99\xFCV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x19uWb\0\x19ub\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x19\xB9\x90\x85\x90`\x04\x01b\0\x94\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x03\x91\x90\x81\x01\x90b\0\x99\xAFV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\x1B\x91\x90b\0\x99\xFCV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x1ANWb\0\x1ANb\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1A\x92\x90\x85\x90`\x04\x01b\0\x94\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1A\xB2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\xDC\x91\x90\x81\x01\x90b\0\x99\xAFV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\xF4\x91\x90b\0\x99\xFCV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1B4Wb\0\x1B4b\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1Bx\x90\x85\x90`\x04\x01b\0\x94\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B\x98W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1B\xC2\x91\x90\x81\x01\x90b\0\x99\xAFV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\xDA\x91\x90b\0\x99\xFCV[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1DyW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1C\xE5\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1D\x13\x90b\0\x9A\x16V[\x80\x15b\0\x1DdW\x80`\x1F\x10b\0\x1D8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1DdV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1DFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\xC3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1CpV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R``\x81\x01\x82\x90Rb\0\x1E\x8E\x91\x83\x91b\0.\xE4V[`\0b\0\x1E\x9Ab\x007\x86V[\x90P`\0b\0\x1F;`B\x80Tb\0\x1E\xB1\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1E\xDF\x90b\0\x9A\x16V[\x80\x15b\0\x1F0W\x80`\x1F\x10b\0\x1F\x04Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1F0V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1F\x12W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\09?V[\x90Pb\0\x1FH\x82b\0;\x0FV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0\x1Fv\x90\x84\x90`\x04\x01b\0\x9AMV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1F\x96W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x1F\xBC\x91\x90b\0\x99\xFCV[Pb\0\x1F\xC9\x82\x82b\0;\xE0V[`\0b\0\x1F\xD6\x82b\09?V[`@Qc\xCAO-\x97`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xCAO-\x97\x90b\0 \x07\x90\x84\x90`\x04\x01b\0\x9AMV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0 \"W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0 7W=`\0\x80>=`\0\xFD[PPPPb\0 G\x83\x82b\0=\xB9V[`\0b\0 U\x83\x83b\0?FV[\x90P\x80Q`\0\x14b\0 \xCFW`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xCAO-\x97\x90b\0 \x8F\x90\x84\x90`\x04\x01b\0\x9AMV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0 \xAAW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0 \xBFW=`\0\x80>=`\0\xFD[PPPPb\0 \xCF\x84\x82b\0=\xB9V[b\0 \xDA\x84b\0?\x7FV[PPPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0!\xB2W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0!sW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0!\x05V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\"\x11\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\"?\x90b\0\x9A\x16V[\x80\x15b\0\"\x90W\x80`\x1F\x10b\0\"dWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\"\x90V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\"rW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0!\xEFV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0#vW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0#7W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\"\xC9V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R``\x81\x01\x82\x90Rb\0#\xBF\x91\x83\x91b\0.\xE4V[`\0b\0#\xCBb\x007\x86V[\x90P`\0`B\x80Tb\0#\xDE\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0$\x0C\x90b\0\x9A\x16V[\x80\x15b\0$]W\x80`\x1F\x10b\0$1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0$]V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0$?W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0$o\x82b\0;\x0FV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0$\x9D\x90\x84\x90`\x04\x01b\0\x9AMV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0$\xBDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0$\xE3\x91\x90b\0\x99\xFCV[Pb\0$\xF0\x82\x82b\0;\xE0V[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\xCAO-\x97\x90b\0%\x1E\x90\x84\x90`\x04\x01b\0\x9AMV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0%9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0%NW=`\0\x80>=`\0\xFD[PPPPb\0%^\x82\x82b\0=\xB9V[b\0%i\x82b\0?\x7FV[PPPV[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R``\x81\x01\x82\x90Rb\0%\x9E\x91\x83\x91b\0.\xE4V[`\0b\0%\xAAb\x007\x86V[\x90P`\0b\0%\xC1`B\x80Tb\0\x1E\xB1\x90b\0\x9A\x16V[\x90Pb\0%\xCE\x82b\0;\x0FV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0%\xFC\x90\x84\x90`\x04\x01b\0\x9AMV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0&\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0&B\x91\x90b\0\x99\xFCV[Pb\0&O\x82\x82b\0;\xE0V[`\0b\0&\\\x82b\09?V[`@Qc\xCAO-\x97`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xCAO-\x97\x90b\0&\x8D\x90\x84\x90`\x04\x01b\0\x9AMV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0&\xA8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0&\xBDW=`\0\x80>=`\0\xFD[PPPPb\0&\xCD\x83\x82b\0=\xB9V[`\0b\0&\xDA\x82b\09?V[`@Qc \x8CmS`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x821\xB5L\x90b\0'\x0B\x90\x84\x90`\x04\x01b\0\x9AMV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0'+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0'Q\x91\x90b\0\x99\xFCV[Pb\0 \xDA\x84\x82b\0;\xE0V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0'\xA4\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0'\xD2\x90b\0\x9A\x16V[\x80\x15b\0(#W\x80`\x1F\x10b\0'\xF7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0(#V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0(\x05W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0'\x82V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0([WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0)jW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0(\xEC\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0\x9AbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0)\x08\x91b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0)GW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0)LV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0)f\x91\x90b\0\x9A\xB3V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0*\x18b\0\x90tV[\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\x15b\0*MWb\0*OV[\xFE[P\x80b\0*\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\0*\xC0WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0*\xF0W\x80b\0*\xD7\x81b\0\x97\x19V[\x91Pb\0*\xE8\x90P`\n\x83b\0\x9A\xEDV[\x91Pb\0*\xC4V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0+\rWb\0+\rb\0\x95=`\0\xFD[P`'T`1T`!T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92cH\\\xC9U`\xE0\x1B\x92b\0,8\x92\x88\x92\x90\x91\x16\x90`$\x01b\0\x95\xBDV[`@\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\x90Qb\0,w\x90b\0\x8FkV[b\0,\x85\x93\x92\x91\x90b\0\x96hV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0,\xA2W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\0-\x03Wb\0-\x03b\0\x95RV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0-iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0-\x8F\x91\x90b\0\x9B\xB1V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0-\xD1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0-\xE6W=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\0.\x1E\x90\x85\x90\x85\x90`\x04\x01b\0\x9B\xD1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0.9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0.NW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[`@\x80Q\x81\x81R`\x1F\x81\x83\x01R\x7F_configRand: set random seed to\0``\x82\x01Rb\xFF\xFF\xFF\x85\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`@Q`\x01`\x01`\xE8\x1B\x03\x19`\xE8\x85\x90\x1B\x16` \x82\x01R`#\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0/}\x82b\0@/V[\x80Qb\0/\x93\x91`8\x91` \x90\x91\x01\x90b\0\x90\xA0V[P\x80Qb\0/\xA1\x90b\0@/V[\x80Qb\0/\xB7\x91`9\x91` \x90\x91\x01\x90b\0\x90\xA0V[Pb\0/\xC7\x81` \x01Qb\0@/V[\x80Qb\0/\xDD\x91`:\x91` \x90\x91\x01\x90b\0\x90\xA0V[Pb\0/\xED\x81`@\x01Qb\0@/V[\x80Qb\x000\x03\x91`;\x91` \x90\x91\x01\x90b\0\x90\xA0V[Pb\x000\x13\x81``\x01Qb\0@/V[\x80Qb\x000)\x91`<\x91` \x90\x91\x01\x90b\0\x90\xA0V[Pb\x000c`8\x80Tb\x000=\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xDEO`0\x919b\0@\x93V[b\x000\x9C`9\x80Tb\x000v\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xDF\xF2`0\x919b\0@\x93V[b\x000\xD5`:\x80Tb\x000\xAF\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xDD9`3\x919b\0@\x93V[b\x001\x0E`;\x80Tb\x000\xE8\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xDC\x91`2\x919b\0@\x93V[b\x001G`<\x80Tb\x001!\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xDB\xCE`/\x919b\0@\x93V[b\x001Qb\0@\xCCV[`@\x81\x90Ub\x001g\x90`\x01\x90\x81\x90\x1Bb\0\x9B\x04V[`A\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\x001\x91\x90b\0B\x0BV[\x80Qb\x001\xA7\x91`B\x91` \x90\x91\x01\x90b\0\x90\xA0V[P`@\x80T\x81Q\x82\x81R`0\x92\x81\x01\x92\x90\x92R\x7F_configRand: number of quorums b``\x83\x01Ro\x19Z[\x99\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`\x82\x1B`\x80\x83\x01R` \x82\x01R`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x90`\xA0\x01`@Q\x80\x91\x03\x90\xA1`@\x80Q``\x81\x01\x82R`\x05\x81Ra:\x98` \x82\x01R`\x96\x91\x81\x01\x91\x90\x91R`\0[`@T\x81\x10\x15b\x004\xB9W`\0b\x002Sb\0B\xE6V[\x90P`\0b\x002ab\0D\xE3V[\x90P`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x83`@Qb\x002\xBC\x91\x90`@\x80\x82R`\x1C\x90\x82\x01R\x7F_configRand: creating quorum\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x83Q`@Q`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x91b\x003\x1B\x91`@\x80\x82R`\x14\x90\x82\x01Rs\x0BH\x13X^\x08\x1B\xDC\x19\\\x98]\x1B\xDC\x88\x18\xDB\xDD[\x9D`b\x1B``\x82\x01Rc\xFF\xFF\xFF\xFF\x91\x90\x91\x16` \x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x82Q`@Qb\x003}\x91\x90`@\x80\x82R`\x1B\x90\x82\x01R\x7F- Num strategies considered\0\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\x0F\x81\x83\x01Rn- Minimum stake`\x88\x1B``\x82\x01R`\x01`\x01``\x1B\x03\x83\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`\x1CT`3T`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x004\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x0043W=`\0\x80>=`\0\xFD[PP`(T`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xD7[L\x88\x91Pb\x004m\x90\x87\x90\x85\x90\x87\x90`\x04\x01b\0\x9C.V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x004\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x004\x9DW=`\0\x80>=`\0\xFD[PPPPPP\x80\x80b\x004\xB0\x90b\0\x97\x19V[\x91PPb\x002=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\x005\xAA\x91\x90b\0\x99\xFCV[P`\0[`B\x80Tb\x005\xBD\x90b\0\x9A\x16V[\x90P\x81\x10\x15b\x006dW`\0`B\x82\x81Tb\x005\xD9\x90b\0\x9A\x16V[\x81\x10b\x005\xEAWb\x005\xEAb\0\x95RV[\x81T`\x01\x16\x15b\x006\nW\x90`\0R` `\0 \x90` \x91\x82\x82\x04\x01\x91\x90\x06[\x90T\x90\x1A`\x01`\xF8\x1B\x02`\xF8\x1C`\0\x90\x81R`D` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90UP\x80b\x006[\x81b\0\x97\x19V[\x91PPb\x005\xAEV[PP\x80\x80b\x006s\x90b\0\x97\x19V[\x91PPb\x005\x1DV[P`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\x006\xC4\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\x007(\x90` \x80\x82R`$\x90\x82\x01R\x7F_configRand complete; starting t`@\x82\x01Rcest!`\xE0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\x007w\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0\x80b\x007\x96`CTb\0*\x9BV[`@Q` \x01b\x007\xA8\x91\x90b\0\x9D\x9BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R`C\x80T\x91\x92P`\0b\x007\xCC\x83b\0\x97\x19V[\x91\x90PUP`\0\x80`\0b\x007\xE1\x84b\0E\xF3V[\x92P\x92P\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16c*4\xAD\xE8`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\08#W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\088W=`\0\x80>=`\0\xFD[PP`@Qc\r\xA6m\xEB`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x92Pcm3oX\x91Pb\08l\x90\x85\x90\x85\x90`\x04\x01b\0\x9D\xCDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\08\x87W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\08\x9CW=`\0\x80>=`\0\xFD[PP`\x1DT`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rb\096\x94P\x90\x91\x16\x91Pcmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\08\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\09\x16\x91\x90b\0\x9A\xB3V[`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xDF\x99`1\x919b\0@\x93V[P\x90\x93\x92PPPV[``b\09k\x82Q`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xDC\xC3`3\x919b\0@\x93V[`\0\x80[\x83Q\x81\x10\x15b\09\xD7Wb\09\x83b\0G\x8FV[\x15b\09\xC2Wb\09\xBF\x84\x82\x81Q\x81\x10b\09\xA2Wb\09\xA2b\0\x95RV[` \x91\x01\x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B`\x01`\x01`\xC0\x1B\x03\x84\x16\x17\x90V[\x91P[\x80b\09\xCE\x81b\0\x97\x19V[\x91PPb\09oV[P`\x01`\x01`\xC0\x1B\x03\x81\x16b\0:!Wb\0:\x1E\x83`\0\x81Q\x81\x10b\0:\x01Wb\0:\x01b\0\x95RV[` \x91\x01\x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B`\x01`\x01`\xC0\x1B\x03\x83\x16\x17\x90V[\x90P[`\0b\0:7\x82`\x01`\x01`\xC0\x1B\x03\x16b\0B\x0BV[\x90P`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x84Q`@Qb\0:\x93\x91\x90`@\x80\x82R`\x1F\x90\x82\x01R\x7F_selectRand: input quorum count\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x81Q`@Qb\0;\0\x91\x90`@\x80\x82R`\"\x90\x82\x01R\x7F_selectRand: selected quorum cou``\x82\x01Ra\x1B\x9D`\xF2\x1B`\x80\x82\x01R` \x81\x01\x91\x90\x91R`\xA0\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x93\x92PPPV[b\0;I`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01u\x18\xDA\x19X\xDA\xD7\xD3\x99]\x99\\\x97\xD4\x99Y\xDA\\\xDD\x19\\\x99Y`R\x1B\x81RP\x82b\0G\xA5V[b\0;n\x81`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x03\xDD\x94`9\x919b\0HZV[b\0;\x93\x81`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x03\xDB)`*\x919b\0H\xA1V[b\0;\xB8\x81`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xDB\xFD`(\x919b\0I\xA7V[b\0;\xDD\x81`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xE1\xBB`,\x919b\0J\xBDV[PV[b\0<\x18`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01scheck_Register_State``\x1B\x81RP\x83b\0G\xA5V[b\0<=\x82`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xDD\x16`#\x919b\0K[V[b\0\x81R` \x01b\x03\xE11`>\x919b\0R*V[b\0=E\x82\x82`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01b\x03\xDD\xCD`H\x919b\0S\xF2V[b\0=j\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xDCW`:\x919b\0T\x10V[b\0=\x90\x82\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xDDl`(\x919b\0T\xAFV[b\0=\xB5\x82`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x03\xE1\x97`$\x919b\0U\xA3V[PPV[b\0=\xF3`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01ucheck_Deregister_State`P\x1B\x81RP\x83b\0G\xA5V[b\0>\x18\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xDFP`)\x919b\0K[V[b\0>>\x82\x82`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xDBs`2\x919b\0V1V[b\0>d\x82\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xE0\"`,\x919b\0W\x81V[b\0>\x89\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x03\xDE\x7F`.\x919b\0N\xC1V[b\0>\xAF\x82\x82`@Q\x80``\x01`@R\x80`@\x81R` \x01b\x03\xDF\x10`@\x919b\0XHV[b\0>\xD5\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xDA\xF6`3\x919b\0YUV[b\0>\xFB\x82\x82`@Q\x80`\x80\x01`@R\x80`A\x81R` \x01b\x03\xE0n`A\x919b\0Z\x9AV[b\0? \x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xDE\x15`:\x919b\0[jV[b\0=\xB5\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xDB\xA5`)\x919b\0[\xFCV[```\0b\0?U\x84b\0\\\xC4V[\x90P`\0b\0?d\x84b\0\\\xC4V[\x90Pb\0?t\x81\x19\x83\x16b\0B\x0BV[\x92PPP[\x92\x91PPV[b\0?\xC0`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7Fcheck_CompleteDeregister_State\0\0\x81RP\x82b\0G\xA5V[b\0?\xE5\x81`@Q\x80``\x01`@R\x80`+\x81R` \x01b\x03\xE0\xD8`+\x919b\0H\xA1V[b\0@\n\x81`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xDFP`)\x919b\0K[V[b\0;\xB8\x81`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x03\xDE\xAD`*\x919b\0^WV[```\0[a\x01\0\x81\x10\x15b\0@\x8DW`\x01\x81\x1B\x83\x81\x16\x15b\0@yW`@Qb\0@g\x90\x84\x90`\x01\x85\x1B`\xF8\x1B\x90` \x01b\0\x9D\xF6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x92P[Pb\0@\x85\x81b\0\x97\x19V[\x90Pb\0@4V[P\x91\x90PV[\x81b\0=\xB5W`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x81`@Qb\0@\xB9\x91\x90b\0\x9E'V[`@Q\x80\x91\x03\x90\xA1b\0=\xB5\x82b\0^\xD7V[`\0\x80b\0Al`9\x80Tb\0@\xE2\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0A\x10\x90b\0\x9A\x16V[\x80\x15b\0AaW\x80`\x1F\x10b\0A5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0AaV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0ACW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\0_>V[\x90P`\x01\x81\x14\x15b\0A\x80W`\x01\x91PP\x90V[`\x02\x81\x14\x15b\0A\x92W`\x02\x91PP\x90V[`\x04\x81\x14\x15b\0A\xB0Wb\0A\xAA`\x03`\nb\0_\xA7V[\x91PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7F_randQuorumCount: flag not recog`D\x82\x01Rd\x1B\x9A^\x99Y`\xDA\x1B`d\x82\x01R`\x84\x01b\0*\x8AV[P\x90V[```\0\x80b\0B\x1B\x84b\0`iV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15b\0B9Wb\0B9b\0\x95=`\0\xFD[P\x91Pb\0F\xDEV[`\x02\x81\x14\x15b\0F\xDEW\x87`@Q` \x01b\0F\x8D\x91\x90b\0\x9E\xE0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x97P\x87\x84\x84`@Qb\0F\xAF\x90b\0\x919V[b\0F\xBD\x93\x92\x91\x90b\0\x9E\x80V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0F\xDAW=`\0\x80>=`\0\xFD[P\x91P[`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0G-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0GW\x91\x90\x81\x01\x90b\0\x99\xAFV[`@Qb\0Gf\x91\x90b\0\x9F\nV[`@Q\x80\x91\x03\x90\xA1`\0\x80b\0G|\x84b\0bkV[\x94\x9B\x90\x9AP\x93\x98P\x92\x96PPPPPPPV[`\0b\0G\x9F`\0`\x01b\0_\xA7V[\x15\x91\x90PV[`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R\x82\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0G\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0H\x1F\x91\x90\x81\x01\x90b\0\x99\xAFV[`@Q` \x01b\0H2\x92\x91\x90b\0\x9FSV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0HN\x91b\0\x9AMV[`@Q\x80\x91\x03\x90\xA1PPV[`\0b\0Hg\x83b\0d\xDBV[\x80Q\x90\x91Pb\0Hz\x90`\0\x84b\0e_V[b\0%i`\0\x82` \x01Q`\x02\x81\x11\x15b\0H\x99Wb\0H\x99b\0\x9F\xAFV[\x14\x83b\0@\x93V[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x84`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0I\x06W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0I,\x91\x90b\0\x99\xFCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0IK\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0IiW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0I\x8F\x91\x90b\0\x9F\xC5V[\x90Pb\0%i`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x83b\0@\x93V[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x83\x92\x91\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0I\xF3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0J\x19\x91\x90b\0\x9F\xF0V[`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x93\x95P\x91\x93P`\0\x92\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0JkW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0J\x91\x91\x90b\0\x99\xFCV[\x90Pb\0J\xA1\x83`\0\x86b\0e\x9BV[b\0J\xAF\x82`\0\x86b\0e\x9BV[b\0 \xDA\x81`\0\x86b\0e_V[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0J\xF9\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\x95\xBDV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0K\x17W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0K=\x91\x90b\0\xA0\x15V[\x90Pb\0%i`\0[\x82`\x01\x81\x11\x15b\0H\x99Wb\0H\x99b\0\x9F\xAFV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0K\x9CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0K\xC2\x91\x90b\0\x99\xFCV[`(T`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0L\x13W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0L9\x91\x90b\0\x99\xFCV[\x90Pb\0LH\x82\x82\x85b\0e_V[PPPPV[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0L\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0L\xC0\x91\x90b\0\xA0HV[\x90Pb\0%i`\x01[\x82`\x02\x81\x11\x15b\0H\x99Wb\0H\x99b\0\x9F\xAFV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0MCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Mi\x91\x90b\0\x99\xFCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0M\x88\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0M\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0M\xCC\x91\x90b\0\x9F\xC5V[\x90P`\0b\0M\xDB\x84b\0\\\xC4V[\x90Pb\0 \xDAb\0M\xF9`\x01`\x01`\xC0\x1B\x03\x80\x84\x16\x90\x85\x16\x81\x16\x14\x90V[\x84b\0@\x93V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0NAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Ng\x91\x90b\0\x99\xFCV[\x90P`\0b\0Nv\x84b\0\\\xC4V[\x90P`\0b\0N\x85\x83b\0e\xD7V[\x90P`\0b\0N\x94\x84b\0fHV[\x90Pb\0N\xB8`\x01`\x01`\xC0\x1B\x03\x82\x16\x84\x17\x83`\x01`\x01`\xC0\x1B\x03\x16\x14\x86b\0@\x93V[PPPPPPPV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0O\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0O'\x91\x90b\0\xA0fV[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x83\x92\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0OuW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0O\x9B\x91\x90b\0\x9F\xF0V[\x84Q`\0\x90\x81R` \x80\x87\x01Q\x90R`@\x81 \x92\x94P\x90\x92P\x90`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0P\x06W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0P,\x91\x90b\0\x99\xFCV[`*T`@Qct]\xCDs`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE8\xBB\x9A\xE6\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0P|W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0P\xA2\x91\x90b\0\x9B\xB1V[\x90Pb\0P\xB5\x86`\0\x01Q\x86\x89b\0e\x9BV[b\0P\xC6\x86` \x01Q\x85\x89b\0e\x9BV[b\0P\xD3\x83\x83\x89b\0e_V[b\0P\xE0\x88\x82\x89b\0g;V[PPPPPPPPV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Q*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0QP\x91\x90b\0\xA0fV[\x90P`\0b\0Q_\x84b\0g\x89V[\x90P`\0b\0Qn\x85b\0h\xD3V[\x90P`\0[\x85Q\x81\x10\x15b\0N\xB8W`\0b\0Q\xB0\x85\x84\x84\x81Q\x81\x10b\0Q\x99Wb\0Q\x99b\0\x95RV[` \x02` \x01\x01Qb\0i`\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90Pb\0Q\xE3\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0Q\xD0Wb\0Q\xD0b\0\x95RV[` \x02` \x01\x01Q`\0\x01Q\x88b\0e\x9BV[b\0R\x14\x81` \x01Q\x85\x84\x81Q\x81\x10b\0R\x01Wb\0R\x01b\0\x95RV[` \x02` \x01\x01Q` \x01Q\x88b\0e\x9BV[P\x80b\0R!\x81b\0\x97\x19V[\x91PPb\0QsV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0RkW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0R\x91\x91\x90b\0\x99\xFCV[\x90P`\0[\x83Q\x81\x10\x15b\0 \xDAW`\0\x84\x82\x81Q\x81\x10b\0R\xB7Wb\0R\xB7b\0\x95RV[\x01` \x01Q`+T`@Qc\xC4gx\xA5`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xC4gx\xA5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0S\x11W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0S7\x91\x90b\0\xA0\x9BV[`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x87\x90R`\xFF\x85\x16`$\x82\x01R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0S\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0S\xB6\x91\x90b\0\xA0\x9BV[\x90Pb\0S\xD9\x82`\x01`\x01``\x1B\x03\x16\x82`\x01`\x01``\x1B\x03\x16\x10\x15\x87b\0@\x93V[PPP\x80\x80b\0S\xE9\x90b\0\x97\x19V[\x91PPb\0R\x96V[`\0b\0T\0\x84\x84b\0i\xF9V[\x90Pb\0LH\x84\x84\x83\x85b\0k;V[`\0b\0T\x1D\x83b\0l\x82V[\x90P`\0b\0T,\x84b\0m\xB2V[\x90P`\0[\x84Q\x81\x10\x15b\0 \xDAWb\0T\x9A\x83\x82\x81Q\x81\x10b\0TTWb\0TTb\0\x95RV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0TwWb\0Twb\0\x95RV[` \x02` \x01\x01Q`\x01b\0T\x8D\x91\x90b\0\xA0\xC6V[c\xFF\xFF\xFF\xFF\x16\x86b\0e\x9BV[\x80b\0T\xA6\x81b\0\x97\x19V[\x91PPb\0T1V[`\0b\0T\xBC\x83b\0n?V[\x90P`\0b\0T\xCB\x84b\0o\x81V[\x90P`\0[\x84Q\x81\x10\x15b\0U\x9BWb\0U/\x83\x82\x81Q\x81\x10b\0T\xF3Wb\0T\xF3b\0\x95RV[` \x02` \x01\x01QQ\x83\x83\x81Q\x81\x10b\0U\x11Wb\0U\x11b\0\x95RV[` \x02` \x01\x01QQ`\x01b\0U(\x91\x90b\0\x9B5V[\x86b\0e\x9BV[b\0Ubb\0U[\x84\x83\x81Q\x81\x10b\0ULWb\0ULb\0\x95RV[` \x02` \x01\x01Q\x88b\0p\x0EV[\x85b\0@\x93V[b\0U\x86b\0U\x7F\x83\x83\x81Q\x81\x10b\0ULWb\0ULb\0\x95RV[\x85b\0p\xD6V[\x80b\0U\x92\x81b\0\x97\x19V[\x91PPb\0T\xD0V[PPPPPPV[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0U\xDF\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\x95\xBDV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0U\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0V#\x91\x90b\0\xA0\x15V[\x90Pb\0%i`\x01b\0KFV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0V\x96W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0V\xBC\x91\x90b\0\x99\xFCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0V\xDB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0V\xF9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0W\x1F\x91\x90b\0\x9F\xC5V[\x90P`\0[\x83Q\x81\x10\x15b\0 \xDAW`\0\x84\x82\x81Q\x81\x10b\0WEWb\0WEb\0\x95RV[` \x91\x01\x01Q`\xF8\x1C\x90Pb\0Wk`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x83\x1C\x81\x16\x14b\0U\x7FV[P\x80b\0Wx\x81b\0\x97\x19V[\x91PPb\0W$V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0W\xC2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0W\xE8\x91\x90b\0\x99\xFCV[\x90P`\0b\0W\xF7\x84b\0\\\xC4V[\x90P`\0b\0X\x06\x83b\0e\xD7V[\x90P`\0b\0X\x15\x84b\0fHV[\x90Pb\0X1\x83\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x84\x14[\x86b\0@\x93V[b\0N\xB8\x82\x84\x16`\x01`\x01`\xC0\x1B\x03\x16\x15b\0X*V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0X\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0X\xAE\x91\x90b\0\xA0fV[\x90P`\0b\0X\xBD\x84b\0g\x89V[\x90P`\0b\0X\xCC\x85b\0h\xD3V[\x90P`\0[\x85Q\x81\x10\x15b\0N\xB8W`\0b\0Y\x01b\0X\xEC\x86b\0p\xE3V[\x84\x84\x81Q\x81\x10b\0Q\x99Wb\0Q\x99b\0\x95RV[\x90Pb\0Y!\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0Q\xD0Wb\0Q\xD0b\0\x95RV[b\0Y?\x81` \x01Q\x85\x84\x81Q\x81\x10b\0R\x01Wb\0R\x01b\0\x95RV[P\x80b\0YL\x81b\0\x97\x19V[\x91PPb\0X\xD1V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Y\x96W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Y\xBC\x91\x90b\0\x99\xFCV[\x90P`\0[\x83Q\x81\x10\x15b\0 \xDAW`\0\x84\x82\x81Q\x81\x10b\0Y\xE2Wb\0Y\xE2b\0\x95RV[\x01` \x01Q`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x86\x90R`\xF8\x92\x90\x92\x1C`$\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0ZCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Zi\x91\x90b\0\xA0\x9BV[\x90Pb\0Z\x82\x81`\x01`\x01``\x1B\x03\x16`\0\x87b\0e\x9BV[PP\x80\x80b\0Z\x91\x90b\0\x97\x19V[\x91PPb\0Y\xC1V[`\0b\0Z\xA8\x84\x84b\0q\xA3V[\x90P`\0b\0Z\xB7\x84b\0r\x99V[\x90P`\0b\0Z\xC6\x85b\0s\xCCV[\x90P`\0[\x85Q\x81\x10\x15b\0N\xB8Wb\0[U\x83\x82\x81Q\x81\x10b\0Z\xEEWb\0Z\xEEb\0\x95RV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x85\x83\x81Q\x81\x10b\0[\x14Wb\0[\x14b\0\x95RV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0[1Wb\0[1b\0\x95RV[` \x02` \x01\x01Qb\0[E\x91\x90b\0\xA0\xF1V[`\x01`\x01``\x1B\x03\x16\x87b\0e\x9BV[\x80b\0[a\x81b\0\x97\x19V[\x91PPb\0Z\xCBV[`\0b\0[w\x83b\0l\x82V[\x90P`\0b\0[\x86\x84b\0m\xB2V[\x90P`\0[\x84Q\x81\x10\x15b\0 \xDAWb\0[\xE7\x83\x82\x81Q\x81\x10b\0[\xAEWb\0[\xAEb\0\x95RV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16`\x01\x84\x84\x81Q\x81\x10b\0[\xD3Wb\0[\xD3b\0\x95RV[` \x02` \x01\x01Qb\0T\x8D\x91\x90b\0\x9EXV[\x80b\0[\xF3\x81b\0\x97\x19V[\x91PPb\0[\x8BV[`\0b\0\\\t\x83b\0n?V[\x90P`\0b\0\\\x18\x84b\0o\x81V[\x90P`\0[\x84Q\x81\x10\x15b\0U\x9BWb\0\\u\x83\x82\x81Q\x81\x10b\0\\@Wb\0\\@b\0\x95RV[` \x02` \x01\x01QQ`\x01\x84\x84\x81Q\x81\x10b\0\\`Wb\0\\`b\0\x95RV[` \x02` \x01\x01QQb\0U(\x91\x90b\0\x9B\x04V[b\0\\\x92b\0U\x7F\x84\x83\x81Q\x81\x10b\0ULWb\0ULb\0\x95RV[b\0\\\xAFb\0U[\x83\x83\x81Q\x81\x10b\0ULWb\0ULb\0\x95RV[\x80b\0\\\xBB\x81b\0\x97\x19V[\x91PPb\0\\\x1DV[`\0a\x01\0\x82Q\x11\x15b\0]OW`@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\x01b\0*\x8AV[\x81Qb\0]^WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10b\0]wWb\0]wb\0\x95RV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15b\096W\x84\x81\x81Q\x81\x10b\0]\xA9Wb\0]\xA9b\0\x95RV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11b\0^@W`@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\x01b\0*\x8AV[\x91\x81\x17\x91b\0^O\x81b\0\x97\x19V[\x90Pb\0]\x8AV[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0^\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0^\xC9\x91\x90b\0\xA0HV[\x90Pb\0%i`\x02b\0L\xC9V[\x80b\0;\xDDW`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\0_,\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1b\0;\xDDb\0tYV[`\0b\0_i`\0\x83Q\x11`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xDC%`2\x919b\0@\x93V[`\0b\0_\x81`\0`\x01\x85Qb\0CJ\x91\x90b\0\x9B\x04V[\x90P\x82\x81\x81Q\x81\x10b\0_\x98Wb\0_\x98b\0\x95RV[\x01` \x01Q`\xF8\x1C\x93\x92PPPV[`\0\x80b\0_\xB6\x84\x84b\0\x9B\x04V[b\0_\xC3\x90`\x01b\0\x9B5V[\x90P`\0\x81[\x80\x15b\0_\xE8W\x81b\0_\xDC\x81b\0\x97\x19V[\x92PP`\x01\x1Cb\0_\xC9V[`\0b\0_\xF9`\x01\x80\x85\x1Bb\0\x9B\x04V[`7T\x90\x91P\x81\x16[\x84\x81\x10b\0` W\x81b\0`\x17\x86\x83b\0\x9B\x04V[\x16\x90Pb\0`\x02V[`7T`@Q` \x01b\0`6\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0`]\x81\x89b\0\x9B5V[\x98\x97PPPPPPPPV[`\0\x80[\x82\x15b\0?yWb\0`\x81`\x01\x84b\0\x9B\x04V[\x90\x92\x16\x91\x80b\0`\x91\x81b\0\xA1\x14V[\x91PPb\0`mV[`\0b\0`\xA6b\0\x91GV[`>T`=T\x14\x15b\0a:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7F_fetchKeypair: not enough genera`D\x82\x01R\x7Fted keys. Check IntegrationDeplo`d\x82\x01Rn<\xB2\xB9\x171\xB7\xB79\xBA9:\xB1\xBA7\xB9`\x89\x1B`\x84\x82\x01R`\xA4\x01b\0*\x8AV[`\0`>`=T\x81T\x81\x10b\0aTWb\0aTb\0\x95RV[\x90`\0R` `\0 \x01T\x90P`\0`?`=T\x81T\x81\x10b\0a{Wb\0a{b\0\x95RV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q`\xA0\x81\x01\x82R`\x08\x93\x90\x93\x02\x90\x91\x01\x80T``\x84\x01\x90\x81R`\x01\x82\x01T`\x80\x80\x86\x01\x91\x90\x91R\x90\x84R\x82Q\x80\x84\x01\x84R`\x02\x80\x84\x01T\x82R`\x03\x84\x01T\x82\x88\x01R\x95\x85\x01R\x82Q\x90\x81\x01\x80\x84R\x93\x94\x91\x93\x85\x84\x01\x93\x91\x92`\x04\x86\x01\x92\x84\x92\x90\x83\x01\x91\x84\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0a\xF1WPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0b(WPPP\x91\x90\x92RPPP\x90RP`=\x80T\x91\x92P`\0b\0b]\x83b\0\x97\x19V[\x90\x91UP\x91\x94\x90\x93P\x91PPV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0b\x90Wb\0b\x90b\0\x95=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0c\x84\x91\x90\x81\x01\x90b\0\x99\xAFV[`@Qb\0c\x93\x91\x90b\0\xA19V[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0d\xD0W`\0`/\x82\x81T\x81\x10b\0c\xC1Wb\0c\xC1b\0\x95RV[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0d\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0d:\x91\x90b\0\x9B\xB1V[\x90P`\0b\0dPb\x0FB@bLK@b\0_\xA7V[\x90Pb\0d_\x82\x8A\x83b\0ugV[\x82\x86\x85\x81Q\x81\x10b\0duWb\0dub\0\x95RV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85\x85\x81Q\x81\x10b\0d\xABWb\0d\xABb\0\x95RV[` \x02` \x01\x01\x81\x81RPPPPP\x80\x80b\0d\xC7\x90b\0\x97\x19V[\x91PPb\0c\x9EV[P\x90\x94\x90\x93P\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`(T`@Qc\x16\x19q\x83`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90cXe\xC6\x0C\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0e9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0?y\x91\x90b\0\xA1\x8DV[\x81\x83\x14b\0%iW`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x81`@Qb\0e\x87\x91\x90b\0\x9E'V[`@Q\x80\x91\x03\x90\xA1b\0%i\x83\x83b\0uvV[\x81\x83\x14b\0%iW`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x81`@Qb\0e\xC3\x91\x90b\0\x9E'V[`@Q\x80\x91\x03\x90\xA1b\0%i\x83\x83b\0v_V[`(T`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0f\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0?y\x91\x90b\0\x9F\xC5V[`\0\x80`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0f\xA1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0f\xC7\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0e\xD7V[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0g\x1CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0g1W=`\0\x80>=`\0\xFD[PPPPP\x91\x90PV[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x14b\0%iW`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x81`@Qb\0gu\x91\x90b\0\x9E'V[`@Q\x80\x91\x03\x90\xA1b\0%i\x83\x83b\0w\x11V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0g\xA9Wb\0g\xA9b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0h\x96\x91\x90b\0\xA0fV[\x82\x82\x81Q\x81\x10b\0h\xABWb\0h\xABb\0\x95RV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0h\xC3\x90b\0\x97\x19V[\x91PPb\0g\xF6V[P\x92\x91PPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0i-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0iS\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0g\x89V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0i~b\0\x91\x97V[\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\x15b\0*MWP\x80b\0*\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01b\0*\x8AV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0j\x19Wb\0j\x19b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0j\xF9\x91\x90b\0\xA0\x9BV[\x82\x82\x81Q\x81\x10b\0k\x0EWb\0k\x0Eb\0\x95RV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0k2\x81b\0\x97\x19V[\x91PPb\0jIV[`\0b\0kI\x85\x85b\0w\xFAV[\x90P`\0b\0kY\x86\x86b\0q\xA3V[\x90P`\0b\0kh\x86b\0r\x99V[\x90P`\0b\0kw\x87b\0s\xCCV[\x90P`\0[\x87Q\x81\x10\x15b\0lwWb\0l\x06\x85\x82\x81Q\x81\x10b\0k\x9FWb\0k\x9Fb\0\x95RV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0k\xC5Wb\0k\xC5b\0\x95RV[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0k\xE2Wb\0k\xE2b\0\x95RV[` \x02` \x01\x01Qb\0k\xF6\x91\x90b\0\xA1\xC8V[`\x01`\x01``\x1B\x03\x16\x88b\0e\x9BV[b\0lb\x83\x82\x81Q\x81\x10b\0l\x1FWb\0l\x1Fb\0\x95RV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0lEWb\0lEb\0\x95RV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0k\xE2Wb\0k\xE2b\0\x95RV[\x80b\0ln\x81b\0\x97\x19V[\x91PPb\0k|V[PPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0l\xA2Wb\0l\xA2b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0ms\x91\x90b\0\xA1\xEDV[\x82\x82\x81Q\x81\x10b\0m\x88Wb\0m\x88b\0\x95RV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0m\xA9\x81b\0\x97\x19V[\x91PPb\0l\xD2V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0n\x0CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0n2\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0l\x82V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0n_Wb\0n_b\0\x95=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0oK\x91\x90\x81\x01\x90b\0\xA2\x9DV[\x82\x82\x81Q\x81\x10b\0o`Wb\0o`b\0\x95RV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0ox\x90b\0\x97\x19V[\x91PPb\0n\x9AV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0o\xDBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0p\x01\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0n?V[`\0\x80\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0pPW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0pv\x91\x90b\0\x99\xFCV[\x90P`\0[\x84Q\x81\x10\x15b\0p\xCBW\x81\x85\x82\x81Q\x81\x10b\0p\x9BWb\0p\x9Bb\0\x95RV[` \x02` \x01\x01Q\x14\x15b\0p\xB6W`\x01\x92PPPb\0?yV[\x80b\0p\xC2\x81b\0\x97\x19V[\x91PPb\0p{V[P`\0\x94\x93PPPPV[b\0=\xB5\x82\x15\x82b\0@\x93V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15b\0q\tWP` \x82\x01Q\x15[\x15b\0q(WPP`@\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` \x01Qb\0qo\x91\x90b\0\x9B\x1EV[b\0q\x9B\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGb\0\x9B\x04V[\x90R\x92\x91PPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0q\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0r#\x91\x90b\0\x99\xFCV[\x90Pb\0r1\x84\x84b\0w\xFAV[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0ryW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0r\x8EW=`\0\x80>=`\0\xFD[PPPPP\x92\x91PPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0r\xB9Wb\0r\xB9b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0s\x8A\x91\x90b\0\xA0\x9BV[\x82\x82\x81Q\x81\x10b\0s\x9FWb\0s\x9Fb\0\x95RV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0s\xC3\x81b\0\x97\x19V[\x91PPb\0r\xE9V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0t&W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0tL\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0r\x99V[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0uVW`@Q`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90b\0t\xD1\x90\x83\x90e\x19\x98Z[\x19Y`\xD2\x1B\x90`\x01\x90` \x01b\0\xA2\xD5V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0t\xF1\x92\x91` \x01b\0\x9AbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0u\r\x91b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0uLW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0uQV[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[b\0%i\x83\x83\x83`\0b\0y\xA6V[\x80\x82\x14b\0=\xB5W`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\0u\xDB\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [byt`@\x82\x01Rdes32]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x82`@Qb\0v\x14\x91\x90b\0\xA2\xF6V[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x81`@Qb\0vM\x91\x90b\0\xA3/V[`@Q\x80\x91\x03\x90\xA1b\0=\xB5b\0tYV[\x80\x82\x14b\0=\xB5W`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\0v\xC1\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x82`@Qb\0v\xE9\x91\x90b\0\xA2\xF6V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x81`@Qb\0vM\x91\x90b\0\xA3/V[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14b\0=\xB5W`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\0w\x88\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [add`@\x82\x01Rdress]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x82`@Qb\0w\xC1\x91\x90b\0\xA3ZV[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x81`@Qb\0vM\x91\x90b\0\xA3\x9FV[```\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0x=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0xc\x91\x90b\0\x99\xFCV[\x90P`\0\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0x\x83Wb\0x\x83b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0y[\x91\x90b\0\xA0\x9BV[\x82\x82\x81Q\x81\x10b\0ypWb\0ypb\0\x95RV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0y\x94\x81b\0\x97\x19V[\x91PPb\0x\xB3V[P\x94\x93PPPPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cp\xA0\x821`\xE0\x1B\x17\x90R\x91Q`\0\x92\x87\x16\x91b\0y\xFC\x91b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0z9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0z>V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0zZ\x91\x90b\0\x99\xFCV[\x90Pb\0z\x94\x84b\0z\x8D\x87b\0z\x86cp\xA0\x821`\xE0\x1Bb\0z\x7F`\x0C\x8Db\0{\x9CV[\x90b\0{\xC2V[\x90b\0{\xE0V[\x90b\0|\tV[\x82\x15b\0U\x9BW`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x16\r\xDD`\xE0\x1B\x17\x90R\x90Q`\0\x91`\x01`\x01`\xA0\x1B\x03\x89\x16\x91b\0z\xDF\x91\x90b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0{\x1CW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0{!V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0{=\x91\x90b\0\x99\xFCV[\x90P\x82\x86\x10\x15b\0{hWb\0{T\x86\x84b\0\x9B\x04V[b\0{`\x90\x82b\0\x9B\x04V[\x90Pb\0{\x83V[b\0{t\x83\x87b\0\x9B\x04V[b\0{\x80\x90\x82b\0\x9B5V[\x90P[b\0P\xE0\x81b\0z\x8Dc\x18\x16\r\xDD`\xE0\x1Bb\0z\x7F`\x0C\x8D[`\x05\x82\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`\0\x82b\0EzV[`\x03\x82\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16`\xE0\x83\x90\x1C\x17\x90U`\0\x82b\0EzV[`\x02\x82\x01\x80T`\x01\x81\x01\x82U`\0\x91\x82R` \x82 `\x01`\x01`\xA0\x1B\x03\x84\x16\x91\x01U\x82b\0EzV[b\0=\xB5\x82\x82`\x05\x82\x01T`\x03\x83\x01T`\x04\x84\x01T`\x02\x85\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\x01`\x01`\xA0\x1B\x03\x90\x96\x16\x95`\xE0\x95\x90\x95\x1B\x94`\0\x93\x90\x92\x90\x91\x83\x01\x82\x82\x80\x15b\0|\x82W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0|mW[PPPPP\x90P`\0\x83b\0|\x97\x83b\0\x7F\x87V[`@Q` \x01b\0|\xAA\x92\x91\x90b\0\x9AbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x01\x8B\x01` \x90\x81R\x83\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x83R\x81R\x92\x81 \x91\x94P\x90\x92\x90\x91b\0|\xFE\x91\x86\x91\x88\x91\x01b\0\xA3\xCAV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0}9Wb\0}7\x87b\0\x803V[P[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R` \x88\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x88\x16\x84R\x82R\x80\x83 \x90Q\x90\x91\x83\x91b\0}z\x91\x87\x91\x89\x91\x01b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T`\0\x1B\x90P`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qb\0}\xC1\x91\x90b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0}\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0~\x03V[``\x91P[P\x91Pb\0~ \x90P\x81b\0~\x1A\x88` b\0\xA4\x06V[b\0\x80@V[`@Qc\x06g\xF9\xD7`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0~\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0~\xAD\x91\x90b\0\x99\xFCV[\x90P\x80\x82\x14b\0~\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0*\x8A\x90b\0\xA4(V[`@Qcp\xCA\x10\xBB`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cp\xCA\x10\xBB\x90b\0\x7F\x0E\x90\x8B\x90\x87\x90\x8E\x90`\x04\x01b\0\xA2\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x7F)W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x7F>W=`\0\x80>=`\0\xFD[PPP`\x05\x8B\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UP`\x03\x8A\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\x7Fs`\x02\x8B\x01`\0b\0\x91\xB5V[\x89`\x04\x01`\0\x90UPPPPPPPPPPV[```\0\x82Q` b\0\x7F\x9B\x91\x90b\0\xA4\x06V[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x7F\xB5Wb\0\x7F\xB5b\0\x95\x92\x91\x90b\0\x9AbV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` b\x03\xDFy\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c&l\xF1\t`@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\x82\x9DW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x82\xB2W=`\0\x80>=`\0\xFD[PPPP`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qb\0\x82\xD3\x91\x90b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x83\x10W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x83\x15V[``\x91P[P\x91Pb\0\x832\x90P\x81b\0\x83,\x87` b\0\xA4\x06V[b\0\x8E\xA6V[`@Qce\xBC\x94\x81`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16`\x04\x82\x01R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ce\xBC\x94\x81\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x83\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x83\xBE\x91\x90\x81\x01\x90b\0\xA4\xC3V[P\x90P\x80Q`\x01\x14\x15b\0\x86\xA0W`\0`\0\x80Q` b\x03\xDFy\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cf\x7F\x9Dp\x89\x84`\0\x81Q\x81\x10b\0\x84\x06Wb\0\x84\x06b\0\x95RV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x84@\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x84^W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x84\x84\x91\x90b\0\x99\xFCV[\x90P\x80b\0\x84\xEFW\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x87o\x91\x90b\0\x99\xFCV[\x90P\x80b\0\x87\xD9W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`\0``\x8B`\x01`\x01`\xA0\x1B\x03\x16\x88`@Qb\0\x88\x9B\x91\x90b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x88\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x88\xDDV[``\x91P[P\x90\x92P\x90Pb\0\x88\xF5\x81b\0\x83,\x8C` b\0\xA4\x06V[\x96PP\x80\x80\x15b\0\x89\x05WP\x81\x86\x14[\x15b\0\x8BXW\x7F\x9C\x95U\xB1\xE3\x10.<\xF4\x8FB}y\xCBg\x8F]\x9B\xD1\xED\n\xD5t8\x94a\xE2U\xF9Qp\xED\x8B\x8B\x8A\x8C`@Q` \x01b\0\x89C\x92\x91\x90b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x88\x88\x81Q\x81\x10b\0\x89nWb\0\x89nb\0\x95RV[` \x02` \x01\x01Q`\0\x1C`@Qb\0\x89\x8B\x94\x93\x92\x91\x90b\0\xA5-V[`@Q\x80\x91\x03\x90\xA1\x84\x84\x81Q\x81\x10b\0\x89\xA8Wb\0\x89\xA8b\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x8D\x16`\0\x90\x81R\x8F\x83R`@\x80\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8F\x16\x83R\x84R\x80\x82 \x90Q\x92\x93\x90\x92b\0\x89\xF3\x91\x8D\x91\x8F\x91\x01b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 \x81\x90UP`\x01\x8D`\x01\x01`\0\x8D`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8C`\x01`\x01`\xE0\x1B\x03\x19\x16`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8A\x8C`@Q` \x01b\0\x8A\x80\x92\x91\x90b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\0\x80Q` b\x03\xDFy\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\x8A\xF2Wb\0\x8A\xF2b\0\x95RV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x8B\x1B\x93\x92\x91\x90b\0\xA2\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x8B6W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x8BKW=`\0\x80>=`\0\xFD[PPPPPPPb\0\x8C\x05V[`\0\x80Q` b\x03\xDFy\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\x8B\x8FWb\0\x8B\x8Fb\0\x95RV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x8B\xB8\x93\x92\x91\x90b\0\xA2\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x8B\xD3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x8B\xE8W=`\0\x80>=`\0\xFD[PPPPPPP[\x80b\0\x8B\xFC\x81b\0\x97\x19V[\x91PPb\0\x86\xAEV[Pb\0\x8C}V[`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FstdStorage find(StdStorage): No `D\x82\x01R\x7Fstorage use detected for target.`d\x82\x01R`\x84\x01b\0*\x8AV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\x8C\xC1\x91\x88\x91\x8A\x91\x01b\0\xA3\xCAV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\x8DPW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FstdStorage find(StdStorage): Slo`D\x82\x01Rn:\x149\x94\x9077\xBA\x1037\xBA\xB72\x17`\x89\x1B`d\x82\x01R`\x84\x01b\0*\x8AV[`\x05\x89\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`\x03\x89\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\x8D\x81`\x02\x8A\x01`\0b\0\x91\xB5V[`\0`\x04\x8A\x01\x81\x90U`\x01`\x01`\xA0\x1B\x03\x88\x16\x81R` \x8A\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\x8D\xC7\x91\x88\x91\x8A\x91\x01b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x97PPPPPPPP\x91\x90PV[```\0\x82Q` b\0\x8E\x0E\x91\x90b\0\xA4\x06V[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8E(Wb\0\x8E(b\0\x95a\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003operator should no longer have stake in any quorumsoperator already has bits in quorum bitmapA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPcurrent operator bitmap should not include quorumsoperator list should have one fewer entry_configRand: invalid fillTypes, no flags passedoperator already has a registered pubkey_randValue: tried to select value from empty arraytotal operator count should have increased for each quorum_configRand: invalid minimumStake, no flags passed_selectRand: tried to select from empty quorum list(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83operatorInfo should have operatorId_configRand: invalid numStrategies, no flags passedoperator list should have one more entryoperator should have empty id and NEVER_REGISTERED statusfailed to add operator weight to operator and total stake in each quorumtotal operator count should have decreased for each quorum_configRand: invalid _userTypes, no flags passedoperator should still have a registered pubkeyoperatorInfo status should be DEREGISTEREDoperator pubkey should have been added to each quorum apkoperator pubkey should have been subtracted from each quorum apkoperatorInfo should still have operatorId\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_newRandomOperator: operator should be registeredoperator should have registered a pubkey_configRand: invalid numQuorums, no flags passedoperator did not deregister from all quorums\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8failed to remove operator weight from total stake for each quorumoperator did not register for all quorumsoperator should not have any bits in bitmapcurrent operator bitmap should include quorumsoperator should have at least the minimum stake in each quorumoperatorInfo status should be REGISTEREDoperator should be registered to AVSoperator should not be registered to the AVS\xA2dipfsX\"\x12 +S(\xA5\x94k>\xF8\xF0\x9Aai\xB9k\x86\xAB\x06V\xE5\xA1_\xCAT5,\xAE(\xE4\xBF]!1dsolcC\0\x08\x0C\x003\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b50600436106200015d5760003560e01c80636b3aa72e11620000c75780639c23c2ab11620000865780639c23c2ab14620002ca5780639d8b9cb414620002e1578063b5508aa914620002f5578063ba414fa614620002ff578063e20c9f71146200031a578063fa7626d4146200032457600080fd5b80636b3aa72e14620002685780636d14a987146200027c57806385226c811462000290578063916a17c614620002a9578063929111e014620002b357600080fd5b80632dbcb04c11620001205780632dbcb04c14620001f75780633dfb40e014620002105780633e5e3c2314620002245780633f7286f4146200022e57806343096339146200023857806366d9a9a0146200024f57600080fd5b8063054310e614620001625780630a9254e41462000193578063131e2f18146200019f5780631ed7831c14620001c55780632ade388014620001de575b600080fd5b60355462000176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6200019d62000332565b005b620001b6620001b03660046200920a565b62001732565b6040516200018a91906200926a565b620001cf62001be8565b6040516200018a9190620092c0565b620001e862001c4c565b6040516200018a919062009332565b6200020160345481565b6040519081526020016200018a565b602e5462000176906001600160a01b031681565b620001cf62001d9a565b620001cf62001dfc565b6200019d62000249366004620093f8565b62001e5e565b62000259620020e1565b6040516200018a91906200941f565b601e5462000176906001600160a01b031681565b60285462000176906001600160a01b031681565b6200029a620021cb565b6040516200018a9190620094d6565b62000259620022a5565b6200019d620002c4366004620093f8565b6200238f565b6200019d620002db366004620093f8565b6200256e565b60335462000176906001600160a01b031681565b6200029a6200275e565b6200030962002838565b60405190151581526020016200018a565b620001cf6200296f565b600754620003099060ff1681565b604051620003409062008f26565b604051809103906000f0801580156200035d573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b81600081518110620003b957620003b962009552565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c604051620003eb9062008f34565b620003f892919062009568565b604051809103906000f08015801562000415573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620004479062008f42565b604051809103906000f08015801562000464573d6000803e3d6000fd5b509050604051620004759062008f4f565b604051809103906000f08015801562000492573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b0392909216919091179055604051620004c19062008f5d565b604051809103906000f080158015620004de573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005139062008f6b565b6200052092919062009594565b604051809103906000f0801580156200053d573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005729062008f6b565b6200057f92919062009594565b604051809103906000f0801580156200059c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005d19062008f6b565b620005de92919062009594565b604051809103906000f080158015620005fb573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620006309062008f6b565b6200063d92919062009594565b604051809103906000f0801580156200065a573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316179055603154604051839291909116906200068f9062008f6b565b6200069c92919062009594565b604051809103906000f080158015620006b9573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392831617905560255460205460405191831692169064077359400090620006f79062008f79565b6001600160a01b0393841681529290911660208301526001600160401b03166040820152606001604051809103906000f0801580156200073b573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620007699062008f87565b6001600160a01b039091168152602001604051809103906000f08015801562000796573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f5460225460205460405160009493841693928316929190911690620007da9062008f95565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000817573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b03938416939283169290911690620008499062008fa3565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000886573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b039283169290911690620008b19062008fb1565b620008be929190620095bd565b604051809103906000f080158015620008db573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b0395861695948516949384169392831692909116906200091b9062008fbf565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000967573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b03909116906200098b9062008fcd565b6001600160a01b039091168152602001604051809103906000f080158015620009b8573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b9362000a1e939183169216908b8b8b6064820162009609565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000a6793929160040162009668565b600060405180830381600087803b15801562000a8257600080fd5b505af115801562000a97573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000b2a9391909216918c9160040162009668565b600060405180830381600087803b15801562000b4557600080fd5b505af115801562000b5a573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000be69391909216918b9160040162009668565b600060405180830381600087803b15801562000c0157600080fd5b505af115801562000c16573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000cac939116918a9160040162009668565b600060405180830381600087803b15801562000cc757600080fd5b505af115801562000cdc573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000d68939190921691899160040162009668565b600060405180830381600087803b15801562000d8357600080fd5b505af115801562000d98573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000db9915062008fdb565b6001600160a01b039091168152602001604051809103906000f08015801562000de6573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000eac57600062000e218262002a9b565b905060008160405160200162000e3891906200969f565b604051602081830303815290604052905060008260405160200162000e5e9190620096d6565b604051602081830303815290604052905062000e9382827502ac3a4edbbfb8014e3ba83411e915e80000000000003062002bb8565b505050808062000ea39062009719565b91505062000e0a565b5060405162000ebb9062008fe9565b604051809103906000f08015801562000ed8573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000f3757600080fd5b505af115801562000f4c573d6000803e3d6000fd5b50506031546040518c93506001600160a01b03909116915062000f6f9062008f6b565b62000f7c92919062009594565b604051809103906000f08015801562000f99573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000fce9062008f6b565b62000fdb92919062009594565b604051809103906000f08015801562000ff8573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200102d9062008f6b565b6200103a92919062009594565b604051809103906000f08015801562001057573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200108c9062008f6b565b6200109992919062009594565b604051809103906000f080158015620010b6573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b929190911690620010eb9062008f6b565b620010f892919062009594565b604051809103906000f08015801562001115573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200117157600080fd5b505af115801562001186573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b039283169350911690620011b09062008ff7565b620011bd929190620095bd565b604051809103906000f080158015620011da573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011fe9062009005565b6001600160a01b039091168152602001604051809103906000f0801580156200122b573d6000803e3d6000fd5b506028546040519192506000916001600160a01b03909116906200124f9062009013565b6001600160a01b039091168152602001604051809103906000f0801580156200127c573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b03938416939283169290911690620012ae9062009021565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620012eb573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81529293506001600160a01b03918216926399a88ec492620013269216908890600401620095bd565b600060405180830381600087803b1580156200134157600080fd5b505af115801562001356573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200139392909116908790600401620095bd565b600060405180830381600087803b158015620013ae57600080fd5b505af1158015620013c3573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200140092909116908690600401620095bd565b600060405180830381600087803b1580156200141b57600080fd5b505af115801562001430573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0392831694506399a88ec493506200146d92909116908590600401620095bd565b600060405180830381600087803b1580156200148857600080fd5b505af11580156200149d573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b158015620014eb57600080fd5b505af115801562001500573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b039485169550928416939182169291169062001538906200902f565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200157d573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b969082169590821694908216939116918162001608565b6040805160608101825260008082526020808301829052928201528252600019909201910181620015da5790505b50604080516000808252602082018181528284019093529091906200163e565b6060815260200190600190039081620016285790505b50604051602401620016589897969594939291906200981a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b9092168252620016a193929160040162009668565b600060405180830381600087803b158015620016bc57600080fd5b505af1158015620016d1573d6000803e3d6000fd5b50505050604051620016e3906200903d565b604051809103906000f08015801562001700573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b6200173c6200904b565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200175457905050905060405180604001604052806002815260200161676f60f01b815250816000815181106200179d576200179d62009552565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620017da57620017da62009552565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b8152508160028151811062001828576200182862009552565b60200260200101819052506200183e8362002a9b565b8160038151811062001854576200185462009552565b6020026020010181905250604051806040016040528060018152602001603160f81b815250816004815181106200188f576200188f62009552565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790620018d6908590600401620094d6565b6000604051808303816000875af1158015620018f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019209190810190620099af565b905080806020019051810190620019389190620099fc565b83516001602002018181525050604051806040016040528060018152602001601960f91b8152508260048151811062001975576200197562009552565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790620019b9908590600401620094d6565b6000604051808303816000875af1158015620019d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a039190810190620099af565b90508080602001905181019062001a1b9190620099fc565b8351526040805180820190915260018152603360f81b602082015282518390600490811062001a4e5762001a4e62009552565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001a92908590600401620094d6565b6000604051808303816000875af115801562001ab2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001adc9190810190620099af565b90508080602001905181019062001af49190620099fc565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001b345762001b3462009552565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b78908590600401620094d6565b6000604051808303816000875af115801562001b98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001bc29190810190620099af565b90508080602001905181019062001bda9190620099fc565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001c4257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001c23575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d9157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001d7957838290600052602060002001805462001ce59062009a16565b80601f016020809104026020016040519081016040528092919081815260200182805462001d139062009a16565b801562001d645780601f1062001d385761010080835404028352916020019162001d64565b820191906000526020600020905b81548152906001019060200180831162001d4657829003601f168201915b50505050508152602001906001019062001cc3565b50505050815250508152602001906001019062001c70565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b604080516080810182526007808252602082015260039181018290526060810182905262001e8e91839162002ee4565b600062001e9a62003786565b9050600062001f3b6042805462001eb19062009a16565b80601f016020809104026020016040519081016040528092919081815260200182805462001edf9062009a16565b801562001f305780601f1062001f045761010080835404028352916020019162001f30565b820191906000526020600020905b81548152906001019060200180831162001f1257829003601f168201915b50505050506200393f565b905062001f488262003b0f565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c9062001f7690849060040162009a4d565b6020604051808303816000875af115801562001f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fbc9190620099fc565b5062001fc9828262003be0565b600062001fd6826200393f565b60405163ca4f2d9760e01b81529091506001600160a01b0384169063ca4f2d97906200200790849060040162009a4d565b600060405180830381600087803b1580156200202257600080fd5b505af115801562002037573d6000803e3d6000fd5b5050505062002047838262003db9565b600062002055838362003f46565b90508051600014620020cf5760405163ca4f2d9760e01b81526001600160a01b0385169063ca4f2d97906200208f90849060040162009a4d565b600060405180830381600087803b158015620020aa57600080fd5b505af1158015620020bf573d6000803e3d6000fd5b50505050620020cf848262003db9565b620020da8462003f7f565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001d915760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021b257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620021735790505b5050505050815250508152602001906001019062002105565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001d91578382906000526020600020018054620022119062009a16565b80601f01602080910402602001604051908101604052809291908181526020018280546200223f9062009a16565b8015620022905780601f10620022645761010080835404028352916020019162002290565b820191906000526020600020905b8154815290600101906020018083116200227257829003601f168201915b505050505081526020019060010190620021ef565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001d915760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200237657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023375790505b50505050508152505081526020019060010190620022c9565b6040805160808101825260078082526020820152600391810182905260608101829052620023bf91839162002ee4565b6000620023cb62003786565b9050600060428054620023de9062009a16565b80601f01602080910402602001604051908101604052809291908181526020018280546200240c9062009a16565b80156200245d5780601f1062002431576101008083540402835291602001916200245d565b820191906000526020600020905b8154815290600101906020018083116200243f57829003601f168201915b505050505090506200246f8262003b0f565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c906200249d90849060040162009a4d565b6020604051808303816000875af1158015620024bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024e39190620099fc565b50620024f0828262003be0565b60405163ca4f2d9760e01b81526001600160a01b0383169063ca4f2d97906200251e90849060040162009a4d565b600060405180830381600087803b1580156200253957600080fd5b505af11580156200254e573d6000803e3d6000fd5b505050506200255e828262003db9565b620025698262003f7f565b505050565b60408051608081018252600780825260208201526003918101829052606081018290526200259e91839162002ee4565b6000620025aa62003786565b90506000620025c16042805462001eb19062009a16565b9050620025ce8262003b0f565b60405163208c6d5360e21b81526001600160a01b03831690638231b54c90620025fc90849060040162009a4d565b6020604051808303816000875af11580156200261c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026429190620099fc565b506200264f828262003be0565b60006200265c826200393f565b60405163ca4f2d9760e01b81529091506001600160a01b0384169063ca4f2d97906200268d90849060040162009a4d565b600060405180830381600087803b158015620026a857600080fd5b505af1158015620026bd573d6000803e3d6000fd5b50505050620026cd838262003db9565b6000620026da826200393f565b60405163208c6d5360e21b81529091506001600160a01b03851690638231b54c906200270b90849060040162009a4d565b6020604051808303816000875af11580156200272b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027519190620099fc565b50620020da848262003be0565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001d91578382906000526020600020018054620027a49062009a16565b80601f0160208091040260200160405190810160405280929190818152602001828054620027d29062009a16565b8015620028235780601f10620027f75761010080835404028352916020019162002823565b820191906000526020600020905b8154815290600101906020018083116200280557829003601f168201915b50505050508152602001906001019062002782565b600754600090610100900460ff16156200285b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200296a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620028ec917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162009a62565b60408051601f1981840301815290829052620029089162009a95565b6000604051808303816000865af19150503d806000811462002947576040519150601f19603f3d011682016040523d82523d6000602084013e6200294c565b606091505b509150508080602001905181019062002966919062009ab3565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001c42576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001c23575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b604080518082019091526000808252602082015262002a1862009074565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801562002a4d5762002a4f565bfe5b508062002a935760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064015b60405180910390fd5b505092915050565b60608162002ac05750506040805180820190915260018152600360fc1b602082015290565b8160005b811562002af0578062002ad78162009719565b915062002ae89050600a8362009aed565b915062002ac4565b6000816001600160401b0381111562002b0d5762002b0d6200953c565b6040519080825280601f01601f19166020018201604052801562002b38576020820181803683370190505b5090505b841562002bb05762002b5060018362009b04565b915062002b5f600a8662009b1e565b62002b6c90603062009b35565b60f81b81838151811062002b845762002b8462009552565b60200101906001600160f81b031916908160001a90535062002ba8600a8662009aed565b945062002b3c565b949350505050565b60008484848460405162002bcc9062009092565b62002bdb949392919062009b50565b604051809103906000f08015801562002bf8573d6000803e3d6000fd5b506027546031546021546040519394506000936001600160a01b03938416939283169263485cc95560e01b9262002c3892889290911690602401620095bd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905162002c779062008f6b565b62002c859392919062009668565b604051809103906000f08015801562002ca2573d6000803e3d6000fd5b5060408051600180825281830190925291925060009190602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050828260008151811062002d035762002d0362009552565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa15801562002d69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d8f919062009bb1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801562002dd157600080fd5b505af115801562002de6573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b3547915062002e1e908590859060040162009bd1565b600060405180830381600087803b15801562002e3957600080fd5b505af115801562002e4e573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b60408051818152601f818301527f5f636f6e66696752616e643a207365742072616e646f6d207365656420746f00606082015262ffffff8516602082015290516000805160206203e04e8339815191529181900360800190a16040516001600160e81b031960e885901b16602082015260230160408051601f19818403018152919052805160209091012060375562002f7d826200402f565b805162002f9391603891602090910190620090a0565b50805162002fa1906200402f565b805162002fb791603991602090910190620090a0565b5062002fc781602001516200402f565b805162002fdd91603a91602090910190620090a0565b5062002fed81604001516200402f565b80516200300391603b91602090910190620090a0565b506200301381606001516200402f565b80516200302991603c91602090910190620090a0565b5062003063603880546200303d9062009a16565b9050600014156040518060600160405280603081526020016203de4f6030913962004093565b6200309c60398054620030769062009a16565b9050600014156040518060600160405280603081526020016203dff26030913962004093565b620030d5603a8054620030af9062009a16565b9050600014156040518060600160405280603381526020016203dd396033913962004093565b6200310e603b8054620030e89062009a16565b9050600014156040518060600160405280603281526020016203dc916032913962004093565b62003147603c8054620031219062009a16565b9050600014156040518060600160405280602f81526020016203dbce602f913962004093565b62003151620040cc565b6040819055620031679060019081901b62009b04565b604180546001600160c01b0319166001600160c01b0392909216918217905562003191906200420b565b8051620031a791604291602090910190620090a0565b506040805481518281526030928101929092527f5f636f6e66696752616e643a206e756d626572206f662071756f72756d73206260608301526f195a5b99c81a5b9a5d1a585b1a5e995960821b608083015260208201526000805160206203e04e8339815191529060a00160405180910390a16040805160608101825260058152613a98602082015260969181019190915260005b604054811015620034b957600062003253620042e6565b9050600062003261620044e3565b90506000805160206203e04e83398151915283604051620032bc91906040808252601c908201527f5f636f6e66696752616e643a206372656174696e672071756f72756d000000006060820152602081019190915260800190565b60405180910390a183516040516000805160206203e04e833981519152916200331b916040808252601490820152730b4813585e081bdc195c985d1bdc8818dbdd5b9d60621b606082015263ffffffff91909116602082015260800190565b60405180910390a16000805160206203e04e83398151915282516040516200337d91906040808252601b908201527f2d204e756d207374726174656769657320636f6e7369646572656400000000006060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e2d204d696e696d756d207374616b6560881b60608201526001600160601b038316602082015290516000805160206203e04e8339815191529181900360800190a1601c5460335460405163ca669fa760e01b81526001600160a01b03918216600482015291169063ca669fa790602401600060405180830381600087803b1580156200341e57600080fd5b505af115801562003433573d6000803e3d6000fd5b5050602854604051631aeb699160e31b81526001600160a01b03909116925063d75b4c8891506200346d9087908590879060040162009c2e565b600060405180830381600087803b1580156200348857600080fd5b505af11580156200349d573d6000803e3d6000fd5b5050505050508080620034b09062009719565b9150506200323c565b506000620034c78262004521565b90506000805160206203db53833981519152620034e48262002a9b565b604051602001620034f6919062009c84565b60408051601f1981840301815290829052620035129162009a4d565b60405180910390a160005b818110156200367c5760006200353262003786565b60405163208c6d5360e21b81529091506001600160a01b03821690638231b54c90620035649060429060040162009ceb565b6020604051808303816000875af115801562003584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035aa9190620099fc565b5060005b60428054620035bd9062009a16565b9050811015620036645760006042828154620035d99062009a16565b8110620035ea57620035ea62009552565b8154600116156200360a5790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60009081526044602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b03851617905550806200365b8162009719565b915050620035ae565b50508080620036739062009719565b9150506200351d565b506000805160206203db53833981519152604051620036c4906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a16000805160206203db53833981519152604051620037289060208082526024908201527f5f636f6e66696752616e6420636f6d706c6574653b207374617274696e6720746040820152636573742160e01b606082015260800190565b60405180910390a16000805160206203db5383398151915260405162003777906020808252601590820152743d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d60581b604082015260600190565b60405180910390a15050505050565b6000806200379660435462002a9b565b604051602001620037a8919062009d9b565b60408051601f19818403018152919052604380549192506000620037cc8362009719565b91905055506000806000620037e184620045f3565b925092509250826001600160a01b0316632a34ade86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200382357600080fd5b505af115801562003838573d6000803e3d6000fd5b5050604051630da66deb60e31b81526001600160a01b0386169250636d336f5891506200386c908590859060040162009dcd565b600060405180830381600087803b1580156200388757600080fd5b505af11580156200389c573d6000803e3d6000fd5b5050601d546040516336b87bd760e11b81526001600160a01b0387811660048301526200393694509091169150636d70f7ae90602401602060405180830381865afa158015620038f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003916919062009ab3565b6040518060600160405280603181526020016203df996031913962004093565b50909392505050565b60606200396b8251600014156040518060600160405280603381526020016203dcc36033913962004093565b6000805b8351811015620039d757620039836200478f565b15620039c257620039bf848281518110620039a257620039a262009552565b602091010151600160f89190911c1b6001600160c01b0384161790565b91505b80620039ce8162009719565b9150506200396f565b506001600160c01b03811662003a215762003a1e8360008151811062003a015762003a0162009552565b602091010151600160f89190911c1b6001600160c01b0383161790565b90505b600062003a37826001600160c01b03166200420b565b90506000805160206203e04e833981519152845160405162003a9391906040808252601f908201527f5f73656c65637452616e643a20696e7075742071756f72756d20636f756e74006060820152602081019190915260800190565b60405180910390a16000805160206203e04e833981519152815160405162003b00919060408082526022908201527f5f73656c65637452616e643a2073656c65637465642071756f72756d20636f756060820152611b9d60f21b6080820152602081019190915260a00190565b60405180910390a19392505050565b62003b496040518060400160405280601681526020017518da1958dad7d3995d995c97d49959da5cdd195c995960521b81525082620047a5565b62003b6e816040518060600160405280603981526020016203dd94603991396200485a565b62003b93816040518060600160405280602a81526020016203db29602a9139620048a1565b62003bb8816040518060600160405280602881526020016203dbfd60289139620049a7565b62003bdd816040518060600160405280602c81526020016203e1bb602c913962004abd565b50565b62003c1860405180604001604052806014815260200173636865636b5f52656769737465725f537461746560601b81525083620047a5565b62003c3d826040518060600160405280602381526020016203dd166023913962004b5b565b62003c62826040518060600160405280602881526020016203e16f6028913962004c4e565b62003c8882826040518060600160405280602e81526020016203e103602e913962004cde565b62003cae82826040518060600160405280602981526020016203e0af6029913962004e00565b62003cd3826040518060600160405280602881526020016203dfca6028913962004ec1565b62003cf982826040518060600160405280603981526020016203ded760399139620050ea565b62003d1f82826040518060600160405280603e81526020016203e131603e91396200522a565b62003d4582826040518060800160405280604881526020016203ddcd60489139620053f2565b62003d6a816040518060600160405280603a81526020016203dc57603a913962005410565b62003d9082826040518060600160405280602881526020016203dd6c60289139620054af565b62003db5826040518060600160405280602481526020016203e19760249139620055a3565b5050565b62003df360405180604001604052806016815260200175636865636b5f446572656769737465725f537461746560501b81525083620047a5565b62003e18826040518060600160405280602981526020016203df506029913962004b5b565b62003e3e82826040518060600160405280603281526020016203db736032913962005631565b62003e6482826040518060600160405280602c81526020016203e022602c913962005781565b62003e89826040518060600160405280602e81526020016203de7f602e913962004ec1565b62003eaf82826040518060600160405280604081526020016203df106040913962005848565b62003ed582826040518060600160405280603381526020016203daf66033913962005955565b62003efb82826040518060800160405280604181526020016203e06e6041913962005a9a565b62003f20816040518060600160405280603a81526020016203de15603a913962005b6a565b62003db582826040518060600160405280602981526020016203dba56029913962005bfc565b6060600062003f558462005cc4565b9050600062003f648462005cc4565b905062003f74811983166200420b565b925050505b92915050565b62003fc06040518060400160405280601e81526020017f636865636b5f436f6d706c657465446572656769737465725f5374617465000081525082620047a5565b62003fe5816040518060600160405280602b81526020016203e0d8602b9139620048a1565b6200400a816040518060600160405280602981526020016203df506029913962004b5b565b62003bb8816040518060600160405280602a81526020016203dead602a913962005e57565b606060005b6101008110156200408d576001811b838116156200407957604051620040679084906001851b60f81b9060200162009df6565b60405160208183030381529060405292505b50620040858162009719565b905062004034565b50919050565b8162003db5576000805160206203dcf683398151915281604051620040b9919062009e27565b60405180910390a162003db58262005ed7565b6000806200416c60398054620040e29062009a16565b80601f0160208091040260200160405190810160405280929190818152602001828054620041109062009a16565b8015620041615780601f10620041355761010080835404028352916020019162004161565b820191906000526020600020905b8154815290600101906020018083116200414357829003601f168201915b505050505062005f3e565b905060018114156200418057600191505090565b60028114156200419257600291505090565b6004811415620041b057620041aa6003600a62005fa7565b91505090565b60405162461bcd60e51b815260206004820152602560248201527f5f72616e6451756f72756d436f756e743a20666c6167206e6f74207265636f676044820152641b9a5e995960da1b606482015260840162002a8a565b5090565b60606000806200421b8462006069565b61ffff166001600160401b038111156200423957620042396200953c565b6040519080825280601f01601f19166020018201604052801562004264576020820181803683370190505b5090506000805b8251821080156200427d575061010081105b15620042dc576001811b935085841615620042c9578060f81b838381518110620042ab57620042ab62009552565b60200101906001600160f81b031916908160001a9053508160010191505b620042d48162009719565b90506200426b565b5090949350505050565b60606000620042fd603a8054620040e29062009a16565b9050600060018214156200431457506001620043ea565b60028214156200432757506002620043ea565b60048214156200435857602f5462004350906003906200434a9060019062009b04565b62005fa7565b9050620043ea565b60088214156200436b5750600f620043ea565b60108214156200437e57506014620043ea565b60208214156200439157506019620043ea565b60405162461bcd60e51b815260206004820152602760248201527f5f72616e645374726174656779436f756e743a20666c6167206e6f74207265636044820152661bd9db9a5e995960ca1b606482015260840162002a8a565b6000816001600160401b038111156200440757620044076200953c565b6040519080825280602002602001820160405280156200444e57816020015b6040805180820190915260008082526020820152815260200190600190039081620044265790505b50905060005b8151811015620044db576040518060400160405280602f83815481106200447f576200447f62009552565b600091825260209182902001546001600160a01b03168252670de0b6b3a76400009101528251839083908110620044ba57620044ba62009552565b60200260200101819052508080620044d29062009719565b91505062004454565b509392505050565b600080620044f9603b8054620040e29062009a16565b905060018114156200450d57600091505090565b6002811415620041b057620f424091505090565b60008062004537603c8054620040e29062009a16565b905060018114156200454c5750600092915050565b600281141562004581576200457a60018085600001516200456e919062009e58565b63ffffffff1662005fa7565b9392505050565b6004811415620045975750505163ffffffff1690565b60405162461bcd60e51b815260206004820152602a60248201527f5f72616e64496e697469616c4f70657261746f72733a20666c6167206e6f74206044820152691c9958dbd9db9a5e995960b21b606482015260840162002a8a565b6000606080600080620046056200609a565b915091506000806200461f60388054620040e29062009a16565b9050600181141562004670578784846040516200463c906200912b565b6200464a9392919062009e80565b604051809103906000f08015801562004667573d6000803e3d6000fd5b509150620046de565b6002811415620046de57876040516020016200468d919062009ee0565b6040516020818303038152906040529750878484604051620046af9062009139565b620046bd9392919062009e80565b604051809103906000f080158015620046da573d6000803e3d6000fd5b5091505b6000805160206203dcf6833981519152826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200472d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620047579190810190620099af565b60405162004766919062009f0a565b60405180910390a16000806200477c846200626b565b949b909a50939850929650505050505050565b60006200479f6000600162005fa7565b15919050565b6000805160206203db5383398151915282826001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015620047f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200481f9190810190620099af565b6040516020016200483292919062009f53565b60408051601f19818403018152908290526200484e9162009a4d565b60405180910390a15050565b60006200486783620064db565b80519091506200487a906000846200655f565b6200256960008260200151600281111562004899576200489962009faf565b148362004093565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049846001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004906573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200492c9190620099fc565b6040518263ffffffff1660e01b81526004016200494b91815260200190565b602060405180830381865afa15801562004969573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200498f919062009fc5565b9050620025696001600160c01b038216158362004093565b602a5460405162a1f4cb60e01b81526001600160a01b038481166004830152600092839291169062a1f4cb906024016040805180830381865afa158015620049f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a19919062009ff0565b602a54604051630378a7eb60e61b81526001600160a01b038881166004830152939550919350600092169063de29fac090602401602060405180830381865afa15801562004a6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a919190620099fc565b905062004aa1836000866200659b565b62004aaf826000866200659b565b620020da816000866200655f565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da39262004af992909116908790600401620095bd565b602060405180830381865afa15801562004b17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b3d91906200a015565b90506200256960005b82600181111562004899576200489962009faf565b6000826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004b9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bc29190620099fc565b6028546040516309aa152760e11b81526001600160a01b038681166004830152929350600092909116906313542a4e90602401602060405180830381865afa15801562004c13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c399190620099fc565b905062004c488282856200655f565b50505050565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562004c9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cc091906200a048565b90506200256960015b82600281111562004899576200489962009faf565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d699190620099fc565b6040518263ffffffff1660e01b815260040162004d8891815260200190565b602060405180830381865afa15801562004da6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004dcc919062009fc5565b9050600062004ddb8462005cc4565b9050620020da62004df96001600160c01b0380841690851681161490565b8462004093565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004e41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e679190620099fc565b9050600062004e768462005cc4565b9050600062004e8583620065d7565b9050600062004e948462006648565b905062004eb86001600160c01b0382168417836001600160c01b0316148662004093565b50505050505050565b6000826001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562004f01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f2791906200a066565b602a5460405162a1f4cb60e01b81526001600160a01b0386811660048301529293506000928392169062a1f4cb906024016040805180830381865afa15801562004f75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f9b919062009ff0565b8451600090815260208087015190526040812092945090925090602a54604051630378a7eb60e61b81526001600160a01b0389811660048301529293506000929091169063de29fac090602401602060405180830381865afa15801562005006573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200502c9190620099fc565b602a5460405163745dcd7360e11b8152600481018590529192506000916001600160a01b039091169063e8bb9ae690602401602060405180830381865afa1580156200507c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050a2919062009bb1565b9050620050b5866000015186896200659b565b620050c6866020015185896200659b565b620050d38383896200655f565b620050e08882896200673b565b5050505050505050565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa1580156200512a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200515091906200a066565b905060006200515f8462006789565b905060006200516e85620068d3565b905060005b855181101562004eb8576000620051b08584848151811062005199576200519962009552565b60200260200101516200696090919063ffffffff16565b9050620051e38160000151858481518110620051d057620051d062009552565b602002602001015160000151886200659b565b62005214816020015185848151811062005201576200520162009552565b602002602001015160200151886200659b565b5080620052218162009719565b91505062005173565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200526b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052919190620099fc565b905060005b8351811015620020da576000848281518110620052b757620052b762009552565b0160200151602b5460405163c46778a560e01b815260f89290921c6004830181905292506000916001600160a01b039091169063c46778a590602401602060405180830381865afa15801562005311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200533791906200a09b565b602b54604051635401ed2760e01b81526004810187905260ff851660248201529192506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562005390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053b691906200a09b565b9050620053d9826001600160601b0316826001600160601b031610158762004093565b5050508080620053e99062009719565b91505062005296565b6000620054008484620069f9565b905062004c488484838562006b3b565b60006200541d8362006c82565b905060006200542c8462006db2565b905060005b8451811015620020da576200549a83828151811062005454576200545462009552565b602002602001015163ffffffff1683838151811062005477576200547762009552565b602002602001015160016200548d91906200a0c6565b63ffffffff16866200659b565b80620054a68162009719565b91505062005431565b6000620054bc8362006e3f565b90506000620054cb8462006f81565b905060005b84518110156200559b576200552f838281518110620054f357620054f362009552565b60200260200101515183838151811062005511576200551162009552565b602002602001015151600162005528919062009b35565b866200659b565b620055626200555b8483815181106200554c576200554c62009552565b6020026020010151886200700e565b8562004093565b620055866200557f8383815181106200554c576200554c62009552565b85620070d6565b80620055928162009719565b915050620054d0565b505050505050565b601e546029546040516349075da360e01b81526000926001600160a01b03908116926349075da392620055df92909116908790600401620095bd565b602060405180830381865afa158015620055fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200562391906200a015565b905062002569600162004b46565b6000602860009054906101000a90046001600160a01b03166001600160a01b031663871ef049856001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005696573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056bc9190620099fc565b6040518263ffffffff1660e01b8152600401620056db91815260200190565b602060405180830381865afa158015620056f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200571f919062009fc5565b905060005b8351811015620020da57600084828151811062005745576200574562009552565b60209101015160f81c90506200576b60016001600160c01b038516831c8116146200557f565b5080620057788162009719565b91505062005724565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa158015620057c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620057e89190620099fc565b90506000620057f78462005cc4565b905060006200580683620065d7565b90506000620058158462006648565b9050620058318382166001600160c01b031684145b8662004093565b62004eb88284166001600160c01b0316156200582a565b6000836001600160a01b031663afa1c7376040518163ffffffff1660e01b81526004016040805180830381865afa15801562005888573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058ae91906200a066565b90506000620058bd8462006789565b90506000620058cc85620068d3565b905060005b855181101562004eb857600062005901620058ec86620070e3565b84848151811062005199576200519962009552565b9050620059218160000151858481518110620051d057620051d062009552565b6200593f816020015185848151811062005201576200520162009552565b50806200594c8162009719565b915050620058d1565b6000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005996573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059bc9190620099fc565b905060005b8351811015620020da576000848281518110620059e257620059e262009552565b0160200151602b54604051635401ed2760e01b81526004810186905260f89290921c6024830181905292506000916001600160a01b0390911690635401ed2790604401602060405180830381865afa15801562005a43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a6991906200a09b565b905062005a82816001600160601b03166000876200659b565b5050808062005a919062009719565b915050620059c1565b600062005aa88484620071a3565b9050600062005ab78462007299565b9050600062005ac685620073cc565b905060005b855181101562004eb85762005b5583828151811062005aee5762005aee62009552565b60200260200101516001600160601b031685838151811062005b145762005b1462009552565b602002602001015184848151811062005b315762005b3162009552565b602002602001015162005b4591906200a0f1565b6001600160601b0316876200659b565b8062005b618162009719565b91505062005acb565b600062005b778362006c82565b9050600062005b868462006db2565b905060005b8451811015620020da5762005be783828151811062005bae5762005bae62009552565b602002602001015163ffffffff16600184848151811062005bd35762005bd362009552565b60200260200101516200548d919062009e58565b8062005bf38162009719565b91505062005b8b565b600062005c098362006e3f565b9050600062005c188462006f81565b905060005b84518110156200559b5762005c7583828151811062005c405762005c4062009552565b602002602001015151600184848151811062005c605762005c6062009552565b60200260200101515162005528919062009b04565b62005c926200557f8483815181106200554c576200554c62009552565b62005caf6200555b8383815181106200554c576200554c62009552565b8062005cbb8162009719565b91505062005c1d565b60006101008251111562005d4f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40162002a8a565b815162005d5e57506000919050565b6000808360008151811062005d775762005d7762009552565b0160200151600160f89190911c81901b92505b8451811015620039365784818151811062005da95762005da962009552565b0160200151600160f89190911c1b915082821162005e405760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40162002a8a565b9181179162005e4f8162009719565b905062005d8a565b602854604051637e9c882d60e11b81526001600160a01b038481166004830152600092169063fd39105a90602401602060405180830381865afa15801562005ea3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005ec991906200a048565b905062002569600262004cc9565b8062003bdd576000805160206203db5383398151915260405162005f2c9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003bdd62007459565b600062005f6960008351116040518060600160405280603281526020016203dc256032913962004093565b600062005f816000600185516200434a919062009b04565b905082818151811062005f985762005f9862009552565b016020015160f81c9392505050565b60008062005fb6848462009b04565b62005fc390600162009b35565b90506000815b801562005fe8578162005fdc8162009719565b92505060011c62005fc9565b600062005ff9600180851b62009b04565b60375490915081165b84811062006020578162006017868362009b04565b16905062006002565b6037546040516020016200603691815260200190565b60408051601f1981840301815291905280516020909101206037556200605d818962009b35565b98975050505050505050565b6000805b821562003f79576200608160018462009b04565b909216918062006091816200a114565b9150506200606d565b6000620060a662009147565b603e54603d5414156200613a5760405162461bcd60e51b815260206004820152604f60248201527f5f66657463684b6579706169723a206e6f7420656e6f7567682067656e65726160448201527f746564206b6579732e20436865636b20496e746567726174696f6e4465706c6f60648201526e3cb2b91731b7b739ba393ab1ba37b960891b608482015260a40162002a8a565b6000603e603d548154811062006154576200615462009552565b906000526020600020015490506000603f603d54815481106200617b576200617b62009552565b60009182526020918290206040805160a0810182526008939093029091018054606084019081526001820154608080860191909152908452825180840184526002808401548252600384015482880152958501528251908101808452939491938584019391926004860192849290830191849182845b815481526020019060010190808311620061f157505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311620062285750505091909252505050905250603d805491925060006200625d8362009719565b909155509194909350915050565b6060806000602f805490506001600160401b038111156200629057620062906200953c565b604051908082528060200260200182016040528015620062ba578160200160208202803683370190505b50602f549091506000906001600160401b03811115620062de57620062de6200953c565b60405190808252806020026020018201604052801562006308578160200160208202803683370190505b5090506000805160206203dcf6833981519152856001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200635a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620063849190810190620099af565b6040516200639391906200a139565b60405180910390a160005b602f54811015620064d0576000602f8281548110620063c157620063c162009552565b600091825260208083209091015460408051632495a59960e01b815290516001600160a01b0390921694508492632495a599926004808401938290030181865afa15801562006414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200643a919062009bb1565b9050600062006450620f4240624c4b4062005fa7565b90506200645f828a8362007567565b8286858151811062006475576200647562009552565b60200260200101906001600160a01b031690816001600160a01b03168152505080858581518110620064ab57620064ab62009552565b6020026020010181815250505050508080620064c79062009719565b9150506200639e565b509094909350915050565b6040805180820190915260008082526020820152602854604051631619718360e21b81526001600160a01b03848116600483015290911690635865c60c906024016040805180830381865afa15801562006539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f7991906200a18d565b81831462002569576000805160206203dcf68339815191528160405162006587919062009e27565b60405180910390a162002569838362007576565b81831462002569576000805160206203dcf683398151915281604051620065c3919062009e27565b60405180910390a16200256983836200765f565b60285460405163871ef04960e01b8152600481018390526000916001600160a01b03169063871ef04990602401602060405180830381865afa15801562006622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f79919062009fc5565b600080602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620066a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066c79190620099fc565b9050620066d483620065d7565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b1580156200671c57600080fd5b505af115801562006731573d6000803e3d6000fd5b5050505050919050565b816001600160a01b0316836001600160a01b03161462002569576000805160206203dcf68339815191528160405162006775919062009e27565b60405180910390a162002569838362007711565b6060600082516001600160401b03811115620067a957620067a96200953c565b604051908082528060200260200182016040528015620067f057816020015b6040805180820190915260008082526020820152815260200190600190039081620067c85790505b50905060005b8351811015620068cc57602a5484516001600160a01b0390911690635f61a884908690849081106200682c576200682c62009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526024016040805180830381865afa15801562006870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200689691906200a066565b828281518110620068ab57620068ab62009552565b60200260200101819052508080620068c39062009719565b915050620067f6565b5092915050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200692d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069539190620099fc565b9050620066d48362006789565b60408051808201909152600080825260208201526200697e62009197565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801562002a4d57508062002a935760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640162002a8a565b6060600082516001600160401b0381111562006a195762006a196200953c565b60405190808252806020026020018201604052801562006a43578160200160208202803683370190505b50905060005b8351811015620044db57602b5484516001600160a01b0390911690631f9b74e09086908490811062006a7f5762006a7f62009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201526001600160a01b0388166024820152604401602060405180830381865afa15801562006ad3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006af991906200a09b565b82828151811062006b0e5762006b0e62009552565b6001600160601b03909216602092830291909101909101528062006b328162009719565b91505062006a49565b600062006b498585620077fa565b9050600062006b598686620071a3565b9050600062006b688662007299565b9050600062006b7787620073cc565b905060005b875181101562006c775762006c0685828151811062006b9f5762006b9f62009552565b60200260200101516001600160601b031688838151811062006bc55762006bc562009552565b602002602001015186848151811062006be25762006be262009552565b602002602001015162006bf691906200a1c8565b6001600160601b0316886200659b565b62006c6283828151811062006c1f5762006c1f62009552565b60200260200101516001600160601b031688838151811062006c455762006c4562009552565b602002602001015184848151811062006be25762006be262009552565b8062006c6e8162009719565b91505062006b7c565b505050505050505050565b6060600082516001600160401b0381111562006ca25762006ca26200953c565b60405190808252806020026020018201604052801562006ccc578160200160208202803683370190505b50905060005b8351811015620068cc57602c5484516001600160a01b039091169063f34109229086908490811062006d085762006d0862009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562006d4d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006d7391906200a1ed565b82828151811062006d885762006d8862009552565b63ffffffff909216602092830291909101909101528062006da98162009719565b91505062006cd2565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562006e0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e329190620099fc565b9050620066d48362006c82565b6060600082516001600160401b0381111562006e5f5762006e5f6200953c565b60405190808252806020026020018201604052801562006e9457816020015b606081526020019060019003908162006e7e5790505b50905060005b8351811015620068cc57602c5484516001600160a01b039091169063890262459086908490811062006ed05762006ed062009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c60048201524363ffffffff166024820152604401600060405180830381865afa15801562006f21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006f4b91908101906200a29d565b82828151811062006f605762006f6062009552565b6020026020010181905250808062006f789062009719565b91505062006e9a565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562006fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620070019190620099fc565b9050620066d48362006e3f565b600080826001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007050573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620070769190620099fc565b905060005b8451811015620070cb57818582815181106200709b576200709b62009552565b60200260200101511415620070b65760019250505062003f79565b80620070c28162009719565b9150506200707b565b506000949350505050565b62003db582158262004093565b604080518082019091526000808252602082015281511580156200710957506020820151155b1562007128575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516200716f919062009b1e565b6200719b907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4762009b04565b905292915050565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620071fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620072239190620099fc565b9050620072318484620077fa565b602e5460405163b437edcb60e01b8152600481018490529193506001600160a01b03169063b437edcb90602401600060405180830381600087803b1580156200727957600080fd5b505af11580156200728e573d6000803e3d6000fd5b505050505092915050565b6060600082516001600160401b03811115620072b957620072b96200953c565b604051908082528060200260200182016040528015620072e3578160200160208202803683370190505b50905060005b8351811015620068cc57602b5484516001600160a01b039091169063d5eccc05908690849081106200731f576200731f62009552565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801562007364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200738a91906200a09b565b8282815181106200739f576200739f62009552565b6001600160601b039092166020928302919091019091015280620073c38162009719565b915050620072e9565b60606000602e60009054906101000a90046001600160a01b03166001600160a01b031663bf87b8346040518163ffffffff1660e01b81526004016020604051808303816000875af115801562007426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200744c9190620099fc565b9050620066d48362007299565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200755657604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490620074d19083906519985a5b195960d21b906001906020016200a2d5565b60408051601f1981840301815290829052620074f1929160200162009a62565b60408051601f19818403018152908290526200750d9162009a95565b6000604051808303816000865af19150503d80600081146200754c576040519150601f19603f3d011682016040523d82523d6000602084013e62007551565b606091505b505050505b6007805461ff001916610100179055565b620025698383836000620079a6565b80821462003db5576000805160206203db53833981519152604051620075db9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974604082015264657333325d60d81b606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99826040516200761491906200a2f6565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99816040516200764d91906200a32f565b60405180910390a162003db562007459565b80821462003db5576000805160206203db53833981519152604051620076c19060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a16000805160206203e04e83398151915282604051620076e991906200a2f6565b60405180910390a16000805160206203e04e833981519152816040516200764d91906200a32f565b806001600160a01b0316826001600160a01b03161462003db5576000805160206203db53833981519152604051620077889060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620077c191906200a35a565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f816040516200764d91906200a39f565b60606000836001600160a01b031663bf68b8166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200783d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620078639190620099fc565b9050600083516001600160401b038111156200788357620078836200953c565b604051908082528060200260200182016040528015620078ad578160200160208202803683370190505b50905060005b84518110156200799d57602b5485516001600160a01b0390911690635401ed27908590889085908110620078eb57620078eb62009552565b01602001516040516001600160e01b031960e085901b168152600481019290925260f81c6024820152604401602060405180830381865afa15801562007935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200795b91906200a09b565b82828151811062007970576200797062009552565b6001600160601b039092166020928302919091019091015280620079948162009719565b915050620078b3565b50949350505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620079fc9162009a95565b600060405180830381855afa9150503d806000811462007a39576040519150601f19603f3d011682016040523d82523d6000602084013e62007a3e565b606091505b5091505060008180602001905181019062007a5a9190620099fc565b905062007a948462007a8d8762007a866370a0823160e01b62007a7f600c8d62007b9c565b9062007bc2565b9062007be0565b9062007c09565b82156200559b5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162007adf919062009a95565b600060405180830381855afa9150503d806000811462007b1c576040519150601f19603f3d011682016040523d82523d6000602084013e62007b21565b606091505b5091505060008180602001905181019062007b3d9190620099fc565b90508286101562007b685762007b54868462009b04565b62007b60908262009b04565b905062007b83565b62007b74838762009b04565b62007b80908262009b35565b90505b620050e08162007a8d6318160ddd60e01b62007a7f600c8d5b6005820180546001600160a01b0319166001600160a01b0383161790556000826200457a565b60038201805463ffffffff191660e083901c1790556000826200457a565b6002820180546001810182556000918252602082206001600160a01b038416910155826200457a565b62003db58282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562007c8257602002820191906000526020600020905b81548152602001906001019080831162007c6d575b5050505050905060008362007c978362007f87565b60405160200162007caa92919062009a62565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162007cfe9186918891016200a3ca565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007d395762007d378762008033565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162007d7a9187918991016200a3ca565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162007dc1919062009a95565b600060405180830381855afa9150503d806000811462007dfe576040519150601f19603f3d011682016040523d82523d6000602084013e62007e03565b606091505b50915062007e2090508162007e1a8860206200a406565b62008040565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562007e87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ead9190620099fc565b905080821462007ed15760405162461bcd60e51b815260040162002a8a906200a428565b6040516370ca10bb60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb9062007f0e908b9087908e906004016200a2d5565b600060405180830381600087803b15801562007f2957600080fd5b505af115801562007f3e573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562007f7360028b016000620091b5565b896004016000905550505050505050505050565b606060008251602062007f9b91906200a406565b6001600160401b0381111562007fb55762007fb56200953c565b6040519080825280601f01601f19166020018201604052801562007fe0576020820181803683370190505b50905060005b8351811015620068cc57600084828151811062008007576200800762009552565b6020026020010151905080826020026020018401525080806200802a9062009719565b91505062007fe6565b600062003f7982620080c0565b60008060006020855111620080575784516200805a565b60205b905060005b81811015620042dc57620080758160086200a406565b8662008082838862009b35565b8151811062008095576200809562009552565b01602001516001600160f81b031916901c929092179180620080b78162009719565b9150506200805f565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200813257602002820191906000526020600020905b8154815260200190600101908083116200811d575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200817e925085918791016200a3ca565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200821d576001600160a01b0384166000908152602087815260408083206001600160e01b03198716845282528083209051909291620081ed9185918791016200a3ca565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200822b8362008dfa565b6040516020016200823e92919062009a62565b60405160208183030381529060405290506000805160206203df7983398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200829d57600080fd5b505af1158015620082b2573d6000803e3d6000fd5b50505050600080866001600160a01b031683604051620082d3919062009a95565b600060405180830381855afa9150503d806000811462008310576040519150601f19603f3d011682016040523d82523d6000602084013e62008315565b606091505b509150620083329050816200832c8760206200a406565b62008ea6565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562008394573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620083be91908101906200a4c3565b509050805160011415620086a05760006000805160206203df7983398151915260001c6001600160a01b031663667f9d70898460008151811062008406576200840662009552565b60200260200101516040518363ffffffff1660e01b8152600401620084409291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200845e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620084849190620099fc565b905080620084ef577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58883600081518110620084c457620084c462009552565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620085115760405162461bcd60e51b815260040162002a8a906200a428565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620085499291906200a3ca565b604051602081830303815290604052805190602001208560008151811062008575576200857562009552565b602002602001015160001c6040516200859294939291906200a52d565b60405180910390a181600081518110620085b057620085b062009552565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c1683528452808220905192939092620085fb918a918c91016200a3ca565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162008665918a918c91016200a3ca565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062008c7d565b60018151111562008c0c5760005b815181101562008c055760006000805160206203df7983398151915260001c6001600160a01b031663667f9d708a858581518110620086f157620086f162009552565b60200260200101516040518363ffffffff1660e01b81526004016200872b9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562008749573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200876f9190620099fc565b905080620087d9577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620087ae57620087ae62009552565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620087e8575062008bf0565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c9087908790811062008820576200882062009552565b6020026020010151846040518463ffffffff1660e01b815260040162008849939291906200a2d5565b600060405180830381600087803b1580156200886457600080fd5b505af115801562008879573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200889b919062009a95565b600060405180830381855afa9150503d8060008114620088d8576040519150601f19603f3d011682016040523d82523d6000602084013e620088dd565b606091505b509092509050620088f5816200832c8c60206200a406565b9650508080156200890557508186145b1562008b58577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620089439291906200a3ca565b604051602081830303815290604052805190602001208888815181106200896e576200896e62009552565b602002602001015160001c6040516200898b94939291906200a52d565b60405180910390a1848481518110620089a857620089a862009552565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f1683528452808220905192939092620089f3918d918f91016200a3ca565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c60405160200162008a809291906200a3ca565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206203df7983398151915260001c6001600160a01b03166370ca10bb8c87878151811062008af25762008af262009552565b6020026020010151866040518463ffffffff1660e01b815260040162008b1b939291906200a2d5565b600060405180830381600087803b15801562008b3657600080fd5b505af115801562008b4b573d6000803e3d6000fd5b5050505050505062008c05565b6000805160206203df7983398151915260001c6001600160a01b03166370ca10bb8c87878151811062008b8f5762008b8f62009552565b6020026020010151866040518463ffffffff1660e01b815260040162008bb8939291906200a2d5565b600060405180830381600087803b15801562008bd357600080fd5b505af115801562008be8573d6000803e3d6000fd5b505050505050505b8062008bfc8162009719565b915050620086ae565b5062008c7d565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002a8a565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162008cc19188918a91016200a3ca565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662008d505760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b606482015260840162002a8a565b6005890180546001600160a01b031916905560038901805463ffffffff1916905562008d8160028a016000620091b5565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a1684528252808320905190929162008dc79188918a91016200a3ca565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062008e0e91906200a406565b6001600160401b0381111562008e285762008e286200953c565b6040519080825280601f01601f19166020018201604052801562008e53576020820181803683370190505b50905060005b8351811015620068cc57600084828151811062008e7a5762008e7a62009552565b60200260200101519050808260200260200184015250808062008e9d9062009719565b91505062008e59565b6000806000602085511162008ebd57845162008ec0565b60205b905060005b81811015620042dc5762008edb8160086200a406565b8662008ee8838862009b35565b8151811062008efb5762008efb62009552565b01602001516001600160f81b031916901c92909217918062008f1d8162009719565b91505062008ec5565b610718806200a55e83390190565b610778806200ac7683390190565b6094806200b3ee83390190565b61022a806200b48283390190565b6103f3806200b6ac83390190565b610e81806200ba9f83390190565b614ad0806200c92083390190565b6104e480620113f083390190565b615c4680620118d483390190565b61338a806201751a83390190565b610efe806201a8a483390190565b613169806201b7a283390190565b611f78806201e90b83390190565b611ab4806202088383390190565b61117d806202233783390190565b61395880620234b483390190565b61210b8062026e0c83390190565b6113ec8062028f1783390190565b6116e0806202a30383390190565b616187806202b9e383390190565b611a258062031b6a83390190565b604051806040016040528062009060620091d5565b81526020016200906f620091d5565b905290565b60405180606001604052806003906020820280368337509192915050565b610e60806203358f83390190565b828054620090ae9062009a16565b90600052602060002090601f016020900481019282620090d257600085556200911d565b82601f10620090ed57805160ff19168380011785556200911d565b828001600101855582156200911d579182015b828111156200911d57825182559160200191906001019062009100565b5062004207929150620091f3565b6146f480620343ef83390190565b6150138062038ae383390190565b6040805160a0810190915260006060820181815260808301919091528190815260200162009188604051806040016040528060008152602001600081525090565b81526020016200906f6200904b565b60405180608001604052806004906020820280368337509192915050565b508054600082559060005260206000209081019062003bdd9190620091f3565b60405180604001604052806002906020820280368337509192915050565b5b80821115620042075760008155600101620091f4565b6000602082840312156200921d57600080fd5b5035919050565b8060005b600281101562004c4857815184526020938401939091019060010162009228565b6200925682825162009224565b602081015162002569604084018262009224565b6080810162003f79828462009249565b600081518084526020808501945080840160005b83811015620092b55781516001600160a01b0316875295820195908201906001016200928e565b509495945050505050565b6020815260006200457a60208301846200927a565b60005b83811015620092f2578181015183820152602001620092d8565b8381111562004c485750506000910152565b600081518084526200931e816020860160208601620092d5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620093e857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015620093d157605f19898503018352620093be84865162009304565b948e01949350918d01916001016200939f565b505050978a01979450509188019160010162009359565b50919a9950505050505050505050565b6000602082840312156200940b57600080fd5b813562ffffff811681146200457a57600080fd5b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620094c757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620094b15783516001600160e01b0319168252928b019260019290920191908b019062009485565b50978a0197955050509187019160010162009447565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200952f57603f198886030184526200951c85835162009304565b94509285019290850190600101620094fd565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6040815260006200957d60408301856200927a565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b6001600160a01b0392831681529116602082015260400190565b600081518084526020808501945080840160005b83811015620092b557815187529582019590820190600101620095eb565b6001600160a01b0387811682528616602082015260ff851660408201526060810184905260c06080820181905260009062009647908301856200927a565b82810360a08401526200965b8185620095d7565b9998505050505050505050565b6001600160a01b03848116825283166020820152606060408201819052600090620096969083018462009304565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b815260008251620096c981600d850160208701620092d5565b91909101600d0192915050565b6214d51560ea1b815260008251620096f6816003850160208701620092d5565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b600060001982141562009730576200973062009703565b5060010190565b600081518084526020808501945080840160005b83811015620092b55781516001600160601b0316875295820195908201906001016200974b565b600081518084526020808501945080840160005b83811015620092b557815180516001600160a01b031688528301516001600160601b0316838801526040909601959082019060010162009786565b600081518084526020808501808196508360051b8101915082860160005b858110156200980d578284038952620097fa84835162009772565b98850198935090840190600101620097df565b5091979650505050505050565b6001600160a01b038981168252888116602080840191909152888216604084015290871660608084019190915260ff8716608084015261010060a084018190528651908401819052600092610120850192888201929190855b83811015620098bd57620098ac868651805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b948101949382019360010162009873565b505050505082810360c0840152620098d6818662009737565b905082810360e0840152620098ec8185620097c1565b9b9a5050505050505050505050565b604080519081016001600160401b03811182821017156200992057620099206200953c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200995157620099516200953c565b604052919050565b60006001600160401b038311156200997557620099756200953c565b6200998a601f8401601f191660200162009926565b90508281528383830111156200999f57600080fd5b6200457a836020830184620092d5565b600060208284031215620099c257600080fd5b81516001600160401b03811115620099d957600080fd5b8201601f81018413620099eb57600080fd5b62002bb08482516020840162009959565b60006020828403121562009a0f57600080fd5b5051919050565b600181811c9082168062009a2b57607f821691505b602082108114156200408d57634e487b7160e01b600052602260045260246000fd5b6020815260006200457a602083018462009304565b6001600160e01b031983168152815160009062009a87816004850160208701620092d5565b919091016004019392505050565b6000825162009aa9818460208701620092d5565b9190910192915050565b60006020828403121562009ac657600080fd5b815180151581146200457a57600080fd5b634e487b7160e01b600052601260045260246000fd5b60008262009aff5762009aff62009ad7565b500490565b60008282101562009b195762009b1962009703565b500390565b60008262009b305762009b3062009ad7565b500690565b6000821982111562009b4b5762009b4b62009703565b500190565b60808152600062009b65608083018762009304565b828103602084015262009b79818762009304565b604084019590955250506001600160a01b039190911660609091015292915050565b6001600160a01b038116811462003bdd57600080fd5b60006020828403121562009bc457600080fd5b81516200457a8162009b9b565b60408152600062009be660408301856200927a565b82810360208481019190915284518083528582019282019060005b8181101562009c2157845115158352938301939183019160010162009c01565b5090979650505050505050565b62009c5d8185805163ffffffff16825260208082015161ffff9081169184019190915260409182015116910152565b6001600160601b038316606082015260a0608082015260006200969660a083018462009772565b6b02932b3b4b9ba32b934b733960a51b81526000825162009cad81600c850160208701620092d5565b7f20696e697469616c206f70657261746f727320696e20656163682071756f7275600c939091019283015250606d60f81b602c820152602d01919050565b600060208083526000845481600182811c91508083168062009d0e57607f831692505b85831081141562009d2d57634e487b7160e01b85526022600452602485fd5b87860183815260200181801562009d4d576001811462009d5f5762009d8c565b60ff1986168252878201965062009d8c565b60008b81526020902060005b8681101562009d865781548482015290850190890162009d6b565b83019750505b50949998505050505050505050565b6727b832b930ba37b960c11b81526000825162009dc0816008850160208701620092d5565b9190910160080192915050565b60408152600062009de260408301856200927a565b8281036020840152620096968185620095d7565b6000835162009e0a818460208801620092d5565b6001600160f81b0319939093169190920190815260010192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200457a608083018462009304565b600063ffffffff8381169083168181101562009e785762009e7862009703565b039392505050565b600061014080835262009e968184018762009304565b91505083602083015262009eb860408301845180518252602090810151910152565b60208381015180516080850152015160a083015260408301516200799d60c084018262009249565b6000825162009ef4818460208701620092d5565b6317d05b1d60e21b920191825250600401919050565b60408152601760408201527f5f72616e64557365723a2043726561746564207573657200000000000000000060608201526080602082015260006200457a608083018462009304565b61016960f51b81526000835162009f72816002850160208801620092d5565b600560fb1b600291840191820152835162009f95816003840160208801620092d5565b602960f81b60039290910191820152600401949350505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121562009fd857600080fd5b81516001600160c01b03811681146200457a57600080fd5b600080604083850312156200a00457600080fd5b505080516020909101519092909150565b6000602082840312156200a02857600080fd5b8151600281106200457a57600080fd5b8051600381106200296a57600080fd5b6000602082840312156200a05b57600080fd5b6200457a826200a038565b6000604082840312156200a07957600080fd5b6200a083620098fb565b82518152602083015160208201528091505092915050565b6000602082840312156200a0ae57600080fd5b81516001600160601b03811681146200457a57600080fd5b600063ffffffff8083168185168083038211156200a0e8576200a0e862009703565b01949350505050565b60006001600160601b038381169083168181101562009e785762009e7862009703565b600061ffff808316818114156200a12f576200a12f62009703565b6001019392505050565b60408152602260408201527f5f6465616c52616e64546f6b656e733a206465616c696e672061737365747320606082015261746f60f01b608082015260a0602082015260006200457a60a083018462009304565b6000604082840312156200a1a057600080fd5b6200a1aa620098fb565b825181526200a1bc602084016200a038565b60208201529392505050565b60006001600160601b038083168185168083038211156200a0e8576200a0e862009703565b6000602082840312156200a20057600080fd5b815163ffffffff811681146200457a57600080fd5b600082601f8301126200a22757600080fd5b815160206001600160401b038211156200a245576200a2456200953c565b8160051b6200a25682820162009926565b92835284810182019282810190878511156200a27157600080fd5b83870192505b848310156200a292578251825291830191908301906200a277565b979650505050505050565b6000602082840312156200a2b057600080fd5b81516001600160401b038111156200a2c757600080fd5b62002bb0848285016200a215565b6001600160a01b039390931683526020830191909152604082015260600190565b6040815260006200a32160408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200a32160408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200a38560408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006200a38560408301600a8152690808080808149a59da1d60b21b602082015260400190565b825160009082906020808701845b838110156200a3f6578151855293820193908201906001016200a3d8565b5050948252509092019392505050565b60008160001904831182151516156200a423576200a42362009703565b500290565b6020808252606f908201527f73746453746f726167652066696e642853746453746f72616765293a2050616360408201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560608201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960808201526e39b713ba1039bab83837b93a32b21760891b60a082015260c00190565b600080604083850312156200a4d757600080fd5b82516001600160401b03808211156200a4ef57600080fd5b6200a4fd868387016200a215565b935060208501519150808211156200a51457600080fd5b506200a523858286016200a215565b9150509250929050565b6001600160a01b039490941684526001600160e01b0319929092166020840152604083015260608201526080019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c00336f70657261746f722073686f756c64206e6f206c6f6e6765722068617665207374616b6520696e20616e792071756f72756d736f70657261746f7220616c726561647920686173206269747320696e2071756f72756d206269746d617041304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5063757272656e74206f70657261746f72206269746d61702073686f756c64206e6f7420696e636c7564652071756f72756d736f70657261746f72206c6973742073686f756c642068617665206f6e6520666577657220656e7472795f636f6e66696752616e643a20696e76616c69642066696c6c54797065732c206e6f20666c616773207061737365646f70657261746f7220616c72656164792068617320612072656769737465726564207075626b65795f72616e6456616c75653a20747269656420746f2073656c6563742076616c75652066726f6d20656d707479206172726179746f74616c206f70657261746f7220636f756e742073686f756c64206861766520696e6372656173656420666f7220656163682071756f72756d5f636f6e66696752616e643a20696e76616c6964206d696e696d756d5374616b652c206e6f20666c616773207061737365645f73656c65637452616e643a20747269656420746f2073656c6563742066726f6d20656d7074792071756f72756d206c697374280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35836f70657261746f72496e666f2073686f756c642068617665206f70657261746f7249645f636f6e66696752616e643a20696e76616c6964206e756d537472617465676965732c206e6f20666c616773207061737365646f70657261746f72206c6973742073686f756c642068617665206f6e65206d6f726520656e7472796f70657261746f722073686f756c64206861766520656d70747920696420616e64204e455645525f52454749535445524544207374617475736661696c656420746f20616464206f70657261746f722077656967687420746f206f70657261746f7220616e6420746f74616c207374616b6520696e20656163682071756f72756d746f74616c206f70657261746f7220636f756e742073686f756c6420686176652064656372656173656420666f7220656163682071756f72756d5f636f6e66696752616e643a20696e76616c6964205f7573657254797065732c206e6f20666c616773207061737365646f70657261746f722073686f756c64207374696c6c206861766520612072656769737465726564207075626b65796f70657261746f72496e666f207374617475732073686f756c64206265204445524547495354455245446f70657261746f72207075626b65792073686f756c642068617665206265656e20616464656420746f20656163682071756f72756d2061706b6f70657261746f72207075626b65792073686f756c642068617665206265656e20737562747261637465642066726f6d20656163682071756f72756d2061706b6f70657261746f72496e666f2073686f756c64207374696c6c2068617665206f70657261746f724964885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f6e657752616e646f6d4f70657261746f723a206f70657261746f722073686f756c6420626520726567697374657265646f70657261746f722073686f756c64206861766520726567697374657265642061207075626b65795f636f6e66696752616e643a20696e76616c6964206e756d51756f72756d732c206e6f20666c616773207061737365646f70657261746f7220646964206e6f7420646572656769737465722066726f6d20616c6c2071756f72756d73b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a86661696c656420746f2072656d6f7665206f70657261746f72207765696768742066726f6d20746f74616c207374616b6520666f7220656163682071756f72756d6f70657261746f7220646964206e6f7420726567697374657220666f7220616c6c2071756f72756d736f70657261746f722073686f756c64206e6f74206861766520616e79206269747320696e206269746d617063757272656e74206f70657261746f72206269746d61702073686f756c6420696e636c7564652071756f72756d736f70657261746f722073686f756c642068617665206174206c6561737420746865206d696e696d756d207374616b6520696e20656163682071756f72756d6f70657261746f72496e666f207374617475732073686f756c6420626520524547495354455245446f70657261746f722073686f756c64206265207265676973746572656420746f204156536f70657261746f722073686f756c64206e6f74206265207265676973746572656420746f2074686520415653a26469706673582212202b5328a5946b3ef8f09a6169b96b86ab0656e5a15fca54352cae28e4bf5d213164736f6c634300080c0033 + /// ``` + #[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]W`\x005`\xE0\x1C\x80ck:\xA7.\x11b\0\0\xC7W\x80c\x9C#\xC2\xAB\x11b\0\0\x86W\x80c\x9C#\xC2\xAB\x14b\0\x02\xCAW\x80c\x9D\x8B\x9C\xB4\x14b\0\x02\xE1W\x80c\xB5P\x8A\xA9\x14b\0\x02\xF5W\x80c\xBAAO\xA6\x14b\0\x02\xFFW\x80c\xE2\x0C\x9Fq\x14b\0\x03\x1AW\x80c\xFAv&\xD4\x14b\0\x03$W`\0\x80\xFD[\x80ck:\xA7.\x14b\0\x02hW\x80cm\x14\xA9\x87\x14b\0\x02|W\x80c\x85\"l\x81\x14b\0\x02\x90W\x80c\x91j\x17\xC6\x14b\0\x02\xA9W\x80c\x92\x91\x11\xE0\x14b\0\x02\xB3W`\0\x80\xFD[\x80c-\xBC\xB0L\x11b\0\x01 W\x80c-\xBC\xB0L\x14b\0\x01\xF7W\x80c=\xFB@\xE0\x14b\0\x02\x10W\x80c>^<#\x14b\0\x02$W\x80c?r\x86\xF4\x14b\0\x02.W\x80cC\tc9\x14b\0\x028W\x80cf\xD9\xA9\xA0\x14b\0\x02OW`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01bW\x80c\n\x92T\xE4\x14b\0\x01\x93W\x80c\x13\x1E/\x18\x14b\0\x01\x9FW\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xC5W\x80c*\xDE8\x80\x14b\0\x01\xDEW[`\0\x80\xFD[`5Tb\0\x01v\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[b\0\x01\x9Db\0\x032V[\0[b\0\x01\xB6b\0\x01\xB06`\x04b\0\x92\nV[b\0\x172V[`@Qb\0\x01\x8A\x91\x90b\0\x92jV[b\0\x01\xCFb\0\x1B\xE8V[`@Qb\0\x01\x8A\x91\x90b\0\x92\xC0V[b\0\x01\xE8b\0\x1CLV[`@Qb\0\x01\x8A\x91\x90b\0\x932V[b\0\x02\x01`4T\x81V[`@Q\x90\x81R` \x01b\0\x01\x8AV[`.Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xCFb\0\x1D\x9AV[b\0\x01\xCFb\0\x1D\xFCV[b\0\x01\x9Db\0\x02I6`\x04b\0\x93\xF8V[b\0\x1E^V[b\0\x02Yb\0 \xE1V[`@Qb\0\x01\x8A\x91\x90b\0\x94\x1FV[`\x1ETb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\x9Ab\0!\xCBV[`@Qb\0\x01\x8A\x91\x90b\0\x94\xD6V[b\0\x02Yb\0\"\xA5V[b\0\x01\x9Db\0\x02\xC46`\x04b\0\x93\xF8V[b\0#\x8FV[b\0\x01\x9Db\0\x02\xDB6`\x04b\0\x93\xF8V[b\0%nV[`3Tb\0\x01v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02\x9Ab\0'^V[b\0\x03\tb\0(8V[`@Q\x90\x15\x15\x81R` \x01b\0\x01\x8AV[b\0\x01\xCFb\0)oV[`\x07Tb\0\x03\t\x90`\xFF\x16\x81V[`@Qb\0\x03@\x90b\0\x8F&V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03]W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x03\xB9Wb\0\x03\xB9b\0\x95RV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x03\xEB\x90b\0\x8F4V[b\0\x03\xF8\x92\x91\x90b\0\x95hV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\x15W=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x04G\x90b\0\x8FBV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04dW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x04u\x90b\0\x8FOV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\x92W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x04\xC1\x90b\0\x8F]V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xDEW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\x13\x90b\0\x8FkV[b\0\x05 \x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05=W=`\0\x80>=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05r\x90b\0\x8FkV[b\0\x05\x7F\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\x9CW=`\0\x80>=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xD1\x90b\0\x8FkV[b\0\x05\xDE\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x060\x90b\0\x8FkV[b\0\x06=\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06ZW=`\0\x80>=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06\x8F\x90b\0\x8FkV[b\0\x06\x9C\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xB9W=`\0\x80>=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x06\xF7\x90b\0\x8FyV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07;W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07i\x90b\0\x8F\x87V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07\x96W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x07\xDA\x90b\0\x8F\x95V[`\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\x08\x17W=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08I\x90b\0\x8F\xA3V[`\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\x08\x86W=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xB1\x90b\0\x8F\xB1V[b\0\x08\xBE\x92\x91\x90b\0\x95\xBDV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\xDBW=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\t\x1B\x90b\0\x8F\xBFV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tgW=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\t\x8B\x90b\0\x8F\xCDV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\xB8W=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\n\x1E\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0\x96\tV[`@\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\ng\x93\x92\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\x97W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B*\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0BEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0BZW=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\xE6\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\x01W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\x16W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0C\xAC\x93\x91\x16\x91\x8A\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0C\xC7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C\xDCW=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\rh\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r\x98W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\r\xB9\x91Pb\0\x8F\xDBV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\xE6W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0E\xACW`\0b\0\x0E!\x82b\0*\x9BV[\x90P`\0\x81`@Q` \x01b\0\x0E8\x91\x90b\0\x96\x9FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E^\x91\x90b\0\x96\xD6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0E\x93\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0+\xB8V[PPP\x80\x80b\0\x0E\xA3\x90b\0\x97\x19V[\x91PPb\0\x0E\nV[P`@Qb\0\x0E\xBB\x90b\0\x8F\xE9V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0E\xD8W=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0F7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0FLW=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x0Fo\x90b\0\x8FkV[b\0\x0F|\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\x99W=`\0\x80>=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0F\xCE\x90b\0\x8FkV[b\0\x0F\xDB\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\xF8W=`\0\x80>=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10-\x90b\0\x8FkV[b\0\x10:\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10WW=`\0\x80>=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\x8C\x90b\0\x8FkV[b\0\x10\x99\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\xB6W=`\0\x80>=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\xEB\x90b\0\x8FkV[b\0\x10\xF8\x92\x91\x90b\0\x95\x94V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\x15W=`\0\x80>=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x11qW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11\x86W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x11\xB0\x90b\0\x8F\xF7V[b\0\x11\xBD\x92\x91\x90b\0\x95\xBDV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xDAW=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xFE\x90b\0\x90\x05V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12+W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x12O\x90b\0\x90\x13V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12|W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x12\xAE\x90b\0\x90!V[`\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\x12\xEBW=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\x99\xA8\x8E\xC4\x92b\0\x13&\x92\x16\x90\x88\x90`\x04\x01b\0\x95\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13VW=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x13\x93\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\x95\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xC3W=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x14\0\x92\x90\x91\x16\x90\x86\x90`\x04\x01b\0\x95\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x140W=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94Pc\x99\xA8\x8E\xC4\x93Pb\0\x14m\x92\x90\x91\x16\x90\x85\x90`\x04\x01b\0\x95\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\x9DW=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x15\0W=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x158\x90b\0\x90/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\x15}W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x16\x08V[`@\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\x15\xDAW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x16>V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16(W\x90P[P`@Q`$\x01b\0\x16X\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0\x98\x1AV[`@\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\x16\xA1\x93\x92\x91`\x04\x01b\0\x96hV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16\xBCW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16\xD1W=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x16\xE3\x90b\0\x90=V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x17\0W=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x17\x83b\0*\x9BV[\x81`\x03\x81Q\x81\x10b\0\x18TWb\0\x18Tb\0\x95RV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x18\x8FWb\0\x18\x8Fb\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x18\xD6\x90\x85\x90`\x04\x01b\0\x94\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\xF6W=`\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\x99\xAFV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x198\x91\x90b\0\x99\xFCV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x19uWb\0\x19ub\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x19\xB9\x90\x85\x90`\x04\x01b\0\x94\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x03\x91\x90\x81\x01\x90b\0\x99\xAFV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\x1B\x91\x90b\0\x99\xFCV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x1ANWb\0\x1ANb\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1A\x92\x90\x85\x90`\x04\x01b\0\x94\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1A\xB2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\xDC\x91\x90\x81\x01\x90b\0\x99\xAFV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\xF4\x91\x90b\0\x99\xFCV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1B4Wb\0\x1B4b\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1Bx\x90\x85\x90`\x04\x01b\0\x94\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B\x98W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1B\xC2\x91\x90\x81\x01\x90b\0\x99\xAFV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\xDA\x91\x90b\0\x99\xFCV[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1DyW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1C\xE5\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1D\x13\x90b\0\x9A\x16V[\x80\x15b\0\x1DdW\x80`\x1F\x10b\0\x1D8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1DdV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1DFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\xC3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1CpV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R``\x81\x01\x82\x90Rb\0\x1E\x8E\x91\x83\x91b\0.\xE4V[`\0b\0\x1E\x9Ab\x007\x86V[\x90P`\0b\0\x1F;`B\x80Tb\0\x1E\xB1\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1E\xDF\x90b\0\x9A\x16V[\x80\x15b\0\x1F0W\x80`\x1F\x10b\0\x1F\x04Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1F0V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1F\x12W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\09?V[\x90Pb\0\x1FH\x82b\0;\x0FV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0\x1Fv\x90\x84\x90`\x04\x01b\0\x9AMV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1F\x96W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x1F\xBC\x91\x90b\0\x99\xFCV[Pb\0\x1F\xC9\x82\x82b\0;\xE0V[`\0b\0\x1F\xD6\x82b\09?V[`@Qc\xCAO-\x97`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xCAO-\x97\x90b\0 \x07\x90\x84\x90`\x04\x01b\0\x9AMV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0 \"W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0 7W=`\0\x80>=`\0\xFD[PPPPb\0 G\x83\x82b\0=\xB9V[`\0b\0 U\x83\x83b\0?FV[\x90P\x80Q`\0\x14b\0 \xCFW`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xCAO-\x97\x90b\0 \x8F\x90\x84\x90`\x04\x01b\0\x9AMV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0 \xAAW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0 \xBFW=`\0\x80>=`\0\xFD[PPPPb\0 \xCF\x84\x82b\0=\xB9V[b\0 \xDA\x84b\0?\x7FV[PPPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0!\xB2W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0!sW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0!\x05V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\"\x11\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\"?\x90b\0\x9A\x16V[\x80\x15b\0\"\x90W\x80`\x1F\x10b\0\"dWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\"\x90V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\"rW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0!\xEFV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0#vW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0#7W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\"\xC9V[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R``\x81\x01\x82\x90Rb\0#\xBF\x91\x83\x91b\0.\xE4V[`\0b\0#\xCBb\x007\x86V[\x90P`\0`B\x80Tb\0#\xDE\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0$\x0C\x90b\0\x9A\x16V[\x80\x15b\0$]W\x80`\x1F\x10b\0$1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0$]V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0$?W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90Pb\0$o\x82b\0;\x0FV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0$\x9D\x90\x84\x90`\x04\x01b\0\x9AMV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0$\xBDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0$\xE3\x91\x90b\0\x99\xFCV[Pb\0$\xF0\x82\x82b\0;\xE0V[`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\xCAO-\x97\x90b\0%\x1E\x90\x84\x90`\x04\x01b\0\x9AMV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0%9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0%NW=`\0\x80>=`\0\xFD[PPPPb\0%^\x82\x82b\0=\xB9V[b\0%i\x82b\0?\x7FV[PPPV[`@\x80Q`\x80\x81\x01\x82R`\x07\x80\x82R` \x82\x01R`\x03\x91\x81\x01\x82\x90R``\x81\x01\x82\x90Rb\0%\x9E\x91\x83\x91b\0.\xE4V[`\0b\0%\xAAb\x007\x86V[\x90P`\0b\0%\xC1`B\x80Tb\0\x1E\xB1\x90b\0\x9A\x16V[\x90Pb\0%\xCE\x82b\0;\x0FV[`@Qc \x8CmS`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x821\xB5L\x90b\0%\xFC\x90\x84\x90`\x04\x01b\0\x9AMV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0&\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0&B\x91\x90b\0\x99\xFCV[Pb\0&O\x82\x82b\0;\xE0V[`\0b\0&\\\x82b\09?V[`@Qc\xCAO-\x97`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xCAO-\x97\x90b\0&\x8D\x90\x84\x90`\x04\x01b\0\x9AMV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0&\xA8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0&\xBDW=`\0\x80>=`\0\xFD[PPPPb\0&\xCD\x83\x82b\0=\xB9V[`\0b\0&\xDA\x82b\09?V[`@Qc \x8CmS`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x821\xB5L\x90b\0'\x0B\x90\x84\x90`\x04\x01b\0\x9AMV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0'+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0'Q\x91\x90b\0\x99\xFCV[Pb\0 \xDA\x84\x82b\0;\xE0V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D\x91W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0'\xA4\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0'\xD2\x90b\0\x9A\x16V[\x80\x15b\0(#W\x80`\x1F\x10b\0'\xF7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0(#V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0(\x05W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0'\x82V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0([WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0)jW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0(\xEC\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\0\x9AbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0)\x08\x91b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0)GW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0)LV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0)f\x91\x90b\0\x9A\xB3V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1CBW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1C#WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0*\x18b\0\x90tV[\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\x15b\0*MWb\0*OV[\xFE[P\x80b\0*\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\0*\xC0WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0*\xF0W\x80b\0*\xD7\x81b\0\x97\x19V[\x91Pb\0*\xE8\x90P`\n\x83b\0\x9A\xEDV[\x91Pb\0*\xC4V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0+\rWb\0+\rb\0\x95=`\0\xFD[P`'T`1T`!T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92cH\\\xC9U`\xE0\x1B\x92b\0,8\x92\x88\x92\x90\x91\x16\x90`$\x01b\0\x95\xBDV[`@\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\x90Qb\0,w\x90b\0\x8FkV[b\0,\x85\x93\x92\x91\x90b\0\x96hV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0,\xA2W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\0-\x03Wb\0-\x03b\0\x95RV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0-iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0-\x8F\x91\x90b\0\x9B\xB1V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0-\xD1W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0-\xE6W=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\0.\x1E\x90\x85\x90\x85\x90`\x04\x01b\0\x9B\xD1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0.9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0.NW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[`@\x80Q\x81\x81R`\x1F\x81\x83\x01R\x7F_configRand: set random seed to\0``\x82\x01Rb\xFF\xFF\xFF\x85\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`@Q`\x01`\x01`\xE8\x1B\x03\x19`\xE8\x85\x90\x1B\x16` \x82\x01R`#\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0/}\x82b\0@/V[\x80Qb\0/\x93\x91`8\x91` \x90\x91\x01\x90b\0\x90\xA0V[P\x80Qb\0/\xA1\x90b\0@/V[\x80Qb\0/\xB7\x91`9\x91` \x90\x91\x01\x90b\0\x90\xA0V[Pb\0/\xC7\x81` \x01Qb\0@/V[\x80Qb\0/\xDD\x91`:\x91` \x90\x91\x01\x90b\0\x90\xA0V[Pb\0/\xED\x81`@\x01Qb\0@/V[\x80Qb\x000\x03\x91`;\x91` \x90\x91\x01\x90b\0\x90\xA0V[Pb\x000\x13\x81``\x01Qb\0@/V[\x80Qb\x000)\x91`<\x91` \x90\x91\x01\x90b\0\x90\xA0V[Pb\x000c`8\x80Tb\x000=\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xDEO`0\x919b\0@\x93V[b\x000\x9C`9\x80Tb\x000v\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`0\x81R` \x01b\x03\xDF\xF2`0\x919b\0@\x93V[b\x000\xD5`:\x80Tb\x000\xAF\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xDD9`3\x919b\0@\x93V[b\x001\x0E`;\x80Tb\x000\xE8\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xDC\x91`2\x919b\0@\x93V[b\x001G`<\x80Tb\x001!\x90b\0\x9A\x16V[\x90P`\0\x14\x15`@Q\x80``\x01`@R\x80`/\x81R` \x01b\x03\xDB\xCE`/\x919b\0@\x93V[b\x001Qb\0@\xCCV[`@\x81\x90Ub\x001g\x90`\x01\x90\x81\x90\x1Bb\0\x9B\x04V[`A\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\x001\x91\x90b\0B\x0BV[\x80Qb\x001\xA7\x91`B\x91` \x90\x91\x01\x90b\0\x90\xA0V[P`@\x80T\x81Q\x82\x81R`0\x92\x81\x01\x92\x90\x92R\x7F_configRand: number of quorums b``\x83\x01Ro\x19Z[\x99\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`\x82\x1B`\x80\x83\x01R` \x82\x01R`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x90`\xA0\x01`@Q\x80\x91\x03\x90\xA1`@\x80Q``\x81\x01\x82R`\x05\x81Ra:\x98` \x82\x01R`\x96\x91\x81\x01\x91\x90\x91R`\0[`@T\x81\x10\x15b\x004\xB9W`\0b\x002Sb\0B\xE6V[\x90P`\0b\x002ab\0D\xE3V[\x90P`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x83`@Qb\x002\xBC\x91\x90`@\x80\x82R`\x1C\x90\x82\x01R\x7F_configRand: creating quorum\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x83Q`@Q`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x91b\x003\x1B\x91`@\x80\x82R`\x14\x90\x82\x01Rs\x0BH\x13X^\x08\x1B\xDC\x19\\\x98]\x1B\xDC\x88\x18\xDB\xDD[\x9D`b\x1B``\x82\x01Rc\xFF\xFF\xFF\xFF\x91\x90\x91\x16` \x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x82Q`@Qb\x003}\x91\x90`@\x80\x82R`\x1B\x90\x82\x01R\x7F- Num strategies considered\0\0\0\0\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\x0F\x81\x83\x01Rn- Minimum stake`\x88\x1B``\x82\x01R`\x01`\x01``\x1B\x03\x83\x16` \x82\x01R\x90Q`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x91\x81\x90\x03`\x80\x01\x90\xA1`\x1CT`3T`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x004\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x0043W=`\0\x80>=`\0\xFD[PP`(T`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xD7[L\x88\x91Pb\x004m\x90\x87\x90\x85\x90\x87\x90`\x04\x01b\0\x9C.V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\x004\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\x004\x9DW=`\0\x80>=`\0\xFD[PPPPPP\x80\x80b\x004\xB0\x90b\0\x97\x19V[\x91PPb\x002=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\x005\xAA\x91\x90b\0\x99\xFCV[P`\0[`B\x80Tb\x005\xBD\x90b\0\x9A\x16V[\x90P\x81\x10\x15b\x006dW`\0`B\x82\x81Tb\x005\xD9\x90b\0\x9A\x16V[\x81\x10b\x005\xEAWb\x005\xEAb\0\x95RV[\x81T`\x01\x16\x15b\x006\nW\x90`\0R` `\0 \x90` \x91\x82\x82\x04\x01\x91\x90\x06[\x90T\x90\x1A`\x01`\xF8\x1B\x02`\xF8\x1C`\0\x90\x81R`D` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90UP\x80b\x006[\x81b\0\x97\x19V[\x91PPb\x005\xAEV[PP\x80\x80b\x006s\x90b\0\x97\x19V[\x91PPb\x005\x1DV[P`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\x006\xC4\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\x007(\x90` \x80\x82R`$\x90\x82\x01R\x7F_configRand complete; starting t`@\x82\x01Rcest!`\xE0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\x007w\x90` \x80\x82R`\x15\x90\x82\x01Rt=====================`X\x1B`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0\x80b\x007\x96`CTb\0*\x9BV[`@Q` \x01b\x007\xA8\x91\x90b\0\x9D\x9BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R`C\x80T\x91\x92P`\0b\x007\xCC\x83b\0\x97\x19V[\x91\x90PUP`\0\x80`\0b\x007\xE1\x84b\0E\xF3V[\x92P\x92P\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16c*4\xAD\xE8`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\08#W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\088W=`\0\x80>=`\0\xFD[PP`@Qc\r\xA6m\xEB`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x92Pcm3oX\x91Pb\08l\x90\x85\x90\x85\x90`\x04\x01b\0\x9D\xCDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\08\x87W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\08\x9CW=`\0\x80>=`\0\xFD[PP`\x1DT`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rb\096\x94P\x90\x91\x16\x91Pcmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\08\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\09\x16\x91\x90b\0\x9A\xB3V[`@Q\x80``\x01`@R\x80`1\x81R` \x01b\x03\xDF\x99`1\x919b\0@\x93V[P\x90\x93\x92PPPV[``b\09k\x82Q`\0\x14\x15`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xDC\xC3`3\x919b\0@\x93V[`\0\x80[\x83Q\x81\x10\x15b\09\xD7Wb\09\x83b\0G\x8FV[\x15b\09\xC2Wb\09\xBF\x84\x82\x81Q\x81\x10b\09\xA2Wb\09\xA2b\0\x95RV[` \x91\x01\x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B`\x01`\x01`\xC0\x1B\x03\x84\x16\x17\x90V[\x91P[\x80b\09\xCE\x81b\0\x97\x19V[\x91PPb\09oV[P`\x01`\x01`\xC0\x1B\x03\x81\x16b\0:!Wb\0:\x1E\x83`\0\x81Q\x81\x10b\0:\x01Wb\0:\x01b\0\x95RV[` \x91\x01\x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B`\x01`\x01`\xC0\x1B\x03\x83\x16\x17\x90V[\x90P[`\0b\0:7\x82`\x01`\x01`\xC0\x1B\x03\x16b\0B\x0BV[\x90P`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x84Q`@Qb\0:\x93\x91\x90`@\x80\x82R`\x1F\x90\x82\x01R\x7F_selectRand: input quorum count\0``\x82\x01R` \x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x81Q`@Qb\0;\0\x91\x90`@\x80\x82R`\"\x90\x82\x01R\x7F_selectRand: selected quorum cou``\x82\x01Ra\x1B\x9D`\xF2\x1B`\x80\x82\x01R` \x81\x01\x91\x90\x91R`\xA0\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x93\x92PPPV[b\0;I`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01u\x18\xDA\x19X\xDA\xD7\xD3\x99]\x99\\\x97\xD4\x99Y\xDA\\\xDD\x19\\\x99Y`R\x1B\x81RP\x82b\0G\xA5V[b\0;n\x81`@Q\x80``\x01`@R\x80`9\x81R` \x01b\x03\xDD\x94`9\x919b\0HZV[b\0;\x93\x81`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x03\xDB)`*\x919b\0H\xA1V[b\0;\xB8\x81`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xDB\xFD`(\x919b\0I\xA7V[b\0;\xDD\x81`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xE1\xBB`,\x919b\0J\xBDV[PV[b\0<\x18`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01scheck_Register_State``\x1B\x81RP\x83b\0G\xA5V[b\0<=\x82`@Q\x80``\x01`@R\x80`#\x81R` \x01b\x03\xDD\x16`#\x919b\0K[V[b\0\x81R` \x01b\x03\xE11`>\x919b\0R*V[b\0=E\x82\x82`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01b\x03\xDD\xCD`H\x919b\0S\xF2V[b\0=j\x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xDCW`:\x919b\0T\x10V[b\0=\x90\x82\x82`@Q\x80``\x01`@R\x80`(\x81R` \x01b\x03\xDDl`(\x919b\0T\xAFV[b\0=\xB5\x82`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x03\xE1\x97`$\x919b\0U\xA3V[PPV[b\0=\xF3`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01ucheck_Deregister_State`P\x1B\x81RP\x83b\0G\xA5V[b\0>\x18\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xDFP`)\x919b\0K[V[b\0>>\x82\x82`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xDBs`2\x919b\0V1V[b\0>d\x82\x82`@Q\x80``\x01`@R\x80`,\x81R` \x01b\x03\xE0\"`,\x919b\0W\x81V[b\0>\x89\x82`@Q\x80``\x01`@R\x80`.\x81R` \x01b\x03\xDE\x7F`.\x919b\0N\xC1V[b\0>\xAF\x82\x82`@Q\x80``\x01`@R\x80`@\x81R` \x01b\x03\xDF\x10`@\x919b\0XHV[b\0>\xD5\x82\x82`@Q\x80``\x01`@R\x80`3\x81R` \x01b\x03\xDA\xF6`3\x919b\0YUV[b\0>\xFB\x82\x82`@Q\x80`\x80\x01`@R\x80`A\x81R` \x01b\x03\xE0n`A\x919b\0Z\x9AV[b\0? \x81`@Q\x80``\x01`@R\x80`:\x81R` \x01b\x03\xDE\x15`:\x919b\0[jV[b\0=\xB5\x82\x82`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xDB\xA5`)\x919b\0[\xFCV[```\0b\0?U\x84b\0\\\xC4V[\x90P`\0b\0?d\x84b\0\\\xC4V[\x90Pb\0?t\x81\x19\x83\x16b\0B\x0BV[\x92PPP[\x92\x91PPV[b\0?\xC0`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7Fcheck_CompleteDeregister_State\0\0\x81RP\x82b\0G\xA5V[b\0?\xE5\x81`@Q\x80``\x01`@R\x80`+\x81R` \x01b\x03\xE0\xD8`+\x919b\0H\xA1V[b\0@\n\x81`@Q\x80``\x01`@R\x80`)\x81R` \x01b\x03\xDFP`)\x919b\0K[V[b\0;\xB8\x81`@Q\x80``\x01`@R\x80`*\x81R` \x01b\x03\xDE\xAD`*\x919b\0^WV[```\0[a\x01\0\x81\x10\x15b\0@\x8DW`\x01\x81\x1B\x83\x81\x16\x15b\0@yW`@Qb\0@g\x90\x84\x90`\x01\x85\x1B`\xF8\x1B\x90` \x01b\0\x9D\xF6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x92P[Pb\0@\x85\x81b\0\x97\x19V[\x90Pb\0@4V[P\x91\x90PV[\x81b\0=\xB5W`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x81`@Qb\0@\xB9\x91\x90b\0\x9E'V[`@Q\x80\x91\x03\x90\xA1b\0=\xB5\x82b\0^\xD7V[`\0\x80b\0Al`9\x80Tb\0@\xE2\x90b\0\x9A\x16V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0A\x10\x90b\0\x9A\x16V[\x80\x15b\0AaW\x80`\x1F\x10b\0A5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0AaV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0ACW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPb\0_>V[\x90P`\x01\x81\x14\x15b\0A\x80W`\x01\x91PP\x90V[`\x02\x81\x14\x15b\0A\x92W`\x02\x91PP\x90V[`\x04\x81\x14\x15b\0A\xB0Wb\0A\xAA`\x03`\nb\0_\xA7V[\x91PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7F_randQuorumCount: flag not recog`D\x82\x01Rd\x1B\x9A^\x99Y`\xDA\x1B`d\x82\x01R`\x84\x01b\0*\x8AV[P\x90V[```\0\x80b\0B\x1B\x84b\0`iV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15b\0B9Wb\0B9b\0\x95=`\0\xFD[P\x91Pb\0F\xDEV[`\x02\x81\x14\x15b\0F\xDEW\x87`@Q` \x01b\0F\x8D\x91\x90b\0\x9E\xE0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x97P\x87\x84\x84`@Qb\0F\xAF\x90b\0\x919V[b\0F\xBD\x93\x92\x91\x90b\0\x9E\x80V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0F\xDAW=`\0\x80>=`\0\xFD[P\x91P[`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0G-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0GW\x91\x90\x81\x01\x90b\0\x99\xAFV[`@Qb\0Gf\x91\x90b\0\x9F\nV[`@Q\x80\x91\x03\x90\xA1`\0\x80b\0G|\x84b\0bkV[\x94\x9B\x90\x9AP\x93\x98P\x92\x96PPPPPPPV[`\0b\0G\x9F`\0`\x01b\0_\xA7V[\x15\x91\x90PV[`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R\x82\x82`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0G\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0H\x1F\x91\x90\x81\x01\x90b\0\x99\xAFV[`@Q` \x01b\0H2\x92\x91\x90b\0\x9FSV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0HN\x91b\0\x9AMV[`@Q\x80\x91\x03\x90\xA1PPV[`\0b\0Hg\x83b\0d\xDBV[\x80Q\x90\x91Pb\0Hz\x90`\0\x84b\0e_V[b\0%i`\0\x82` \x01Q`\x02\x81\x11\x15b\0H\x99Wb\0H\x99b\0\x9F\xAFV[\x14\x83b\0@\x93V[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x84`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0I\x06W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0I,\x91\x90b\0\x99\xFCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0IK\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0IiW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0I\x8F\x91\x90b\0\x9F\xC5V[\x90Pb\0%i`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x83b\0@\x93V[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x83\x92\x91\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0I\xF3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0J\x19\x91\x90b\0\x9F\xF0V[`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x93\x95P\x91\x93P`\0\x92\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0JkW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0J\x91\x91\x90b\0\x99\xFCV[\x90Pb\0J\xA1\x83`\0\x86b\0e\x9BV[b\0J\xAF\x82`\0\x86b\0e\x9BV[b\0 \xDA\x81`\0\x86b\0e_V[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0J\xF9\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\x95\xBDV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0K\x17W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0K=\x91\x90b\0\xA0\x15V[\x90Pb\0%i`\0[\x82`\x01\x81\x11\x15b\0H\x99Wb\0H\x99b\0\x9F\xAFV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0K\x9CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0K\xC2\x91\x90b\0\x99\xFCV[`(T`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0L\x13W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0L9\x91\x90b\0\x99\xFCV[\x90Pb\0LH\x82\x82\x85b\0e_V[PPPPV[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0L\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0L\xC0\x91\x90b\0\xA0HV[\x90Pb\0%i`\x01[\x82`\x02\x81\x11\x15b\0H\x99Wb\0H\x99b\0\x9F\xAFV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0MCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Mi\x91\x90b\0\x99\xFCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0M\x88\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0M\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0M\xCC\x91\x90b\0\x9F\xC5V[\x90P`\0b\0M\xDB\x84b\0\\\xC4V[\x90Pb\0 \xDAb\0M\xF9`\x01`\x01`\xC0\x1B\x03\x80\x84\x16\x90\x85\x16\x81\x16\x14\x90V[\x84b\0@\x93V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0NAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Ng\x91\x90b\0\x99\xFCV[\x90P`\0b\0Nv\x84b\0\\\xC4V[\x90P`\0b\0N\x85\x83b\0e\xD7V[\x90P`\0b\0N\x94\x84b\0fHV[\x90Pb\0N\xB8`\x01`\x01`\xC0\x1B\x03\x82\x16\x84\x17\x83`\x01`\x01`\xC0\x1B\x03\x16\x14\x86b\0@\x93V[PPPPPPPV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0O\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0O'\x91\x90b\0\xA0fV[`*T`@Qb\xA1\xF4\xCB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x83\x92\x16\x90b\xA1\xF4\xCB\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0OuW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0O\x9B\x91\x90b\0\x9F\xF0V[\x84Q`\0\x90\x81R` \x80\x87\x01Q\x90R`@\x81 \x92\x94P\x90\x92P\x90`*T`@Qc\x03x\xA7\xEB`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDE)\xFA\xC0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0P\x06W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0P,\x91\x90b\0\x99\xFCV[`*T`@Qct]\xCDs`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE8\xBB\x9A\xE6\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0P|W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0P\xA2\x91\x90b\0\x9B\xB1V[\x90Pb\0P\xB5\x86`\0\x01Q\x86\x89b\0e\x9BV[b\0P\xC6\x86` \x01Q\x85\x89b\0e\x9BV[b\0P\xD3\x83\x83\x89b\0e_V[b\0P\xE0\x88\x82\x89b\0g;V[PPPPPPPPV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Q*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0QP\x91\x90b\0\xA0fV[\x90P`\0b\0Q_\x84b\0g\x89V[\x90P`\0b\0Qn\x85b\0h\xD3V[\x90P`\0[\x85Q\x81\x10\x15b\0N\xB8W`\0b\0Q\xB0\x85\x84\x84\x81Q\x81\x10b\0Q\x99Wb\0Q\x99b\0\x95RV[` \x02` \x01\x01Qb\0i`\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90Pb\0Q\xE3\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0Q\xD0Wb\0Q\xD0b\0\x95RV[` \x02` \x01\x01Q`\0\x01Q\x88b\0e\x9BV[b\0R\x14\x81` \x01Q\x85\x84\x81Q\x81\x10b\0R\x01Wb\0R\x01b\0\x95RV[` \x02` \x01\x01Q` \x01Q\x88b\0e\x9BV[P\x80b\0R!\x81b\0\x97\x19V[\x91PPb\0QsV[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0RkW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0R\x91\x91\x90b\0\x99\xFCV[\x90P`\0[\x83Q\x81\x10\x15b\0 \xDAW`\0\x84\x82\x81Q\x81\x10b\0R\xB7Wb\0R\xB7b\0\x95RV[\x01` \x01Q`+T`@Qc\xC4gx\xA5`\xE0\x1B\x81R`\xF8\x92\x90\x92\x1C`\x04\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xC4gx\xA5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0S\x11W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0S7\x91\x90b\0\xA0\x9BV[`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x87\x90R`\xFF\x85\x16`$\x82\x01R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0S\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0S\xB6\x91\x90b\0\xA0\x9BV[\x90Pb\0S\xD9\x82`\x01`\x01``\x1B\x03\x16\x82`\x01`\x01``\x1B\x03\x16\x10\x15\x87b\0@\x93V[PPP\x80\x80b\0S\xE9\x90b\0\x97\x19V[\x91PPb\0R\x96V[`\0b\0T\0\x84\x84b\0i\xF9V[\x90Pb\0LH\x84\x84\x83\x85b\0k;V[`\0b\0T\x1D\x83b\0l\x82V[\x90P`\0b\0T,\x84b\0m\xB2V[\x90P`\0[\x84Q\x81\x10\x15b\0 \xDAWb\0T\x9A\x83\x82\x81Q\x81\x10b\0TTWb\0TTb\0\x95RV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x83\x83\x81Q\x81\x10b\0TwWb\0Twb\0\x95RV[` \x02` \x01\x01Q`\x01b\0T\x8D\x91\x90b\0\xA0\xC6V[c\xFF\xFF\xFF\xFF\x16\x86b\0e\x9BV[\x80b\0T\xA6\x81b\0\x97\x19V[\x91PPb\0T1V[`\0b\0T\xBC\x83b\0n?V[\x90P`\0b\0T\xCB\x84b\0o\x81V[\x90P`\0[\x84Q\x81\x10\x15b\0U\x9BWb\0U/\x83\x82\x81Q\x81\x10b\0T\xF3Wb\0T\xF3b\0\x95RV[` \x02` \x01\x01QQ\x83\x83\x81Q\x81\x10b\0U\x11Wb\0U\x11b\0\x95RV[` \x02` \x01\x01QQ`\x01b\0U(\x91\x90b\0\x9B5V[\x86b\0e\x9BV[b\0Ubb\0U[\x84\x83\x81Q\x81\x10b\0ULWb\0ULb\0\x95RV[` \x02` \x01\x01Q\x88b\0p\x0EV[\x85b\0@\x93V[b\0U\x86b\0U\x7F\x83\x83\x81Q\x81\x10b\0ULWb\0ULb\0\x95RV[\x85b\0p\xD6V[\x80b\0U\x92\x81b\0\x97\x19V[\x91PPb\0T\xD0V[PPPPPPV[`\x1ET`)T`@QcI\x07]\xA3`\xE0\x1B\x81R`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x92cI\x07]\xA3\x92b\0U\xDF\x92\x90\x91\x16\x90\x87\x90`\x04\x01b\0\x95\xBDV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0U\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0V#\x91\x90b\0\xA0\x15V[\x90Pb\0%i`\x01b\0KFV[`\0`(`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x87\x1E\xF0I\x85`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0V\x96W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0V\xBC\x91\x90b\0\x99\xFCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0V\xDB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0V\xF9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0W\x1F\x91\x90b\0\x9F\xC5V[\x90P`\0[\x83Q\x81\x10\x15b\0 \xDAW`\0\x84\x82\x81Q\x81\x10b\0WEWb\0WEb\0\x95RV[` \x91\x01\x01Q`\xF8\x1C\x90Pb\0Wk`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x83\x1C\x81\x16\x14b\0U\x7FV[P\x80b\0Wx\x81b\0\x97\x19V[\x91PPb\0W$V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0W\xC2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0W\xE8\x91\x90b\0\x99\xFCV[\x90P`\0b\0W\xF7\x84b\0\\\xC4V[\x90P`\0b\0X\x06\x83b\0e\xD7V[\x90P`\0b\0X\x15\x84b\0fHV[\x90Pb\0X1\x83\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x84\x14[\x86b\0@\x93V[b\0N\xB8\x82\x84\x16`\x01`\x01`\xC0\x1B\x03\x16\x15b\0X*V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xAF\xA1\xC77`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0X\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0X\xAE\x91\x90b\0\xA0fV[\x90P`\0b\0X\xBD\x84b\0g\x89V[\x90P`\0b\0X\xCC\x85b\0h\xD3V[\x90P`\0[\x85Q\x81\x10\x15b\0N\xB8W`\0b\0Y\x01b\0X\xEC\x86b\0p\xE3V[\x84\x84\x81Q\x81\x10b\0Q\x99Wb\0Q\x99b\0\x95RV[\x90Pb\0Y!\x81`\0\x01Q\x85\x84\x81Q\x81\x10b\0Q\xD0Wb\0Q\xD0b\0\x95RV[b\0Y?\x81` \x01Q\x85\x84\x81Q\x81\x10b\0R\x01Wb\0R\x01b\0\x95RV[P\x80b\0YL\x81b\0\x97\x19V[\x91PPb\0X\xD1V[`\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0Y\x96W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Y\xBC\x91\x90b\0\x99\xFCV[\x90P`\0[\x83Q\x81\x10\x15b\0 \xDAW`\0\x84\x82\x81Q\x81\x10b\0Y\xE2Wb\0Y\xE2b\0\x95RV[\x01` \x01Q`+T`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x86\x90R`\xF8\x92\x90\x92\x1C`$\x83\x01\x81\x90R\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0ZCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0Zi\x91\x90b\0\xA0\x9BV[\x90Pb\0Z\x82\x81`\x01`\x01``\x1B\x03\x16`\0\x87b\0e\x9BV[PP\x80\x80b\0Z\x91\x90b\0\x97\x19V[\x91PPb\0Y\xC1V[`\0b\0Z\xA8\x84\x84b\0q\xA3V[\x90P`\0b\0Z\xB7\x84b\0r\x99V[\x90P`\0b\0Z\xC6\x85b\0s\xCCV[\x90P`\0[\x85Q\x81\x10\x15b\0N\xB8Wb\0[U\x83\x82\x81Q\x81\x10b\0Z\xEEWb\0Z\xEEb\0\x95RV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x85\x83\x81Q\x81\x10b\0[\x14Wb\0[\x14b\0\x95RV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0[1Wb\0[1b\0\x95RV[` \x02` \x01\x01Qb\0[E\x91\x90b\0\xA0\xF1V[`\x01`\x01``\x1B\x03\x16\x87b\0e\x9BV[\x80b\0[a\x81b\0\x97\x19V[\x91PPb\0Z\xCBV[`\0b\0[w\x83b\0l\x82V[\x90P`\0b\0[\x86\x84b\0m\xB2V[\x90P`\0[\x84Q\x81\x10\x15b\0 \xDAWb\0[\xE7\x83\x82\x81Q\x81\x10b\0[\xAEWb\0[\xAEb\0\x95RV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16`\x01\x84\x84\x81Q\x81\x10b\0[\xD3Wb\0[\xD3b\0\x95RV[` \x02` \x01\x01Qb\0T\x8D\x91\x90b\0\x9EXV[\x80b\0[\xF3\x81b\0\x97\x19V[\x91PPb\0[\x8BV[`\0b\0\\\t\x83b\0n?V[\x90P`\0b\0\\\x18\x84b\0o\x81V[\x90P`\0[\x84Q\x81\x10\x15b\0U\x9BWb\0\\u\x83\x82\x81Q\x81\x10b\0\\@Wb\0\\@b\0\x95RV[` \x02` \x01\x01QQ`\x01\x84\x84\x81Q\x81\x10b\0\\`Wb\0\\`b\0\x95RV[` \x02` \x01\x01QQb\0U(\x91\x90b\0\x9B\x04V[b\0\\\x92b\0U\x7F\x84\x83\x81Q\x81\x10b\0ULWb\0ULb\0\x95RV[b\0\\\xAFb\0U[\x83\x83\x81Q\x81\x10b\0ULWb\0ULb\0\x95RV[\x80b\0\\\xBB\x81b\0\x97\x19V[\x91PPb\0\\\x1DV[`\0a\x01\0\x82Q\x11\x15b\0]OW`@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\x01b\0*\x8AV[\x81Qb\0]^WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10b\0]wWb\0]wb\0\x95RV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15b\096W\x84\x81\x81Q\x81\x10b\0]\xA9Wb\0]\xA9b\0\x95RV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11b\0^@W`@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\x01b\0*\x8AV[\x91\x81\x17\x91b\0^O\x81b\0\x97\x19V[\x90Pb\0]\x8AV[`(T`@Qc~\x9C\x88-`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\0\x92\x16\x90c\xFD9\x10Z\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0^\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0^\xC9\x91\x90b\0\xA0HV[\x90Pb\0%i`\x02b\0L\xC9V[\x80b\0;\xDDW`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\0_,\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1b\0;\xDDb\0tYV[`\0b\0_i`\0\x83Q\x11`@Q\x80``\x01`@R\x80`2\x81R` \x01b\x03\xDC%`2\x919b\0@\x93V[`\0b\0_\x81`\0`\x01\x85Qb\0CJ\x91\x90b\0\x9B\x04V[\x90P\x82\x81\x81Q\x81\x10b\0_\x98Wb\0_\x98b\0\x95RV[\x01` \x01Q`\xF8\x1C\x93\x92PPPV[`\0\x80b\0_\xB6\x84\x84b\0\x9B\x04V[b\0_\xC3\x90`\x01b\0\x9B5V[\x90P`\0\x81[\x80\x15b\0_\xE8W\x81b\0_\xDC\x81b\0\x97\x19V[\x92PP`\x01\x1Cb\0_\xC9V[`\0b\0_\xF9`\x01\x80\x85\x1Bb\0\x9B\x04V[`7T\x90\x91P\x81\x16[\x84\x81\x10b\0` W\x81b\0`\x17\x86\x83b\0\x9B\x04V[\x16\x90Pb\0`\x02V[`7T`@Q` \x01b\0`6\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 `7Ub\0`]\x81\x89b\0\x9B5V[\x98\x97PPPPPPPPV[`\0\x80[\x82\x15b\0?yWb\0`\x81`\x01\x84b\0\x9B\x04V[\x90\x92\x16\x91\x80b\0`\x91\x81b\0\xA1\x14V[\x91PPb\0`mV[`\0b\0`\xA6b\0\x91GV[`>T`=T\x14\x15b\0a:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7F_fetchKeypair: not enough genera`D\x82\x01R\x7Fted keys. Check IntegrationDeplo`d\x82\x01Rn<\xB2\xB9\x171\xB7\xB79\xBA9:\xB1\xBA7\xB9`\x89\x1B`\x84\x82\x01R`\xA4\x01b\0*\x8AV[`\0`>`=T\x81T\x81\x10b\0aTWb\0aTb\0\x95RV[\x90`\0R` `\0 \x01T\x90P`\0`?`=T\x81T\x81\x10b\0a{Wb\0a{b\0\x95RV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q`\xA0\x81\x01\x82R`\x08\x93\x90\x93\x02\x90\x91\x01\x80T``\x84\x01\x90\x81R`\x01\x82\x01T`\x80\x80\x86\x01\x91\x90\x91R\x90\x84R\x82Q\x80\x84\x01\x84R`\x02\x80\x84\x01T\x82R`\x03\x84\x01T\x82\x88\x01R\x95\x85\x01R\x82Q\x90\x81\x01\x80\x84R\x93\x94\x91\x93\x85\x84\x01\x93\x91\x92`\x04\x86\x01\x92\x84\x92\x90\x83\x01\x91\x84\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0a\xF1WPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0b(WPPP\x91\x90\x92RPPP\x90RP`=\x80T\x91\x92P`\0b\0b]\x83b\0\x97\x19V[\x90\x91UP\x91\x94\x90\x93P\x91PPV[``\x80`\0`/\x80T\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15b\0b\x90Wb\0b\x90b\0\x95=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0c\x84\x91\x90\x81\x01\x90b\0\x99\xAFV[`@Qb\0c\x93\x91\x90b\0\xA19V[`@Q\x80\x91\x03\x90\xA1`\0[`/T\x81\x10\x15b\0d\xD0W`\0`/\x82\x81T\x81\x10b\0c\xC1Wb\0c\xC1b\0\x95RV[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`@\x80Qc$\x95\xA5\x99`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x94P\x84\x92c$\x95\xA5\x99\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0d\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0d:\x91\x90b\0\x9B\xB1V[\x90P`\0b\0dPb\x0FB@bLK@b\0_\xA7V[\x90Pb\0d_\x82\x8A\x83b\0ugV[\x82\x86\x85\x81Q\x81\x10b\0duWb\0dub\0\x95RV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x85\x85\x81Q\x81\x10b\0d\xABWb\0d\xABb\0\x95RV[` \x02` \x01\x01\x81\x81RPPPPP\x80\x80b\0d\xC7\x90b\0\x97\x19V[\x91PPb\0c\x9EV[P\x90\x94\x90\x93P\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`(T`@Qc\x16\x19q\x83`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90cXe\xC6\x0C\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0e9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0?y\x91\x90b\0\xA1\x8DV[\x81\x83\x14b\0%iW`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x81`@Qb\0e\x87\x91\x90b\0\x9E'V[`@Q\x80\x91\x03\x90\xA1b\0%i\x83\x83b\0uvV[\x81\x83\x14b\0%iW`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x81`@Qb\0e\xC3\x91\x90b\0\x9E'V[`@Q\x80\x91\x03\x90\xA1b\0%i\x83\x83b\0v_V[`(T`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0f\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0?y\x91\x90b\0\x9F\xC5V[`\0\x80`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0f\xA1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0f\xC7\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0e\xD7V[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0g\x1CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0g1W=`\0\x80>=`\0\xFD[PPPPP\x91\x90PV[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x14b\0%iW`\0\x80Q` b\x03\xDC\xF6\x839\x81Q\x91R\x81`@Qb\0gu\x91\x90b\0\x9E'V[`@Q\x80\x91\x03\x90\xA1b\0%i\x83\x83b\0w\x11V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0g\xA9Wb\0g\xA9b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0h\x96\x91\x90b\0\xA0fV[\x82\x82\x81Q\x81\x10b\0h\xABWb\0h\xABb\0\x95RV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0h\xC3\x90b\0\x97\x19V[\x91PPb\0g\xF6V[P\x92\x91PPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0i-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0iS\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0g\x89V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0i~b\0\x91\x97V[\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\x15b\0*MWP\x80b\0*\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01b\0*\x8AV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0j\x19Wb\0j\x19b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0j\xF9\x91\x90b\0\xA0\x9BV[\x82\x82\x81Q\x81\x10b\0k\x0EWb\0k\x0Eb\0\x95RV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0k2\x81b\0\x97\x19V[\x91PPb\0jIV[`\0b\0kI\x85\x85b\0w\xFAV[\x90P`\0b\0kY\x86\x86b\0q\xA3V[\x90P`\0b\0kh\x86b\0r\x99V[\x90P`\0b\0kw\x87b\0s\xCCV[\x90P`\0[\x87Q\x81\x10\x15b\0lwWb\0l\x06\x85\x82\x81Q\x81\x10b\0k\x9FWb\0k\x9Fb\0\x95RV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0k\xC5Wb\0k\xC5b\0\x95RV[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10b\0k\xE2Wb\0k\xE2b\0\x95RV[` \x02` \x01\x01Qb\0k\xF6\x91\x90b\0\xA1\xC8V[`\x01`\x01``\x1B\x03\x16\x88b\0e\x9BV[b\0lb\x83\x82\x81Q\x81\x10b\0l\x1FWb\0l\x1Fb\0\x95RV[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x88\x83\x81Q\x81\x10b\0lEWb\0lEb\0\x95RV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10b\0k\xE2Wb\0k\xE2b\0\x95RV[\x80b\0ln\x81b\0\x97\x19V[\x91PPb\0k|V[PPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0l\xA2Wb\0l\xA2b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0ms\x91\x90b\0\xA1\xEDV[\x82\x82\x81Q\x81\x10b\0m\x88Wb\0m\x88b\0\x95RV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0m\xA9\x81b\0\x97\x19V[\x91PPb\0l\xD2V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0n\x0CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0n2\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0l\x82V[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0n_Wb\0n_b\0\x95=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0oK\x91\x90\x81\x01\x90b\0\xA2\x9DV[\x82\x82\x81Q\x81\x10b\0o`Wb\0o`b\0\x95RV[` \x02` \x01\x01\x81\x90RP\x80\x80b\0ox\x90b\0\x97\x19V[\x91PPb\0n\x9AV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0o\xDBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0p\x01\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0n?V[`\0\x80\x82`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0pPW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0pv\x91\x90b\0\x99\xFCV[\x90P`\0[\x84Q\x81\x10\x15b\0p\xCBW\x81\x85\x82\x81Q\x81\x10b\0p\x9BWb\0p\x9Bb\0\x95RV[` \x02` \x01\x01Q\x14\x15b\0p\xB6W`\x01\x92PPPb\0?yV[\x80b\0p\xC2\x81b\0\x97\x19V[\x91PPb\0p{V[P`\0\x94\x93PPPPV[b\0=\xB5\x82\x15\x82b\0@\x93V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15b\0q\tWP` \x82\x01Q\x15[\x15b\0q(WPP`@\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` \x01Qb\0qo\x91\x90b\0\x9B\x1EV[b\0q\x9B\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGb\0\x9B\x04V[\x90R\x92\x91PPV[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0q\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0r#\x91\x90b\0\x99\xFCV[\x90Pb\0r1\x84\x84b\0w\xFAV[`.T`@Qc\xB47\xED\xCB`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x91\x93P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB47\xED\xCB\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0ryW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0r\x8EW=`\0\x80>=`\0\xFD[PPPPP\x92\x91PPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0r\xB9Wb\0r\xB9b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0s\x8A\x91\x90b\0\xA0\x9BV[\x82\x82\x81Q\x81\x10b\0s\x9FWb\0s\x9Fb\0\x95RV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0s\xC3\x81b\0\x97\x19V[\x91PPb\0r\xE9V[```\0`.`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xBF\x87\xB84`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0t&W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0tL\x91\x90b\0\x99\xFCV[\x90Pb\0f\xD4\x83b\0r\x99V[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0uVW`@Q`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90b\0t\xD1\x90\x83\x90e\x19\x98Z[\x19Y`\xD2\x1B\x90`\x01\x90` \x01b\0\xA2\xD5V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0t\xF1\x92\x91` \x01b\0\x9AbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0u\r\x91b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0uLW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0uQV[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[b\0%i\x83\x83\x83`\0b\0y\xA6V[\x80\x82\x14b\0=\xB5W`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\0u\xDB\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [byt`@\x82\x01Rdes32]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x82`@Qb\0v\x14\x91\x90b\0\xA2\xF6V[`@Q\x80\x91\x03\x90\xA1\x7F\xAF\xB7\x95\xC9\xC6\x1EO\xE7F\x8C8o\x92]zT)\xEC\xAD\x9C\x04\x95\xDD\xB8\xD3\x8Di\x06\x14\xD3/\x99\x81`@Qb\0vM\x91\x90b\0\xA3/V[`@Q\x80\x91\x03\x90\xA1b\0=\xB5b\0tYV[\x80\x82\x14b\0=\xB5W`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\0v\xC1\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x82`@Qb\0v\xE9\x91\x90b\0\xA2\xF6V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` b\x03\xE0N\x839\x81Q\x91R\x81`@Qb\0vM\x91\x90b\0\xA3/V[\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14b\0=\xB5W`\0\x80Q` b\x03\xDBS\x839\x81Q\x91R`@Qb\0w\x88\x90` \x80\x82R`%\x90\x82\x01R\x7FError: a == b not satisfied [add`@\x82\x01Rdress]`\xD8\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x82`@Qb\0w\xC1\x91\x90b\0\xA3ZV[`@Q\x80\x91\x03\x90\xA1\x7F\x9CN\x85A\xCA\x8F\r\xC1\xC4\x13\xF9\x10\x8Ff\xD8-<\xEC\xB1\xBD\xDB\xCECza\xCA\xA3\x17\\L\xC9o\x81`@Qb\0vM\x91\x90b\0\xA3\x9FV[```\0\x83`\x01`\x01`\xA0\x1B\x03\x16c\xBFh\xB8\x16`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0x=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0xc\x91\x90b\0\x99\xFCV[\x90P`\0\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0x\x83Wb\0x\x83b\0\x95=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0y[\x91\x90b\0\xA0\x9BV[\x82\x82\x81Q\x81\x10b\0ypWb\0ypb\0\x95RV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80b\0y\x94\x81b\0\x97\x19V[\x91PPb\0x\xB3V[P\x94\x93PPPPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cp\xA0\x821`\xE0\x1B\x17\x90R\x91Q`\0\x92\x87\x16\x91b\0y\xFC\x91b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0z9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0z>V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0zZ\x91\x90b\0\x99\xFCV[\x90Pb\0z\x94\x84b\0z\x8D\x87b\0z\x86cp\xA0\x821`\xE0\x1Bb\0z\x7F`\x0C\x8Db\0{\x9CV[\x90b\0{\xC2V[\x90b\0{\xE0V[\x90b\0|\tV[\x82\x15b\0U\x9BW`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x16\r\xDD`\xE0\x1B\x17\x90R\x90Q`\0\x91`\x01`\x01`\xA0\x1B\x03\x89\x16\x91b\0z\xDF\x91\x90b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0{\x1CW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0{!V[``\x91P[P\x91PP`\0\x81\x80` \x01\x90Q\x81\x01\x90b\0{=\x91\x90b\0\x99\xFCV[\x90P\x82\x86\x10\x15b\0{hWb\0{T\x86\x84b\0\x9B\x04V[b\0{`\x90\x82b\0\x9B\x04V[\x90Pb\0{\x83V[b\0{t\x83\x87b\0\x9B\x04V[b\0{\x80\x90\x82b\0\x9B5V[\x90P[b\0P\xE0\x81b\0z\x8Dc\x18\x16\r\xDD`\xE0\x1Bb\0z\x7F`\x0C\x8D[`\x05\x82\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`\0\x82b\0EzV[`\x03\x82\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16`\xE0\x83\x90\x1C\x17\x90U`\0\x82b\0EzV[`\x02\x82\x01\x80T`\x01\x81\x01\x82U`\0\x91\x82R` \x82 `\x01`\x01`\xA0\x1B\x03\x84\x16\x91\x01U\x82b\0EzV[b\0=\xB5\x82\x82`\x05\x82\x01T`\x03\x83\x01T`\x04\x84\x01T`\x02\x85\x01\x80T`@\x80Q` \x80\x84\x02\x82\x01\x81\x01\x90\x92R\x82\x81R`\x01`\x01`\xA0\x1B\x03\x90\x96\x16\x95`\xE0\x95\x90\x95\x1B\x94`\0\x93\x90\x92\x90\x91\x83\x01\x82\x82\x80\x15b\0|\x82W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11b\0|mW[PPPPP\x90P`\0\x83b\0|\x97\x83b\0\x7F\x87V[`@Q` \x01b\0|\xAA\x92\x91\x90b\0\x9AbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x01\x8B\x01` \x90\x81R\x83\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x83R\x81R\x92\x81 \x91\x94P\x90\x92\x90\x91b\0|\xFE\x91\x86\x91\x88\x91\x01b\0\xA3\xCAV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0}9Wb\0}7\x87b\0\x803V[P[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R` \x88\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x88\x16\x84R\x82R\x80\x83 \x90Q\x90\x91\x83\x91b\0}z\x91\x87\x91\x89\x91\x01b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T`\0\x1B\x90P`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qb\0}\xC1\x91\x90b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0}\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0~\x03V[``\x91P[P\x91Pb\0~ \x90P\x81b\0~\x1A\x88` b\0\xA4\x06V[b\0\x80@V[`@Qc\x06g\xF9\xD7`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0~\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0~\xAD\x91\x90b\0\x99\xFCV[\x90P\x80\x82\x14b\0~\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0*\x8A\x90b\0\xA4(V[`@Qcp\xCA\x10\xBB`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cp\xCA\x10\xBB\x90b\0\x7F\x0E\x90\x8B\x90\x87\x90\x8E\x90`\x04\x01b\0\xA2\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x7F)W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x7F>W=`\0\x80>=`\0\xFD[PPP`\x05\x8B\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UP`\x03\x8A\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\x7Fs`\x02\x8B\x01`\0b\0\x91\xB5V[\x89`\x04\x01`\0\x90UPPPPPPPPPPV[```\0\x82Q` b\0\x7F\x9B\x91\x90b\0\xA4\x06V[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x7F\xB5Wb\0\x7F\xB5b\0\x95\x92\x91\x90b\0\x9AbV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` b\x03\xDFy\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c&l\xF1\t`@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\x82\x9DW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x82\xB2W=`\0\x80>=`\0\xFD[PPPP`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qb\0\x82\xD3\x91\x90b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x83\x10W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x83\x15V[``\x91P[P\x91Pb\0\x832\x90P\x81b\0\x83,\x87` b\0\xA4\x06V[b\0\x8E\xA6V[`@Qce\xBC\x94\x81`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16`\x04\x82\x01R\x90\x92P`\0\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ce\xBC\x94\x81\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x83\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x83\xBE\x91\x90\x81\x01\x90b\0\xA4\xC3V[P\x90P\x80Q`\x01\x14\x15b\0\x86\xA0W`\0`\0\x80Q` b\x03\xDFy\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cf\x7F\x9Dp\x89\x84`\0\x81Q\x81\x10b\0\x84\x06Wb\0\x84\x06b\0\x95RV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x84@\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x84^W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x84\x84\x91\x90b\0\x99\xFCV[\x90P\x80b\0\x84\xEFW\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x87o\x91\x90b\0\x99\xFCV[\x90P\x80b\0\x87\xD9W\x7F\x08\x0F\xC4\xA9f \xC4F.p[#\xF3FA?\xE3yk\xB6=`\0\xFD[PPPP`\0``\x8B`\x01`\x01`\xA0\x1B\x03\x16\x88`@Qb\0\x88\x9B\x91\x90b\0\x9A\x95V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14b\0\x88\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x88\xDDV[``\x91P[P\x90\x92P\x90Pb\0\x88\xF5\x81b\0\x83,\x8C` b\0\xA4\x06V[\x96PP\x80\x80\x15b\0\x89\x05WP\x81\x86\x14[\x15b\0\x8BXW\x7F\x9C\x95U\xB1\xE3\x10.<\xF4\x8FB}y\xCBg\x8F]\x9B\xD1\xED\n\xD5t8\x94a\xE2U\xF9Qp\xED\x8B\x8B\x8A\x8C`@Q` \x01b\0\x89C\x92\x91\x90b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x88\x88\x81Q\x81\x10b\0\x89nWb\0\x89nb\0\x95RV[` \x02` \x01\x01Q`\0\x1C`@Qb\0\x89\x8B\x94\x93\x92\x91\x90b\0\xA5-V[`@Q\x80\x91\x03\x90\xA1\x84\x84\x81Q\x81\x10b\0\x89\xA8Wb\0\x89\xA8b\0\x95RV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x8D\x16`\0\x90\x81R\x8F\x83R`@\x80\x82 `\x01`\x01`\xE0\x1B\x03\x19\x8F\x16\x83R\x84R\x80\x82 \x90Q\x92\x93\x90\x92b\0\x89\xF3\x91\x8D\x91\x8F\x91\x01b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 \x81\x90UP`\x01\x8D`\x01\x01`\0\x8D`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8C`\x01`\x01`\xE0\x1B\x03\x19\x16`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90\x81R` \x01`\0 `\0\x8A\x8C`@Q` \x01b\0\x8A\x80\x92\x91\x90b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\0\x80Q` b\x03\xDFy\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\x8A\xF2Wb\0\x8A\xF2b\0\x95RV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x8B\x1B\x93\x92\x91\x90b\0\xA2\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x8B6W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x8BKW=`\0\x80>=`\0\xFD[PPPPPPPb\0\x8C\x05V[`\0\x80Q` b\x03\xDFy\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cp\xCA\x10\xBB\x8C\x87\x87\x81Q\x81\x10b\0\x8B\x8FWb\0\x8B\x8Fb\0\x95RV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x8B\xB8\x93\x92\x91\x90b\0\xA2\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x8B\xD3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x8B\xE8W=`\0\x80>=`\0\xFD[PPPPPPP[\x80b\0\x8B\xFC\x81b\0\x97\x19V[\x91PPb\0\x86\xAEV[Pb\0\x8C}V[`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FstdStorage find(StdStorage): No `D\x82\x01R\x7Fstorage use detected for target.`d\x82\x01R`\x84\x01b\0*\x8AV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x01\x8A\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\x8C\xC1\x91\x88\x91\x8A\x91\x01b\0\xA3\xCAV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x90\x82\x01\x92\x90\x92R\x01`\0 T`\xFF\x16b\0\x8DPW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FstdStorage find(StdStorage): Slo`D\x82\x01Rn:\x149\x94\x9077\xBA\x1037\xBA\xB72\x17`\x89\x1B`d\x82\x01R`\x84\x01b\0*\x8AV[`\x05\x89\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`\x03\x89\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90Ub\0\x8D\x81`\x02\x8A\x01`\0b\0\x91\xB5V[`\0`\x04\x8A\x01\x81\x90U`\x01`\x01`\xA0\x1B\x03\x88\x16\x81R` \x8A\x81R`@\x80\x83 `\x01`\x01`\xE0\x1B\x03\x19\x8A\x16\x84R\x82R\x80\x83 \x90Q\x90\x92\x91b\0\x8D\xC7\x91\x88\x91\x8A\x91\x01b\0\xA3\xCAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 T\x97PPPPPPPP\x91\x90PV[```\0\x82Q` b\0\x8E\x0E\x91\x90b\0\xA4\x06V[`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x8E(Wb\0\x8E(b\0\x95a\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003operator should no longer have stake in any quorumsoperator already has bits in quorum bitmapA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPcurrent operator bitmap should not include quorumsoperator list should have one fewer entry_configRand: invalid fillTypes, no flags passedoperator already has a registered pubkey_randValue: tried to select value from empty arraytotal operator count should have increased for each quorum_configRand: invalid minimumStake, no flags passed_selectRand: tried to select from empty quorum list(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83operatorInfo should have operatorId_configRand: invalid numStrategies, no flags passedoperator list should have one more entryoperator should have empty id and NEVER_REGISTERED statusfailed to add operator weight to operator and total stake in each quorumtotal operator count should have decreased for each quorum_configRand: invalid _userTypes, no flags passedoperator should still have a registered pubkeyoperatorInfo status should be DEREGISTEREDoperator pubkey should have been added to each quorum apkoperator pubkey should have been subtracted from each quorum apkoperatorInfo should still have operatorId\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_newRandomOperator: operator should be registeredoperator should have registered a pubkey_configRand: invalid numQuorums, no flags passedoperator did not deregister from all quorums\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8failed to remove operator weight from total stake for each quorumoperator did not register for all quorumsoperator should not have any bits in bitmapcurrent operator bitmap should include quorumsoperator should have at least the minimum stake in each quorumoperatorInfo status should be REGISTEREDoperator should be registered to AVSoperator should not be registered to the AVS\xA2dipfsX\"\x12 +S(\xA5\x94k>\xF8\xF0\x9Aai\xB9k\x86\xAB\x06V\xE5\xA1_\xCAT5,\xAE(\xE4\xBF]!1dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mul(uint256)` and selector `0x131e2f18`. + ```solidity + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulCall { + pub x: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mul(uint256)`](mulCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulReturn { + pub g2Point: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: mulCall) -> Self { + (value.x,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { x: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: mulReturn) -> Self { + (value.g2Point,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { g2Point: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mulCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mulReturn; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mul(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 30u8, 47u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.x, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `testFuzz_registerAll_deregisterAll(uint24)` and selector `0x929111e0`. + ```solidity + function testFuzz_registerAll_deregisterAll(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_deregisterAllCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_registerAll_deregisterAll(uint24)`](testFuzz_registerAll_deregisterAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerAll_deregisterAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: testFuzz_registerAll_deregisterAllCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for testFuzz_registerAll_deregisterAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_registerAll_deregisterAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for testFuzz_registerAll_deregisterAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_registerAll_deregisterAllCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_registerAll_deregisterAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "testFuzz_registerAll_deregisterAll(uint24)"; + const SELECTOR: [u8; 4] = [146u8, 145u8, 17u8, 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._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `testFuzz_registerSome_deregisterSome_deregisterRemaining(uint24)` and selector `0x43096339`. + ```solidity + function testFuzz_registerSome_deregisterSome_deregisterRemaining(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerSome_deregisterSome_deregisterRemainingCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_registerSome_deregisterSome_deregisterRemaining(uint24)`](testFuzz_registerSome_deregisterSome_deregisterRemainingCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerSome_deregisterSome_deregisterRemainingReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from( + value: testFuzz_registerSome_deregisterSome_deregisterRemainingCall, + ) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerSome_deregisterSome_deregisterRemainingCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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< + testFuzz_registerSome_deregisterSome_deregisterRemainingReturn, + > for UnderlyingRustTuple<'_> + { + fn from( + value: testFuzz_registerSome_deregisterSome_deregisterRemainingReturn, + ) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerSome_deregisterSome_deregisterRemainingReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_registerSome_deregisterSome_deregisterRemainingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_registerSome_deregisterSome_deregisterRemainingReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "testFuzz_registerSome_deregisterSome_deregisterRemaining(uint24)"; + const SELECTOR: [u8; 4] = [67u8, 9u8, 99u8, 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._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `testFuzz_registerSome_deregisterSome_reregisterSome(uint24)` and selector `0x9c23c2ab`. + ```solidity + function testFuzz_registerSome_deregisterSome_reregisterSome(uint24 _random) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerSome_deregisterSome_reregisterSomeCall { + pub _random: alloy::sol_types::private::primitives::aliases::U24, + } + ///Container type for the return parameters of the [`testFuzz_registerSome_deregisterSome_reregisterSome(uint24)`](testFuzz_registerSome_deregisterSome_reregisterSomeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct testFuzz_registerSome_deregisterSome_reregisterSomeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U24,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: testFuzz_registerSome_deregisterSome_reregisterSomeCall) -> Self { + (value._random,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerSome_deregisterSome_reregisterSomeCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _random: 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: testFuzz_registerSome_deregisterSome_reregisterSomeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for testFuzz_registerSome_deregisterSome_reregisterSomeReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for testFuzz_registerSome_deregisterSome_reregisterSomeCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<24>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = testFuzz_registerSome_deregisterSome_reregisterSomeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "testFuzz_registerSome_deregisterSome_reregisterSome(uint24)"; + const SELECTOR: [u8; 4] = [156u8, 35u8, 194u8, 171u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._random, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`Integration_NonFull_Register_Deregister`](self) function calls. + pub enum Integration_NonFull_Register_DeregisterCalls { + IS_TEST(IS_TESTCall), + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mul(mulCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + testFuzz_registerAll_deregisterAll(testFuzz_registerAll_deregisterAllCall), + testFuzz_registerSome_deregisterSome_deregisterRemaining( + testFuzz_registerSome_deregisterSome_deregisterRemainingCall, + ), + testFuzz_registerSome_deregisterSome_reregisterSome( + testFuzz_registerSome_deregisterSome_reregisterSomeCall, + ), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl Integration_NonFull_Register_DeregisterCalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [10u8, 146u8, 84u8, 228u8], + [19u8, 30u8, 47u8, 24u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [45u8, 188u8, 176u8, 76u8], + [61u8, 251u8, 64u8, 224u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [67u8, 9u8, 99u8, 57u8], + [102u8, 217u8, 169u8, 160u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [146u8, 145u8, 17u8, 224u8], + [156u8, 35u8, 194u8, 171u8], + [157u8, 139u8, 156u8, 180u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for Integration_NonFull_Register_DeregisterCalls { + const NAME: &'static str = "Integration_NonFull_Register_DeregisterCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 22usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::avsDirectory(_) => { + ::SELECTOR + } + Self::churnApprover(_) => { + ::SELECTOR + } + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mul(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => { + ::SELECTOR + } + Self::testFuzz_registerAll_deregisterAll(_) => { + ::SELECTOR + } + Self::testFuzz_registerSome_deregisterSome_deregisterRemaining(_) => { + ::SELECTOR + } + Self::testFuzz_registerSome_deregisterSome_reregisterSome(_) => { + ::SELECTOR + } + Self::timeMachine(_) => { + ::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< + Integration_NonFull_Register_DeregisterCalls, + >] = &[ + { + fn churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::churnApprover) + } + churnApprover + }, + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_NonFull_Register_DeregisterCalls::setUp) + } + setUp + }, + { + fn mul( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_NonFull_Register_DeregisterCalls::mul) + } + mul + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::churnApproverPrivateKey) + } + churnApproverPrivateKey + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::timeMachine) + } + timeMachine + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::targetContracts) + } + targetContracts + }, + { + fn testFuzz_registerSome_deregisterSome_deregisterRemaining( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_DeregisterCalls::testFuzz_registerSome_deregisterSome_deregisterRemaining, + ) + } + testFuzz_registerSome_deregisterSome_deregisterRemaining + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::targetSelectors) + } + targetSelectors + }, + { + fn testFuzz_registerAll_deregisterAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_DeregisterCalls::testFuzz_registerAll_deregisterAll, + ) + } + testFuzz_registerAll_deregisterAll + }, + { + fn testFuzz_registerSome_deregisterSome_reregisterSome( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + Integration_NonFull_Register_DeregisterCalls::testFuzz_registerSome_deregisterSome_reregisterSome, + ) + } + testFuzz_registerSome_deregisterSome_reregisterSome + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_NonFull_Register_DeregisterCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(Integration_NonFull_Register_DeregisterCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(Integration_NonFull_Register_DeregisterCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::churnApprover(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mul(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_registerAll_deregisterAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_registerSome_deregisterSome_deregisterRemaining(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::testFuzz_registerSome_deregisterSome_reregisterSome(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::timeMachine(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::churnApprover(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mul(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_registerAll_deregisterAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_registerSome_deregisterSome_deregisterRemaining(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::testFuzz_registerSome_deregisterSome_reregisterSome(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::timeMachine(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`Integration_NonFull_Register_Deregister`](self) events. + pub enum Integration_NonFull_Register_DeregisterEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl Integration_NonFull_Register_DeregisterEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for Integration_NonFull_Register_DeregisterEvents { + const NAME: &'static str = "Integration_NonFull_Register_DeregisterEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 Integration_NonFull_Register_DeregisterEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Integration_NonFull_Register_Deregister`](self) contract instance. + + See the [wrapper's documentation](`Integration_NonFull_Register_DeregisterInstance`) 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, + ) -> Integration_NonFull_Register_DeregisterInstance { + Integration_NonFull_Register_DeregisterInstance::::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>, + > { + Integration_NonFull_Register_DeregisterInstance::::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 { + Integration_NonFull_Register_DeregisterInstance::::deploy_builder(provider) + } + /**A [`Integration_NonFull_Register_Deregister`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Integration_NonFull_Register_Deregister`](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 Integration_NonFull_Register_DeregisterInstance< + 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 Integration_NonFull_Register_DeregisterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("Integration_NonFull_Register_DeregisterInstance") + .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, + > Integration_NonFull_Register_DeregisterInstance + { + /**Creates a new wrapper around an on-chain [`Integration_NonFull_Register_Deregister`](self) contract instance. + + See the [wrapper's documentation](`Integration_NonFull_Register_DeregisterInstance`) 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 Integration_NonFull_Register_DeregisterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> Integration_NonFull_Register_DeregisterInstance { + Integration_NonFull_Register_DeregisterInstance { + 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, + > Integration_NonFull_Register_DeregisterInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mul`] function. + pub fn mul( + &self, + x: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mulCall { x }) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`testFuzz_registerAll_deregisterAll`] function. + pub fn testFuzz_registerAll_deregisterAll( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&testFuzz_registerAll_deregisterAllCall { _random }) + } + ///Creates a new call builder for the [`testFuzz_registerSome_deregisterSome_deregisterRemaining`] function. + pub fn testFuzz_registerSome_deregisterSome_deregisterRemaining( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_registerSome_deregisterSome_deregisterRemainingCall, + N, + > { + self.call_builder( + &testFuzz_registerSome_deregisterSome_deregisterRemainingCall { _random }, + ) + } + ///Creates a new call builder for the [`testFuzz_registerSome_deregisterSome_reregisterSome`] function. + pub fn testFuzz_registerSome_deregisterSome_reregisterSome( + &self, + _random: alloy::sol_types::private::primitives::aliases::U24, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + testFuzz_registerSome_deregisterSome_reregisterSomeCall, + N, + > { + self.call_builder(&testFuzz_registerSome_deregisterSome_reregisterSomeCall { _random }) + } + ///Creates a new call builder for the [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Integration_NonFull_Register_DeregisterInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/integrationbase.rs b/crates/utils/src/middleware/integrationbase.rs new file mode 100644 index 00000000..e5f683d2 --- /dev/null +++ b/crates/utils/src/middleware/integrationbase.rs @@ -0,0 +1,7393 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface IntegrationBase { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + function registryCoordinator() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "g2Point", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IntegrationBase { + 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 `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mul(uint256)` and selector `0x131e2f18`. + ```solidity + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulCall { + pub x: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mul(uint256)`](mulCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulReturn { + pub g2Point: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: mulCall) -> Self { + (value.x,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { x: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: mulReturn) -> Self { + (value.g2Point,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { g2Point: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mulCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mulReturn; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mul(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 30u8, 47u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.x, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`IntegrationBase`](self) function calls. + pub enum IntegrationBaseCalls { + IS_TEST(IS_TESTCall), + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mul(mulCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl IntegrationBaseCalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [10u8, 146u8, 84u8, 228u8], + [19u8, 30u8, 47u8, 24u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [45u8, 188u8, 176u8, 76u8], + [61u8, 251u8, 64u8, 224u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IntegrationBaseCalls { + const NAME: &'static str = "IntegrationBaseCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 19usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::avsDirectory(_) => ::SELECTOR, + Self::churnApprover(_) => ::SELECTOR, + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mul(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::timeMachine(_) => ::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 churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::churnApprover) + } + churnApprover + }, + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationBaseCalls::setUp) + } + setUp + }, + { + fn mul( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationBaseCalls::mul) + } + mul + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::churnApproverPrivateKey) + } + churnApproverPrivateKey + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::timeMachine) + } + timeMachine + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::targetSelectors) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationBaseCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationBaseCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationBaseCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApprover(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mul(inner) => ::abi_encoded_size(inner), + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::timeMachine(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApprover(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mul(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::timeMachine(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IntegrationBase`](self) events. + pub enum IntegrationBaseEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl IntegrationBaseEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IntegrationBaseEvents { + const NAME: &'static str = "IntegrationBaseEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 IntegrationBaseEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IntegrationBase`](self) contract instance. + + See the [wrapper's documentation](`IntegrationBaseInstance`) 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, + ) -> IntegrationBaseInstance { + IntegrationBaseInstance::::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>> + { + IntegrationBaseInstance::::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 { + IntegrationBaseInstance::::deploy_builder(provider) + } + /**A [`IntegrationBase`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IntegrationBase`](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 IntegrationBaseInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IntegrationBaseInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IntegrationBaseInstance") + .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, + > IntegrationBaseInstance + { + /**Creates a new wrapper around an on-chain [`IntegrationBase`](self) contract instance. + + See the [wrapper's documentation](`IntegrationBaseInstance`) 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 IntegrationBaseInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IntegrationBaseInstance { + IntegrationBaseInstance { + 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, + > IntegrationBaseInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mul`] function. + pub fn mul( + &self, + x: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mulCall { x }) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IntegrationBaseInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/integrationchecks.rs b/crates/utils/src/middleware/integrationchecks.rs new file mode 100644 index 00000000..f3d7649a --- /dev/null +++ b/crates/utils/src/middleware/integrationchecks.rs @@ -0,0 +1,7393 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface IntegrationChecks { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + function registryCoordinator() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "g2Point", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IntegrationChecks { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604081905260078054600160ff199182168117909255600b80549091169091179055601c80546000805160206202dfdc8339815191526001600160a01b0319918216811790925560328054309083161790556033805490911673beb9864e3d6a1ba44e131a462f6328f2d1d6d54d1790557fa3e2a0c4ce206b9c6679ac6361c034f31c8844ae3104108f47ed8c413acf333260348190556001625e79b760e01b031983526084529063ffa186499060a490602090602481865afa158015620000cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f3919062000b0a565b603580546001600160a01b03929092166001600160a01b031992831617905560368054736915a67877a178d5129a28d2af871ac1fceb3fd392169190911790556000603d8190556043553480156200014a57600080fd5b5060005b6200015b60058062000b52565b63ffffffff16811015620003585762000173620009fb565b60006200018283600162000b7d565b6040516020016200019591815260200190565b6040516020818303038152906040528051906020012060001c9050620001de81620001ca6200035f60201b620023241760201c565b6200038860201b6200234d1790919060201c565b8260200181905250620001fc816200042860201b620016d71760201c565b60408301908152603e805460018181019092557f8d800d6614d35eed73733ee453164a3b48076eb3138f466adeeb9dec7bb31f7001839055603f805491820181556000528351805160089092027fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd81019283556020918201517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fe8201558186015180517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58ff830155909101517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b59008201559151805185937fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b5901019062000323908290600262000a50565b5060208201516200033b906002808401919062000a50565b5050505050505080806200034f9062000b98565b9150506200014e565b5062000dc3565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b6040805180820190915260008082526020820152620003a662000a93565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620003db57620003dd565bfe5b5080620004205760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b6200043262000ab1565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200044a57905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062000493576200049362000bb6565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620004d057620004d062000bb6565b60200260200101819052506040518060400160405280601481526020017f746573742f6666692f676f2f67326d756c2e676f0000000000000000000000008152508160028151811062000527576200052762000bb6565b60200260200101819052506200054883620008de60201b620023ed1760201c565b816003815181106200055e576200055e62000bb6565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062000599576200059962000bb6565b6020908102919091010152604051638916046760e01b81526000906000805160206202dfdc83398151915290638916046790620005db90859060040162000c15565b6000604051808303816000875af1158015620005fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000625919081019062000c93565b9050808060200190518101906200063d919062000d4b565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200067a576200067a62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206202dfdc83398151915290638916046790620006b990859060040162000c15565b6000604051808303816000875af1158015620006d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000703919081019062000c93565b9050808060200190518101906200071b919062000d4b565b8351526040805180820190915260018152603360f81b60208201528251839060049081106200074e576200074e62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206202dfdc833981519152906389160467906200078d90859060040162000c15565b6000604051808303816000875af1158015620007ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007d7919081019062000c93565b905080806020019051810190620007ef919062000d4b565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b815250826004815181106200082f576200082f62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206202dfdc833981519152906389160467906200086e90859060040162000c15565b6000604051808303816000875af11580156200088e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008b8919081019062000c93565b905080806020019051810190620008d0919062000d4b565b602084015152509092915050565b606081620009035750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200093357806200091a8162000b98565b91506200092b9050600a8362000d7b565b915062000907565b6000816001600160401b0381111562000950576200095062000bcc565b6040519080825280601f01601f1916602001820160405280156200097b576020820181803683370190505b5090505b8415620009f3576200099360018362000d92565b9150620009a2600a8662000dac565b620009af90603062000b7d565b60f81b818381518110620009c757620009c762000bb6565b60200101906001600160f81b031916908160001a905350620009eb600a8662000d7b565b94506200097f565b949350505050565b6040805160a0810190915260006060820181815260808301919091528190815260200162000a3c604051806040016040528060008152602001600081525090565b815260200162000a4b62000ab1565b905290565b826002810192821562000a81579160200282015b8281111562000a8157825182559160200191906001019062000a64565b5062000a8f92915062000ad5565b5090565b60405180606001604052806003906020820280368337509192915050565b604051806040016040528062000ac662000aec565b815260200162000a4b62000aec565b5b8082111562000a8f576000815560010162000ad6565b60405180604001604052806002906020820280368337509192915050565b60006020828403121562000b1d57600080fd5b81516001600160a01b038116811462000b3557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681851680830382111562000b745762000b7462000b3c565b01949350505050565b6000821982111562000b935762000b9362000b3c565b500190565b600060001982141562000baf5762000baf62000b3c565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000bff57818101518382015260200162000be5565b8381111562000c0f576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562000c8657878503603f190184528151805180875262000c66818989018a850162000be2565b601f01601f19169590950186019450928501929085019060010162000c3c565b5092979650505050505050565b60006020828403121562000ca657600080fd5b81516001600160401b038082111562000cbe57600080fd5b818401915084601f83011262000cd357600080fd5b81518181111562000ce85762000ce862000bcc565b604051601f8201601f19908116603f0116810190838211818310171562000d135762000d1362000bcc565b8160405282815287602084870101111562000d2d57600080fd5b62000d4083602083016020880162000be2565b979650505050505050565b60006020828403121562000d5e57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008262000d8d5762000d8d62000d65565b500490565b60008282101562000da75762000da762000b3c565b500390565b60008262000dbe5762000dbe62000d65565b500690565b6202d2088062000dd46000396000f3fe60806040523480156200001157600080fd5b5060043610620001395760003560e01c806366d9a9a011620000bb5780639d8b9cb4116200007a5780639d8b9cb41462000278578063b5508aa9146200028c578063ba414fa61462000296578063e20c9f7114620002b1578063fa7626d414620002bb57600080fd5b806366d9a9a014620002145780636b3aa72e146200022d5780636d14a987146200024157806385226c811462000255578063916a17c6146200026e57600080fd5b80632ade388011620001085780632ade388014620001ba5780632dbcb04c14620001d35780633dfb40e014620001ec5780633e5e3c2314620002005780633f7286f4146200020a57600080fd5b8063054310e6146200013e5780630a9254e4146200016f578063131e2f18146200017b5780631ed7831c14620001a1575b600080fd5b60355462000152906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b62000179620002c9565b005b620001926200018c366004620029cd565b620016d7565b60405162000166919062002a12565b620001ab62001b8d565b60405162000166919062002a88565b620001c462001bf1565b60405162000166919062002b01565b620001dd60345481565b60405190815260200162000166565b602e5462000152906001600160a01b031681565b620001ab62001d3f565b620001ab62001da1565b6200021e62001e03565b60405162000166919062002bc7565b601e5462000152906001600160a01b031681565b60285462000152906001600160a01b031681565b6200025f62001eed565b60405162000166919062002c7e565b6200021e62001fc7565b60335462000152906001600160a01b031681565b6200025f620020b1565b620002a06200218b565b604051901515815260200162000166565b620001ab620022c2565b600754620002a09060ff1681565b604051620002d79062002835565b604051809103906000f080158015620002f4573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b8160008151811062000350576200035062002cfa565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c604051620003829062002843565b6200038f92919062002d10565b604051809103906000f080158015620003ac573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620003de9062002851565b604051809103906000f080158015620003fb573d6000803e3d6000fd5b5090506040516200040c906200285e565b604051809103906000f08015801562000429573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b039290921691909117905560405162000458906200286c565b604051809103906000f08015801562000475573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620004aa906200287a565b620004b792919062002d3c565b604051809103906000f080158015620004d4573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000509906200287a565b6200051692919062002d3c565b604051809103906000f08015801562000533573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000568906200287a565b6200057592919062002d3c565b604051809103906000f08015801562000592573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005c7906200287a565b620005d492919062002d3c565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000626906200287a565b6200063392919062002d3c565b604051809103906000f08015801562000650573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03928316179055602554602054604051918316921690640773594000906200068e9062002888565b6001600160a01b03938416815292909116602083015267ffffffffffffffff166040820152606001604051809103906000f080158015620006d3573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620007019062002896565b6001600160a01b039091168152602001604051809103906000f0801580156200072e573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f54602254602054604051600094938416939283169291909116906200077290620028a4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620007af573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b03938416939283169290911690620007e190620028b2565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200081e573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b0392831692909116906200084990620028c0565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200087d573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b039586169594851694938416939283169290911690620008bd90620028ce565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000909573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b03909116906200092d90620028dc565b6001600160a01b039091168152602001604051809103906000f0801580156200095a573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b93620009c0939183169216908b8b8b6064820162002d65565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000a0993929160040162002de9565b600060405180830381600087803b15801562000a2457600080fd5b505af115801562000a39573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000acc9391909216918c9160040162002de9565b600060405180830381600087803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000b889391909216918b9160040162002de9565b600060405180830381600087803b15801562000ba357600080fd5b505af115801562000bb8573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000c4e939116918a9160040162002de9565b600060405180830381600087803b15801562000c6957600080fd5b505af115801562000c7e573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000d0a939190921691899160040162002de9565b600060405180830381600087803b15801562000d2557600080fd5b505af115801562000d3a573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d5b9150620028ea565b6001600160a01b039091168152602001604051809103906000f08015801562000d88573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000e4e57600062000dc382620023ed565b905060008160405160200162000dda919062002e20565b604051602081830303815290604052905060008260405160200162000e00919062002e57565b604051602081830303815290604052905062000e3582827502ac3a4edbbfb8014e3ba83411e915e8000000000000306200250b565b505050808062000e459062002e9a565b91505062000dac565b5060405162000e5d90620028f8565b604051809103906000f08015801562000e7a573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000ed957600080fd5b505af115801562000eee573d6000803e3d6000fd5b50506031546040518c93506001600160a01b03909116915062000f11906200287a565b62000f1e92919062002d3c565b604051809103906000f08015801562000f3b573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000f70906200287a565b62000f7d92919062002d3c565b604051809103906000f08015801562000f9a573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000fcf906200287a565b62000fdc92919062002d3c565b604051809103906000f08015801562000ff9573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200102e906200287a565b6200103b92919062002d3c565b604051809103906000f08015801562001058573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200108d906200287a565b6200109a92919062002d3c565b604051809103906000f080158015620010b7573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200111357600080fd5b505af115801562001128573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b039283169350911690620011529062002906565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001186573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011aa9062002914565b6001600160a01b039091168152602001604051809103906000f080158015620011d7573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011fb9062002922565b6001600160a01b039091168152602001604051809103906000f08015801562001228573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b039384169392831692909116906200125a9062002930565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562001297573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81526001600160a01b039182166004820152878216602482015292935016906399a88ec490604401600060405180830381600087803b158015620012ec57600080fd5b505af115801562001301573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0391821660048201528782166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200135757600080fd5b505af11580156200136c573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0391821660048201528682166024820152911692506399a88ec49150604401600060405180830381600087803b158015620013c257600080fd5b505af1158015620013d7573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0391821660048201528582166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200142d57600080fd5b505af115801562001442573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b1580156200149057600080fd5b505af1158015620014a5573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b0394851695509284169391821692911690620014dd906200293e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001522573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b9690821695908216949082169391169181620015ad565b60408051606081018252600080825260208083018290529282015282526000199092019101816200157f5790505b5060408051600080825260208201818152828401909352909190620015e3565b6060815260200190600190039081620015cd5790505b50604051602401620015fd98979695949392919062002f9d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b90921682526200164693929160040162002de9565b600060405180830381600087803b1580156200166157600080fd5b505af115801562001676573d6000803e3d6000fd5b5050505060405162001688906200294c565b604051809103906000f080158015620016a5573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b620016e16200295a565b60408051600580825260c08201909252600091816020015b6060815260200190600190039081620016f957905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062001742576200174262002cfa565b602002602001018190525060405180604001604052806003815260200162393ab760e91b815250816001815181106200177f576200177f62002cfa565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b81525081600281518110620017cd57620017cd62002cfa565b6020026020010181905250620017e383620023ed565b81600381518110620017f957620017f962002cfa565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062001834576200183462002cfa565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906200187b90859060040162002c7e565b6000604051808303816000875af11580156200189b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018c5919081019062003070565b905080806020019051810190620018dd919062003129565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200191a576200191a62002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906200195e90859060040162002c7e565b6000604051808303816000875af11580156200197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019a8919081019062003070565b905080806020019051810190620019c0919062003129565b8351526040805180820190915260018152603360f81b6020820152825183906004908110620019f357620019f362002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001a3790859060040162002c7e565b6000604051808303816000875af115801562001a57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a81919081019062003070565b90508080602001905181019062001a99919062003129565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001ad95762001ad962002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b1d90859060040162002c7e565b6000604051808303816000875af115801562001b3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b67919081019062003070565b90508080602001905181019062001b7f919062003129565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001be757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001bc8575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d3657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001d1e57838290600052602060002001805462001c8a9062003143565b80601f016020809104026020016040519081016040528092919081815260200182805462001cb89062003143565b801562001d095780601f1062001cdd5761010080835404028352916020019162001d09565b820191906000526020600020905b81548152906001019060200180831162001ceb57829003601f168201915b50505050508152602001906001019062001c68565b50505050815250508152602001906001019062001c15565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001d365760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001ed457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001e955790505b5050505050815250508152602001906001019062001e27565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001d3657838290600052602060002001805462001f339062003143565b80601f016020809104026020016040519081016040528092919081815260200182805462001f619062003143565b801562001fb25780601f1062001f865761010080835404028352916020019162001fb2565b820191906000526020600020905b81548152906001019060200180831162001f9457829003601f168201915b50505050508152602001906001019062001f11565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001d365760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200209857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620020595790505b5050505050815250508152602001906001019062001feb565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001d36578382906000526020600020018054620020f79062003143565b80601f0160208091040260200160405190810160405280929190818152602001828054620021259062003143565b8015620021765780601f106200214a5761010080835404028352916020019162002176565b820191906000526020600020905b8154815290600101906020018083116200215857829003601f168201915b505050505081526020019060010190620020d5565b600754600090610100900460ff1615620021ae5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620022bd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200223f917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003180565b60408051601f19818403018152908290526200225b91620031b3565b6000604051808303816000865af19150503d80600081146200229a576040519150601f19603f3d011682016040523d82523d6000602084013e6200229f565b606091505b5091505080806020019051810190620022b99190620031d1565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b60408051808201909152600080825260208201526200236b62002983565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620023a057620023a2565bfe5b5080620023e55760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b606081620024125750506040805180820190915260018152600360fc1b602082015290565b8160005b8115620024425780620024298162002e9a565b91506200243a9050600a836200320b565b915062002416565b60008167ffffffffffffffff81111562002460576200246062002ce4565b6040519080825280601f01601f1916602001820160405280156200248b576020820181803683370190505b5090505b84156200250357620024a360018362003222565b9150620024b2600a866200323c565b620024bf90603062003253565b60f81b818381518110620024d757620024d762002cfa565b60200101906001600160f81b031916908160001a905350620024fb600a866200320b565b94506200248f565b949350505050565b6000848484846040516200251f90620029a1565b6200252e94939291906200326e565b604051809103906000f0801580156200254b573d6000803e3d6000fd5b506027546031546021546040516001600160a01b03808616602483015291821660448201529394506000939281169291169063485cc95560e01b9060640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620025c8906200287a565b620025d69392919062002de9565b604051809103906000f080158015620025f3573d6000803e3d6000fd5b5060408051600180825281830190925291925060009190602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050828260008151811062002654576200265462002cfa565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa158015620026ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026e09190620032b9565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200272257600080fd5b505af115801562002737573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b354791506200276f9085908590600401620032e4565b600060405180830381600087803b1580156200278a57600080fd5b505af11580156200279f573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b610718806200334283390190565b6107788062003a5a83390190565b609480620041d283390190565b61022a806200426683390190565b6103f3806200449083390190565b610e81806200488383390190565b614ad0806200570483390190565b6104e4806200a1d483390190565b615c46806200a6b883390190565b61338a80620102fe83390190565b610efe806201368883390190565b613169806201458683390190565b611f7880620176ef83390190565b611ab4806201966783390190565b61117d806201b11b83390190565b613958806201c29883390190565b61210b806201fbf083390190565b6113ec8062021cfb83390190565b6116e080620230e783390190565b61618780620247c783390190565b611a25806202a94e83390190565b60405180604001604052806200296f620029af565b81526020016200297e620029af565b905290565b60405180606001604052806003906020820280368337509192915050565b610e60806202c37383390190565b60405180604001604052806002906020820280368337509192915050565b600060208284031215620029e057600080fd5b5035919050565b8060005b600281101562002a0c578151845260209384019390910190600101620029eb565b50505050565b600060808201905062002a27828451620029e7565b602083015162002a3b6040840182620029e7565b5092915050565b600081518084526020808501945080840160005b8381101562002a7d5781516001600160a01b03168752958201959082019060010162002a56565b509495945050505050565b60208152600062002a9d602083018462002a42565b9392505050565b60005b8381101562002ac157818101518382015260200162002aa7565b8381111562002a0c5750506000910152565b6000815180845262002aed81602086016020860162002aa4565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002bb757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002ba057605f1989850301835262002b8d84865162002ad3565b948e01949350918d019160010162002b6e565b505050978a01979450509188019160010162002b28565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002c6f57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002c595783516001600160e01b0319168252928b019260019290920191908b019062002c2d565b50978a0197955050509187019160010162002bef565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002cd757603f1988860301845262002cc485835162002ad3565b9450928501929085019060010162002ca5565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60408152600062002d25604083018562002a42565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b600060018060a01b03808916835260208189168185015260ff8816604085015286606085015260c0608085015262002da160c085018762002a42565b84810360a0860152855180825282870193509082019060005b8181101562002dd85784518352938301939183019160010162002dba565b50909b9a5050505050505050505050565b6001600160a01b0384811682528316602082015260606040820181905260009062002e179083018462002ad3565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b81526000825162002e4a81600d85016020870162002aa4565b91909101600d0192915050565b6214d51560ea1b81526000825162002e7781600385016020870162002aa4565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b600060001982141562002eb15762002eb162002e84565b5060010190565b600081518084526020808501945080840160005b8381101562002a7d5781516bffffffffffffffffffffffff168752958201959082019060010162002ecc565b600082825180855260208086019550808260051b8401018186016000805b8581101562002f8f57868403601f19018a52825180518086529086019086860190845b8181101562002f7957835180516001600160a01b031684528901516bffffffffffffffffffffffff16898401529288019260409092019160010162002f39565b50509a86019a9450509184019160010162002f16565b509198975050505050505050565b600061010080830160018060a01b03808d1685526020818d16818701526040828d16818801526060838d168189015260ff8c1660808901528560a08901528495508a51935083855261012088019550828b01945060005b8481101562003031578551805163ffffffff1688528481015161ffff908116868a0152908401511683880152958101959483019460010162002ff4565b50505050505082810360c08401526200304b818662002eb8565b905082810360e084015262003061818562002ef8565b9b9a5050505050505050505050565b6000602082840312156200308357600080fd5b815167ffffffffffffffff808211156200309c57600080fd5b818401915084601f830112620030b157600080fd5b815181811115620030c657620030c662002ce4565b604051601f8201601f19908116603f01168101908382118183101715620030f157620030f162002ce4565b816040528281528760208487010111156200310b57600080fd5b6200311e83602083016020880162002aa4565b979650505050505050565b6000602082840312156200313c57600080fd5b5051919050565b600181811c908216806200315857607f821691505b602082108114156200317a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090620031a581600485016020870162002aa4565b919091016004019392505050565b60008251620031c781846020870162002aa4565b9190910192915050565b600060208284031215620031e457600080fd5b8151801515811462002a9d57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826200321d576200321d620031f5565b500490565b60008282101562003237576200323762002e84565b500390565b6000826200324e576200324e620031f5565b500690565b6000821982111562003269576200326962002e84565b500190565b60808152600062003283608083018762002ad3565b828103602084015262003297818762002ad3565b604084019590955250506001600160a01b039190911660609091015292915050565b600060208284031215620032cc57600080fd5b81516001600160a01b038116811462002a9d57600080fd5b604081526000620032f9604083018562002a42565b82810360208481019190915284518083528582019282019060005b818110156200333457845115158352938301939183019160010162003314565b509097965050505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c0033a2646970667358221220ff08a238b61a3e0a69d40ef94c9fe4bb04a067eaeb8edb74a7f5d8e92e8cff1764736f6c634300080c00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@\x81\x90R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x81\x17\x90\x92U`2\x80T0\x90\x83\x16\x17\x90U`3\x80T\x90\x91\x16s\xBE\xB9\x86N=j\x1B\xA4N\x13\x1AF/c(\xF2\xD1\xD6\xD5M\x17\x90U\x7F\xA3\xE2\xA0\xC4\xCE k\x9Cfy\xACca\xC04\xF3\x1C\x88D\xAE1\x04\x10\x8FG\xED\x8CA:\xCF32`4\x81\x90U`\x01b^y\xB7`\xE0\x1B\x03\x19\x83R`\x84R\x90c\xFF\xA1\x86I\x90`\xA4\x90` \x90`$\x81\x86Z\xFA\x15\x80\x15b\0\0\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF3\x91\x90b\0\x0B\nV[`5\x80T`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90U`6\x80Tsi\x15\xA6xw\xA1x\xD5\x12\x9A(\xD2\xAF\x87\x1A\xC1\xFC\xEB?\xD3\x92\x16\x91\x90\x91\x17\x90U`\0`=\x81\x90U`CU4\x80\x15b\0\x01JW`\0\x80\xFD[P`\0[b\0\x01[`\x05\x80b\0\x0BRV[c\xFF\xFF\xFF\xFF\x16\x81\x10\x15b\0\x03XWb\0\x01sb\0\t\xFBV[`\0b\0\x01\x82\x83`\x01b\0\x0B}V[`@Q` \x01b\0\x01\x95\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1C\x90Pb\0\x01\xDE\x81b\0\x01\xCAb\0\x03_` \x1Bb\0#$\x17` \x1CV[b\0\x03\x88` \x1Bb\0#M\x17\x90\x91\x90` \x1CV[\x82` \x01\x81\x90RPb\0\x01\xFC\x81b\0\x04(` \x1Bb\0\x16\xD7\x17` \x1CV[`@\x83\x01\x90\x81R`>\x80T`\x01\x81\x81\x01\x90\x92U\x7F\x8D\x80\rf\x14\xD3^\xEDss>\xE4S\x16J;H\x07n\xB3\x13\x8FFj\xDE\xEB\x9D\xEC{\xB3\x1Fp\x01\x83\x90U`?\x80T\x91\x82\x01\x81U`\0R\x83Q\x80Q`\x08\x90\x92\x02\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFD\x81\x01\x92\x83U` \x91\x82\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFE\x82\x01U\x81\x86\x01Q\x80Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFF\x83\x01U\x90\x91\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\0\x82\x01U\x91Q\x80Q\x85\x93\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\x01\x01\x90b\0\x03#\x90\x82\x90`\x02b\0\nPV[P` \x82\x01Qb\0\x03;\x90`\x02\x80\x84\x01\x91\x90b\0\nPV[PPPPPPP\x80\x80b\0\x03O\x90b\0\x0B\x98V[\x91PPb\0\x01NV[Pb\0\r\xC3V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x03\xA6b\0\n\x93V[\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\x15b\0\x03\xDBWb\0\x03\xDDV[\xFE[P\x80b\0\x04 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[b\0\x042b\0\n\xB1V[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x04JW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x04\x93Wb\0\x04\x93b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x04\xD0Wb\0\x04\xD0b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7Ftest/ffi/go/g2mul.go\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81`\x02\x81Q\x81\x10b\0\x05'Wb\0\x05'b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RPb\0\x05H\x83b\0\x08\xDE` \x1Bb\0#\xED\x17` \x1CV[\x81`\x03\x81Q\x81\x10b\0\x05^Wb\0\x05^b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x05\x99Wb\0\x05\x99b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x05\xDB\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x06%\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x06=\x91\x90b\0\rKV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x06zWb\0\x06zb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x06\xB9\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x06\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\x03\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\x1B\x91\x90b\0\rKV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x07NWb\0\x07Nb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x07\x8D\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\xD7\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\xEF\x91\x90b\0\rKV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x08/Wb\0\x08/b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x08n\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x08\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x08\xB8\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x08\xD0\x91\x90b\0\rKV[` \x84\x01QRP\x90\x92\x91PPV[``\x81b\0\t\x03WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0\t3W\x80b\0\t\x1A\x81b\0\x0B\x98V[\x91Pb\0\t+\x90P`\n\x83b\0\r{V[\x91Pb\0\t\x07V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\tPWb\0\tPb\0\x0B\xCCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\t{W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0\t\xF3Wb\0\t\x93`\x01\x83b\0\r\x92V[\x91Pb\0\t\xA2`\n\x86b\0\r\xACV[b\0\t\xAF\x90`0b\0\x0B}V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0\t\xC7Wb\0\t\xC7b\0\x0B\xB6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0\t\xEB`\n\x86b\0\r{V[\x94Pb\0\t\x7FV[\x94\x93PPPPV[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\n<`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\nKb\0\n\xB1V[\x90R\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\n\x81W\x91` \x02\x82\x01[\x82\x81\x11\x15b\0\n\x81W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\ndV[Pb\0\n\x8F\x92\x91Pb\0\n\xD5V[P\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80b\0\n\xC6b\0\n\xECV[\x81R` \x01b\0\nKb\0\n\xECV[[\x80\x82\x11\x15b\0\n\x8FW`\0\x81U`\x01\x01b\0\n\xD6V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0\x0B\x1DW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0B5W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15b\0\x0BtWb\0\x0Btb\0\x0B^<#\x14b\0\x02\0W\x80c?r\x86\xF4\x14b\0\x02\nW`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01>W\x80c\n\x92T\xE4\x14b\0\x01oW\x80c\x13\x1E/\x18\x14b\0\x01{W\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xA1W[`\0\x80\xFD[`5Tb\0\x01R\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[b\0\x01yb\0\x02\xC9V[\0[b\0\x01\x92b\0\x01\x8C6`\x04b\0)\xCDV[b\0\x16\xD7V[`@Qb\0\x01f\x91\x90b\0*\x12V[b\0\x01\xABb\0\x1B\x8DV[`@Qb\0\x01f\x91\x90b\0*\x88V[b\0\x01\xC4b\0\x1B\xF1V[`@Qb\0\x01f\x91\x90b\0+\x01V[b\0\x01\xDD`4T\x81V[`@Q\x90\x81R` \x01b\0\x01fV[`.Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xABb\0\x1D?V[b\0\x01\xABb\0\x1D\xA1V[b\0\x02\x1Eb\0\x1E\x03V[`@Qb\0\x01f\x91\x90b\0+\xC7V[`\x1ETb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02_b\0\x1E\xEDV[`@Qb\0\x01f\x91\x90b\0,~V[b\0\x02\x1Eb\0\x1F\xC7V[`3Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02_b\0 \xB1V[b\0\x02\xA0b\0!\x8BV[`@Q\x90\x15\x15\x81R` \x01b\0\x01fV[b\0\x01\xABb\0\"\xC2V[`\x07Tb\0\x02\xA0\x90`\xFF\x16\x81V[`@Qb\0\x02\xD7\x90b\0(5V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x02\xF4W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x03PWb\0\x03Pb\0,\xFAV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x03\x82\x90b\0(CV[b\0\x03\x8F\x92\x91\x90b\0-\x10V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xACW=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x03\xDE\x90b\0(QV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xFBW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x04\x0C\x90b\0(^V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04)W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x04X\x90b\0(lV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04uW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x04\xAA\x90b\0(zV[b\0\x04\xB7\x92\x91\x90b\0-=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\t\x90b\0(zV[b\0\x05\x16\x92\x91\x90b\0-=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05h\x90b\0(zV[b\0\x05u\x92\x91\x90b\0-=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xC7\x90b\0(zV[b\0\x05\xD4\x92\x91\x90b\0-=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06&\x90b\0(zV[b\0\x063\x92\x91\x90b\0-=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x06\x8E\x90b\0(\x88V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xD3W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07\x01\x90b\0(\x96V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07.W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x07r\x90b\0(\xA4V[`\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\x07\xAFW=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x07\xE1\x90b\0(\xB2V[`\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\x08\x1EW=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08I\x90b\0(\xC0V[`\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\x08}W=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xBD\x90b\0(\xCEV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\tW=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\t-\x90b\0(\xDCV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tZW=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\t\xC0\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0-eV[`@\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\n\t\x93\x92\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n$W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n9W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\n\xCC\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\xE7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\xFCW=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\x88\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0B\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0B\xB8W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0CN\x93\x91\x16\x91\x8A\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0CiW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C~W=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\r\n\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r%W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r:W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\r[\x91Pb\0(\xEAV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\x88W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0ENW`\0b\0\r\xC3\x82b\0#\xEDV[\x90P`\0\x81`@Q` \x01b\0\r\xDA\x91\x90b\0. V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E\0\x91\x90b\0.WV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0E5\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0%\x0BV[PPP\x80\x80b\0\x0EE\x90b\0.\x9AV[\x91PPb\0\r\xACV[P`@Qb\0\x0E]\x90b\0(\xF8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0EzW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\xD9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E\xEEW=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x0F\x11\x90b\0(zV[b\0\x0F\x1E\x92\x91\x90b\0-=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0Fp\x90b\0(zV[b\0\x0F}\x92\x91\x90b\0-=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0F\xCF\x90b\0(zV[b\0\x0F\xDC\x92\x91\x90b\0-=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10.\x90b\0(zV[b\0\x10;\x92\x91\x90b\0-=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\x8D\x90b\0(zV[b\0\x10\x9A\x92\x91\x90b\0-=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x11\x13W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11(W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x11R\x90b\0)\x06V[`\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\x86W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xAA\x90b\0)\x14V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xD7W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xFB\x90b\0)\"V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12(W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x12Z\x90b\0)0V[`\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\x12\x97W=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x92\x93P\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x12\xECW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\x01W=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13WW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13lW=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x86\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xC2W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xD7W=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x85\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14-W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14BW=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x90W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\xA5W=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x14\xDD\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\x15\"W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x15\xADV[`@\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\x15\x7FW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x15\xE3V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x15\xCDW\x90P[P`@Q`$\x01b\0\x15\xFD\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0/\x9DV[`@\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\x16F\x93\x92\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16aW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16vW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x16\x88\x90b\0)LV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x16\xA5W=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x16\xE1b\0)ZV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16\xF9W\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x17BWb\0\x17Bb\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x17\x7FWb\0\x17\x7Fb\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10b\0\x17\xCDWb\0\x17\xCDb\0,\xFAV[` \x02` \x01\x01\x81\x90RPb\0\x17\xE3\x83b\0#\xEDV[\x81`\x03\x81Q\x81\x10b\0\x17\xF9Wb\0\x17\xF9b\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x184Wb\0\x184b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x18{\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\x9BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x18\xC5\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x18\xDD\x91\x90b\x001)V[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x19\x1AWb\0\x19\x1Ab\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x19^\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19\xA8\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x19\xC0\x91\x90b\x001)V[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x19\xF3Wb\0\x19\xF3b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1A7\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1AWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x81\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\x99\x91\x90b\x001)V[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1A\xD9Wb\0\x1A\xD9b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1B\x1D\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1Bg\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\x7F\x91\x90b\x001)V[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1D\x1EW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1C\x8A\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1C\xB8\x90b\x001CV[\x80\x15b\0\x1D\tW\x80`\x1F\x10b\0\x1C\xDDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1D\tV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1C\xEBW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1ChV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\x15V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\x1E\xD4W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\x1E\x95W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1E'V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1F3\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1Fa\x90b\x001CV[\x80\x15b\0\x1F\xB2W\x80`\x1F\x10b\0\x1F\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1F\xB2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1F\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\x11V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0 \x98W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0 YW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\xEBV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0 \xF7\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0!%\x90b\x001CV[\x80\x15b\0!vW\x80`\x1F\x10b\0!JWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0!vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0!XW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0 \xD5V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0!\xAEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\"\xBDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0\"?\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\x001\x80V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\"[\x91b\x001\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\"\x9AW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\"\x9FV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0\"\xB9\x91\x90b\x001\xD1V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0#kb\0)\x83V[\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\x15b\0#\xA0Wb\0#\xA2V[\xFE[P\x80b\0#\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\0$\x12WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0$BW\x80b\0$)\x81b\0.\x9AV[\x91Pb\0$:\x90P`\n\x83b\x002\x0BV[\x91Pb\0$\x16V[`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0$`Wb\0$`b\0,\xE4V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0$\x8BW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0%\x03Wb\0$\xA3`\x01\x83b\x002\"V[\x91Pb\0$\xB2`\n\x86b\x002=`\0\xFD[P`'T`1T`!T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`$\x83\x01R\x91\x82\x16`D\x82\x01R\x93\x94P`\0\x93\x92\x81\x16\x92\x91\x16\x90cH\\\xC9U`\xE0\x1B\x90`d\x01`@\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\x90Qb\0%\xC8\x90b\0(zV[b\0%\xD6\x93\x92\x91\x90b\0-\xE9V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0%\xF3W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\0&TWb\0&Tb\0,\xFAV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0&\xBAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0&\xE0\x91\x90b\x002\xB9V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\"W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'7W=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\0'o\x90\x85\x90\x85\x90`\x04\x01b\x002\xE4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\x8AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'\x9FW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[a\x07\x18\x80b\x003B\x839\x01\x90V[a\x07x\x80b\0:Z\x839\x01\x90V[`\x94\x80b\0A\xD2\x839\x01\x90V[a\x02*\x80b\0Bf\x839\x01\x90V[a\x03\xF3\x80b\0D\x90\x839\x01\x90V[a\x0E\x81\x80b\0H\x83\x839\x01\x90V[aJ\xD0\x80b\0W\x04\x839\x01\x90V[a\x04\xE4\x80b\0\xA1\xD4\x839\x01\x90V[a\\F\x80b\0\xA6\xB8\x839\x01\x90V[a3\x8A\x80b\x01\x02\xFE\x839\x01\x90V[a\x0E\xFE\x80b\x016\x88\x839\x01\x90V[a1i\x80b\x01E\x86\x839\x01\x90V[a\x1Fx\x80b\x01v\xEF\x839\x01\x90V[a\x1A\xB4\x80b\x01\x96g\x839\x01\x90V[a\x11}\x80b\x01\xB1\x1B\x839\x01\x90V[a9X\x80b\x01\xC2\x98\x839\x01\x90V[a!\x0B\x80b\x01\xFB\xF0\x839\x01\x90V[a\x13\xEC\x80b\x02\x1C\xFB\x839\x01\x90V[a\x16\xE0\x80b\x020\xE7\x839\x01\x90V[aa\x87\x80b\x02G\xC7\x839\x01\x90V[a\x1A%\x80b\x02\xA9N\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0)ob\0)\xAFV[\x81R` \x01b\0)~b\0)\xAFV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[a\x0E`\x80b\x02\xC3s\x839\x01\x90V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0)\xE0W`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15b\0*\x0CW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01b\0)\xEBV[PPPPV[`\0`\x80\x82\x01\x90Pb\0*'\x82\x84Qb\0)\xE7V[` \x83\x01Qb\0*;`@\x84\x01\x82b\0)\xE7V[P\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0*}W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0*VV[P\x94\x95\x94PPPPPV[` \x81R`\0b\0*\x9D` \x83\x01\x84b\0*BV[\x93\x92PPPV[`\0[\x83\x81\x10\x15b\0*\xC1W\x81\x81\x01Q\x83\x82\x01R` \x01b\0*\xA7V[\x83\x81\x11\x15b\0*\x0CWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Rb\0*\xED\x81` \x86\x01` \x86\x01b\0*\xA4V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0+\xB7W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0+\xA0W`_\x19\x89\x85\x03\x01\x83Rb\0+\x8D\x84\x86Qb\0*\xD3V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0+nV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0+(V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0,oW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0,YW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0,-V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0+\xEFV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0,\xD7W`?\x19\x88\x86\x03\x01\x84Rb\0,\xC4\x85\x83Qb\0*\xD3V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0,\xA5V[P\x92\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0-%`@\x83\x01\x85b\0*BV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\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`\x01\x80`\xA0\x1B\x03\x80\x89\x16\x83R` \x81\x89\x16\x81\x85\x01R`\xFF\x88\x16`@\x85\x01R\x86``\x85\x01R`\xC0`\x80\x85\x01Rb\0-\xA1`\xC0\x85\x01\x87b\0*BV[\x84\x81\x03`\xA0\x86\x01R\x85Q\x80\x82R\x82\x87\x01\x93P\x90\x82\x01\x90`\0[\x81\x81\x10\x15b\0-\xD8W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01b\0-\xBAV[P\x90\x9B\x9APPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0.\x17\x90\x83\x01\x84b\0*\xD3V[\x95\x94PPPPPV[l)\xBA90\xBA2\xB3\xBC\xAA7\xB5\xB2\xB7`\x99\x1B\x81R`\0\x82Qb\0.J\x81`\r\x85\x01` \x87\x01b\0*\xA4V[\x91\x90\x91\x01`\r\x01\x92\x91PPV[b\x14\xD5\x15`\xEA\x1B\x81R`\0\x82Qb\0.w\x81`\x03\x85\x01` \x87\x01b\0*\xA4V[\x91\x90\x91\x01`\x03\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15b\0.\xB1Wb\0.\xB1b\0.\x84V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0*}W\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.\xCCV[`\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/\x8FW\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/yW\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/9V[PP\x9A\x86\x01\x9A\x94PP\x91\x84\x01\x91`\x01\x01b\0/\x16V[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\x0001W\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/\xF4V[PPPPPP\x82\x81\x03`\xC0\x84\x01Rb\x000K\x81\x86b\0.\xB8V[\x90P\x82\x81\x03`\xE0\x84\x01Rb\x000a\x81\x85b\0.\xF8V[\x9B\x9APPPPPPPPPPPV[`\0` \x82\x84\x03\x12\x15b\x000\x83W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\x000\x9CW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\x000\xB1W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\x000\xC6Wb\x000\xC6b\0,\xE4V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\x000\xF1Wb\x000\xF1b\0,\xE4V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15b\x001\x0BW`\0\x80\xFD[b\x001\x1E\x83` \x83\x01` \x88\x01b\0*\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15b\x001a\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 \xFF\x08\xA28\xB6\x1A>\ni\xD4\x0E\xF9L\x9F\xE4\xBB\x04\xA0g\xEA\xEB\x8E\xDBt\xA7\xF5\xD8\xE9.\x8C\xFF\x17dsolcC\0\x08\x0C\x003\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060043610620001395760003560e01c806366d9a9a011620000bb5780639d8b9cb4116200007a5780639d8b9cb41462000278578063b5508aa9146200028c578063ba414fa61462000296578063e20c9f7114620002b1578063fa7626d414620002bb57600080fd5b806366d9a9a014620002145780636b3aa72e146200022d5780636d14a987146200024157806385226c811462000255578063916a17c6146200026e57600080fd5b80632ade388011620001085780632ade388014620001ba5780632dbcb04c14620001d35780633dfb40e014620001ec5780633e5e3c2314620002005780633f7286f4146200020a57600080fd5b8063054310e6146200013e5780630a9254e4146200016f578063131e2f18146200017b5780631ed7831c14620001a1575b600080fd5b60355462000152906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b62000179620002c9565b005b620001926200018c366004620029cd565b620016d7565b60405162000166919062002a12565b620001ab62001b8d565b60405162000166919062002a88565b620001c462001bf1565b60405162000166919062002b01565b620001dd60345481565b60405190815260200162000166565b602e5462000152906001600160a01b031681565b620001ab62001d3f565b620001ab62001da1565b6200021e62001e03565b60405162000166919062002bc7565b601e5462000152906001600160a01b031681565b60285462000152906001600160a01b031681565b6200025f62001eed565b60405162000166919062002c7e565b6200021e62001fc7565b60335462000152906001600160a01b031681565b6200025f620020b1565b620002a06200218b565b604051901515815260200162000166565b620001ab620022c2565b600754620002a09060ff1681565b604051620002d79062002835565b604051809103906000f080158015620002f4573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b8160008151811062000350576200035062002cfa565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c604051620003829062002843565b6200038f92919062002d10565b604051809103906000f080158015620003ac573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620003de9062002851565b604051809103906000f080158015620003fb573d6000803e3d6000fd5b5090506040516200040c906200285e565b604051809103906000f08015801562000429573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b039290921691909117905560405162000458906200286c565b604051809103906000f08015801562000475573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620004aa906200287a565b620004b792919062002d3c565b604051809103906000f080158015620004d4573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000509906200287a565b6200051692919062002d3c565b604051809103906000f08015801562000533573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000568906200287a565b6200057592919062002d3c565b604051809103906000f08015801562000592573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005c7906200287a565b620005d492919062002d3c565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000626906200287a565b6200063392919062002d3c565b604051809103906000f08015801562000650573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03928316179055602554602054604051918316921690640773594000906200068e9062002888565b6001600160a01b03938416815292909116602083015267ffffffffffffffff166040820152606001604051809103906000f080158015620006d3573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620007019062002896565b6001600160a01b039091168152602001604051809103906000f0801580156200072e573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f54602254602054604051600094938416939283169291909116906200077290620028a4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620007af573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b03938416939283169290911690620007e190620028b2565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200081e573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b0392831692909116906200084990620028c0565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200087d573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b039586169594851694938416939283169290911690620008bd90620028ce565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000909573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b03909116906200092d90620028dc565b6001600160a01b039091168152602001604051809103906000f0801580156200095a573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b93620009c0939183169216908b8b8b6064820162002d65565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000a0993929160040162002de9565b600060405180830381600087803b15801562000a2457600080fd5b505af115801562000a39573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000acc9391909216918c9160040162002de9565b600060405180830381600087803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000b889391909216918b9160040162002de9565b600060405180830381600087803b15801562000ba357600080fd5b505af115801562000bb8573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000c4e939116918a9160040162002de9565b600060405180830381600087803b15801562000c6957600080fd5b505af115801562000c7e573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000d0a939190921691899160040162002de9565b600060405180830381600087803b15801562000d2557600080fd5b505af115801562000d3a573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d5b9150620028ea565b6001600160a01b039091168152602001604051809103906000f08015801562000d88573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000e4e57600062000dc382620023ed565b905060008160405160200162000dda919062002e20565b604051602081830303815290604052905060008260405160200162000e00919062002e57565b604051602081830303815290604052905062000e3582827502ac3a4edbbfb8014e3ba83411e915e8000000000000306200250b565b505050808062000e459062002e9a565b91505062000dac565b5060405162000e5d90620028f8565b604051809103906000f08015801562000e7a573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000ed957600080fd5b505af115801562000eee573d6000803e3d6000fd5b50506031546040518c93506001600160a01b03909116915062000f11906200287a565b62000f1e92919062002d3c565b604051809103906000f08015801562000f3b573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000f70906200287a565b62000f7d92919062002d3c565b604051809103906000f08015801562000f9a573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000fcf906200287a565b62000fdc92919062002d3c565b604051809103906000f08015801562000ff9573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200102e906200287a565b6200103b92919062002d3c565b604051809103906000f08015801562001058573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200108d906200287a565b6200109a92919062002d3c565b604051809103906000f080158015620010b7573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200111357600080fd5b505af115801562001128573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b039283169350911690620011529062002906565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001186573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011aa9062002914565b6001600160a01b039091168152602001604051809103906000f080158015620011d7573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011fb9062002922565b6001600160a01b039091168152602001604051809103906000f08015801562001228573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b039384169392831692909116906200125a9062002930565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562001297573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81526001600160a01b039182166004820152878216602482015292935016906399a88ec490604401600060405180830381600087803b158015620012ec57600080fd5b505af115801562001301573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0391821660048201528782166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200135757600080fd5b505af11580156200136c573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0391821660048201528682166024820152911692506399a88ec49150604401600060405180830381600087803b158015620013c257600080fd5b505af1158015620013d7573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0391821660048201528582166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200142d57600080fd5b505af115801562001442573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b1580156200149057600080fd5b505af1158015620014a5573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b0394851695509284169391821692911690620014dd906200293e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001522573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b9690821695908216949082169391169181620015ad565b60408051606081018252600080825260208083018290529282015282526000199092019101816200157f5790505b5060408051600080825260208201818152828401909352909190620015e3565b6060815260200190600190039081620015cd5790505b50604051602401620015fd98979695949392919062002f9d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b90921682526200164693929160040162002de9565b600060405180830381600087803b1580156200166157600080fd5b505af115801562001676573d6000803e3d6000fd5b5050505060405162001688906200294c565b604051809103906000f080158015620016a5573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b620016e16200295a565b60408051600580825260c08201909252600091816020015b6060815260200190600190039081620016f957905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062001742576200174262002cfa565b602002602001018190525060405180604001604052806003815260200162393ab760e91b815250816001815181106200177f576200177f62002cfa565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b81525081600281518110620017cd57620017cd62002cfa565b6020026020010181905250620017e383620023ed565b81600381518110620017f957620017f962002cfa565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062001834576200183462002cfa565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906200187b90859060040162002c7e565b6000604051808303816000875af11580156200189b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018c5919081019062003070565b905080806020019051810190620018dd919062003129565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200191a576200191a62002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906200195e90859060040162002c7e565b6000604051808303816000875af11580156200197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019a8919081019062003070565b905080806020019051810190620019c0919062003129565b8351526040805180820190915260018152603360f81b6020820152825183906004908110620019f357620019f362002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001a3790859060040162002c7e565b6000604051808303816000875af115801562001a57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a81919081019062003070565b90508080602001905181019062001a99919062003129565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001ad95762001ad962002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b1d90859060040162002c7e565b6000604051808303816000875af115801562001b3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b67919081019062003070565b90508080602001905181019062001b7f919062003129565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001be757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001bc8575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d3657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001d1e57838290600052602060002001805462001c8a9062003143565b80601f016020809104026020016040519081016040528092919081815260200182805462001cb89062003143565b801562001d095780601f1062001cdd5761010080835404028352916020019162001d09565b820191906000526020600020905b81548152906001019060200180831162001ceb57829003601f168201915b50505050508152602001906001019062001c68565b50505050815250508152602001906001019062001c15565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001d365760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001ed457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001e955790505b5050505050815250508152602001906001019062001e27565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001d3657838290600052602060002001805462001f339062003143565b80601f016020809104026020016040519081016040528092919081815260200182805462001f619062003143565b801562001fb25780601f1062001f865761010080835404028352916020019162001fb2565b820191906000526020600020905b81548152906001019060200180831162001f9457829003601f168201915b50505050508152602001906001019062001f11565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001d365760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200209857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620020595790505b5050505050815250508152602001906001019062001feb565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001d36578382906000526020600020018054620020f79062003143565b80601f0160208091040260200160405190810160405280929190818152602001828054620021259062003143565b8015620021765780601f106200214a5761010080835404028352916020019162002176565b820191906000526020600020905b8154815290600101906020018083116200215857829003601f168201915b505050505081526020019060010190620020d5565b600754600090610100900460ff1615620021ae5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620022bd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200223f917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003180565b60408051601f19818403018152908290526200225b91620031b3565b6000604051808303816000865af19150503d80600081146200229a576040519150601f19603f3d011682016040523d82523d6000602084013e6200229f565b606091505b5091505080806020019051810190620022b99190620031d1565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b60408051808201909152600080825260208201526200236b62002983565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620023a057620023a2565bfe5b5080620023e55760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b606081620024125750506040805180820190915260018152600360fc1b602082015290565b8160005b8115620024425780620024298162002e9a565b91506200243a9050600a836200320b565b915062002416565b60008167ffffffffffffffff81111562002460576200246062002ce4565b6040519080825280601f01601f1916602001820160405280156200248b576020820181803683370190505b5090505b84156200250357620024a360018362003222565b9150620024b2600a866200323c565b620024bf90603062003253565b60f81b818381518110620024d757620024d762002cfa565b60200101906001600160f81b031916908160001a905350620024fb600a866200320b565b94506200248f565b949350505050565b6000848484846040516200251f90620029a1565b6200252e94939291906200326e565b604051809103906000f0801580156200254b573d6000803e3d6000fd5b506027546031546021546040516001600160a01b03808616602483015291821660448201529394506000939281169291169063485cc95560e01b9060640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620025c8906200287a565b620025d69392919062002de9565b604051809103906000f080158015620025f3573d6000803e3d6000fd5b5060408051600180825281830190925291925060009190602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050828260008151811062002654576200265462002cfa565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa158015620026ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026e09190620032b9565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200272257600080fd5b505af115801562002737573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b354791506200276f9085908590600401620032e4565b600060405180830381600087803b1580156200278a57600080fd5b505af11580156200279f573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b610718806200334283390190565b6107788062003a5a83390190565b609480620041d283390190565b61022a806200426683390190565b6103f3806200449083390190565b610e81806200488383390190565b614ad0806200570483390190565b6104e4806200a1d483390190565b615c46806200a6b883390190565b61338a80620102fe83390190565b610efe806201368883390190565b613169806201458683390190565b611f7880620176ef83390190565b611ab4806201966783390190565b61117d806201b11b83390190565b613958806201c29883390190565b61210b806201fbf083390190565b6113ec8062021cfb83390190565b6116e080620230e783390190565b61618780620247c783390190565b611a25806202a94e83390190565b60405180604001604052806200296f620029af565b81526020016200297e620029af565b905290565b60405180606001604052806003906020820280368337509192915050565b610e60806202c37383390190565b60405180604001604052806002906020820280368337509192915050565b600060208284031215620029e057600080fd5b5035919050565b8060005b600281101562002a0c578151845260209384019390910190600101620029eb565b50505050565b600060808201905062002a27828451620029e7565b602083015162002a3b6040840182620029e7565b5092915050565b600081518084526020808501945080840160005b8381101562002a7d5781516001600160a01b03168752958201959082019060010162002a56565b509495945050505050565b60208152600062002a9d602083018462002a42565b9392505050565b60005b8381101562002ac157818101518382015260200162002aa7565b8381111562002a0c5750506000910152565b6000815180845262002aed81602086016020860162002aa4565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002bb757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002ba057605f1989850301835262002b8d84865162002ad3565b948e01949350918d019160010162002b6e565b505050978a01979450509188019160010162002b28565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002c6f57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002c595783516001600160e01b0319168252928b019260019290920191908b019062002c2d565b50978a0197955050509187019160010162002bef565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002cd757603f1988860301845262002cc485835162002ad3565b9450928501929085019060010162002ca5565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60408152600062002d25604083018562002a42565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b600060018060a01b03808916835260208189168185015260ff8816604085015286606085015260c0608085015262002da160c085018762002a42565b84810360a0860152855180825282870193509082019060005b8181101562002dd85784518352938301939183019160010162002dba565b50909b9a5050505050505050505050565b6001600160a01b0384811682528316602082015260606040820181905260009062002e179083018462002ad3565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b81526000825162002e4a81600d85016020870162002aa4565b91909101600d0192915050565b6214d51560ea1b81526000825162002e7781600385016020870162002aa4565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b600060001982141562002eb15762002eb162002e84565b5060010190565b600081518084526020808501945080840160005b8381101562002a7d5781516bffffffffffffffffffffffff168752958201959082019060010162002ecc565b600082825180855260208086019550808260051b8401018186016000805b8581101562002f8f57868403601f19018a52825180518086529086019086860190845b8181101562002f7957835180516001600160a01b031684528901516bffffffffffffffffffffffff16898401529288019260409092019160010162002f39565b50509a86019a9450509184019160010162002f16565b509198975050505050505050565b600061010080830160018060a01b03808d1685526020818d16818701526040828d16818801526060838d168189015260ff8c1660808901528560a08901528495508a51935083855261012088019550828b01945060005b8481101562003031578551805163ffffffff1688528481015161ffff908116868a0152908401511683880152958101959483019460010162002ff4565b50505050505082810360c08401526200304b818662002eb8565b905082810360e084015262003061818562002ef8565b9b9a5050505050505050505050565b6000602082840312156200308357600080fd5b815167ffffffffffffffff808211156200309c57600080fd5b818401915084601f830112620030b157600080fd5b815181811115620030c657620030c662002ce4565b604051601f8201601f19908116603f01168101908382118183101715620030f157620030f162002ce4565b816040528281528760208487010111156200310b57600080fd5b6200311e83602083016020880162002aa4565b979650505050505050565b6000602082840312156200313c57600080fd5b5051919050565b600181811c908216806200315857607f821691505b602082108114156200317a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090620031a581600485016020870162002aa4565b919091016004019392505050565b60008251620031c781846020870162002aa4565b9190910192915050565b600060208284031215620031e457600080fd5b8151801515811462002a9d57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826200321d576200321d620031f5565b500490565b60008282101562003237576200323762002e84565b500390565b6000826200324e576200324e620031f5565b500690565b6000821982111562003269576200326962002e84565b500190565b60808152600062003283608083018762002ad3565b828103602084015262003297818762002ad3565b604084019590955250506001600160a01b039190911660609091015292915050565b600060208284031215620032cc57600080fd5b81516001600160a01b038116811462002a9d57600080fd5b604081526000620032f9604083018562002a42565b82810360208481019190915284518083528582019282019060005b818110156200333457845115158352938301939183019160010162003314565b509097965050505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c0033a2646970667358221220ff08a238b61a3e0a69d40ef94c9fe4bb04a067eaeb8edb74a7f5d8e92e8cff1764736f6c634300080c0033 + /// ``` + #[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\x019W`\x005`\xE0\x1C\x80cf\xD9\xA9\xA0\x11b\0\0\xBBW\x80c\x9D\x8B\x9C\xB4\x11b\0\0zW\x80c\x9D\x8B\x9C\xB4\x14b\0\x02xW\x80c\xB5P\x8A\xA9\x14b\0\x02\x8CW\x80c\xBAAO\xA6\x14b\0\x02\x96W\x80c\xE2\x0C\x9Fq\x14b\0\x02\xB1W\x80c\xFAv&\xD4\x14b\0\x02\xBBW`\0\x80\xFD[\x80cf\xD9\xA9\xA0\x14b\0\x02\x14W\x80ck:\xA7.\x14b\0\x02-W\x80cm\x14\xA9\x87\x14b\0\x02AW\x80c\x85\"l\x81\x14b\0\x02UW\x80c\x91j\x17\xC6\x14b\0\x02nW`\0\x80\xFD[\x80c*\xDE8\x80\x11b\0\x01\x08W\x80c*\xDE8\x80\x14b\0\x01\xBAW\x80c-\xBC\xB0L\x14b\0\x01\xD3W\x80c=\xFB@\xE0\x14b\0\x01\xECW\x80c>^<#\x14b\0\x02\0W\x80c?r\x86\xF4\x14b\0\x02\nW`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01>W\x80c\n\x92T\xE4\x14b\0\x01oW\x80c\x13\x1E/\x18\x14b\0\x01{W\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xA1W[`\0\x80\xFD[`5Tb\0\x01R\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[b\0\x01yb\0\x02\xC9V[\0[b\0\x01\x92b\0\x01\x8C6`\x04b\0)\xCDV[b\0\x16\xD7V[`@Qb\0\x01f\x91\x90b\0*\x12V[b\0\x01\xABb\0\x1B\x8DV[`@Qb\0\x01f\x91\x90b\0*\x88V[b\0\x01\xC4b\0\x1B\xF1V[`@Qb\0\x01f\x91\x90b\0+\x01V[b\0\x01\xDD`4T\x81V[`@Q\x90\x81R` \x01b\0\x01fV[`.Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xABb\0\x1D?V[b\0\x01\xABb\0\x1D\xA1V[b\0\x02\x1Eb\0\x1E\x03V[`@Qb\0\x01f\x91\x90b\0+\xC7V[`\x1ETb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02_b\0\x1E\xEDV[`@Qb\0\x01f\x91\x90b\0,~V[b\0\x02\x1Eb\0\x1F\xC7V[`3Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02_b\0 \xB1V[b\0\x02\xA0b\0!\x8BV[`@Q\x90\x15\x15\x81R` \x01b\0\x01fV[b\0\x01\xABb\0\"\xC2V[`\x07Tb\0\x02\xA0\x90`\xFF\x16\x81V[`@Qb\0\x02\xD7\x90b\0(5V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x02\xF4W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x03PWb\0\x03Pb\0,\xFAV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x03\x82\x90b\0(CV[b\0\x03\x8F\x92\x91\x90b\0-\x10V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xACW=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x03\xDE\x90b\0(QV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xFBW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x04\x0C\x90b\0(^V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04)W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x04X\x90b\0(lV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04uW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x04\xAA\x90b\0(zV[b\0\x04\xB7\x92\x91\x90b\0-=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\t\x90b\0(zV[b\0\x05\x16\x92\x91\x90b\0-=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05h\x90b\0(zV[b\0\x05u\x92\x91\x90b\0-=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xC7\x90b\0(zV[b\0\x05\xD4\x92\x91\x90b\0-=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06&\x90b\0(zV[b\0\x063\x92\x91\x90b\0-=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x06\x8E\x90b\0(\x88V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xD3W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07\x01\x90b\0(\x96V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07.W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x07r\x90b\0(\xA4V[`\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\x07\xAFW=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x07\xE1\x90b\0(\xB2V[`\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\x08\x1EW=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08I\x90b\0(\xC0V[`\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\x08}W=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xBD\x90b\0(\xCEV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\tW=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\t-\x90b\0(\xDCV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tZW=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\t\xC0\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0-eV[`@\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\n\t\x93\x92\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n$W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n9W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\n\xCC\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\xE7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\xFCW=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\x88\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0B\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0B\xB8W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0CN\x93\x91\x16\x91\x8A\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0CiW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C~W=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\r\n\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r%W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r:W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\r[\x91Pb\0(\xEAV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\x88W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0ENW`\0b\0\r\xC3\x82b\0#\xEDV[\x90P`\0\x81`@Q` \x01b\0\r\xDA\x91\x90b\0. V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E\0\x91\x90b\0.WV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0E5\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0%\x0BV[PPP\x80\x80b\0\x0EE\x90b\0.\x9AV[\x91PPb\0\r\xACV[P`@Qb\0\x0E]\x90b\0(\xF8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0EzW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\xD9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E\xEEW=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x0F\x11\x90b\0(zV[b\0\x0F\x1E\x92\x91\x90b\0-=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0Fp\x90b\0(zV[b\0\x0F}\x92\x91\x90b\0-=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0F\xCF\x90b\0(zV[b\0\x0F\xDC\x92\x91\x90b\0-=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10.\x90b\0(zV[b\0\x10;\x92\x91\x90b\0-=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\x8D\x90b\0(zV[b\0\x10\x9A\x92\x91\x90b\0-=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x11\x13W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11(W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x11R\x90b\0)\x06V[`\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\x86W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xAA\x90b\0)\x14V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xD7W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xFB\x90b\0)\"V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12(W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x12Z\x90b\0)0V[`\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\x12\x97W=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x92\x93P\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x12\xECW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\x01W=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13WW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13lW=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x86\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xC2W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xD7W=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x85\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14-W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14BW=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x90W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\xA5W=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x14\xDD\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\x15\"W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x15\xADV[`@\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\x15\x7FW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x15\xE3V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x15\xCDW\x90P[P`@Q`$\x01b\0\x15\xFD\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0/\x9DV[`@\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\x16F\x93\x92\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16aW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16vW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x16\x88\x90b\0)LV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x16\xA5W=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x16\xE1b\0)ZV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16\xF9W\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x17BWb\0\x17Bb\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x17\x7FWb\0\x17\x7Fb\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10b\0\x17\xCDWb\0\x17\xCDb\0,\xFAV[` \x02` \x01\x01\x81\x90RPb\0\x17\xE3\x83b\0#\xEDV[\x81`\x03\x81Q\x81\x10b\0\x17\xF9Wb\0\x17\xF9b\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x184Wb\0\x184b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x18{\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\x9BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x18\xC5\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x18\xDD\x91\x90b\x001)V[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x19\x1AWb\0\x19\x1Ab\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x19^\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19\xA8\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x19\xC0\x91\x90b\x001)V[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x19\xF3Wb\0\x19\xF3b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1A7\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1AWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x81\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\x99\x91\x90b\x001)V[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1A\xD9Wb\0\x1A\xD9b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1B\x1D\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1Bg\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\x7F\x91\x90b\x001)V[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1D\x1EW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1C\x8A\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1C\xB8\x90b\x001CV[\x80\x15b\0\x1D\tW\x80`\x1F\x10b\0\x1C\xDDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1D\tV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1C\xEBW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1ChV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\x15V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\x1E\xD4W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\x1E\x95W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1E'V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1F3\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1Fa\x90b\x001CV[\x80\x15b\0\x1F\xB2W\x80`\x1F\x10b\0\x1F\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1F\xB2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1F\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\x11V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0 \x98W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0 YW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\xEBV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0 \xF7\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0!%\x90b\x001CV[\x80\x15b\0!vW\x80`\x1F\x10b\0!JWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0!vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0!XW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0 \xD5V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0!\xAEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\"\xBDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0\"?\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\x001\x80V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\"[\x91b\x001\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\"\x9AW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\"\x9FV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0\"\xB9\x91\x90b\x001\xD1V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0#kb\0)\x83V[\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\x15b\0#\xA0Wb\0#\xA2V[\xFE[P\x80b\0#\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\0$\x12WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0$BW\x80b\0$)\x81b\0.\x9AV[\x91Pb\0$:\x90P`\n\x83b\x002\x0BV[\x91Pb\0$\x16V[`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0$`Wb\0$`b\0,\xE4V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0$\x8BW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0%\x03Wb\0$\xA3`\x01\x83b\x002\"V[\x91Pb\0$\xB2`\n\x86b\x002=`\0\xFD[P`'T`1T`!T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`$\x83\x01R\x91\x82\x16`D\x82\x01R\x93\x94P`\0\x93\x92\x81\x16\x92\x91\x16\x90cH\\\xC9U`\xE0\x1B\x90`d\x01`@\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\x90Qb\0%\xC8\x90b\0(zV[b\0%\xD6\x93\x92\x91\x90b\0-\xE9V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0%\xF3W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\0&TWb\0&Tb\0,\xFAV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0&\xBAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0&\xE0\x91\x90b\x002\xB9V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\"W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'7W=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\0'o\x90\x85\x90\x85\x90`\x04\x01b\x002\xE4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\x8AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'\x9FW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[a\x07\x18\x80b\x003B\x839\x01\x90V[a\x07x\x80b\0:Z\x839\x01\x90V[`\x94\x80b\0A\xD2\x839\x01\x90V[a\x02*\x80b\0Bf\x839\x01\x90V[a\x03\xF3\x80b\0D\x90\x839\x01\x90V[a\x0E\x81\x80b\0H\x83\x839\x01\x90V[aJ\xD0\x80b\0W\x04\x839\x01\x90V[a\x04\xE4\x80b\0\xA1\xD4\x839\x01\x90V[a\\F\x80b\0\xA6\xB8\x839\x01\x90V[a3\x8A\x80b\x01\x02\xFE\x839\x01\x90V[a\x0E\xFE\x80b\x016\x88\x839\x01\x90V[a1i\x80b\x01E\x86\x839\x01\x90V[a\x1Fx\x80b\x01v\xEF\x839\x01\x90V[a\x1A\xB4\x80b\x01\x96g\x839\x01\x90V[a\x11}\x80b\x01\xB1\x1B\x839\x01\x90V[a9X\x80b\x01\xC2\x98\x839\x01\x90V[a!\x0B\x80b\x01\xFB\xF0\x839\x01\x90V[a\x13\xEC\x80b\x02\x1C\xFB\x839\x01\x90V[a\x16\xE0\x80b\x020\xE7\x839\x01\x90V[aa\x87\x80b\x02G\xC7\x839\x01\x90V[a\x1A%\x80b\x02\xA9N\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0)ob\0)\xAFV[\x81R` \x01b\0)~b\0)\xAFV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[a\x0E`\x80b\x02\xC3s\x839\x01\x90V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0)\xE0W`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15b\0*\x0CW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01b\0)\xEBV[PPPPV[`\0`\x80\x82\x01\x90Pb\0*'\x82\x84Qb\0)\xE7V[` \x83\x01Qb\0*;`@\x84\x01\x82b\0)\xE7V[P\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0*}W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0*VV[P\x94\x95\x94PPPPPV[` \x81R`\0b\0*\x9D` \x83\x01\x84b\0*BV[\x93\x92PPPV[`\0[\x83\x81\x10\x15b\0*\xC1W\x81\x81\x01Q\x83\x82\x01R` \x01b\0*\xA7V[\x83\x81\x11\x15b\0*\x0CWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Rb\0*\xED\x81` \x86\x01` \x86\x01b\0*\xA4V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0+\xB7W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0+\xA0W`_\x19\x89\x85\x03\x01\x83Rb\0+\x8D\x84\x86Qb\0*\xD3V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0+nV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0+(V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0,oW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0,YW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0,-V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0+\xEFV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0,\xD7W`?\x19\x88\x86\x03\x01\x84Rb\0,\xC4\x85\x83Qb\0*\xD3V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0,\xA5V[P\x92\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0-%`@\x83\x01\x85b\0*BV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\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`\x01\x80`\xA0\x1B\x03\x80\x89\x16\x83R` \x81\x89\x16\x81\x85\x01R`\xFF\x88\x16`@\x85\x01R\x86``\x85\x01R`\xC0`\x80\x85\x01Rb\0-\xA1`\xC0\x85\x01\x87b\0*BV[\x84\x81\x03`\xA0\x86\x01R\x85Q\x80\x82R\x82\x87\x01\x93P\x90\x82\x01\x90`\0[\x81\x81\x10\x15b\0-\xD8W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01b\0-\xBAV[P\x90\x9B\x9APPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0.\x17\x90\x83\x01\x84b\0*\xD3V[\x95\x94PPPPPV[l)\xBA90\xBA2\xB3\xBC\xAA7\xB5\xB2\xB7`\x99\x1B\x81R`\0\x82Qb\0.J\x81`\r\x85\x01` \x87\x01b\0*\xA4V[\x91\x90\x91\x01`\r\x01\x92\x91PPV[b\x14\xD5\x15`\xEA\x1B\x81R`\0\x82Qb\0.w\x81`\x03\x85\x01` \x87\x01b\0*\xA4V[\x91\x90\x91\x01`\x03\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15b\0.\xB1Wb\0.\xB1b\0.\x84V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0*}W\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.\xCCV[`\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/\x8FW\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/yW\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/9V[PP\x9A\x86\x01\x9A\x94PP\x91\x84\x01\x91`\x01\x01b\0/\x16V[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\x0001W\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/\xF4V[PPPPPP\x82\x81\x03`\xC0\x84\x01Rb\x000K\x81\x86b\0.\xB8V[\x90P\x82\x81\x03`\xE0\x84\x01Rb\x000a\x81\x85b\0.\xF8V[\x9B\x9APPPPPPPPPPPV[`\0` \x82\x84\x03\x12\x15b\x000\x83W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\x000\x9CW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\x000\xB1W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\x000\xC6Wb\x000\xC6b\0,\xE4V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\x000\xF1Wb\x000\xF1b\0,\xE4V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15b\x001\x0BW`\0\x80\xFD[b\x001\x1E\x83` \x83\x01` \x88\x01b\0*\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15b\x001a\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 \xFF\x08\xA28\xB6\x1A>\ni\xD4\x0E\xF9L\x9F\xE4\xBB\x04\xA0g\xEA\xEB\x8E\xDBt\xA7\xF5\xD8\xE9.\x8C\xFF\x17dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mul(uint256)` and selector `0x131e2f18`. + ```solidity + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulCall { + pub x: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mul(uint256)`](mulCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulReturn { + pub g2Point: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: mulCall) -> Self { + (value.x,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { x: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: mulReturn) -> Self { + (value.g2Point,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { g2Point: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mulCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mulReturn; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mul(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 30u8, 47u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.x, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`IntegrationChecks`](self) function calls. + pub enum IntegrationChecksCalls { + IS_TEST(IS_TESTCall), + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mul(mulCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl IntegrationChecksCalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [10u8, 146u8, 84u8, 228u8], + [19u8, 30u8, 47u8, 24u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [45u8, 188u8, 176u8, 76u8], + [61u8, 251u8, 64u8, 224u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IntegrationChecksCalls { + const NAME: &'static str = "IntegrationChecksCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 19usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::avsDirectory(_) => ::SELECTOR, + Self::churnApprover(_) => ::SELECTOR, + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mul(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::timeMachine(_) => ::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 churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::churnApprover) + } + churnApprover + }, + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationChecksCalls::setUp) + } + setUp + }, + { + fn mul( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationChecksCalls::mul) + } + mul + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::churnApproverPrivateKey) + } + churnApproverPrivateKey + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::timeMachine) + } + timeMachine + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::targetSelectors) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationChecksCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationChecksCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationChecksCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApprover(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mul(inner) => ::abi_encoded_size(inner), + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::timeMachine(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApprover(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mul(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::timeMachine(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IntegrationChecks`](self) events. + pub enum IntegrationChecksEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl IntegrationChecksEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IntegrationChecksEvents { + const NAME: &'static str = "IntegrationChecksEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 IntegrationChecksEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IntegrationChecks`](self) contract instance. + + See the [wrapper's documentation](`IntegrationChecksInstance`) 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, + ) -> IntegrationChecksInstance { + IntegrationChecksInstance::::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>> + { + IntegrationChecksInstance::::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 { + IntegrationChecksInstance::::deploy_builder(provider) + } + /**A [`IntegrationChecks`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IntegrationChecks`](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 IntegrationChecksInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IntegrationChecksInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IntegrationChecksInstance") + .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, + > IntegrationChecksInstance + { + /**Creates a new wrapper around an on-chain [`IntegrationChecks`](self) contract instance. + + See the [wrapper's documentation](`IntegrationChecksInstance`) 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 IntegrationChecksInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IntegrationChecksInstance { + IntegrationChecksInstance { + 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, + > IntegrationChecksInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mul`] function. + pub fn mul( + &self, + x: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mulCall { x }) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IntegrationChecksInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/integrationconfig.rs b/crates/utils/src/middleware/integrationconfig.rs new file mode 100644 index 00000000..343edada --- /dev/null +++ b/crates/utils/src/middleware/integrationconfig.rs @@ -0,0 +1,7454 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface IntegrationConfig { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + constructor(); + + function IS_TEST() external view returns (bool); + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + function registryCoordinator() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "g2Point", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IntegrationConfig { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604081905260078054600160ff199182168117909255600b80549091169091179055601c80546000805160206202dfdc8339815191526001600160a01b0319918216811790925560328054309083161790556033805490911673beb9864e3d6a1ba44e131a462f6328f2d1d6d54d1790557fa3e2a0c4ce206b9c6679ac6361c034f31c8844ae3104108f47ed8c413acf333260348190556001625e79b760e01b031983526084529063ffa186499060a490602090602481865afa158015620000cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f3919062000b0a565b603580546001600160a01b03929092166001600160a01b031992831617905560368054736915a67877a178d5129a28d2af871ac1fceb3fd392169190911790556000603d8190556043553480156200014a57600080fd5b5060005b6200015b60058062000b52565b63ffffffff16811015620003585762000173620009fb565b60006200018283600162000b7d565b6040516020016200019591815260200190565b6040516020818303038152906040528051906020012060001c9050620001de81620001ca6200035f60201b620023241760201c565b6200038860201b6200234d1790919060201c565b8260200181905250620001fc816200042860201b620016d71760201c565b60408301908152603e805460018181019092557f8d800d6614d35eed73733ee453164a3b48076eb3138f466adeeb9dec7bb31f7001839055603f805491820181556000528351805160089092027fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd81019283556020918201517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fe8201558186015180517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58ff830155909101517fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b59008201559151805185937fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b5901019062000323908290600262000a50565b5060208201516200033b906002808401919062000a50565b5050505050505080806200034f9062000b98565b9150506200014e565b5062000dc3565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b6040805180820190915260008082526020820152620003a662000a93565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620003db57620003dd565bfe5b5080620004205760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b6200043262000ab1565b60408051600580825260c08201909252600091816020015b60608152602001906001900390816200044a57905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062000493576200049362000bb6565b602002602001018190525060405180604001604052806003815260200162393ab760e91b81525081600181518110620004d057620004d062000bb6565b60200260200101819052506040518060400160405280601481526020017f746573742f6666692f676f2f67326d756c2e676f0000000000000000000000008152508160028151811062000527576200052762000bb6565b60200260200101819052506200054883620008de60201b620023ed1760201c565b816003815181106200055e576200055e62000bb6565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062000599576200059962000bb6565b6020908102919091010152604051638916046760e01b81526000906000805160206202dfdc83398151915290638916046790620005db90859060040162000c15565b6000604051808303816000875af1158015620005fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000625919081019062000c93565b9050808060200190518101906200063d919062000d4b565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200067a576200067a62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206202dfdc83398151915290638916046790620006b990859060040162000c15565b6000604051808303816000875af1158015620006d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000703919081019062000c93565b9050808060200190518101906200071b919062000d4b565b8351526040805180820190915260018152603360f81b60208201528251839060049081106200074e576200074e62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206202dfdc833981519152906389160467906200078d90859060040162000c15565b6000604051808303816000875af1158015620007ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007d7919081019062000c93565b905080806020019051810190620007ef919062000d4b565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b815250826004815181106200082f576200082f62000bb6565b6020908102919091010152604051638916046760e01b81526000805160206202dfdc833981519152906389160467906200086e90859060040162000c15565b6000604051808303816000875af11580156200088e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008b8919081019062000c93565b905080806020019051810190620008d0919062000d4b565b602084015152509092915050565b606081620009035750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200093357806200091a8162000b98565b91506200092b9050600a8362000d7b565b915062000907565b6000816001600160401b0381111562000950576200095062000bcc565b6040519080825280601f01601f1916602001820160405280156200097b576020820181803683370190505b5090505b8415620009f3576200099360018362000d92565b9150620009a2600a8662000dac565b620009af90603062000b7d565b60f81b818381518110620009c757620009c762000bb6565b60200101906001600160f81b031916908160001a905350620009eb600a8662000d7b565b94506200097f565b949350505050565b6040805160a0810190915260006060820181815260808301919091528190815260200162000a3c604051806040016040528060008152602001600081525090565b815260200162000a4b62000ab1565b905290565b826002810192821562000a81579160200282015b8281111562000a8157825182559160200191906001019062000a64565b5062000a8f92915062000ad5565b5090565b60405180606001604052806003906020820280368337509192915050565b604051806040016040528062000ac662000aec565b815260200162000a4b62000aec565b5b8082111562000a8f576000815560010162000ad6565b60405180604001604052806002906020820280368337509192915050565b60006020828403121562000b1d57600080fd5b81516001600160a01b038116811462000b3557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681851680830382111562000b745762000b7462000b3c565b01949350505050565b6000821982111562000b935762000b9362000b3c565b500190565b600060001982141562000baf5762000baf62000b3c565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000bff57818101518382015260200162000be5565b8381111562000c0f576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562000c8657878503603f190184528151805180875262000c66818989018a850162000be2565b601f01601f19169590950186019450928501929085019060010162000c3c565b5092979650505050505050565b60006020828403121562000ca657600080fd5b81516001600160401b038082111562000cbe57600080fd5b818401915084601f83011262000cd357600080fd5b81518181111562000ce85762000ce862000bcc565b604051601f8201601f19908116603f0116810190838211818310171562000d135762000d1362000bcc565b8160405282815287602084870101111562000d2d57600080fd5b62000d4083602083016020880162000be2565b979650505050505050565b60006020828403121562000d5e57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008262000d8d5762000d8d62000d65565b500490565b60008282101562000da75762000da762000b3c565b500390565b60008262000dbe5762000dbe62000d65565b500690565b6202d2088062000dd46000396000f3fe60806040523480156200001157600080fd5b5060043610620001395760003560e01c806366d9a9a011620000bb5780639d8b9cb4116200007a5780639d8b9cb41462000278578063b5508aa9146200028c578063ba414fa61462000296578063e20c9f7114620002b1578063fa7626d414620002bb57600080fd5b806366d9a9a014620002145780636b3aa72e146200022d5780636d14a987146200024157806385226c811462000255578063916a17c6146200026e57600080fd5b80632ade388011620001085780632ade388014620001ba5780632dbcb04c14620001d35780633dfb40e014620001ec5780633e5e3c2314620002005780633f7286f4146200020a57600080fd5b8063054310e6146200013e5780630a9254e4146200016f578063131e2f18146200017b5780631ed7831c14620001a1575b600080fd5b60355462000152906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b62000179620002c9565b005b620001926200018c366004620029cd565b620016d7565b60405162000166919062002a12565b620001ab62001b8d565b60405162000166919062002a88565b620001c462001bf1565b60405162000166919062002b01565b620001dd60345481565b60405190815260200162000166565b602e5462000152906001600160a01b031681565b620001ab62001d3f565b620001ab62001da1565b6200021e62001e03565b60405162000166919062002bc7565b601e5462000152906001600160a01b031681565b60285462000152906001600160a01b031681565b6200025f62001eed565b60405162000166919062002c7e565b6200021e62001fc7565b60335462000152906001600160a01b031681565b6200025f620020b1565b620002a06200218b565b604051901515815260200162000166565b620001ab620022c2565b600754620002a09060ff1681565b604051620002d79062002835565b604051809103906000f080158015620002f4573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b8160008151811062000350576200035062002cfa565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c604051620003829062002843565b6200038f92919062002d10565b604051809103906000f080158015620003ac573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620003de9062002851565b604051809103906000f080158015620003fb573d6000803e3d6000fd5b5090506040516200040c906200285e565b604051809103906000f08015801562000429573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b039290921691909117905560405162000458906200286c565b604051809103906000f08015801562000475573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620004aa906200287a565b620004b792919062002d3c565b604051809103906000f080158015620004d4573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000509906200287a565b6200051692919062002d3c565b604051809103906000f08015801562000533573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000568906200287a565b6200057592919062002d3c565b604051809103906000f08015801562000592573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005c7906200287a565b620005d492919062002d3c565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000626906200287a565b6200063392919062002d3c565b604051809103906000f08015801562000650573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03928316179055602554602054604051918316921690640773594000906200068e9062002888565b6001600160a01b03938416815292909116602083015267ffffffffffffffff166040820152606001604051809103906000f080158015620006d3573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620007019062002896565b6001600160a01b039091168152602001604051809103906000f0801580156200072e573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f54602254602054604051600094938416939283169291909116906200077290620028a4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620007af573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b03938416939283169290911690620007e190620028b2565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200081e573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b0392831692909116906200084990620028c0565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200087d573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b039586169594851694938416939283169290911690620008bd90620028ce565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000909573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b03909116906200092d90620028dc565b6001600160a01b039091168152602001604051809103906000f0801580156200095a573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b93620009c0939183169216908b8b8b6064820162002d65565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000a0993929160040162002de9565b600060405180830381600087803b15801562000a2457600080fd5b505af115801562000a39573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000acc9391909216918c9160040162002de9565b600060405180830381600087803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000b889391909216918b9160040162002de9565b600060405180830381600087803b15801562000ba357600080fd5b505af115801562000bb8573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000c4e939116918a9160040162002de9565b600060405180830381600087803b15801562000c6957600080fd5b505af115801562000c7e573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000d0a939190921691899160040162002de9565b600060405180830381600087803b15801562000d2557600080fd5b505af115801562000d3a573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d5b9150620028ea565b6001600160a01b039091168152602001604051809103906000f08015801562000d88573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000e4e57600062000dc382620023ed565b905060008160405160200162000dda919062002e20565b604051602081830303815290604052905060008260405160200162000e00919062002e57565b604051602081830303815290604052905062000e3582827502ac3a4edbbfb8014e3ba83411e915e8000000000000306200250b565b505050808062000e459062002e9a565b91505062000dac565b5060405162000e5d90620028f8565b604051809103906000f08015801562000e7a573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000ed957600080fd5b505af115801562000eee573d6000803e3d6000fd5b50506031546040518c93506001600160a01b03909116915062000f11906200287a565b62000f1e92919062002d3c565b604051809103906000f08015801562000f3b573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000f70906200287a565b62000f7d92919062002d3c565b604051809103906000f08015801562000f9a573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000fcf906200287a565b62000fdc92919062002d3c565b604051809103906000f08015801562000ff9573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200102e906200287a565b6200103b92919062002d3c565b604051809103906000f08015801562001058573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200108d906200287a565b6200109a92919062002d3c565b604051809103906000f080158015620010b7573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200111357600080fd5b505af115801562001128573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b039283169350911690620011529062002906565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001186573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011aa9062002914565b6001600160a01b039091168152602001604051809103906000f080158015620011d7573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011fb9062002922565b6001600160a01b039091168152602001604051809103906000f08015801562001228573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b039384169392831692909116906200125a9062002930565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562001297573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81526001600160a01b039182166004820152878216602482015292935016906399a88ec490604401600060405180830381600087803b158015620012ec57600080fd5b505af115801562001301573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0391821660048201528782166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200135757600080fd5b505af11580156200136c573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0391821660048201528682166024820152911692506399a88ec49150604401600060405180830381600087803b158015620013c257600080fd5b505af1158015620013d7573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0391821660048201528582166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200142d57600080fd5b505af115801562001442573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b1580156200149057600080fd5b505af1158015620014a5573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b0394851695509284169391821692911690620014dd906200293e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001522573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b9690821695908216949082169391169181620015ad565b60408051606081018252600080825260208083018290529282015282526000199092019101816200157f5790505b5060408051600080825260208201818152828401909352909190620015e3565b6060815260200190600190039081620015cd5790505b50604051602401620015fd98979695949392919062002f9d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b90921682526200164693929160040162002de9565b600060405180830381600087803b1580156200166157600080fd5b505af115801562001676573d6000803e3d6000fd5b5050505060405162001688906200294c565b604051809103906000f080158015620016a5573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b620016e16200295a565b60408051600580825260c08201909252600091816020015b6060815260200190600190039081620016f957905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062001742576200174262002cfa565b602002602001018190525060405180604001604052806003815260200162393ab760e91b815250816001815181106200177f576200177f62002cfa565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b81525081600281518110620017cd57620017cd62002cfa565b6020026020010181905250620017e383620023ed565b81600381518110620017f957620017f962002cfa565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062001834576200183462002cfa565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906200187b90859060040162002c7e565b6000604051808303816000875af11580156200189b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018c5919081019062003070565b905080806020019051810190620018dd919062003129565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200191a576200191a62002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906200195e90859060040162002c7e565b6000604051808303816000875af11580156200197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019a8919081019062003070565b905080806020019051810190620019c0919062003129565b8351526040805180820190915260018152603360f81b6020820152825183906004908110620019f357620019f362002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001a3790859060040162002c7e565b6000604051808303816000875af115801562001a57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a81919081019062003070565b90508080602001905181019062001a99919062003129565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001ad95762001ad962002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b1d90859060040162002c7e565b6000604051808303816000875af115801562001b3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b67919081019062003070565b90508080602001905181019062001b7f919062003129565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001be757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001bc8575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d3657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001d1e57838290600052602060002001805462001c8a9062003143565b80601f016020809104026020016040519081016040528092919081815260200182805462001cb89062003143565b801562001d095780601f1062001cdd5761010080835404028352916020019162001d09565b820191906000526020600020905b81548152906001019060200180831162001ceb57829003601f168201915b50505050508152602001906001019062001c68565b50505050815250508152602001906001019062001c15565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001d365760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001ed457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001e955790505b5050505050815250508152602001906001019062001e27565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001d3657838290600052602060002001805462001f339062003143565b80601f016020809104026020016040519081016040528092919081815260200182805462001f619062003143565b801562001fb25780601f1062001f865761010080835404028352916020019162001fb2565b820191906000526020600020905b81548152906001019060200180831162001f9457829003601f168201915b50505050508152602001906001019062001f11565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001d365760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200209857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620020595790505b5050505050815250508152602001906001019062001feb565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001d36578382906000526020600020018054620020f79062003143565b80601f0160208091040260200160405190810160405280929190818152602001828054620021259062003143565b8015620021765780601f106200214a5761010080835404028352916020019162002176565b820191906000526020600020905b8154815290600101906020018083116200215857829003601f168201915b505050505081526020019060010190620020d5565b600754600090610100900460ff1615620021ae5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620022bd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200223f917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003180565b60408051601f19818403018152908290526200225b91620031b3565b6000604051808303816000865af19150503d80600081146200229a576040519150601f19603f3d011682016040523d82523d6000602084013e6200229f565b606091505b5091505080806020019051810190620022b99190620031d1565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b60408051808201909152600080825260208201526200236b62002983565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620023a057620023a2565bfe5b5080620023e55760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b606081620024125750506040805180820190915260018152600360fc1b602082015290565b8160005b8115620024425780620024298162002e9a565b91506200243a9050600a836200320b565b915062002416565b60008167ffffffffffffffff81111562002460576200246062002ce4565b6040519080825280601f01601f1916602001820160405280156200248b576020820181803683370190505b5090505b84156200250357620024a360018362003222565b9150620024b2600a866200323c565b620024bf90603062003253565b60f81b818381518110620024d757620024d762002cfa565b60200101906001600160f81b031916908160001a905350620024fb600a866200320b565b94506200248f565b949350505050565b6000848484846040516200251f90620029a1565b6200252e94939291906200326e565b604051809103906000f0801580156200254b573d6000803e3d6000fd5b506027546031546021546040516001600160a01b03808616602483015291821660448201529394506000939281169291169063485cc95560e01b9060640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620025c8906200287a565b620025d69392919062002de9565b604051809103906000f080158015620025f3573d6000803e3d6000fd5b5060408051600180825281830190925291925060009190602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050828260008151811062002654576200265462002cfa565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa158015620026ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026e09190620032b9565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200272257600080fd5b505af115801562002737573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b354791506200276f9085908590600401620032e4565b600060405180830381600087803b1580156200278a57600080fd5b505af11580156200279f573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b610718806200334283390190565b6107788062003a5a83390190565b609480620041d283390190565b61022a806200426683390190565b6103f3806200449083390190565b610e81806200488383390190565b614ad0806200570483390190565b6104e4806200a1d483390190565b615c46806200a6b883390190565b61338a80620102fe83390190565b610efe806201368883390190565b613169806201458683390190565b611f7880620176ef83390190565b611ab4806201966783390190565b61117d806201b11b83390190565b613958806201c29883390190565b61210b806201fbf083390190565b6113ec8062021cfb83390190565b6116e080620230e783390190565b61618780620247c783390190565b611a25806202a94e83390190565b60405180604001604052806200296f620029af565b81526020016200297e620029af565b905290565b60405180606001604052806003906020820280368337509192915050565b610e60806202c37383390190565b60405180604001604052806002906020820280368337509192915050565b600060208284031215620029e057600080fd5b5035919050565b8060005b600281101562002a0c578151845260209384019390910190600101620029eb565b50505050565b600060808201905062002a27828451620029e7565b602083015162002a3b6040840182620029e7565b5092915050565b600081518084526020808501945080840160005b8381101562002a7d5781516001600160a01b03168752958201959082019060010162002a56565b509495945050505050565b60208152600062002a9d602083018462002a42565b9392505050565b60005b8381101562002ac157818101518382015260200162002aa7565b8381111562002a0c5750506000910152565b6000815180845262002aed81602086016020860162002aa4565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002bb757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002ba057605f1989850301835262002b8d84865162002ad3565b948e01949350918d019160010162002b6e565b505050978a01979450509188019160010162002b28565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002c6f57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002c595783516001600160e01b0319168252928b019260019290920191908b019062002c2d565b50978a0197955050509187019160010162002bef565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002cd757603f1988860301845262002cc485835162002ad3565b9450928501929085019060010162002ca5565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60408152600062002d25604083018562002a42565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b600060018060a01b03808916835260208189168185015260ff8816604085015286606085015260c0608085015262002da160c085018762002a42565b84810360a0860152855180825282870193509082019060005b8181101562002dd85784518352938301939183019160010162002dba565b50909b9a5050505050505050505050565b6001600160a01b0384811682528316602082015260606040820181905260009062002e179083018462002ad3565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b81526000825162002e4a81600d85016020870162002aa4565b91909101600d0192915050565b6214d51560ea1b81526000825162002e7781600385016020870162002aa4565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b600060001982141562002eb15762002eb162002e84565b5060010190565b600081518084526020808501945080840160005b8381101562002a7d5781516bffffffffffffffffffffffff168752958201959082019060010162002ecc565b600082825180855260208086019550808260051b8401018186016000805b8581101562002f8f57868403601f19018a52825180518086529086019086860190845b8181101562002f7957835180516001600160a01b031684528901516bffffffffffffffffffffffff16898401529288019260409092019160010162002f39565b50509a86019a9450509184019160010162002f16565b509198975050505050505050565b600061010080830160018060a01b03808d1685526020818d16818701526040828d16818801526060838d168189015260ff8c1660808901528560a08901528495508a51935083855261012088019550828b01945060005b8481101562003031578551805163ffffffff1688528481015161ffff908116868a0152908401511683880152958101959483019460010162002ff4565b50505050505082810360c08401526200304b818662002eb8565b905082810360e084015262003061818562002ef8565b9b9a5050505050505050505050565b6000602082840312156200308357600080fd5b815167ffffffffffffffff808211156200309c57600080fd5b818401915084601f830112620030b157600080fd5b815181811115620030c657620030c662002ce4565b604051601f8201601f19908116603f01168101908382118183101715620030f157620030f162002ce4565b816040528281528760208487010111156200310b57600080fd5b6200311e83602083016020880162002aa4565b979650505050505050565b6000602082840312156200313c57600080fd5b5051919050565b600181811c908216806200315857607f821691505b602082108114156200317a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090620031a581600485016020870162002aa4565b919091016004019392505050565b60008251620031c781846020870162002aa4565b9190910192915050565b600060208284031215620031e457600080fd5b8151801515811462002a9d57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826200321d576200321d620031f5565b500490565b60008282101562003237576200323762002e84565b500390565b6000826200324e576200324e620031f5565b500690565b6000821982111562003269576200326962002e84565b500190565b60808152600062003283608083018762002ad3565b828103602084015262003297818762002ad3565b604084019590955250506001600160a01b039190911660609091015292915050565b600060208284031215620032cc57600080fd5b81516001600160a01b038116811462002a9d57600080fd5b604081526000620032f9604083018562002a42565b82810360208481019190915284518083528582019282019060005b818110156200333457845115158352938301939183019160010162003314565b509097965050505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c0033a2646970667358221220179378aa0c85fd5b364e9103dd7bd251a6ac070c5ae3e7b3249a4024bfb358af64736f6c634300080c00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@\x81\x90R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x81\x17\x90\x92U`2\x80T0\x90\x83\x16\x17\x90U`3\x80T\x90\x91\x16s\xBE\xB9\x86N=j\x1B\xA4N\x13\x1AF/c(\xF2\xD1\xD6\xD5M\x17\x90U\x7F\xA3\xE2\xA0\xC4\xCE k\x9Cfy\xACca\xC04\xF3\x1C\x88D\xAE1\x04\x10\x8FG\xED\x8CA:\xCF32`4\x81\x90U`\x01b^y\xB7`\xE0\x1B\x03\x19\x83R`\x84R\x90c\xFF\xA1\x86I\x90`\xA4\x90` \x90`$\x81\x86Z\xFA\x15\x80\x15b\0\0\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF3\x91\x90b\0\x0B\nV[`5\x80T`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90U`6\x80Tsi\x15\xA6xw\xA1x\xD5\x12\x9A(\xD2\xAF\x87\x1A\xC1\xFC\xEB?\xD3\x92\x16\x91\x90\x91\x17\x90U`\0`=\x81\x90U`CU4\x80\x15b\0\x01JW`\0\x80\xFD[P`\0[b\0\x01[`\x05\x80b\0\x0BRV[c\xFF\xFF\xFF\xFF\x16\x81\x10\x15b\0\x03XWb\0\x01sb\0\t\xFBV[`\0b\0\x01\x82\x83`\x01b\0\x0B}V[`@Q` \x01b\0\x01\x95\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1C\x90Pb\0\x01\xDE\x81b\0\x01\xCAb\0\x03_` \x1Bb\0#$\x17` \x1CV[b\0\x03\x88` \x1Bb\0#M\x17\x90\x91\x90` \x1CV[\x82` \x01\x81\x90RPb\0\x01\xFC\x81b\0\x04(` \x1Bb\0\x16\xD7\x17` \x1CV[`@\x83\x01\x90\x81R`>\x80T`\x01\x81\x81\x01\x90\x92U\x7F\x8D\x80\rf\x14\xD3^\xEDss>\xE4S\x16J;H\x07n\xB3\x13\x8FFj\xDE\xEB\x9D\xEC{\xB3\x1Fp\x01\x83\x90U`?\x80T\x91\x82\x01\x81U`\0R\x83Q\x80Q`\x08\x90\x92\x02\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFD\x81\x01\x92\x83U` \x91\x82\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFE\x82\x01U\x81\x86\x01Q\x80Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+X\xFF\x83\x01U\x90\x91\x01Q\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\0\x82\x01U\x91Q\x80Q\x85\x93\x7F\xC00\x04\xE3\xCE\x07\x84\xBFh\x18c\x940hI\xF9\xB7\xB1 \0s\x10\\\xD9\xAE\xB5T\xA1\x80+Y\x01\x01\x90b\0\x03#\x90\x82\x90`\x02b\0\nPV[P` \x82\x01Qb\0\x03;\x90`\x02\x80\x84\x01\x91\x90b\0\nPV[PPPPPPP\x80\x80b\0\x03O\x90b\0\x0B\x98V[\x91PPb\0\x01NV[Pb\0\r\xC3V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x03\xA6b\0\n\x93V[\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\x15b\0\x03\xDBWb\0\x03\xDDV[\xFE[P\x80b\0\x04 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[b\0\x042b\0\n\xB1V[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x04JW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x04\x93Wb\0\x04\x93b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x04\xD0Wb\0\x04\xD0b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7Ftest/ffi/go/g2mul.go\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81`\x02\x81Q\x81\x10b\0\x05'Wb\0\x05'b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RPb\0\x05H\x83b\0\x08\xDE` \x1Bb\0#\xED\x17` \x1CV[\x81`\x03\x81Q\x81\x10b\0\x05^Wb\0\x05^b\0\x0B\xB6V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x05\x99Wb\0\x05\x99b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x05\xDB\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x05\xFBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x06%\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x06=\x91\x90b\0\rKV[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x06zWb\0\x06zb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x06\xB9\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x06\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\x03\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\x1B\x91\x90b\0\rKV[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x07NWb\0\x07Nb\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x07\x8D\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x07\xD7\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x07\xEF\x91\x90b\0\rKV[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x08/Wb\0\x08/b\0\x0B\xB6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x80Q` b\x02\xDF\xDC\x839\x81Q\x91R\x90c\x89\x16\x04g\x90b\0\x08n\x90\x85\x90`\x04\x01b\0\x0C\x15V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x08\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x08\xB8\x91\x90\x81\x01\x90b\0\x0C\x93V[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x08\xD0\x91\x90b\0\rKV[` \x84\x01QRP\x90\x92\x91PPV[``\x81b\0\t\x03WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0\t3W\x80b\0\t\x1A\x81b\0\x0B\x98V[\x91Pb\0\t+\x90P`\n\x83b\0\r{V[\x91Pb\0\t\x07V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\tPWb\0\tPb\0\x0B\xCCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0\t{W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0\t\xF3Wb\0\t\x93`\x01\x83b\0\r\x92V[\x91Pb\0\t\xA2`\n\x86b\0\r\xACV[b\0\t\xAF\x90`0b\0\x0B}V[`\xF8\x1B\x81\x83\x81Q\x81\x10b\0\t\xC7Wb\0\t\xC7b\0\x0B\xB6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPb\0\t\xEB`\n\x86b\0\r{V[\x94Pb\0\t\x7FV[\x94\x93PPPPV[`@\x80Q`\xA0\x81\x01\x90\x91R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x91\x90\x91R\x81\x90\x81R` \x01b\0\n<`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01b\0\nKb\0\n\xB1V[\x90R\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\n\x81W\x91` \x02\x82\x01[\x82\x81\x11\x15b\0\n\x81W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\ndV[Pb\0\n\x8F\x92\x91Pb\0\n\xD5V[P\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80b\0\n\xC6b\0\n\xECV[\x81R` \x01b\0\nKb\0\n\xECV[[\x80\x82\x11\x15b\0\n\x8FW`\0\x81U`\x01\x01b\0\n\xD6V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0\x0B\x1DW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0B5W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15b\0\x0BtWb\0\x0Btb\0\x0B^<#\x14b\0\x02\0W\x80c?r\x86\xF4\x14b\0\x02\nW`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01>W\x80c\n\x92T\xE4\x14b\0\x01oW\x80c\x13\x1E/\x18\x14b\0\x01{W\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xA1W[`\0\x80\xFD[`5Tb\0\x01R\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[b\0\x01yb\0\x02\xC9V[\0[b\0\x01\x92b\0\x01\x8C6`\x04b\0)\xCDV[b\0\x16\xD7V[`@Qb\0\x01f\x91\x90b\0*\x12V[b\0\x01\xABb\0\x1B\x8DV[`@Qb\0\x01f\x91\x90b\0*\x88V[b\0\x01\xC4b\0\x1B\xF1V[`@Qb\0\x01f\x91\x90b\0+\x01V[b\0\x01\xDD`4T\x81V[`@Q\x90\x81R` \x01b\0\x01fV[`.Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xABb\0\x1D?V[b\0\x01\xABb\0\x1D\xA1V[b\0\x02\x1Eb\0\x1E\x03V[`@Qb\0\x01f\x91\x90b\0+\xC7V[`\x1ETb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02_b\0\x1E\xEDV[`@Qb\0\x01f\x91\x90b\0,~V[b\0\x02\x1Eb\0\x1F\xC7V[`3Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02_b\0 \xB1V[b\0\x02\xA0b\0!\x8BV[`@Q\x90\x15\x15\x81R` \x01b\0\x01fV[b\0\x01\xABb\0\"\xC2V[`\x07Tb\0\x02\xA0\x90`\xFF\x16\x81V[`@Qb\0\x02\xD7\x90b\0(5V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x02\xF4W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x03PWb\0\x03Pb\0,\xFAV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x03\x82\x90b\0(CV[b\0\x03\x8F\x92\x91\x90b\0-\x10V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xACW=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x03\xDE\x90b\0(QV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xFBW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x04\x0C\x90b\0(^V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04)W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x04X\x90b\0(lV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04uW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x04\xAA\x90b\0(zV[b\0\x04\xB7\x92\x91\x90b\0-=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\t\x90b\0(zV[b\0\x05\x16\x92\x91\x90b\0-=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05h\x90b\0(zV[b\0\x05u\x92\x91\x90b\0-=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xC7\x90b\0(zV[b\0\x05\xD4\x92\x91\x90b\0-=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06&\x90b\0(zV[b\0\x063\x92\x91\x90b\0-=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x06\x8E\x90b\0(\x88V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xD3W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07\x01\x90b\0(\x96V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07.W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x07r\x90b\0(\xA4V[`\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\x07\xAFW=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x07\xE1\x90b\0(\xB2V[`\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\x08\x1EW=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08I\x90b\0(\xC0V[`\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\x08}W=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xBD\x90b\0(\xCEV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\tW=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\t-\x90b\0(\xDCV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tZW=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\t\xC0\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0-eV[`@\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\n\t\x93\x92\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n$W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n9W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\n\xCC\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\xE7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\xFCW=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\x88\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0B\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0B\xB8W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0CN\x93\x91\x16\x91\x8A\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0CiW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C~W=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\r\n\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r%W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r:W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\r[\x91Pb\0(\xEAV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\x88W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0ENW`\0b\0\r\xC3\x82b\0#\xEDV[\x90P`\0\x81`@Q` \x01b\0\r\xDA\x91\x90b\0. V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E\0\x91\x90b\0.WV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0E5\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0%\x0BV[PPP\x80\x80b\0\x0EE\x90b\0.\x9AV[\x91PPb\0\r\xACV[P`@Qb\0\x0E]\x90b\0(\xF8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0EzW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\xD9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E\xEEW=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x0F\x11\x90b\0(zV[b\0\x0F\x1E\x92\x91\x90b\0-=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0Fp\x90b\0(zV[b\0\x0F}\x92\x91\x90b\0-=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0F\xCF\x90b\0(zV[b\0\x0F\xDC\x92\x91\x90b\0-=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10.\x90b\0(zV[b\0\x10;\x92\x91\x90b\0-=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\x8D\x90b\0(zV[b\0\x10\x9A\x92\x91\x90b\0-=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x11\x13W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11(W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x11R\x90b\0)\x06V[`\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\x86W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xAA\x90b\0)\x14V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xD7W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xFB\x90b\0)\"V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12(W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x12Z\x90b\0)0V[`\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\x12\x97W=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x92\x93P\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x12\xECW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\x01W=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13WW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13lW=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x86\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xC2W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xD7W=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x85\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14-W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14BW=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x90W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\xA5W=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x14\xDD\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\x15\"W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x15\xADV[`@\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\x15\x7FW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x15\xE3V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x15\xCDW\x90P[P`@Q`$\x01b\0\x15\xFD\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0/\x9DV[`@\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\x16F\x93\x92\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16aW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16vW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x16\x88\x90b\0)LV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x16\xA5W=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x16\xE1b\0)ZV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16\xF9W\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x17BWb\0\x17Bb\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x17\x7FWb\0\x17\x7Fb\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10b\0\x17\xCDWb\0\x17\xCDb\0,\xFAV[` \x02` \x01\x01\x81\x90RPb\0\x17\xE3\x83b\0#\xEDV[\x81`\x03\x81Q\x81\x10b\0\x17\xF9Wb\0\x17\xF9b\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x184Wb\0\x184b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x18{\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\x9BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x18\xC5\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x18\xDD\x91\x90b\x001)V[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x19\x1AWb\0\x19\x1Ab\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x19^\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19\xA8\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x19\xC0\x91\x90b\x001)V[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x19\xF3Wb\0\x19\xF3b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1A7\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1AWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x81\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\x99\x91\x90b\x001)V[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1A\xD9Wb\0\x1A\xD9b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1B\x1D\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1Bg\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\x7F\x91\x90b\x001)V[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1D\x1EW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1C\x8A\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1C\xB8\x90b\x001CV[\x80\x15b\0\x1D\tW\x80`\x1F\x10b\0\x1C\xDDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1D\tV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1C\xEBW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1ChV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\x15V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\x1E\xD4W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\x1E\x95W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1E'V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1F3\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1Fa\x90b\x001CV[\x80\x15b\0\x1F\xB2W\x80`\x1F\x10b\0\x1F\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1F\xB2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1F\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\x11V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0 \x98W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0 YW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\xEBV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0 \xF7\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0!%\x90b\x001CV[\x80\x15b\0!vW\x80`\x1F\x10b\0!JWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0!vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0!XW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0 \xD5V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0!\xAEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\"\xBDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0\"?\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\x001\x80V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\"[\x91b\x001\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\"\x9AW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\"\x9FV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0\"\xB9\x91\x90b\x001\xD1V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0#kb\0)\x83V[\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\x15b\0#\xA0Wb\0#\xA2V[\xFE[P\x80b\0#\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\0$\x12WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0$BW\x80b\0$)\x81b\0.\x9AV[\x91Pb\0$:\x90P`\n\x83b\x002\x0BV[\x91Pb\0$\x16V[`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0$`Wb\0$`b\0,\xE4V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0$\x8BW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0%\x03Wb\0$\xA3`\x01\x83b\x002\"V[\x91Pb\0$\xB2`\n\x86b\x002=`\0\xFD[P`'T`1T`!T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`$\x83\x01R\x91\x82\x16`D\x82\x01R\x93\x94P`\0\x93\x92\x81\x16\x92\x91\x16\x90cH\\\xC9U`\xE0\x1B\x90`d\x01`@\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\x90Qb\0%\xC8\x90b\0(zV[b\0%\xD6\x93\x92\x91\x90b\0-\xE9V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0%\xF3W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\0&TWb\0&Tb\0,\xFAV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0&\xBAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0&\xE0\x91\x90b\x002\xB9V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\"W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'7W=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\0'o\x90\x85\x90\x85\x90`\x04\x01b\x002\xE4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\x8AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'\x9FW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[a\x07\x18\x80b\x003B\x839\x01\x90V[a\x07x\x80b\0:Z\x839\x01\x90V[`\x94\x80b\0A\xD2\x839\x01\x90V[a\x02*\x80b\0Bf\x839\x01\x90V[a\x03\xF3\x80b\0D\x90\x839\x01\x90V[a\x0E\x81\x80b\0H\x83\x839\x01\x90V[aJ\xD0\x80b\0W\x04\x839\x01\x90V[a\x04\xE4\x80b\0\xA1\xD4\x839\x01\x90V[a\\F\x80b\0\xA6\xB8\x839\x01\x90V[a3\x8A\x80b\x01\x02\xFE\x839\x01\x90V[a\x0E\xFE\x80b\x016\x88\x839\x01\x90V[a1i\x80b\x01E\x86\x839\x01\x90V[a\x1Fx\x80b\x01v\xEF\x839\x01\x90V[a\x1A\xB4\x80b\x01\x96g\x839\x01\x90V[a\x11}\x80b\x01\xB1\x1B\x839\x01\x90V[a9X\x80b\x01\xC2\x98\x839\x01\x90V[a!\x0B\x80b\x01\xFB\xF0\x839\x01\x90V[a\x13\xEC\x80b\x02\x1C\xFB\x839\x01\x90V[a\x16\xE0\x80b\x020\xE7\x839\x01\x90V[aa\x87\x80b\x02G\xC7\x839\x01\x90V[a\x1A%\x80b\x02\xA9N\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0)ob\0)\xAFV[\x81R` \x01b\0)~b\0)\xAFV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[a\x0E`\x80b\x02\xC3s\x839\x01\x90V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0)\xE0W`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15b\0*\x0CW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01b\0)\xEBV[PPPPV[`\0`\x80\x82\x01\x90Pb\0*'\x82\x84Qb\0)\xE7V[` \x83\x01Qb\0*;`@\x84\x01\x82b\0)\xE7V[P\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0*}W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0*VV[P\x94\x95\x94PPPPPV[` \x81R`\0b\0*\x9D` \x83\x01\x84b\0*BV[\x93\x92PPPV[`\0[\x83\x81\x10\x15b\0*\xC1W\x81\x81\x01Q\x83\x82\x01R` \x01b\0*\xA7V[\x83\x81\x11\x15b\0*\x0CWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Rb\0*\xED\x81` \x86\x01` \x86\x01b\0*\xA4V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0+\xB7W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0+\xA0W`_\x19\x89\x85\x03\x01\x83Rb\0+\x8D\x84\x86Qb\0*\xD3V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0+nV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0+(V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0,oW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0,YW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0,-V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0+\xEFV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0,\xD7W`?\x19\x88\x86\x03\x01\x84Rb\0,\xC4\x85\x83Qb\0*\xD3V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0,\xA5V[P\x92\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0-%`@\x83\x01\x85b\0*BV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\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`\x01\x80`\xA0\x1B\x03\x80\x89\x16\x83R` \x81\x89\x16\x81\x85\x01R`\xFF\x88\x16`@\x85\x01R\x86``\x85\x01R`\xC0`\x80\x85\x01Rb\0-\xA1`\xC0\x85\x01\x87b\0*BV[\x84\x81\x03`\xA0\x86\x01R\x85Q\x80\x82R\x82\x87\x01\x93P\x90\x82\x01\x90`\0[\x81\x81\x10\x15b\0-\xD8W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01b\0-\xBAV[P\x90\x9B\x9APPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0.\x17\x90\x83\x01\x84b\0*\xD3V[\x95\x94PPPPPV[l)\xBA90\xBA2\xB3\xBC\xAA7\xB5\xB2\xB7`\x99\x1B\x81R`\0\x82Qb\0.J\x81`\r\x85\x01` \x87\x01b\0*\xA4V[\x91\x90\x91\x01`\r\x01\x92\x91PPV[b\x14\xD5\x15`\xEA\x1B\x81R`\0\x82Qb\0.w\x81`\x03\x85\x01` \x87\x01b\0*\xA4V[\x91\x90\x91\x01`\x03\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15b\0.\xB1Wb\0.\xB1b\0.\x84V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0*}W\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.\xCCV[`\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/\x8FW\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/yW\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/9V[PP\x9A\x86\x01\x9A\x94PP\x91\x84\x01\x91`\x01\x01b\0/\x16V[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\x0001W\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/\xF4V[PPPPPP\x82\x81\x03`\xC0\x84\x01Rb\x000K\x81\x86b\0.\xB8V[\x90P\x82\x81\x03`\xE0\x84\x01Rb\x000a\x81\x85b\0.\xF8V[\x9B\x9APPPPPPPPPPPV[`\0` \x82\x84\x03\x12\x15b\x000\x83W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\x000\x9CW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\x000\xB1W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\x000\xC6Wb\x000\xC6b\0,\xE4V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\x000\xF1Wb\x000\xF1b\0,\xE4V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15b\x001\x0BW`\0\x80\xFD[b\x001\x1E\x83` \x83\x01` \x88\x01b\0*\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15b\x001a\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 \x17\x93x\xAA\x0C\x85\xFD[6N\x91\x03\xDD{\xD2Q\xA6\xAC\x07\x0CZ\xE3\xE7\xB3$\x9A@$\xBF\xB3X\xAFdsolcC\0\x08\x0C\x003\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060043610620001395760003560e01c806366d9a9a011620000bb5780639d8b9cb4116200007a5780639d8b9cb41462000278578063b5508aa9146200028c578063ba414fa61462000296578063e20c9f7114620002b1578063fa7626d414620002bb57600080fd5b806366d9a9a014620002145780636b3aa72e146200022d5780636d14a987146200024157806385226c811462000255578063916a17c6146200026e57600080fd5b80632ade388011620001085780632ade388014620001ba5780632dbcb04c14620001d35780633dfb40e014620001ec5780633e5e3c2314620002005780633f7286f4146200020a57600080fd5b8063054310e6146200013e5780630a9254e4146200016f578063131e2f18146200017b5780631ed7831c14620001a1575b600080fd5b60355462000152906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b62000179620002c9565b005b620001926200018c366004620029cd565b620016d7565b60405162000166919062002a12565b620001ab62001b8d565b60405162000166919062002a88565b620001c462001bf1565b60405162000166919062002b01565b620001dd60345481565b60405190815260200162000166565b602e5462000152906001600160a01b031681565b620001ab62001d3f565b620001ab62001da1565b6200021e62001e03565b60405162000166919062002bc7565b601e5462000152906001600160a01b031681565b60285462000152906001600160a01b031681565b6200025f62001eed565b60405162000166919062002c7e565b6200021e62001fc7565b60335462000152906001600160a01b031681565b6200025f620020b1565b620002a06200218b565b604051901515815260200162000166565b620001ab620022c2565b600754620002a09060ff1681565b604051620002d79062002835565b604051809103906000f080158015620002f4573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169190911790556040805160018082528183019092526000916020808301908036833701905050905061022b8160008151811062000350576200035062002cfa565b60200260200101906001600160a01b031690816001600160a01b0316815250508061022c604051620003829062002843565b6200038f92919062002d10565b604051809103906000f080158015620003ac573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051600090620003de9062002851565b604051809103906000f080158015620003fb573d6000803e3d6000fd5b5090506040516200040c906200285e565b604051809103906000f08015801562000429573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b039290921691909117905560405162000458906200286c565b604051809103906000f08015801562000475573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620004aa906200287a565b620004b792919062002d3c565b604051809103906000f080158015620004d4573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000509906200287a565b6200051692919062002d3c565b604051809103906000f08015801562000533573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000568906200287a565b6200057592919062002d3c565b604051809103906000f08015801562000592573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560315460405183929190911690620005c7906200287a565b620005d492919062002d3c565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039283161790556031546040518392919091169062000626906200287a565b6200063392919062002d3c565b604051809103906000f08015801562000650573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03928316179055602554602054604051918316921690640773594000906200068e9062002888565b6001600160a01b03938416815292909116602083015267ffffffffffffffff166040820152606001604051809103906000f080158015620006d3573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620007019062002896565b6001600160a01b039091168152602001604051809103906000f0801580156200072e573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601f54602254602054604051600094938416939283169291909116906200077290620028a4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620007af573d6000803e3d6000fd5b50601d546020546022546040519394506000936001600160a01b03938416939283169290911690620007e190620028b2565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200081e573d6000803e3d6000fd5b50601f54601d546040519293506000926001600160a01b0392831692909116906200084990620028c0565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200087d573d6000803e3d6000fd5b50602554602354601f54602254601d546040519596506000956001600160a01b039586169594851694938416939283169290911690620008bd90620028ce565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000909573d6000803e3d6000fd5b50601d546040519192506000916001600160a01b03909116906200092d90620028dc565b6001600160a01b039091168152602001604051809103906000f0801580156200095a573d6000803e3d6000fd5b5060408051600080825260208201818152828401909352603154601d5460325460215496975061c4e0969495946001600160a01b0393841694639623609d94938416938e936308afd03960e21b93620009c0939183169216908b8b8b6064820162002d65565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b909216825262000a0993929160040162002de9565b600060405180830381600087803b15801562000a2457600080fd5b505af115801562000a39573d6000803e3d6000fd5b5050603154601f54603254602154604080516001600160a01b03938416602482018190526044820152918316606483015260006084808401919091528151808403909101815260a490920181526020820180516001600160e01b031663cf756fdf60e01b17905251639623609d60e01b81529382169550639623609d945062000acc9391909216918c9160040162002de9565b600060405180830381600087803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b5050603154602254603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000b889391909216918b9160040162002de9565b600060405180830381600087803b15801562000ba357600080fd5b505af115801562000bb8573d6000803e3d6000fd5b505060315460208054602654603254602154604080516001600160a01b0394851660248201529284166044840152908316606483015260006084808401919091528151808403909101815260a4909201815293810180516001600160e01b03166305e52ecf60e21b1790529251639623609d60e01b81529381169550639623609d945062000c4e939116918a9160040162002de9565b600060405180830381600087803b15801562000c6957600080fd5b505af115801562000c7e573d6000803e3d6000fd5b5050603154601e54603254602154604080516001600160a01b0393841660248201529183166044830152600060648084019190915281518084039091018152608490920181526020820180516001600160e01b03166305e52ecf60e21b17905251639623609d60e01b81529382169550639623609d945062000d0a939190921691899160040162002de9565b600060405180830381600087803b15801562000d2557600080fd5b505af115801562000d3a573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d5b9150620028ea565b6001600160a01b039091168152602001604051809103906000f08015801562000d88573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b602081101562000e4e57600062000dc382620023ed565b905060008160405160200162000dda919062002e20565b604051602081830303815290604052905060008260405160200162000e00919062002e57565b604051602081830303815290604052905062000e3582827502ac3a4edbbfb8014e3ba83411e915e8000000000000306200250b565b505050808062000e459062002e9a565b91505062000dac565b5060405162000e5d90620028f8565b604051809103906000f08015801562000e7a573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601c546033546040516303223eab60e11b815290831660048201529116906306447d5690602401600060405180830381600087803b15801562000ed957600080fd5b505af115801562000eee573d6000803e3d6000fd5b50506031546040518c93506001600160a01b03909116915062000f11906200287a565b62000f1e92919062002d3c565b604051809103906000f08015801562000f3b573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000f70906200287a565b62000f7d92919062002d3c565b604051809103906000f08015801562000f9a573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b039283161790556031546040518b92919091169062000fcf906200287a565b62000fdc92919062002d3c565b604051809103906000f08015801562000ff9573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200102e906200287a565b6200103b92919062002d3c565b604051809103906000f08015801562001058573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b039283161790556031546040518b9291909116906200108d906200287a565b6200109a92919062002d3c565b604051809103906000f080158015620010b7573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03928316179055601c54604080516390c5013b60e01b8152905191909216916390c5013b91600480830192600092919082900301818387803b1580156200111357600080fd5b505af115801562001128573d6000803e3d6000fd5b5050602854601d54604051600094506001600160a01b039283169350911690620011529062002906565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001186573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011aa9062002914565b6001600160a01b039091168152602001604051809103906000f080158015620011d7573d6000803e3d6000fd5b506028546040519192506000916001600160a01b0390911690620011fb9062002922565b6001600160a01b039091168152602001604051809103906000f08015801562001228573d6000803e3d6000fd5b50601e54602854602b546040519394506000936001600160a01b039384169392831692909116906200125a9062002930565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562001297573d6000803e3d6000fd5b50603154602b5460405163266a23b160e21b81526001600160a01b039182166004820152878216602482015292935016906399a88ec490604401600060405180830381600087803b158015620012ec57600080fd5b505af115801562001301573d6000803e3d6000fd5b5050603154602a5460405163266a23b160e21b81526001600160a01b0391821660048201528782166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200135757600080fd5b505af11580156200136c573d6000803e3d6000fd5b5050603154602c5460405163266a23b160e21b81526001600160a01b0391821660048201528682166024820152911692506399a88ec49150604401600060405180830381600087803b158015620013c257600080fd5b505af1158015620013d7573d6000803e3d6000fd5b505060315460295460405163266a23b160e21b81526001600160a01b0391821660048201528582166024820152911692506399a88ec49150604401600060405180830381600087803b1580156200142d57600080fd5b505af115801562001442573d6000803e3d6000fd5b505060295460335460405163189acdbd60e31b81526001600160a01b0391821660048201529116925063c4d66de89150602401600060405180830381600087803b1580156200149057600080fd5b505af1158015620014a5573d6000803e3d6000fd5b5050602954602b54602a54602c54604051600096506001600160a01b0394851695509284169391821692911690620014dd906200293e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001522573d6000803e3d6000fd5b50603154602854603354603554603654602154604080516000808252602082019092529798506001600160a01b0396871697639623609d97968716968a9663dd8283f360e01b9690821695908216949082169391169181620015ad565b60408051606081018252600080825260208083018290529282015282526000199092019101816200157f5790505b5060408051600080825260208201818152828401909352909190620015e3565b6060815260200190600190039081620015cd5790505b50604051602401620015fd98979695949392919062002f9d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b90921682526200164693929160040162002de9565b600060405180830381600087803b1580156200166157600080fd5b505af115801562001676573d6000803e3d6000fd5b5050505060405162001688906200294c565b604051809103906000f080158015620016a5573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050505050505050565b620016e16200295a565b60408051600580825260c08201909252600091816020015b6060815260200190600190039081620016f957905050905060405180604001604052806002815260200161676f60f01b8152508160008151811062001742576200174262002cfa565b602002602001018190525060405180604001604052806003815260200162393ab760e91b815250816001815181106200177f576200177f62002cfa565b602002602001018190525060405180604001604052806014815260200173746573742f6666692f676f2f67326d756c2e676f60601b81525081600281518110620017cd57620017cd62002cfa565b6020026020010181905250620017e383620023ed565b81600381518110620017f957620017f962002cfa565b6020026020010181905250604051806040016040528060018152602001603160f81b8152508160048151811062001834576200183462002cfa565b6020908102919091010152604051638916046760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906200187b90859060040162002c7e565b6000604051808303816000875af11580156200189b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018c5919081019062003070565b905080806020019051810190620018dd919062003129565b83516001602002018181525050604051806040016040528060018152602001601960f91b815250826004815181106200191a576200191a62002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906200195e90859060040162002c7e565b6000604051808303816000875af11580156200197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019a8919081019062003070565b905080806020019051810190620019c0919062003129565b8351526040805180820190915260018152603360f81b6020820152825183906004908110620019f357620019f362002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001a3790859060040162002c7e565b6000604051808303816000875af115801562001a57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a81919081019062003070565b90508080602001905181019062001a99919062003129565b60208401516001602002018181525050604051806040016040528060018152602001600d60fa1b8152508260048151811062001ad95762001ad962002cfa565b6020908102919091010152604051638916046760e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679062001b1d90859060040162002c7e565b6000604051808303816000875af115801562001b3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b67919081019062003070565b90508080602001905181019062001b7f919062003129565b602084015152509092915050565b6060601480548060200260200160405190810160405280929190818152602001828054801562001be757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001bc8575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d3657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001d1e57838290600052602060002001805462001c8a9062003143565b80601f016020809104026020016040519081016040528092919081815260200182805462001cb89062003143565b801562001d095780601f1062001cdd5761010080835404028352916020019162001d09565b820191906000526020600020905b81548152906001019060200180831162001ceb57829003601f168201915b50505050508152602001906001019062001c68565b50505050815250508152602001906001019062001c15565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001d365760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001ed457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001e955790505b5050505050815250508152602001906001019062001e27565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001d3657838290600052602060002001805462001f339062003143565b80601f016020809104026020016040519081016040528092919081815260200182805462001f619062003143565b801562001fb25780601f1062001f865761010080835404028352916020019162001fb2565b820191906000526020600020905b81548152906001019060200180831162001f9457829003601f168201915b50505050508152602001906001019062001f11565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001d365760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200209857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620020595790505b5050505050815250508152602001906001019062001feb565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001d36578382906000526020600020018054620020f79062003143565b80601f0160208091040260200160405190810160405280929190818152602001828054620021259062003143565b8015620021765780601f106200214a5761010080835404028352916020019162002176565b820191906000526020600020905b8154815290600101906020018083116200215857829003601f168201915b505050505081526020019060010190620020d5565b600754600090610100900460ff1615620021ae5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620022bd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200223f917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003180565b60408051601f19818403018152908290526200225b91620031b3565b6000604051808303816000865af19150503d80600081146200229a576040519150601f19603f3d011682016040523d82523d6000602084013e6200229f565b606091505b5091505080806020019051810190620022b99190620031d1565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001be7576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001bc8575050505050905090565b604080518082018252600080825260209182015281518083019092526001825260029082015290565b60408051808201909152600080825260208201526200236b62002983565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620023a057620023a2565bfe5b5080620023e55760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b606081620024125750506040805180820190915260018152600360fc1b602082015290565b8160005b8115620024425780620024298162002e9a565b91506200243a9050600a836200320b565b915062002416565b60008167ffffffffffffffff81111562002460576200246062002ce4565b6040519080825280601f01601f1916602001820160405280156200248b576020820181803683370190505b5090505b84156200250357620024a360018362003222565b9150620024b2600a866200323c565b620024bf90603062003253565b60f81b818381518110620024d757620024d762002cfa565b60200101906001600160f81b031916908160001a905350620024fb600a866200320b565b94506200248f565b949350505050565b6000848484846040516200251f90620029a1565b6200252e94939291906200326e565b604051809103906000f0801580156200254b573d6000803e3d6000fd5b506027546031546021546040516001600160a01b03808616602483015291821660448201529394506000939281169291169063485cc95560e01b9060640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620025c8906200287a565b620025d69392919062002de9565b604051809103906000f080158015620025f3573d6000803e3d6000fd5b5060408051600180825281830190925291925060009190602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050828260008151811062002654576200265462002cfa565b6001600160a01b03928316602091820292909201810191909152601c54601f5460408051634b3fe06960e11b815290519285169463ca669fa79492169263967fc0d2926004808401939192918290030181865afa158015620026ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026e09190620032b9565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200272257600080fd5b505af115801562002737573d6000803e3d6000fd5b5050601f5460405163df5b354760e01b81526001600160a01b03909116925063df5b354791506200276f9085908590600401620032e4565b600060405180830381600087803b1580156200278a57600080fd5b505af11580156200279f573d6000803e3d6000fd5b5050602f805460018181019092557fa813484aef6fb598f9f753daf162068ff39ccea4075cb95e1a30f86995b5b7ee0180546001600160a01b039788166001600160a01b0319918216179091556030805492830181556000527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb9091018054979096169616959095179093555050505050505050565b610718806200334283390190565b6107788062003a5a83390190565b609480620041d283390190565b61022a806200426683390190565b6103f3806200449083390190565b610e81806200488383390190565b614ad0806200570483390190565b6104e4806200a1d483390190565b615c46806200a6b883390190565b61338a80620102fe83390190565b610efe806201368883390190565b613169806201458683390190565b611f7880620176ef83390190565b611ab4806201966783390190565b61117d806201b11b83390190565b613958806201c29883390190565b61210b806201fbf083390190565b6113ec8062021cfb83390190565b6116e080620230e783390190565b61618780620247c783390190565b611a25806202a94e83390190565b60405180604001604052806200296f620029af565b81526020016200297e620029af565b905290565b60405180606001604052806003906020820280368337509192915050565b610e60806202c37383390190565b60405180604001604052806002906020820280368337509192915050565b600060208284031215620029e057600080fd5b5035919050565b8060005b600281101562002a0c578151845260209384019390910190600101620029eb565b50505050565b600060808201905062002a27828451620029e7565b602083015162002a3b6040840182620029e7565b5092915050565b600081518084526020808501945080840160005b8381101562002a7d5781516001600160a01b03168752958201959082019060010162002a56565b509495945050505050565b60208152600062002a9d602083018462002a42565b9392505050565b60005b8381101562002ac157818101518382015260200162002aa7565b8381111562002a0c5750506000910152565b6000815180845262002aed81602086016020860162002aa4565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002bb757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002ba057605f1989850301835262002b8d84865162002ad3565b948e01949350918d019160010162002b6e565b505050978a01979450509188019160010162002b28565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002c6f57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002c595783516001600160e01b0319168252928b019260019290920191908b019062002c2d565b50978a0197955050509187019160010162002bef565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002cd757603f1988860301845262002cc485835162002ad3565b9450928501929085019060010162002ca5565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60408152600062002d25604083018562002a42565b905060018060a01b03831660208301529392505050565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b600060018060a01b03808916835260208189168185015260ff8816604085015286606085015260c0608085015262002da160c085018762002a42565b84810360a0860152855180825282870193509082019060005b8181101562002dd85784518352938301939183019160010162002dba565b50909b9a5050505050505050505050565b6001600160a01b0384811682528316602082015260606040820181905260009062002e179083018462002ad3565b95945050505050565b6c29ba3930ba32b3bcaa37b5b2b760991b81526000825162002e4a81600d85016020870162002aa4565b91909101600d0192915050565b6214d51560ea1b81526000825162002e7781600385016020870162002aa4565b9190910160030192915050565b634e487b7160e01b600052601160045260246000fd5b600060001982141562002eb15762002eb162002e84565b5060010190565b600081518084526020808501945080840160005b8381101562002a7d5781516bffffffffffffffffffffffff168752958201959082019060010162002ecc565b600082825180855260208086019550808260051b8401018186016000805b8581101562002f8f57868403601f19018a52825180518086529086019086860190845b8181101562002f7957835180516001600160a01b031684528901516bffffffffffffffffffffffff16898401529288019260409092019160010162002f39565b50509a86019a9450509184019160010162002f16565b509198975050505050505050565b600061010080830160018060a01b03808d1685526020818d16818701526040828d16818801526060838d168189015260ff8c1660808901528560a08901528495508a51935083855261012088019550828b01945060005b8481101562003031578551805163ffffffff1688528481015161ffff908116868a0152908401511683880152958101959483019460010162002ff4565b50505050505082810360c08401526200304b818662002eb8565b905082810360e084015262003061818562002ef8565b9b9a5050505050505050505050565b6000602082840312156200308357600080fd5b815167ffffffffffffffff808211156200309c57600080fd5b818401915084601f830112620030b157600080fd5b815181811115620030c657620030c662002ce4565b604051601f8201601f19908116603f01168101908382118183101715620030f157620030f162002ce4565b816040528281528760208487010111156200310b57600080fd5b6200311e83602083016020880162002aa4565b979650505050505050565b6000602082840312156200313c57600080fd5b5051919050565b600181811c908216806200315857607f821691505b602082108114156200317a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090620031a581600485016020870162002aa4565b919091016004019392505050565b60008251620031c781846020870162002aa4565b9190910192915050565b600060208284031215620031e457600080fd5b8151801515811462002a9d57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826200321d576200321d620031f5565b500490565b60008282101562003237576200323762002e84565b500390565b6000826200324e576200324e620031f5565b500690565b6000821982111562003269576200326962002e84565b500190565b60808152600062003283608083018762002ad3565b828103602084015262003297818762002ad3565b604084019590955250506001600160a01b039190911660609091015292915050565b600060208284031215620032cc57600080fd5b81516001600160a01b038116811462002a9d57600080fd5b604081526000620032f9604083018562002a42565b82810360208481019190915284518083528582019282019060005b818110156200333457845115158352938301939183019160010162003314565b509097965050505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c00336080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212202360b1606154d85d6cacf8ac391e4e63b67dff95cba21557f8d2ecadd022aa0164736f6c634300080c0033608060405234801561001057600080fd5b5061020a806100206000396000f3fe6080604052600436106100345760003560e01c80632289511814610039578063621fd13014610052578063c5f2892f14610077575b600080fd5b6100506100473660046100dc565b50505050505050565b005b34801561005e57600080fd5b50606060405161006e919061017f565b60405180910390f35b34801561008357600080fd5b506040516000815260200161006e565b60008083601f8401126100a557600080fd5b50813567ffffffffffffffff8111156100bd57600080fd5b6020830191508360208285010111156100d557600080fd5b9250929050565b60008060008060008060006080888a0312156100f757600080fd5b873567ffffffffffffffff8082111561010f57600080fd5b61011b8b838c01610093565b909950975060208a013591508082111561013457600080fd5b6101408b838c01610093565b909750955060408a013591508082111561015957600080fd5b506101668a828b01610093565b989b979a50959894979596606090950135949350505050565b600060208083528351808285015260005b818110156101ac57858101830151858201604001528201610190565b818111156101be576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122065b2369441d6bde4010d75606a695224d7e0a53333dcd07d2dada66bfb3f126464736f6c634300080c0033608060405234801561001057600080fd5b506103d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d21af061161008c578063a22f141e11610066578063a22f141e14610190578063a3b2aa961461010c578063acd414a8146101a2578063c61ff600146101cd57600080fd5b80637d21af061461011f578063864b8a6914610174578063960bfe041461018257600080fd5b80630690526a146100d45780632dae03e1146100fd578063309044571461010c57806342cde4e81461011f578063643599f2146101265780637a00098914610150575b600080fd5b6100ea6100e23660046101f8565b600092915050565b6040519081526020015b60405180910390f35b604051600081526020016100f4565b61011d61011a36600461024f565b50565b005b60006100ea565b6100ea610134366004610314565b67ffffffffffffffff1660009081526020819052604090205490565b61016461015e36600461032d565b50600090565b60405190151581526020016100f4565b6100ea61015e36600461034f565b61011d61011a366004610314565b61011d61019e3660046101f8565b5050565b61011d6101b03660046101f8565b67ffffffffffffffff909116600090815260208190526040902055565b6101646100e236600461036a565b803567ffffffffffffffff811681146101f357600080fd5b919050565b6000806040838503121561020b57600080fd5b610214836101db565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146101f357600080fd5b6000602080838503121561026257600080fd5b823567ffffffffffffffff8082111561027a57600080fd5b818501915085601f83011261028e57600080fd5b8135818111156102a0576102a0610222565b8060051b604051601f19603f830116810181811085821117156102c5576102c5610222565b6040529182528482019250838101850191888311156102e357600080fd5b938501935b82851015610308576102f985610238565b845293850193928501926102e8565b98975050505050505050565b60006020828403121561032657600080fd5b5035919050565b60006020828403121561033f57600080fd5b61034882610238565b9392505050565b60006020828403121561036157600080fd5b610348826101db565b6000806040838503121561037d57600080fd5b610386836101db565b915061039460208401610238565b9050925092905056fea264697066735822122046b9dfa2d4e8edb0a114da8fb6267f474030f3ac66d61afb827411399d27f63464736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220dec16f44509476e4d5b0e9a730dd0abbf79d643d00d5f340c0bbdb6a1d81bf8e64736f6c634300080c0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122085d164b171fc7e2b8b61c5591636da684d9c8220cf5118240d9e19a32911ddab64736f6c634300080c00336101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c00336101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205f48faddda53e81ab38c27aa89be3265ac3b9668efe3c4eba9ecf324d43a032664736f6c634300080c003360c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205b5ed79d9ffad330292c509470aa97963445e46b14c66ce5cf15a3bdd051bcd164736f6c634300080c003360a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c003360806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c003360c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122050dd2ab396214965939c9bae094a62350c112ffe5817e69d31274d001e7dcf2164736f6c634300080c003360a060405234801561001057600080fd5b506040516113ec3803806113ec83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161128061016c60003960008181610142015281816102750152818161041b01526107ed01526112806000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220206a13560cb6ecd45c76201f668efc25c2242c459d6d39046b95b3e0ee6659ad64736f6c634300080c003360e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c003360806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220ebb8193de48d7f6c8ec02449790f11d773a87dcad9d490775cfa9a6806edb6e464736f6c634300080c0033a2646970667358221220179378aa0c85fd5b364e9103dd7bd251a6ac070c5ae3e7b3249a4024bfb358af64736f6c634300080c0033 + /// ``` + #[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\x019W`\x005`\xE0\x1C\x80cf\xD9\xA9\xA0\x11b\0\0\xBBW\x80c\x9D\x8B\x9C\xB4\x11b\0\0zW\x80c\x9D\x8B\x9C\xB4\x14b\0\x02xW\x80c\xB5P\x8A\xA9\x14b\0\x02\x8CW\x80c\xBAAO\xA6\x14b\0\x02\x96W\x80c\xE2\x0C\x9Fq\x14b\0\x02\xB1W\x80c\xFAv&\xD4\x14b\0\x02\xBBW`\0\x80\xFD[\x80cf\xD9\xA9\xA0\x14b\0\x02\x14W\x80ck:\xA7.\x14b\0\x02-W\x80cm\x14\xA9\x87\x14b\0\x02AW\x80c\x85\"l\x81\x14b\0\x02UW\x80c\x91j\x17\xC6\x14b\0\x02nW`\0\x80\xFD[\x80c*\xDE8\x80\x11b\0\x01\x08W\x80c*\xDE8\x80\x14b\0\x01\xBAW\x80c-\xBC\xB0L\x14b\0\x01\xD3W\x80c=\xFB@\xE0\x14b\0\x01\xECW\x80c>^<#\x14b\0\x02\0W\x80c?r\x86\xF4\x14b\0\x02\nW`\0\x80\xFD[\x80c\x05C\x10\xE6\x14b\0\x01>W\x80c\n\x92T\xE4\x14b\0\x01oW\x80c\x13\x1E/\x18\x14b\0\x01{W\x80c\x1E\xD7\x83\x1C\x14b\0\x01\xA1W[`\0\x80\xFD[`5Tb\0\x01R\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[b\0\x01yb\0\x02\xC9V[\0[b\0\x01\x92b\0\x01\x8C6`\x04b\0)\xCDV[b\0\x16\xD7V[`@Qb\0\x01f\x91\x90b\0*\x12V[b\0\x01\xABb\0\x1B\x8DV[`@Qb\0\x01f\x91\x90b\0*\x88V[b\0\x01\xC4b\0\x1B\xF1V[`@Qb\0\x01f\x91\x90b\0+\x01V[b\0\x01\xDD`4T\x81V[`@Q\x90\x81R` \x01b\0\x01fV[`.Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x01\xABb\0\x1D?V[b\0\x01\xABb\0\x1D\xA1V[b\0\x02\x1Eb\0\x1E\x03V[`@Qb\0\x01f\x91\x90b\0+\xC7V[`\x1ETb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02_b\0\x1E\xEDV[`@Qb\0\x01f\x91\x90b\0,~V[b\0\x02\x1Eb\0\x1F\xC7V[`3Tb\0\x01R\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x02_b\0 \xB1V[b\0\x02\xA0b\0!\x8BV[`@Q\x90\x15\x15\x81R` \x01b\0\x01fV[b\0\x01\xABb\0\"\xC2V[`\x07Tb\0\x02\xA0\x90`\xFF\x16\x81V[`@Qb\0\x02\xD7\x90b\0(5V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x02\xF4W=`\0\x80>=`\0\xFD[P`1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\x02+\x81`\0\x81Q\x81\x10b\0\x03PWb\0\x03Pb\0,\xFAV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80a\x02,`@Qb\0\x03\x82\x90b\0(CV[b\0\x03\x8F\x92\x91\x90b\0-\x10V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xACW=`\0\x80>=`\0\xFD[P`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Q`\0\x90b\0\x03\xDE\x90b\0(QV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xFBW=`\0\x80>=`\0\xFD[P\x90P`@Qb\0\x04\x0C\x90b\0(^V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04)W=`\0\x80>=`\0\xFD[P`%\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x04X\x90b\0(lV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04uW=`\0\x80>=`\0\xFD[P`&\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x04\xAA\x90b\0(zV[b\0\x04\xB7\x92\x91\x90b\0-=`\0\xFD[P`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\t\x90b\0(zV[b\0\x05\x16\x92\x91\x90b\0-=`\0\xFD[P`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05h\x90b\0(zV[b\0\x05u\x92\x91\x90b\0-=`\0\xFD[P`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x05\xC7\x90b\0(zV[b\0\x05\xD4\x92\x91\x90b\0-=`\0\xFD[P` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x83\x92\x91\x90\x91\x16\x90b\0\x06&\x90b\0(zV[b\0\x063\x92\x91\x90b\0-=`\0\xFD[P`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`%T` T`@Q\x91\x83\x16\x92\x16\x90d\x07sY@\0\x90b\0\x06\x8E\x90b\0(\x88V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x06\xD3W=`\0\x80>=`\0\xFD[P`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qb\0\x07\x01\x90b\0(\x96V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x07.W=`\0\x80>=`\0\xFD[P`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1FT`\"T` T`@Q`\0\x94\x93\x84\x16\x93\x92\x83\x16\x92\x91\x90\x91\x16\x90b\0\x07r\x90b\0(\xA4V[`\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\x07\xAFW=`\0\x80>=`\0\xFD[P`\x1DT` T`\"T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x07\xE1\x90b\0(\xB2V[`\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\x08\x1EW=`\0\x80>=`\0\xFD[P`\x1FT`\x1DT`@Q\x92\x93P`\0\x92`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08I\x90b\0(\xC0V[`\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\x08}W=`\0\x80>=`\0\xFD[P`%T`#T`\x1FT`\"T`\x1DT`@Q\x95\x96P`\0\x95`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x95\x94\x85\x16\x94\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x08\xBD\x90b\0(\xCEV[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16\x81R\x93\x85\x16` \x85\x01R\x91\x84\x16`@\x84\x01R\x83\x16``\x83\x01R\x90\x91\x16`\x80\x82\x01R`\xA0\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\tW=`\0\x80>=`\0\xFD[P`\x1DT`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\t-\x90b\0(\xDCV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\tZW=`\0\x80>=`\0\xFD[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R`1T`\x1DT`2T`!T\x96\x97Pa\xC4\xE0\x96\x94\x95\x94`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94c\x96#`\x9D\x94\x93\x84\x16\x93\x8E\x93c\x08\xAF\xD09`\xE2\x1B\x93b\0\t\xC0\x93\x91\x83\x16\x92\x16\x90\x8B\x8B\x8B`d\x82\x01b\0-eV[`@\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\n\t\x93\x92\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n$W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n9W=`\0\x80>=`\0\xFD[PP`1T`\x1FT`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01\x81\x90R`D\x82\x01R\x91\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xCFuo\xDF`\xE0\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\n\xCC\x93\x91\x90\x92\x16\x91\x8C\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\xE7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\xFCW=`\0\x80>=`\0\xFD[PP`1T`\"T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\x0B\x88\x93\x91\x90\x92\x16\x91\x8B\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0B\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0B\xB8W=`\0\x80>=`\0\xFD[PP`1T` \x80T`&T`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R\x92\x84\x16`D\x84\x01R\x90\x83\x16`d\x83\x01R`\0`\x84\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xA4\x90\x92\x01\x81R\x93\x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90R\x92Qc\x96#`\x9D`\xE0\x1B\x81R\x93\x81\x16\x95Pc\x96#`\x9D\x94Pb\0\x0CN\x93\x91\x16\x91\x8A\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0CiW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0C~W=`\0\x80>=`\0\xFD[PP`1T`\x1ET`2T`!T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`$\x82\x01R\x91\x83\x16`D\x83\x01R`\0`d\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\x84\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x05\xE5.\xCF`\xE2\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81R\x93\x82\x16\x95Pc\x96#`\x9D\x94Pb\0\r\n\x93\x91\x90\x92\x16\x91\x89\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\r%W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\r:W=`\0\x80>=`\0\xFD[PP`\x1FT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\r[\x91Pb\0(\xEAV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\x88W=`\0\x80>=`\0\xFD[P`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`\0[` \x81\x10\x15b\0\x0ENW`\0b\0\r\xC3\x82b\0#\xEDV[\x90P`\0\x81`@Q` \x01b\0\r\xDA\x91\x90b\0. V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82`@Q` \x01b\0\x0E\0\x91\x90b\0.WV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x0E5\x82\x82u\x02\xAC:N\xDB\xBF\xB8\x01N;\xA84\x11\xE9\x15\xE8\0\0\0\0\0\x000b\0%\x0BV[PPP\x80\x80b\0\x0EE\x90b\0.\x9AV[\x91PPb\0\r\xACV[P`@Qb\0\x0E]\x90b\0(\xF8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0EzW=`\0\x80>=`\0\xFD[P`.\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`3T`@Qc\x03\">\xAB`\xE1\x1B\x81R\x90\x83\x16`\x04\x82\x01R\x91\x16\x90c\x06D}V\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\xD9W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E\xEEW=`\0\x80>=`\0\xFD[PP`1T`@Q\x8C\x93P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91Pb\0\x0F\x11\x90b\0(zV[b\0\x0F\x1E\x92\x91\x90b\0-=`\0\xFD[P`(\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0Fp\x90b\0(zV[b\0\x0F}\x92\x91\x90b\0-=`\0\xFD[P`+\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x0F\xCF\x90b\0(zV[b\0\x0F\xDC\x92\x91\x90b\0-=`\0\xFD[P`,\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10.\x90b\0(zV[b\0\x10;\x92\x91\x90b\0-=`\0\xFD[P`*\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`1T`@Q\x8B\x92\x91\x90\x91\x16\x90b\0\x10\x8D\x90b\0(zV[b\0\x10\x9A\x92\x91\x90b\0-=`\0\xFD[P`)\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x1CT`@\x80Qc\x90\xC5\x01;`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\x90\xC5\x01;\x91`\x04\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15b\0\x11\x13W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11(W=`\0\x80>=`\0\xFD[PP`(T`\x1DT`@Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x93P\x91\x16\x90b\0\x11R\x90b\0)\x06V[`\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\x86W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xAA\x90b\0)\x14V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11\xD7W=`\0\x80>=`\0\xFD[P`(T`@Q\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x11\xFB\x90b\0)\"V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12(W=`\0\x80>=`\0\xFD[P`\x1ET`(T`+T`@Q\x93\x94P`\0\x93`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x93\x92\x83\x16\x92\x90\x91\x16\x90b\0\x12Z\x90b\0)0V[`\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\x12\x97W=`\0\x80>=`\0\xFD[P`1T`+T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x92\x93P\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x12\xECW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\x01W=`\0\x80>=`\0\xFD[PP`1T`*T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x87\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13WW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13lW=`\0\x80>=`\0\xFD[PP`1T`,T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x86\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x13\xC2W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x13\xD7W=`\0\x80>=`\0\xFD[PP`1T`)T`@Qc&j#\xB1`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x85\x82\x16`$\x82\x01R\x91\x16\x92Pc\x99\xA8\x8E\xC4\x91P`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14-W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14BW=`\0\x80>=`\0\xFD[PP`)T`3T`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x91\x16\x92Pc\xC4\xD6m\xE8\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\x90W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\xA5W=`\0\x80>=`\0\xFD[PP`)T`+T`*T`,T`@Q`\0\x96P`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x95P\x92\x84\x16\x93\x91\x82\x16\x92\x91\x16\x90b\0\x14\xDD\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\x15\"W=`\0\x80>=`\0\xFD[P`1T`(T`3T`5T`6T`!T`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x97\x98P`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x97c\x96#`\x9D\x97\x96\x87\x16\x96\x8A\x96c\xDD\x82\x83\xF3`\xE0\x1B\x96\x90\x82\x16\x95\x90\x82\x16\x94\x90\x82\x16\x93\x91\x16\x91\x81b\0\x15\xADV[`@\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\x15\x7FW\x90P[P`@\x80Q`\0\x80\x82R` \x82\x01\x81\x81R\x82\x84\x01\x90\x93R\x90\x91\x90b\0\x15\xE3V[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x15\xCDW\x90P[P`@Q`$\x01b\0\x15\xFD\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0/\x9DV[`@\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\x16F\x93\x92\x91`\x04\x01b\0-\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x16aW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x16vW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x16\x88\x90b\0)LV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x16\xA5W=`\0\x80>=`\0\xFD[P`-\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPPPPPPPPPPPV[b\0\x16\xE1b\0)ZV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x16\xF9W\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01ago`\xF0\x1B\x81RP\x81`\0\x81Q\x81\x10b\0\x17BWb\0\x17Bb\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b9:\xB7`\xE9\x1B\x81RP\x81`\x01\x81Q\x81\x10b\0\x17\x7FWb\0\x17\x7Fb\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01stest/ffi/go/g2mul.go``\x1B\x81RP\x81`\x02\x81Q\x81\x10b\0\x17\xCDWb\0\x17\xCDb\0,\xFAV[` \x02` \x01\x01\x81\x90RPb\0\x17\xE3\x83b\0#\xEDV[\x81`\x03\x81Q\x81\x10b\0\x17\xF9Wb\0\x17\xF9b\0,\xFAV[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`1`\xF8\x1B\x81RP\x81`\x04\x81Q\x81\x10b\0\x184Wb\0\x184b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x18{\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\x9BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x18\xC5\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x18\xDD\x91\x90b\x001)V[\x83Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\x19`\xF9\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x19\x1AWb\0\x19\x1Ab\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x19^\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19\xA8\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x19\xC0\x91\x90b\x001)V[\x83QR`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`3`\xF8\x1B` \x82\x01R\x82Q\x83\x90`\x04\x90\x81\x10b\0\x19\xF3Wb\0\x19\xF3b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1A7\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1AWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1A\x81\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1A\x99\x91\x90b\x001)V[` \x84\x01Q`\x01` \x02\x01\x81\x81RPP`@Q\x80`@\x01`@R\x80`\x01\x81R` \x01`\r`\xFA\x1B\x81RP\x82`\x04\x81Q\x81\x10b\0\x1A\xD9Wb\0\x1A\xD9b\0,\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90b\0\x1B\x1D\x90\x85\x90`\x04\x01b\0,~V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x1B=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1Bg\x91\x90\x81\x01\x90b\x000pV[\x90P\x80\x80` \x01\x90Q\x81\x01\x90b\0\x1B\x7F\x91\x90b\x001)V[` \x84\x01QRP\x90\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15b\0\x1D\x1EW\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1C\x8A\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1C\xB8\x90b\x001CV[\x80\x15b\0\x1D\tW\x80`\x1F\x10b\0\x1C\xDDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1D\tV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1C\xEBW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1ChV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1C\x15V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0\x1E\xD4W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0\x1E\x95W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1E'V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0\x1F3\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0\x1Fa\x90b\x001CV[\x80\x15b\0\x1F\xB2W\x80`\x1F\x10b\0\x1F\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0\x1F\xB2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0\x1F\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\x11V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15b\0 \x98W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11b\0 YW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90b\0\x1F\xEBV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15b\0\x1D6W\x83\x82\x90`\0R` `\0 \x01\x80Tb\0 \xF7\x90b\x001CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Tb\0!%\x90b\x001CV[\x80\x15b\0!vW\x80`\x1F\x10b\0!JWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91b\0!vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11b\0!XW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90b\0 \xD5V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15b\0!\xAEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15b\0\"\xBDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91b\0\"?\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01b\x001\x80V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\"[\x91b\x001\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14b\0\"\x9AW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\"\x9FV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90b\0\"\xB9\x91\x90b\x001\xD1V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15b\0\x1B\xE7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11b\0\x1B\xC8WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0#kb\0)\x83V[\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\x15b\0#\xA0Wb\0#\xA2V[\xFE[P\x80b\0#\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[``\x81b\0$\x12WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15b\0$BW\x80b\0$)\x81b\0.\x9AV[\x91Pb\0$:\x90P`\n\x83b\x002\x0BV[\x91Pb\0$\x16V[`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0$`Wb\0$`b\0,\xE4V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15b\0$\x8BW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15b\0%\x03Wb\0$\xA3`\x01\x83b\x002\"V[\x91Pb\0$\xB2`\n\x86b\x002=`\0\xFD[P`'T`1T`!T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`$\x83\x01R\x91\x82\x16`D\x82\x01R\x93\x94P`\0\x93\x92\x81\x16\x92\x91\x16\x90cH\\\xC9U`\xE0\x1B\x90`d\x01`@\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\x90Qb\0%\xC8\x90b\0(zV[b\0%\xD6\x93\x92\x91\x90b\0-\xE9V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0%\xF3W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \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\x82\x82`\0\x81Q\x81\x10b\0&TWb\0&Tb\0,\xFAV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91R`\x1CT`\x1FT`@\x80QcK?\xE0i`\xE1\x1B\x81R\x90Q\x92\x85\x16\x94c\xCAf\x9F\xA7\x94\x92\x16\x92c\x96\x7F\xC0\xD2\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0&\xBAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0&\xE0\x91\x90b\x002\xB9V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\"W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'7W=`\0\x80>=`\0\xFD[PP`\x1FT`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xDF[5G\x91Pb\0'o\x90\x85\x90\x85\x90`\x04\x01b\x002\xE4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0'\x8AW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0'\x9FW=`\0\x80>=`\0\xFD[PP`/\x80T`\x01\x81\x81\x01\x90\x92U\x7F\xA8\x13HJ\xEFo\xB5\x98\xF9\xF7S\xDA\xF1b\x06\x8F\xF3\x9C\xCE\xA4\x07\\\xB9^\x1A0\xF8i\x95\xB5\xB7\xEE\x01\x80T`\x01`\x01`\xA0\x1B\x03\x97\x88\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`0\x80T\x92\x83\x01\x81U`\0R\x7Fo\xF9zY\xC9\rb\xCCr6\xBA:7\xCD\x855\x1B\xF5dUg\x80\xCF\x8C\x11W\xA2 \xF3\x1F\x0C\xBB\x90\x91\x01\x80T\x97\x90\x96\x16\x96\x16\x95\x90\x95\x17\x90\x93UPPPPPPPPV[a\x07\x18\x80b\x003B\x839\x01\x90V[a\x07x\x80b\0:Z\x839\x01\x90V[`\x94\x80b\0A\xD2\x839\x01\x90V[a\x02*\x80b\0Bf\x839\x01\x90V[a\x03\xF3\x80b\0D\x90\x839\x01\x90V[a\x0E\x81\x80b\0H\x83\x839\x01\x90V[aJ\xD0\x80b\0W\x04\x839\x01\x90V[a\x04\xE4\x80b\0\xA1\xD4\x839\x01\x90V[a\\F\x80b\0\xA6\xB8\x839\x01\x90V[a3\x8A\x80b\x01\x02\xFE\x839\x01\x90V[a\x0E\xFE\x80b\x016\x88\x839\x01\x90V[a1i\x80b\x01E\x86\x839\x01\x90V[a\x1Fx\x80b\x01v\xEF\x839\x01\x90V[a\x1A\xB4\x80b\x01\x96g\x839\x01\x90V[a\x11}\x80b\x01\xB1\x1B\x839\x01\x90V[a9X\x80b\x01\xC2\x98\x839\x01\x90V[a!\x0B\x80b\x01\xFB\xF0\x839\x01\x90V[a\x13\xEC\x80b\x02\x1C\xFB\x839\x01\x90V[a\x16\xE0\x80b\x020\xE7\x839\x01\x90V[aa\x87\x80b\x02G\xC7\x839\x01\x90V[a\x1A%\x80b\x02\xA9N\x839\x01\x90V[`@Q\x80`@\x01`@R\x80b\0)ob\0)\xAFV[\x81R` \x01b\0)~b\0)\xAFV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[a\x0E`\x80b\x02\xC3s\x839\x01\x90V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0)\xE0W`\0\x80\xFD[P5\x91\x90PV[\x80`\0[`\x02\x81\x10\x15b\0*\x0CW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01b\0)\xEBV[PPPPV[`\0`\x80\x82\x01\x90Pb\0*'\x82\x84Qb\0)\xE7V[` \x83\x01Qb\0*;`@\x84\x01\x82b\0)\xE7V[P\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0*}W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0*VV[P\x94\x95\x94PPPPPV[` \x81R`\0b\0*\x9D` \x83\x01\x84b\0*BV[\x93\x92PPPV[`\0[\x83\x81\x10\x15b\0*\xC1W\x81\x81\x01Q\x83\x82\x01R` \x01b\0*\xA7V[\x83\x81\x11\x15b\0*\x0CWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Rb\0*\xED\x81` \x86\x01` \x86\x01b\0*\xA4V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15b\0+\xB7W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15b\0+\xA0W`_\x19\x89\x85\x03\x01\x83Rb\0+\x8D\x84\x86Qb\0*\xD3V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01b\0+nV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01b\0+(V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15b\0,oW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15b\0,YW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90b\0,-V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01b\0+\xEFV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15b\0,\xD7W`?\x19\x88\x86\x03\x01\x84Rb\0,\xC4\x85\x83Qb\0*\xD3V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01b\0,\xA5V[P\x92\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x81R`\0b\0-%`@\x83\x01\x85b\0*BV[\x90P`\x01\x80`\xA0\x1B\x03\x83\x16` \x83\x01R\x93\x92PPPV[`\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`\x01\x80`\xA0\x1B\x03\x80\x89\x16\x83R` \x81\x89\x16\x81\x85\x01R`\xFF\x88\x16`@\x85\x01R\x86``\x85\x01R`\xC0`\x80\x85\x01Rb\0-\xA1`\xC0\x85\x01\x87b\0*BV[\x84\x81\x03`\xA0\x86\x01R\x85Q\x80\x82R\x82\x87\x01\x93P\x90\x82\x01\x90`\0[\x81\x81\x10\x15b\0-\xD8W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01b\0-\xBAV[P\x90\x9B\x9APPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0.\x17\x90\x83\x01\x84b\0*\xD3V[\x95\x94PPPPPV[l)\xBA90\xBA2\xB3\xBC\xAA7\xB5\xB2\xB7`\x99\x1B\x81R`\0\x82Qb\0.J\x81`\r\x85\x01` \x87\x01b\0*\xA4V[\x91\x90\x91\x01`\r\x01\x92\x91PPV[b\x14\xD5\x15`\xEA\x1B\x81R`\0\x82Qb\0.w\x81`\x03\x85\x01` \x87\x01b\0*\xA4V[\x91\x90\x91\x01`\x03\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15b\0.\xB1Wb\0.\xB1b\0.\x84V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0*}W\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.\xCCV[`\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/\x8FW\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/yW\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/9V[PP\x9A\x86\x01\x9A\x94PP\x91\x84\x01\x91`\x01\x01b\0/\x16V[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\x0001W\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/\xF4V[PPPPPP\x82\x81\x03`\xC0\x84\x01Rb\x000K\x81\x86b\0.\xB8V[\x90P\x82\x81\x03`\xE0\x84\x01Rb\x000a\x81\x85b\0.\xF8V[\x9B\x9APPPPPPPPPPPV[`\0` \x82\x84\x03\x12\x15b\x000\x83W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\x000\x9CW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\x000\xB1W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\x000\xC6Wb\x000\xC6b\0,\xE4V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\x000\xF1Wb\x000\xF1b\0,\xE4V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15b\x001\x0BW`\0\x80\xFD[b\x001\x1E\x83` \x83\x01` \x88\x01b\0*\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15b\x001a\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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003`\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 #`\xB1`aT\xD8]l\xAC\xF8\xAC9\x1ENc\xB6}\xFF\x95\xCB\xA2\x15W\xF8\xD2\xEC\xAD\xD0\"\xAA\x01dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\n\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c\"\x89Q\x18\x14a\09W\x80cb\x1F\xD10\x14a\0RW\x80c\xC5\xF2\x89/\x14a\0wW[`\0\x80\xFD[a\0Pa\0G6`\x04a\0\xDCV[PPPPPPPV[\0[4\x80\x15a\0^W`\0\x80\xFD[P```@Qa\0n\x91\x90a\x01\x7FV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x83W`\0\x80\xFD[P`@Q`\0\x81R` \x01a\0nV[`\0\x80\x83`\x1F\x84\x01\x12a\0\xA5W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\0\xD5W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0`\x80\x88\x8A\x03\x12\x15a\0\xF7W`\0\x80\xFD[\x875g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x0FW`\0\x80\xFD[a\x01\x1B\x8B\x83\x8C\x01a\0\x93V[\x90\x99P\x97P` \x8A\x015\x91P\x80\x82\x11\x15a\x014W`\0\x80\xFD[a\x01@\x8B\x83\x8C\x01a\0\x93V[\x90\x97P\x95P`@\x8A\x015\x91P\x80\x82\x11\x15a\x01YW`\0\x80\xFD[Pa\x01f\x8A\x82\x8B\x01a\0\x93V[\x98\x9B\x97\x9AP\x95\x98\x94\x97\x95\x96``\x90\x95\x015\x94\x93PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x01\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x90V[\x81\x81\x11\x15a\x01\xBEW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 e\xB26\x94A\xD6\xBD\xE4\x01\ru`jiR$\xD7\xE0\xA533\xDC\xD0}-\xAD\xA6k\xFB?\x12ddsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\xD3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c}!\xAF\x06\x11a\0\x8CW\x80c\xA2/\x14\x1E\x11a\0fW\x80c\xA2/\x14\x1E\x14a\x01\x90W\x80c\xA3\xB2\xAA\x96\x14a\x01\x0CW\x80c\xAC\xD4\x14\xA8\x14a\x01\xA2W\x80c\xC6\x1F\xF6\0\x14a\x01\xCDW`\0\x80\xFD[\x80c}!\xAF\x06\x14a\x01\x1FW\x80c\x86K\x8Ai\x14a\x01tW\x80c\x96\x0B\xFE\x04\x14a\x01\x82W`\0\x80\xFD[\x80c\x06\x90Rj\x14a\0\xD4W\x80c-\xAE\x03\xE1\x14a\0\xFDW\x80c0\x90DW\x14a\x01\x0CW\x80cB\xCD\xE4\xE8\x14a\x01\x1FW\x80cd5\x99\xF2\x14a\x01&W\x80cz\0\t\x89\x14a\x01PW[`\0\x80\xFD[a\0\xEAa\0\xE26`\x04a\x01\xF8V[`\0\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@Q`\0\x81R` \x01a\0\xF4V[a\x01\x1Da\x01\x1A6`\x04a\x02OV[PV[\0[`\0a\0\xEAV[a\0\xEAa\x0146`\x04a\x03\x14V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01da\x01^6`\x04a\x03-V[P`\0\x90V[`@Q\x90\x15\x15\x81R` \x01a\0\xF4V[a\0\xEAa\x01^6`\x04a\x03OV[a\x01\x1Da\x01\x1A6`\x04a\x03\x14V[a\x01\x1Da\x01\x9E6`\x04a\x01\xF8V[PPV[a\x01\x1Da\x01\xB06`\x04a\x01\xF8V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R` \x81\x90R`@\x90 UV[a\x01da\0\xE26`\x04a\x03jV[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\x0BW`\0\x80\xFD[a\x02\x14\x83a\x01\xDBV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xF3W`\0\x80\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x02bW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02zW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\x8EW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xA0Wa\x02\xA0a\x02\"V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x02\xC5Wa\x02\xC5a\x02\"V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x02\xE3W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\x08Wa\x02\xF9\x85a\x028V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\xE8V[\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03&W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03?W`\0\x80\xFD[a\x03H\x82a\x028V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03aW`\0\x80\xFD[a\x03H\x82a\x01\xDBV[`\0\x80`@\x83\x85\x03\x12\x15a\x03}W`\0\x80\xFD[a\x03\x86\x83a\x01\xDBV[\x91Pa\x03\x94` \x84\x01a\x028V[\x90P\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 F\xB9\xDF\xA2\xD4\xE8\xED\xB0\xA1\x14\xDA\x8F\xB6&\x7FG@0\xF3\xACf\xD6\x1A\xFB\x82t\x119\x9D'\xF64dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0J\xD08\x03\x80b\0J\xD0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01BV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x82\x16`\xA0R`\x01`\x01`@\x1B\x03\x81\x16`\xC0Rb\0\0^b\0\0gV[PPPb\0\x01\xA1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD4W`@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\x01XW`\0\x80\xFD[\x83Qb\0\x01e\x81b\0\x01)V[` \x85\x01Q\x90\x93Pb\0\x01x\x81b\0\x01)V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14b\0\x01\x96W`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0QaH\xB2b\0\x02\x1E`\09`\0a\x05\xFF\x01R`\0\x81\x81a\x02\xBD\x01R\x81\x81a\x06:\x01R\x81\x81a\x06\xEC\x01R\x81\x81a\n\xBF\x01R\x81\x81a\rl\x01R\x81\x81a\x10\xF4\x01R\x81\x81a\x11\x9C\x01R\x81\x81a\x14<\x01R\x81\x81a\x18\xDB\x01R\x81\x81a\x1A\x84\x01Ra1%\x01R`\0\x81\x81a\x04\xB8\x01Ra\x12g\x01RaH\xB2`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xD1W\x80c\xC4\x90tB\x11a\0\x8AW\x80c\xDD\xA34l\x11a\0dW\x80c\xDD\xA34l\x14a\x05\x8DW\x80c\xEE\x94\xD6|\x14a\x05\xADW\x80c\xF0t\xBAb\x14a\x05\xCDW\x80c\xF2\x88$a\x14a\x05\xEDW`\0\x80\xFD[\x80c\xC4\x90tB\x14a\x05-W\x80c\xC4\xD6m\xE8\x14a\x05MW\x80c\xD0mU\x87\x14a\x05mW`\0\x80\xFD[\x80co\xCD\x0ES\x14a\x04BW\x80ct9\x84\x1F\x14a\x04oW\x80ct\xCD\xD7\x98\x14a\x04\xA6W\x80c\x88gl\xAD\x14a\x04\xDAW\x80c\x9BNF4\x14a\x04\xFAW\x80c\xB5\"S\x8A\x14a\x05\rW`\0\x80\xFD[\x80cFe\xBC\xDA\x11a\x01#W\x80cFe\xBC\xDA\x14a\x02\xABW\x80cG\xD2\x83r\x14a\x02\xDFW\x80cR9jY\x14a\x03\x9FW\x80cXu3W\x14a\x03\xD5W\x80cX\xEA\xEEy\x14a\x03\xF5W\x80cl\r-Z\x14a\x04\"W`\0\x80\xFD[\x80c\x03\x91W\xD2\x14a\x01\xA9W\x80c\x0B\x18\xFFf\x14a\x01\xCBW\x80c#@\xE8\xD3\x14a\x02\x08W\x80c4t\xAA\x16\x14a\x02,W\x80c?e\xCF\x19\x14a\x02dW\x80cB\xEC\xFF*\x14a\x02\x84W`\0\x80\xFD[6a\x01\xA4W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[`\0\x80\xFD[4\x80\x15a\x01\xB5W`\0\x80\xFD[Pa\x01\xC9a\x01\xC46`\x04a;fV[a\x06!V[\0[4\x80\x15a\x01\xD7W`\0\x80\xFD[P`3Ta\x01\xEB\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[4\x80\x15a\x02\x14W`\0\x80\xFD[Pa\x02\x1E`9T\x81V[`@Q\x90\x81R` \x01a\x01\xFFV[4\x80\x15a\x028W`\0\x80\xFD[P`4Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xFFV[4\x80\x15a\x02pW`\0\x80\xFD[Pa\x01\xC9a\x02\x7F6`\x04a<$V[a\ngV[4\x80\x15a\x02\x90W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xB7W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xEBW`\0\x80\xFD[Pa\x03[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x91\x90\x91RP`@\x80Q`\x80\x81\x01\x82R`Ta\x01\xEB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x01W`\0\x80\xFD[Pa\x04\x15a\x04\x106`\x04a=NV[a\r\xD6V[`@Qa\x01\xFF\x91\x90a=\xC7V[4\x80\x15a\x04.W`\0\x80\xFD[Pa\x02\x1Ea\x04=6`\x04a<\xF2V[a\x0E;V[4\x80\x15a\x04NW`\0\x80\xFD[Pa\x04ba\x04]6`\x04a=\xD5V[a\x0F\xEFV[`@Qa\x01\xFF\x91\x90a=\xEEV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x04\x15a\x04\x8A6`\x04a=\xD5V[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xB2W`\0\x80\xFD[Pa\x01\xEB\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x04\xE6W`\0\x80\xFD[Pa\x01\xC9a\x04\xF56`\x04a>DV[a\x10\x9CV[a\x01\xC9a\x05\x086`\x04a>aV[a\x11\x91V[4\x80\x15a\x05\x19W`\0\x80\xFD[Pa\x04ba\x05(6`\x04a=NV[a\x13>V[4\x80\x15a\x059W`\0\x80\xFD[Pa\x01\xC9a\x05H6`\x04a>\xF4V[a\x141V[4\x80\x15a\x05YW`\0\x80\xFD[Pa\x01\xC9a\x05h6`\x04a? V[a\x16nV[4\x80\x15a\x05yW`\0\x80\xFD[Pa\x01\xC9a\x05\x886`\x04a? V[a\x18\x05V[4\x80\x15a\x05\x99W`\0\x80\xFD[Pa\x01\xC9a\x05\xA86`\x04a@\x11V[a\x18\x98V[4\x80\x15a\x05\xB9W`\0\x80\xFD[P`:Ta\x02L\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xD9W`\0\x80\xFD[Pa\x01\xC9a\x05\xE86`\x04a@\xE2V[a\x1AkV[4\x80\x15a\x05\xF9W`\0\x80\xFD[Pa\x02L\x7F\0\0\0\0\0\0\0\0\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90aAJV[\x15a\x06\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07;W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07_\x91\x90aAJV[\x15a\x07|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`\0a\x07\xC2a\x07\x8B\x85\x80aA\xC4V[\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\x1E\xBE\x92PPPV[`\0\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x081Wa\x081a=\x8FV[`\x02\x81\x11\x15a\x08BWa\x08Ba=\x8FV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPod.verifyStaleBalance: pro`D\x82\x01R\x7Fof is older than last checkpoint`d\x82\x01R`\x84\x01a\x06\xCAV[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xEDWa\x08\xEDa=\x8FV[\x14a\tWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01Rsidator is not active``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[a\t\x9Ba\td\x86\x80aA\xC4V[\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\x1E\xE2\x92PPPV[a\n\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FEigenPod.verifyStaleBalance: val`D\x82\x01R\x7Fidator must be slashed to be mar`d\x82\x01Rhked stale`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\n1a\n+\x88a\x0E;V[\x87a\x1F\x0CV[a\nT\x865a\n@\x87\x80aA\xC4V[a\nM` \x8A\x01\x8AaB\rV[\x86Qa gV[a\n^`\0a\"~V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\n\x8AWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\n\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B2\x91\x90aAJV[\x15a\x0BOW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x85\x84\x14\x80\x15a\x0B]WP\x83\x82\x14[a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: validatorIndices and proof`d\x82\x01Rt\x0Ed\r\xAE\xAEn\x84\x0CL\xA4\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`[\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\x0C\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FEigenPod.verifyWithdrawalCredent`D\x82\x01R\x7Fials: specified timestamp is too`d\x82\x01Rk\x08\x19\x98\\\x88\x1A[\x88\x1C\x18\\\xDD`\xA2\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[a\x0C\x9Fa\x0C\x99\x8Aa\x0E;V[\x89a\x1F\x0CV[`\0\x80[\x87\x81\x10\x15a\rBWa\r$\x8A5\x8A\x8A\x84\x81\x81\x10a\x0C\xC2Wa\x0C\xC2aB\xC7V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xD7\x91\x90aB\xDDV[\x89\x89\x85\x81\x81\x10a\x0C\xE9Wa\x0C\xE9aB\xC7V[\x90P` \x02\x81\x01\x90a\x0C\xFB\x91\x90aB\rV[\x89\x89\x87\x81\x81\x10a\r\rWa\r\raB\xC7V[\x90P` \x02\x81\x01\x90a\r\x1F\x91\x90aA\xC4V[a%\x14V[a\r.\x90\x83aC\x1AV[\x91P\x80a\r:\x81aC2V[\x91PPa\x0C\xA3V[P`3T`@Qc\x03\x0B\x14q`\xE6\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\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\x90\x91\x16\x90c\xC2\xC5\x1C@\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\xC6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPV[`\0\x80a\x0E\x18\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*\xFA\x92PPPV[`\0\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[`\0a\x0EJa\x1F\xFF`\x0CaCMV[a\x0E]`\x01`\x01`@\x1B\x03\x84\x16BaClV[\x10a\x0E\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPod.getParentBlockRoot: tim`D\x82\x01Rrestamp out of range`h\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R`\0\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\x0E\x91aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x0FIW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0FNV[``\x91P[P\x91P\x91P\x81\x80\x15a\x0FaWP`\0\x81Q\x11[a\x0F\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FEigenPod.getParentBlockRoot: inv`D\x82\x01R\x7Falid block root returned\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[\x80\x80` \x01\x90Q\x81\x01\x90a\x0F\xE7\x91\x90aC\xCFV[\x94\x93PPPPV[a\x10\x17`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`\0\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x10\x82Wa\x10\x82a=\x8FV[`\x02\x81\x11\x15a\x10\x93Wa\x10\x93a=\x8FV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x10\xBFWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x10\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aBSV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11g\x91\x90aAJV[\x15a\x11\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[a\x11\x8D\x82a\"~V[PPV[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\x11\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x12eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FEigenPod.stake: must initially s\x90\x82\x01R\x7Ftake for any validator with 32 e`d\x82\x01Rc:42\xB9`\xE1\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x7F\0\0\0\0\0\0\0\0\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\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x12\xA8a+\xF4V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12\xCC\x96\x95\x94\x93\x92\x91\x90aD\x8EV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\xE5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xF9W=`\0\x80>=`\0\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x13/\x92\x91\x90aD\xDDV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x13f`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6`\0a\x13\xA9\x85\x85\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*\xFA\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x14\x16Wa\x14\x16a=\x8FV[`\x02\x81\x11\x15a\x14'Wa\x14'a=\x8FV[\x90RP\x93\x92PPPV[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\x14yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aC\xE8V[a\x14\x87c;\x9A\xCA\0\x82aE\x07V[\x15a\x15\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountWei must be a who`d\x82\x01Rm\x1B\x19H\x11\xDD\xD9ZH\x18[[\xDD[\x9D`\x92\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a\x15!c;\x9A\xCA\0\x83aE\x1BV[`4T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x15\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`b`$\x82\x01R\x7FEigenPod.withdrawRestakedBeaconC`D\x82\x01R\x7FhainETH: amountGwei exceeds with`d\x82\x01R\x7FdrawableRestakedExecutionLayerGw`\x84\x82\x01Raei`\xF0\x1B`\xA4\x82\x01R`\xC4\x01a\x06\xCAV[`4\x80T\x82\x91\x90`\0\x90a\x15\xF8\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aE/V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x16W\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x16i\x83\x83a,9V[PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x16\x8EWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x16\xA8WP0;\x15\x80\x15a\x16\xA8WP`\0T`\xFF\x16`\x01\x14[a\x17\x0BW`@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\xCAV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x17.W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPod.initialize: podOwner ca`D\x82\x01Rsnnot be zero address``\x1B`d\x82\x01R`\x84\x01a\x06\xCAV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x11\x8DW`\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18/W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aEWV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19N\x91\x90aAJV[\x15a\x19kW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[\x82Q\x84Q\x14a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FEigenPod.recoverTokens: tokenLis`D\x82\x01R\x7Ft and amountsToWithdraw must be `d\x82\x01Rj\x0El-\xAC\xA4\r\x8C\xAD\xCC\xEE\x8D`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0[\x84Q\x81\x10\x15a\x1AdWa\x1AR\x83\x85\x83\x81Q\x81\x10a\x1A\x18Wa\x1A\x18aB\xC7V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x1A2Wa\x1A2aB\xC7V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a-R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80a\x1A\\\x81aC2V[\x91PPa\x19\xF9V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\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\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xF7\x91\x90aAJV[\x15a\x1B\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x90aAgV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x80a\x1B\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`X`$\x82\x01R\x7FEigenPod.verifyCheckpointProofs:`D\x82\x01R\x7F must have active checkpoint to `d\x82\x01R\x7Fperform checkpoint proof\0\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q`\x80\x81\x01\x82R`\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x91P` \x01`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a*\xEBc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16aCMV[\x9B\x9APPPPPPPPPPPV[`\0\x81Q`0\x14a+\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEigenPod._calculateValidatorPubk`D\x82\x01R\x7FeyHash must be a 48-byte BLS pub`d\x82\x01Rflic key`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@Q`\x02\x90a+\x9A\x90\x84\x90`\0\x90` \x01aFrV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\xB4\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+\xD1W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E5\x91\x90aC\xCFV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R`\0`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a,\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x06\xCAV[`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a,\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a,\xDBV[``\x91P[PP\x90P\x80a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x16i\x90\x84\x90a5xV[a-\xB0`\x05`\x03aC\x1AV[a-\xBB\x90` aCMV[a-\xC8` \x83\x01\x83aB\rV[\x90P\x14a.KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBeaconChainProofs.verifyBalanceC\x90\x82\x01R\x7Fontainer: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`la.\x9Ca.]` \x84\x01\x84aB\rV[\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\x87\x92PP\x855\x90P\x84a2IV[a\x16iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FBeaconChainProofs.verifyBalanceC`D\x82\x01R\x7Fontainer: invalid balance contai`d\x82\x01Rh72\xB9\x10897\xB7\xB3`\xB9\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[\x83Q` \x85\x01Q`\0\x91\x82\x91\x82a/8\x87\x84\x88a6JV[\x90P\x81`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a/\xB2Wa/]\x81\x83a7\xC1V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x86\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x96P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01Ra06W`9\x80T\x90`\0a/\xE0\x83aF\xA1V[\x90\x91UPP`\x02``\x8A\x01Ra/\xF5\x85aF\xB8V[\x93P\x82d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PPP\x94P\x94\x92PPPV[` \x81\x01Qb\xFF\xFF\xFF\x16a1\xC9W`\0c;\x9A\xCA\0\x82``\x01Q\x83`@\x01Q`\x01`\x01`@\x1B\x03\x16a0t\x91\x90aE\xD4V[`\x0F\x0Ba0\x81\x91\x90aF\xDFV[`@\x83\x01Q`4\x80T\x92\x93P\x90\x91`\0\x90a0\xA6\x90\x84\x90`\x01`\x01`@\x1B\x03\x16aF#V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UP`\0`=`\0\xFD[PP`:T`@Q\x84\x81R`\x01`\x01`@\x1B\x03\x90\x91\x16\x92P\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x91P` \x01`@Q\x80\x91\x03\x90\xA2PPV[\x80Q`=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a3\x8F\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a3\xA1Wa3\xA1aB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a3\xB6\x81aC2V[\x91PPa2\xBDV[Pa3\xCA`\x02\x83aE\x1BV[\x91P[\x81\x15a4\xEAW`\0[\x82\x81\x10\x15a4\xD7W`\x02\x82a3\xEB\x83\x83aCMV[\x81Q\x81\x10a3\xFBWa3\xFBaB\xC7V[` \x02` \x01\x01Q\x83\x83`\x02a4\x11\x91\x90aCMV[a4\x1C\x90`\x01aC\x1AV[\x81Q\x81\x10a4,Wa4,aB\xC7V[` \x02` \x01\x01Q`@Q` \x01a4N\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra4h\x91aC\xB3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a4\x85W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a4\xA8\x91\x90aC\xCFV[\x82\x82\x81Q\x81\x10a4\xBAWa4\xBAaB\xC7V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a4\xCF\x81aC2V[\x91PPa3\xD6V[Pa4\xE3`\x02\x83aE\x1BV[\x91Pa3\xCDV[\x80`\0\x81Q\x81\x10a4\xFDWa4\xFDaB\xC7V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[`\0a\x0E5\x82`\x05\x81Q\x81\x10a5&Wa5&aB\xC7V[` \x02` \x01\x01Qa9%V[`\0a\x0E5\x82`\x06\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0\x81`\x01\x81Q\x81\x10a\x1E\xD3Wa\x1E\xD3aB\xC7V[`\0a\x0E5\x82`\x02\x81Q\x81\x10a5&Wa5&aB\xC7V[`\0a5\xCD\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a9\x8C\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x16iW\x80\x80` \x01\x90Q\x81\x01\x90a5\xEB\x91\x90aAJV[a\x16iW`@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\xCAV[`\0a6X`&`\x01aC\x1AV[a6c\x90` aCMV[a6p`@\x84\x01\x84aB\rV[\x90P\x14a6\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` aH]\x839\x81Q\x91R\x90\x82\x01R\x7FrBalance: Proof has incorrect le`d\x82\x01Rc\r\xCC\xEE\x8D`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`\0a6\xEE`\x04\x85aGdV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa7Ha7\x07`@\x85\x01\x85aB\rV[\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\x89\x92PPP` \x86\x015\x84a2IV[a7\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` aH]\x839\x81Q\x91R`D\x82\x01R\x7FrBalance: Invalid merkle proof\0\0`d\x82\x01R`\x84\x01a\x06\xCAV[a7\xB6\x83` \x015\x85a9\x9BV[\x91PP[\x93\x92PPPV[`\0a7\xBA`\x01`\x01`@\x1B\x03\x80\x84\x16\x90\x85\x16aG\x88V[`\0\x83Q`\0\x14\x15\x80\x15a7\xF8WP` \x84Qa7\xF6\x91\x90aE\x07V[\x15[a8\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`T`$\x82\x01R\x7FMerkle.processInclusionProofSha2`D\x82\x01R\x7F56: proof length should be a non`d\x82\x01Rs\x16\xBD2\xB97\x906\xBA\xB6:4\xB862\x907\xB3\x10\x19\x99`a\x1B`\x84\x82\x01R`\xA4\x01a\x06\xCAV[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a9\x1BWa8\xAB`\x02\x85aE\x07V[a8\xDEW\x81Q`\0R\x80\x86\x01Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa8\xD3W`\0\x80\xFD[`\x02\x84\x04\x93Pa9\tV[\x80\x86\x01Q`\0R\x81Q` R` \x82`@`\0`\x02a\x07\xD0Z\x03\xFAa9\x02W`\0\x80\xFD[`\x02\x84\x04\x93P[a9\x14` \x82aC\x1AV[\x90Pa8\x98V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\x0F\xE7\x84\x84`\0\x85a9\xC8V[`\0\x80a9\xA9`\x04\x84aG\xD8V[a9\xB4\x90`@aG\xFCV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\x0F\xE7\x84\x82\x1Ba9%V[``\x82G\x10\x15a:)W`@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\xCAV[`\x01`\x01`\xA0\x1B\x03\x85\x16;a:\x80W`@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\xCAV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa:\x9C\x91\x90aC\xB3V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a:\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a:\xDEV[``\x91P[P\x91P\x91Pa:\xEE\x82\x82\x86a:\xF9V[\x97\x96PPPPPPPV[``\x83\x15a;\x08WP\x81a7\xBAV[\x82Q\x15a;\x18W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xCA\x91\x90aH)V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;IW`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a;`W`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a;{W`\0\x80\xFD[a;\x84\x84a;2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a;\xA0W`\0\x80\xFD[a;\xAC\x87\x83\x88\x01a;NV[\x93P`@\x86\x015\x91P\x80\x82\x11\x15a;\xC2W`\0\x80\xFD[Pa;\xCF\x86\x82\x87\x01a;NV[\x91PP\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a;\xEBW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x02W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a<\x1DW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xA0\x89\x8B\x03\x12\x15a<@W`\0\x80\xFD[a/``\x84\x01\x82a=\xA5V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a>VW`\0\x80\xFD[\x815a7\xBA\x81a>6V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a>yW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a>\x90W`\0\x80\xFD[a>\x9C\x89\x83\x8A\x01a=\rV[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a>\xB5W`\0\x80\xFD[Pa>\xC2\x88\x82\x89\x01a=\rV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2FW`\0\x80\xFD[\x805a;I\x81a>\xD4V[`\0\x80`@\x83\x85\x03\x12\x15a?\x07W`\0\x80\xFD[\x825a?\x12\x81a>\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a?2W`\0\x80\xFD[\x815a7\xBA\x81a>\xD4V[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?{Wa?{a?=V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a?\x9CWa?\x9Ca?=V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a?\xB7W`\0\x80\xFD[\x815` a?\xCCa?\xC7\x83a?\x83V[a?SV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xEBW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a@\x06W\x805\x83R\x91\x83\x01\x91\x83\x01a?\xEFV[P\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a@&W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@=W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a@QW`\0\x80\xFD[\x815` a@aa?\xC7\x83a?\x83V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a@\x80W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a@\xA7W\x855a@\x98\x81a>\xD4V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a@\x85V[\x97PP\x87\x015\x92PP\x80\x82\x11\x15a@\xBDW`\0\x80\xFD[Pa@\xCA\x86\x82\x87\x01a?\xA6V[\x92PPa@\xD9`@\x85\x01a>\xE9V[\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a@\xF7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aA\x0EW`\0\x80\xFD[aA\x1A\x87\x83\x88\x01a;NV[\x94P` \x86\x015\x91P\x80\x82\x11\x15aA0W`\0\x80\xFD[PaA=\x86\x82\x87\x01a;\xD9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aA\\W`\0\x80\xFD[\x81Qa7\xBA\x81a>6V[` \x80\x82R`>\x90\x82\x01R\x7FEigenPod.onlyWhenNotPaused: inde`@\x82\x01R\x7Fx is paused in EigenPodManager\0\0``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aA\xDBW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aA\xF5W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aB$W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aB>W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a<\x1DW`\0\x80\xFD[` \x80\x82R`N\x90\x82\x01R\x7FEigenPod.onlyOwnerOrProofSubmitt`@\x82\x01R\x7Fer: caller is not pod owner or p``\x82\x01Rm97\xB7\xB3\x109\xBA\xB16\xB4\xBA:2\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15aB\xEFW`\0\x80\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a7\xBAW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15aC-WaC-aC\x04V[P\x01\x90V[`\0`\0\x19\x82\x14\x15aCFWaCFaC\x04V[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15aCgWaCgaC\x04V[P\x02\x90V[`\0\x82\x82\x10\x15aC~WaC~aC\x04V[P\x03\x90V[`\0[\x83\x81\x10\x15aC\x9EW\x81\x81\x01Q\x83\x82\x01R` \x01aC\x86V[\x83\x81\x11\x15aC\xADW`\0\x84\x84\x01R[PPPPV[`\0\x82QaC\xC5\x81\x84` \x87\x01aC\x83V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aC\xE1W`\0\x80\xFD[PQ\x91\x90PV[` \x80\x82R`1\x90\x82\x01R\x7FEigenPod.onlyEigenPodManager: no`@\x82\x01Rp:\x102\xB4\xB3\xB2\xB7(7\xB2&\xB0\xB70\xB3\xB2\xB9`y\x1B``\x82\x01R`\x80\x01\x90V[\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[`\0\x81Q\x80\x84RaDz\x81` \x86\x01` \x86\x01aC\x83V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x80\x81R`\0aD\xA2`\x80\x83\x01\x88\x8AaD9V[\x82\x81\x03` \x84\x01RaD\xB4\x81\x88aDbV[\x90P\x82\x81\x03`@\x84\x01RaD\xC9\x81\x86\x88aD9V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R`\0a\x0F\xE7` \x83\x01\x84\x86aD9V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aE\x16WaE\x16aD\xF1V[P\x06\x90V[`\0\x82aE*WaE*aD\xF1V[P\x04\x90V[`\0`\x01`\x01`@\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15aEOWaEOaC\x04V[\x03\x93\x92PPPV[` \x80\x82R`(\x90\x82\x01R\x7FEigenPod.onlyEigenPodOwner: not `@\x82\x01Rg87\xB2'\xBB\xB72\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aC\xC5W`\0\x80\xFD[`\0b\xFF\xFF\xFF\x82\x16\x80aE\xCAWaE\xCAaC\x04V[`\0\x19\x01\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x82\x12\x82`\x01`\x01`\x7F\x1B\x03\x03\x82\x13\x81\x15\x16\x15aE\xFEWaE\xFEaC\x04V[\x82`\x01`\x01`\x7F\x1B\x03\x19\x03\x82\x12\x81\x16\x15aF\x1AWaF\x1AaC\x04V[P\x01\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15aFEWaFEaC\x04V[\x01\x94\x93PPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a;`W`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x83QaF\x84\x81\x84` \x88\x01aC\x83V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\0\x81aF\xB0WaF\xB0aC\x04V[P`\0\x19\x01\x90V[`\0\x81`\x0F\x0B`\x01`\x01`\x7F\x1B\x03\x19\x81\x14\x15aF\xD6WaF\xD6aC\x04V[`\0\x03\x92\x91PPV[`\0`\x01`\x01`\xFF\x1B\x03\x81\x84\x13\x82\x84\x13\x80\x82\x16\x86\x84\x04\x86\x11\x16\x15aG\x05WaG\x05aC\x04V[`\x01`\xFF\x1B`\0\x87\x12\x82\x81\x16\x87\x83\x05\x89\x12\x16\x15aG$WaG$aC\x04V[`\0\x87\x12\x92P\x87\x82\x05\x87\x12\x84\x84\x16\x16\x15aG@WaG@aC\x04V[\x87\x85\x05\x87\x12\x81\x84\x16\x16\x15aGVWaGVaC\x04V[PPP\x92\x90\x93\x02\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG|WaG|aD\xF1V[\x92\x16\x91\x90\x91\x04\x92\x91PPV[`\0\x81`\x0F\x0B\x83`\x0F\x0B`\0\x81\x12\x81`\x01`\x01`\x7F\x1B\x03\x19\x01\x83\x12\x81\x15\x16\x15aG\xB3WaG\xB3aC\x04V[\x81`\x01`\x01`\x7F\x1B\x03\x01\x83\x13\x81\x16\x15aG\xCEWaG\xCEaC\x04V[P\x90\x03\x93\x92PPPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x84\x16\x80aG\xF0WaG\xF0aD\xF1V[\x92\x16\x91\x90\x91\x06\x92\x91PPV[`\0d\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15aH WaH aC\x04V[\x02\x94\x93PPPPV[` \x81R`\0a7\xBA` \x83\x01\x84aDbV\xFEEigenPod._verifyWithdrawalCredenBeaconChainProofs.verifyValidato\xA2dipfsX\"\x12 \xDE\xC1oDP\x94v\xE4\xD5\xB0\xE9\xA70\xDD\n\xBB\xF7\x9Dd=\0\xD5\xF3@\xC0\xBB\xDBj\x1D\x81\xBF\x8EdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\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\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\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`\x04aHNV[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\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\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#V[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\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[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\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[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`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`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\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[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\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\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`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\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\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\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\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\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&\x9CV[`@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\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@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\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\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\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\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\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\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\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\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(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \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-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[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\xF8V[`@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\x90aTJV[`@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\x90aTyV[`\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\x96V[a\x0F\xEE\x81a2\x7FV[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\xE0V[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\x85a3vV[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\x90aUZV[`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\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\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\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\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\xE0V[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\x90aSXV[`\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\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[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\x90aUZV[`\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\x90aVIV[`@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\x90aSXV[`\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\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@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\xF8\x85a\x15ZV[\x15a\x18\x81W`@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\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@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\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\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\x1BWa\x1A\x1BaS\x11V[` \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\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@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\x1B7\x92\x91\x90aTJV[`@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\xB9a&\x9CV[`@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\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@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\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\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\xB4Wa\x1D\xB4aS\x11V[` \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\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \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\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@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 r\x83a\x17\x1DV[\x15a \xE5W`@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!aW`@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!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@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\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\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#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\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#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@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%\x08\x83a\x17\x1DV[a%\x89W`@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/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@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-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@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\xF2V[`\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&\xCDWP`\x97T\x90V[a&\xD5a7[V[\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'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@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(\xCDW`@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)WW`@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-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[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)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\x7F\0\0\0\0\0\0\0\0\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*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\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*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\x7F\0\0\0\0\0\0\0\0\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+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@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,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\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-\x94\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-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@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.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@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/\xB5\x82\x82aX3V[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\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@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\x15a1vW`@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\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[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)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@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\xAD\x90\x84\x90aW\xA2V[\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\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@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\xD3W`@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\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@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\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@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\xA2a7W\x82a2\x7FV[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\xFDW`@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\x90a9u\x90\x84\x90aW\x8AV[\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\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\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:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\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;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\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<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\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=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\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>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@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?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\x7F\0\0\0\0\0\0\0\0\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@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@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@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[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\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\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\xD1\x83\x83aD\x9DV[`\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\x15aD\x08W`@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\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@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\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@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\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@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\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@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\x15aF\x8BWaF\x8BaY\xB1V[\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\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\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\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\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\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\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\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\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\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[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\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[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\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \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\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \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\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\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\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\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\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[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\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\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\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \x85\xD1d\xB1q\xFC~+\x8Ba\xC5Y\x166\xDAhM\x9C\x82 \xCFQ\x18$\r\x9E\x19\xA3)\x11\xDD\xABdsolcC\0\x08\x0C\x003a\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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003a\x01 `@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x001i8\x03\x80b\x001i\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01KV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x80R\x80\x85\x16`\xA0R\x80\x84\x16`\xC0R\x80\x83\x16`\xE0R\x81\x16a\x01\0Rb\0\0eb\0\0pV[PPPPPb\0\x01\xCBV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xDDW`@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\x010W`\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\x01HW`\0\x80\xFD[PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15b\0\x01dW`\0\x80\xFD[\x85Qb\0\x01q\x81b\0\x012V[` \x87\x01Q\x90\x95Pb\0\x01\x84\x81b\0\x012V[`@\x87\x01Q\x90\x94Pb\0\x01\x97\x81b\0\x012V[``\x87\x01Q\x90\x93Pb\0\x01\xAA\x81b\0\x012V[`\x80\x87\x01Q\x90\x92Pb\0\x01\xBD\x81b\0\x012V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/(b\0\x02A`\09`\0\x81\x81a\x05Q\x01R\x81\x81a\x05\xFB\x01R\x81\x81a\x0By\x01R\x81\x81a\x13\x13\x01R\x81\x81a\x17\xBF\x01Ra\x18\xAF\x01R`\0a\x04\xDD\x01R`\0a\x02\xCF\x01R`\0\x81\x81a\x02c\x01R\x81\x81a\x12\x92\x01Ra\x1Ed\x01R`\0a\x03\xAF\x01Ra/(`\0\xF3\xFE`\x80`@R`\x046\x10a\x01\xB7W`\x005`\xE0\x1C\x80c\x88o\x11\x95\x11a\0\xECW\x80c\xB14Bq\x11a\0\x8AW\x80c\xEAM<\x9B\x11a\0dW\x80c\xEAM<\x9B\x14a\x05?W\x80c\xF2\xFD\xE3\x8B\x14a\x05sW\x80c\xF6\x84\x8D$\x14a\x05\x93W\x80c\xFA\xBC\x1C\xBC\x14a\x05\xCEW`\0\x80\xFD[\x80c\xB14Bq\x14a\x04\xCBW\x80c\xBE\xFF\xBB\x89\x14a\x04\xFFW\x80c\xC2\xC5\x1C@\x14a\x05\x1FW`\0\x80\xFD[\x80c\x9BNF4\x11a\0\xC6W\x80c\x9BNF4\x14a\x04LW\x80c\x9B\xA0bu\x14a\x04_W\x80c\xA3\x84\x06\xA3\x14a\x04\x95W\x80c\xA6\xA5\t\xBE\x14a\x04\xB5W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x03\xE6W\x80c\x8D\xA5\xCB[\x14a\x04\x06W\x80c\x91\x04\xC3\x19\x14a\x04$W`\0\x80\xFD[\x80cY\\jg\x11a\x01YW\x80c`\xF4\x06+\x11a\x013W\x80c`\xF4\x06+\x14a\x03[W\x80cqP\x18\xA6\x14a\x03\x88W\x80ct\xCD\xD7\x98\x14a\x03\x9DW\x80c\x84\xD8\x10b\x14a\x03\xD1W`\0\x80\xFD[\x80cY\\jg\x14a\x02\xF1W\x80cZ\xC8j\xB7\x14a\x03\x06W\x80c\\\x97Z\xBB\x14a\x03FW`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\x95W\x80c\x17\x94\xBB<\x14a\x021W\x80c)+{+\x14a\x02QW\x80c8{\x13\0\x14a\x02\x9DW\x80c9\xB7\x0E8\x14a\x02\xBDW`\0\x80\xFD[\x80c\x0E\x81\x07<\x14a\x01\xBCW\x80c\x10\xD6z/\x14a\x01\xEFW\x80c\x13d9\xDD\x14a\x02\x11W[`\0\x80\xFD[4\x80\x15a\x01\xC8W`\0\x80\xFD[Pa\x01\xDCa\x01\xD76`\x04a \xFCV[a\x05\xEEV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xFBW`\0\x80\xFD[Pa\x02\x0Fa\x02\n6`\x04a!(V[a\x08]V[\0[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\x02\x0Fa\x02,6`\x04a!EV[a\t\x10V[4\x80\x15a\x02=W`\0\x80\xFD[Pa\x02\x0Fa\x02L6`\x04a!^V[a\nOV[4\x80\x15a\x02]W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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\xE6V[4\x80\x15a\x02\xA9W`\0\x80\xFD[Pa\x02\x0Fa\x02\xB86`\x04a!^V[a\x0BnV[4\x80\x15a\x02\xC9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x02\xFDW`\0\x80\xFD[Pa\x02\x0Fa\x0F\x82V[4\x80\x15a\x03\x12W`\0\x80\xFD[Pa\x036a\x03!6`\x04a!\x9FV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x01\xE6V[4\x80\x15a\x03RW`\0\x80\xFD[P`fTa\x01\xDCV[4\x80\x15a\x03gW`\0\x80\xFD[Pa\x01\xDCa\x03v6`\x04a!(V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x03\x94W`\0\x80\xFD[Pa\x02\x0Fa\x10IV[4\x80\x15a\x03\xA9W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x03\xDDW`\0\x80\xFD[Pa\x02\x85a\x10]V[4\x80\x15a\x03\xF2W`\0\x80\xFD[P`eTa\x02\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x12W`\0\x80\xFD[P`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x85V[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02\x85s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x02\x0Fa\x04Z6`\x04a\"\x0BV[a\x11GV[4\x80\x15a\x04kW`\0\x80\xFD[Pa\x02\x85a\x04z6`\x04a!(V[`\x98` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xA1W`\0\x80\xFD[Pa\x02\x85a\x04\xB06`\x04a!(V[a\x126V[4\x80\x15a\x04\xC1W`\0\x80\xFD[Pa\x01\xDC`\x99T\x81V[4\x80\x15a\x04\xD7W`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x0BW`\0\x80\xFD[Pa\x02\x0Fa\x05\x1A6`\x04a \xFCV[a\x13\x08V[4\x80\x15a\x05+W`\0\x80\xFD[Pa\x02\x0Fa\x05:6`\x04a \xFCV[a\x15GV[4\x80\x15a\x05KW`\0\x80\xFD[Pa\x02\x85\x7F\0\0\0\0\0\0\0\0\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[4\x80\x15a\x05\x7FW`\0\x80\xFD[Pa\x02\x0Fa\x05\x8E6`\x04a!(V[a\x19{V[4\x80\x15a\x05\x9FW`\0\x80\xFD[Pa\x036a\x05\xAE6`\x04a!(V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x98` R`@\x90 T\x16\x15\x15\x90V[4\x80\x15a\x05\xDAW`\0\x80\xFD[Pa\x02\x0Fa\x05\xE96`\x04a!EV[a\x19\xF1V[`\x003`\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\x06AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FEigenPodManager.addShares: podOw`D\x82\x01R\x7Fner cannot be zero address\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\0\x82\x12\x15a\x07+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01Rss cannot be negative``\x1B`d\x82\x01R`\x84\x01a\x068V[a\x079c;\x9A\xCA\0\x83a\"\xF3V[\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FEigenPodManager.addShares: share`D\x82\x01R\x7Fs must be a whole Gwei amount\0\0\0`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x07\xD0\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x08\x0F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x08@\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x08R\x82\x82a\x1BMV[\x92PPP[\x92\x91PPV[`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\x08\xB0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD4\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[a\t\r\x81a\x1B\x8FV[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\tXW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t|\x91\x90a#\xC5V[a\t\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`fT\x81\x81\x16\x14a\n\x11W`@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\x068V[`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\noWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\x89WP0;\x15\x80\x15a\n\x89WP`\0T`\xFF\x16`\x01\x14[a\n\xECW`@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\x068V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x0B\x0FW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x0B\x18\x84a\x1C\x86V[a\x0B\"\x83\x83a\x1C\xD8V[\x80\x15a\x0BhW`\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[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\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x0C0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: podOwner cannot be zero `d\x82\x01Rfaddress`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x0C\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: destination cannot be ze`d\x82\x01Riro address`\xB0\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\0\x81\x12\x15a\r\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares cannot be negativ`d\x82\x01R`e`\xF8\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\r*c;\x9A\xCA\0\x82a\"\xF3V[\x15a\r\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R`\0\x80Q` a.\xD3\x839\x81Q\x91R`D\x82\x01R\x7FTokens: shares must be a whole G`d\x82\x01Ri\x1D\xD9ZH\x18[[\xDD[\x9D`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90\x81\x12\x15a\x0F\x07W`\0a\r\xCA\x82a$/V[\x90P\x80\x83\x11\x15a\x0EaW`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ua\r\xF7\x81\x84a$LV[\x92P\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x82`@Qa\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x84`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R`\0`@Qa\x0ET\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x0F\x05V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x0E\x85\x90\x85\x90a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ\x91\x92P\x90`\0\x80Q` a.\xB3\x839\x81Q\x91R\x90a\x0E\xC4\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x82`@Qa\x0E\xF5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[P[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x98` R`@\x90\x81\x90 T\x90QcbH:!`\xE1\x1B\x81R\x85\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x16\x90c\xC4\x90tB\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FdW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FxW=`\0\x80>=`\0\xFD[PPPPPPPPV[`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\x0F\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xEE\x91\x90a#\xC5V[a\x10\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#\xE7V[`\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\x10Qa\x1D\xC2V[a\x10[`\0a\x1C\x86V[V[`fT`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x10\xB4W`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x116W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FEigenPodManager.createPod: Sende`D\x82\x01Rr\x1C\x88\x18[\x1C\x99XY\x1EH\x1A\x18\\\xC8\x18H\x1C\x1B\xD9`j\x1B`d\x82\x01R`\x84\x01a\x068V[`\0a\x11@a\x1E\x1CV[\x92PPP\x90V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x11\x9CW`@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\x068V[3`\0\x90\x81R`\x98` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x11\xC5Wa\x11\xC2a\x1E\x1CV[\x90P[`@Qc&\xD3\x91\x8D`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\x9BNF4\x904\x90a\x11\xFB\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a$\x8CV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x12\x14W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12(W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x90\x81R`\x98` R`@\x81 T\x90\x91\x16\x80a\x08WWa\x13\x01\x83`\x01`\x01`\xA0\x1B\x03\x16`\0\x1B`@Q\x80a\t@\x01`@R\x80a\t\x0E\x81R` \x01a%\xA5a\t\x0E\x919`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12\xE6\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1F\x81V[\x93\x92PPPV[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\x13PW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a\"\x7FV[`\0\x81\x12\x15a\x13\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares cannot be negative\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x068V[a\x13\xD5c;\x9A\xCA\0\x82a\"\xF3V[\x15a\x14JW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FEigenPodManager.removeShares: sh`D\x82\x01R\x7Fares must be a whole Gwei amount`d\x82\x01R`\x84\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x14n\x90\x83\x90a%\x16V[\x90P`\0\x81\x12\x15a\x14\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`O`$\x82\x01R\x7FEigenPodManager.removeShares: ca`D\x82\x01R\x7Fnnot result in pod owner having `d\x82\x01Rnnegative shares`\x88\x1B`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x9B` R`@\x90\x81\x90 \x83\x90UQ`\0\x80Q` a%\x85\x839\x81Q\x91R\x90a\x15:\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x90\x81R`\x98` R`@\x90 T\x83\x91\x163\x14a\x15\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FEigenPodManager.onlyEigenPod: no`D\x82\x01Rf\x1D\x08\x18H\x1C\x1B\xD9`\xCA\x1B`d\x82\x01R`\x84\x01a\x068V[`\x02`\xC9T\x14\x15a\x16\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x068V[`\x02`\xC9U`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\xB1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: podOwner cann`d\x82\x01Rqot be zero address`p\x1B`\x84\x82\x01R`\xA4\x01a\x068V[a\x16\xBFc;\x9A\xCA\0\x83a%UV[\x15a\x17XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Z`$\x82\x01R\x7FEigenPodManager.recordBeaconChai`D\x82\x01R\x7FnETHBalanceUpdate: sharesDelta m`d\x82\x01R\x7Fust be a whole Gwei amount\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x068V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 T\x90a\x17|\x84\x83a#\x1DV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9B` R`@\x81 \x82\x90U\x90\x91Pa\x17\xA4\x83\x83a\x1BMV[\x90P\x80\x15a\x19\x0CW`\0\x81\x12\x15a\x18oW`\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\x13-Ig\x87s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a\x18\x03\x85a$/V[`@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`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18RW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18fW=`\0\x80>=`\0\xFD[PPPPa\x19\x0CV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R`D\x82\x01\x83\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\x18\xF3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19\x07W=`\0\x80>=`\0\xFD[PPPP[\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a.\xB3\x839\x81Q\x91R\x86`@Qa\x195\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x80Q` a%\x85\x839\x81Q\x91R\x83`@Qa\x19f\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PP`\x01`\xC9UPPPPV[a\x19\x83a\x1D\xC2V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\xE8W`@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\x068V[a\t\r\x81a\x1C\x86V[`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\x1ADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ah\x91\x90a#^V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x068\x90a#{V[`fT\x19\x81\x19`fT\x19\x16\x14a\x1B\x16W`@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\x068V[`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\nDV[`\0\x80\x83\x13a\x1BmW`\0\x82\x13a\x1BfWP`\0a\x08WV[P\x80a\x08WV[`\0\x82\x13a\x1B\x85Wa\x1B~\x83a$/V[\x90Pa\x08WV[a\x1B~\x83\x83a%\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\x1DW`@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\x068V[`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[`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[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x1C\xF9WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x1D{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\x068V[`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\x1D\xBE\x82a\x1B\x8FV[PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10[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\x068V[`\0`\x99`\0\x81Ta\x1E-\x90a%iV[\x90\x91UP`@\x80Qa\t@\x81\x01\x90\x91Ra\t\x0E\x80\x82R`\0\x91a\x1E\xCC\x91\x83\x913\x91a%\xA5` \x83\x019`@\x80Q`\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` \x82\x01R\x80\x82\x01\x91\x90\x91R`\0``\x82\x01R`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\xB8\x92\x91` \x01a%\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1F\xDDV[`@Qc\x18\x9A\xCD\xBD`\xE3\x1B\x81R3`\x04\x82\x01R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xC4\xD6m\xE8\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x10W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F$W=`\0\x80>=`\0\xFD[PP3`\0\x81\x81R`\x98` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x88\x16\x90\x81\x17\x90\x91U\x90Q\x92\x94P\x92P\x7F!\xC9\x9D\r\xB0\"\x13\xC3/\xFF[\x05\xCF\nq\x8A\xB5\xF8X\x80+\x91I\x8F\x80\xD8\"p(\x9D\x85j\x91\xA3\x91\x90PV[`@\x80Q`\x01`\x01`\xF8\x1B\x03\x19` \x80\x83\x01\x91\x90\x91Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16`!\x83\x01R`5\x82\x01\x85\x90R`U\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`u\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90a\x13\x01V[`\0\x80\x84G\x10\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FCreate2: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x068V[\x82Qa ~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCreate2: bytecode length is zero`D\x82\x01R`d\x01a\x068V[\x83\x83Q` \x85\x01\x87\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a \xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FCreate2: Failed on deploy\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x068V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\rW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a!\x0FW`\0\x80\xFD[\x825a!\x1A\x81a \xE7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!:W`\0\x80\xFD[\x815a\x13\x01\x81a \xE7V[`\0` \x82\x84\x03\x12\x15a!WW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a!sW`\0\x80\xFD[\x835a!~\x81a \xE7V[\x92P` \x84\x015a!\x8E\x81a \xE7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a!\xB1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x13\x01W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a!\xD4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xECW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\x04W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\"#W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\";W`\0\x80\xFD[a\"G\x89\x83\x8A\x01a!\xC2V[\x90\x97P\x95P` \x88\x015\x91P\x80\x82\x11\x15a\"`W`\0\x80\xFD[Pa\"m\x88\x82\x89\x01a!\xC2V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FEigenPodManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a#\x02Wa#\x02a\"\xDDV[P\x06\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a#?Wa#?a#\x07V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a#XWa#Xa#\x07V[PP\x01\x90V[`\0` \x82\x84\x03\x12\x15a#pW`\0\x80\xFD[\x81Qa\x13\x01\x81a \xE7V[` \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#\xD7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x01W`\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`\x01`\xFF\x1B\x82\x14\x15a$EWa$Ea#\x07V[P`\0\x03\x90V[`\0\x82\x82\x10\x15a$^Wa$^a#\x07V[P\x03\x90V[\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[``\x81R`\0a$\xA0``\x83\x01\x87\x89a$cV[\x82\x81\x03` \x84\x01Ra$\xB3\x81\x86\x88a$cV[\x91PP\x82`@\x83\x01R\x96\x95PPPPPPV[`\0\x81Q`\0[\x81\x81\x10\x15a$\xE7W` \x81\x85\x01\x81\x01Q\x86\x83\x01R\x01a$\xCDV[\x81\x81\x11\x15a$\xF6W`\0\x82\x86\x01R[P\x92\x90\x92\x01\x92\x91PPV[`\0a \xDFa%\x10\x83\x86a$\xC6V[\x84a$\xC6V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a%4Wa%4a#\x07V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a%OWa%Oa#\x07V[PP\x03\x90V[`\0\x82a%dWa%da\"\xDDV[P\x07\x90V[`\0`\0\x19\x82\x14\x15a%}Wa%}a#\x07V[P`\x01\x01\x90V\xFE\xD4\xDE\xF7mm+\xEDo\x14\xD5\xCD\x9A\xF7<\xC2\x91=a\x8D\0\xED\xDEBC.\x81\xC0\x9B\xFE\x07p\x98`\x80`@R`@Qa\t\x0E8\x03\x80a\t\x0E\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x04`V[a\0.\x82\x82`\0a\x005V[PPa\x05\x8AV[a\0>\x83a\x01\0V[`@Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\x1C\xF3\xB0:l\xF1\x9F\xA2\xBA\xBAM\xF1H\xE9\xDC\xAB\xED\xEA\x7F\x8A\\\x07\x84\x0E ~\\\x08\x9B\xE9]>\x90`\0\x90\xA2`\0\x82Q\x11\x80a\0\x7FWP\x80[\x15a\0\xFBWa\0\xF9\x83`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xE9\x91\x90a\x05 V[\x83a\x02\xA3` \x1Ba\0)\x17` \x1CV[P[PPPV[a\x01\x13\x81a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x01rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC1967: new beacon is not a con`D\x82\x01Rd\x1D\x1C\x98X\xDD`\xDA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xE6\x81`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xD7\x91\x90a\x05 V[a\x02\xCF` \x1Ba\0U\x17` \x1CV[a\x02KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FERC1967: beacon implementation i`D\x82\x01Ro\x1C\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x82\x1B`d\x82\x01R`\x84\x01a\x01iV[\x80a\x02\x82\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=P`\0\x1Ba\x02\xDE` \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[``a\x02\xC8\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\xE7`'\x919a\x02\xE1V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\xFE\x91\x90a\x05;V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x039W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03>V[``\x91P[P\x90\x92P\x90Pa\x03P\x86\x83\x83\x87a\x03ZV[\x96\x95PPPPPPV[``\x83\x15a\x03\xC6W\x82Qa\x03\xBFW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03\xBFW`@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\x01iV[P\x81a\x03\xD0V[a\x03\xD0\x83\x83a\x03\xD8V[\x94\x93PPPPV[\x81Q\x15a\x03\xE8W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01i\x91\x90a\x05WV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04\x19W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x04OW\x81\x81\x01Q\x83\x82\x01R` \x01a\x047V[\x83\x81\x11\x15a\0\xF9WPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[a\x04|\x83a\x04\x02V[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x04\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\xADW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x04\xBFWa\x04\xBFa\x04\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x04\xE7Wa\x04\xE7a\x04\x1EV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x05\0W`\0\x80\xFD[a\x05\x11\x83` \x83\x01` \x88\x01a\x044V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x052W`\0\x80\xFD[a\x02\xC8\x82a\x04\x02V[`\0\x82Qa\x05M\x81\x84` \x87\x01a\x044V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05v\x81`@\x85\x01` \x87\x01a\x044V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x03N\x80a\x05\x99`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\x01\0V[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02\xF2`'\x919a\x01$V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F\xA3\xF0\xADt\xE5B:\xEB\xFD\x80\xD3\xEFCFW\x835\xA9\xA7*\xEA\xEEY\xFFl\xB3X+5\x13=PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16c\\`\xDA\x1B`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFB\x91\x90a\x02IV[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x01\x1FW=`\0\xF3[=`\0\xFD[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01A\x91\x90a\x02\xA2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x81V[``\x91P[P\x91P\x91Pa\x01\x92\x86\x83\x83\x87a\x01\x9CV[\x96\x95PPPPPPV[``\x83\x15a\x02\rW\x82Qa\x02\x06W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[P\x81a\x02\x17V[a\x02\x17\x83\x83a\x02\x1FV[\x94\x93PPPPV[\x81Q\x15a\x02/W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xFD\x91\x90a\x02\xBEV[`\0` \x82\x84\x03\x12\x15a\x02[W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0NW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x02\x8DW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02uV[\x83\x81\x11\x15a\x02\x9CW`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02\xB4\x81\x84` \x87\x01a\x02rV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02\xDD\x81`@\x85\x01` \x87\x01a\x02rV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xD5\x1E\x81\xD3\xBC^\xD2\n&\xAE\xB0]\xCE~\x82\\P; a\xAAxb\x80'0\x0C\x8De\xB9\xD8\x9AdsolcC\0\x08\x0C\x003Address: low-level delegate call failedN+y\x1D\xED\xCC\xD9\xFB0\x14\x1B\x08\x8C\xAB\xF5\xC1J\x89\x12\xB5/Y7\\\x95\xC0\x10p\x0B\x8Ca\x93EigenPodManager.withdrawSharesAs\xA2dipfsX\"\x12 _H\xFA\xDD\xDAS\xE8\x1A\xB3\x8C'\xAA\x89\xBE2e\xAC;\x96h\xEF\xE3\xC4\xEB\xA9\xEC\xF3$\xD4:\x03&dsolcC\0\x08\x0C\x003`\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\x87\x91\x90a\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xA3V[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x19WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x97W`@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\xA3V[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x08\xBCW`\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\xAEW`@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\xA3V[\x90\x94\x90\x93P\x91PPV[`\x003`\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\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\n0a\n\x196\x86\x90\x03\x86\x01`@\x87\x01a\x1D\x1FV[\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\n\xB8W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xA3V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x0BBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1F6\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xA3V[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0C\x1F\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\x1DQV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0CB\x91\x90a\x1D\x9CV[\x90Pa\x0C\xDCa\x0C{a\x0Cf\x83a\x0C`6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1D\x1FV[\x90a\x13\x1AV[a\x0Cu6\x89\x90\x03\x89\x01\x89a\x1D\x1FV[\x90a\x13\xB1V[a\x0C\x83a\x14EV[a\x0C\xC5a\x0C\xB6\x85a\x0C``@\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\x0Cu6\x8A\x90\x03\x8A\x01\x8Aa\x1D\x1FV[a\x0C\xD76\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1E\x0EV[a\x15\x05V[a\rwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1F6\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\xA3V[`\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\r\xFB\x91`\x80\x8A\x01\x90a\x1EkV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E)Wa\x0E)a\x19RV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0ERW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x10\x1DW`\0\x86\x86\x83\x81\x81\x10a\x0EtWa\x0Eta\x1D\tV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\xD7WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\x0E\xBBWa\x0E\xBBa\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0FdW`@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\xA3V[\x80[\x80\x15a\x10\x07W`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0F\x8B`\x01\x84a\x1E\xB5V[\x81T\x81\x10a\x0F\x9BWa\x0F\x9Ba\x1D\tV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F\xF5Wa\x0F\xC4`\x01\x82a\x1E\xB5V[\x85\x85\x81Q\x81\x10a\x0F\xD6Wa\x0F\xD6a\x1D\tV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x10\x07V[\x80a\x0F\xFF\x81a\x1E\xCCV[\x91PPa\x0FfV[PPP\x80\x80a\x10\x15\x90a\x1E\xE3V[\x91PPa\x0EXV[P\x94\x93PPPPV[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\x10nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\xA3\x90a\x1C)V[`\0a\x10y\x83a\x08\xEBV[P\x90Pa\x10\x8E\x82a\x10\x89\x83a\x17rV[a\x10\xCFV[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06U\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x13\x14W`\0\x84\x82\x81Q\x81\x10a\x11\x03Wa\x11\x03a\x1D\tV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11\x93W`@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\xA3V[`\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\x11\xC7\x90\x86a\x13\xB1V[`\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\x12\x10\x90\x85a\x1E\xB5V[\x81T\x81\x10a\x12 Wa\x12 a\x1D\tV[`\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\x12aW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xFDV[\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\x13\x0C\x90a\x1E\xE3V[\x91PPa\x10\xE6V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x136a\x181V[\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\x13iWa\x13kV[\xFE[P\x80a\x13\xA9W`@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\xA3V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xCDa\x18OV[\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\x13iWP\x80a\x13\xA9W`@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\xA3V[a\x14Ma\x18mV[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\x154a\x18\x92V[`\0[`\x02\x81\x10\x15a\x16\xF9W`\0a\x15M\x82`\x06a\x1E\xFEV[\x90P\x84\x82`\x02\x81\x10a\x15aWa\x15aa\x1D\tV[` \x02\x01QQ\x83a\x15s\x83`\0a\x1F\x1DV[`\x0C\x81\x10a\x15\x83Wa\x15\x83a\x1D\tV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\x9AWa\x15\x9Aa\x1D\tV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xB1\x91\x90a\x1F\x1DV[`\x0C\x81\x10a\x15\xC1Wa\x15\xC1a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xD8Wa\x15\xD8a\x1D\tV[` \x02\x01QQQ\x83a\x15\xEB\x83`\x02a\x1F\x1DV[`\x0C\x81\x10a\x15\xFBWa\x15\xFBa\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x12Wa\x16\x12a\x1D\tV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16+\x83`\x03a\x1F\x1DV[`\x0C\x81\x10a\x16;Wa\x16;a\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16RWa\x16Ra\x1D\tV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16mWa\x16ma\x1D\tV[` \x02\x01Q\x83a\x16~\x83`\x04a\x1F\x1DV[`\x0C\x81\x10a\x16\x8EWa\x16\x8Ea\x1D\tV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xA5Wa\x16\xA5a\x1D\tV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xC0Wa\x16\xC0a\x1D\tV[` \x02\x01Q\x83a\x16\xD1\x83`\x05a\x1F\x1DV[`\x0C\x81\x10a\x16\xE1Wa\x16\xE1a\x1D\tV[` \x02\x01RP\x80a\x16\xF1\x81a\x1E\xE3V[\x91PPa\x157V[Pa\x17\x02a\x18\xB1V[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13iWP\x80a\x17bW`@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\xA3V[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17\x97WP` \x82\x01Q\x15[\x15a\x17\xB5WPP`@\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\xFA\x91\x90a\x1D\x9CV[a\x18$\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1E\xB5V[\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\x18\x80a\x18\xCFV[\x81R` \x01a\x18\x8Da\x18\xCFV[\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\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19\x16W`\0\x80\xFD[a\x19\x1F\x82a\x18\xEDV[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x18,W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x19IW`\0\x80\xFD[a\x19\x1F\x82a\x19&V[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\x8BWa\x19\x8Ba\x19RV[`@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\x19\xBAWa\x19\xBAa\x19RV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\xD5W`\0\x80\xFD[a\x19\xDE\x83a\x18\xEDV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFCW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1A\x10W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1A\"Wa\x1A\"a\x19RV[a\x1A4`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19\x91V[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x1AJW`\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\x1AzW`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xFFV[`\0\x80`@\x83\x85\x03\x12\x15a\x1A\xABW`\0\x80\xFD[a\x1A\xB4\x83a\x19&V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\xD7W`\0\x80\xFD[a\x1A\xE0\x84a\x19&V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xF9W`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1B!W`\0\x80\xFD[a\x1B*\x85a\x18\xEDV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1B?W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1BXW`\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\x1B\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1B\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B\xC9W`\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\x1C\x1DW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xFBV[P\x90\x96\x95PPPPPPV[` \x80\x82R`N\x90\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`@\x82\x01R\x7Finator: caller is not the regist``\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\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\xDFW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\xC3V[\x81\x81\x11\x15a\x1C\xF1W`\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\x1D1W`\0\x80\xFD[a\x1D9a\x19hV[\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\x1D\xB9WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\xCFW`\0\x80\xFD[a\x1D\xD7a\x19hV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D\xE9W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1E\x03W\x805\x84R` \x93\x84\x01\x93\x01a\x1D\xEBV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1E W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1ECWa\x1ECa\x19RV[`@Ra\x1EP\x84\x84a\x1D\xBEV[\x81Ra\x1E_\x84`@\x85\x01a\x1D\xBEV[` \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\xC7Wa\x1E\xC7a\x1E\x9FV[P\x03\x90V[`\0\x81a\x1E\xDBWa\x1E\xDBa\x1E\x9FV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\xF7Wa\x1E\xF7a\x1E\x9FV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1F\x18Wa\x1F\x18a\x1E\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1F0Wa\x1F0a\x1E\x9FV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 P\xDD*\xB3\x96!Ie\x93\x9C\x9B\xAE\tJb5\x0C\x11/\xFEX\x17\xE6\x9D1'M\0\x1E}\xCF!dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\xEC8\x03\x80a\x13\xEC\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E`8\x03\x80b\0\x0E`\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\xDDV[\x83Q\x84\x90\x84\x90b\0\0M\x90`\x03\x90` \x85\x01\x90b\0\x01jV[P\x80Qb\0\0c\x90`\x04\x90` \x84\x01\x90b\0\x01jV[PPPb\0\0x\x81\x83b\0\0\x82` \x1B` \x1CV[PPPPb\0\x03\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\0\xF1\x91\x90b\0\x03rV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90b\0\x01 \x90\x84\x90b\0\x03rV[\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[\x82\x80Tb\0\x01x\x90b\0\x03\x99V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01\x9CW`\0\x85Ub\0\x01\xE7V[\x82`\x1F\x10b\0\x01\xB7W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01\xE7V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01\xE7W\x91\x82\x01[\x82\x81\x11\x15b\0\x01\xE7W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01\xCAV[Pb\0\x01\xF5\x92\x91Pb\0\x01\xF9V[P\x90V[[\x80\x82\x11\x15b\0\x01\xF5W`\0\x81U`\x01\x01b\0\x01\xFAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x028W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02UWb\0\x02Ub\0\x02\x10V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x80Wb\0\x02\x80b\0\x02\x10V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02\x9DW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\xC1W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02\xA2V[\x83\x82\x11\x15b\0\x02\xD3W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xF4W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03\x0CW`\0\x80\xFD[b\0\x03\x1A\x88\x83\x89\x01b\0\x02&V[\x95P` \x87\x01Q\x91P\x80\x82\x11\x15b\0\x031W`\0\x80\xFD[Pb\0\x03@\x87\x82\x88\x01b\0\x02&V[`@\x87\x01Q``\x88\x01Q\x91\x95P\x93P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03gW`\0\x80\xFD[\x93\x96\x92\x95P\x90\x93PPV[`\0\x82\x19\x82\x11\x15b\0\x03\x94WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x03\xD0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\nz\x80b\0\x03\xE6`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cB\x96lh\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xADW\x80c\xA4W\xC2\xD7\x14a\x01\xB5W\x80c\xA9\x05\x9C\xBB\x14a\x01\xC8W\x80c\xDDb\xED>\x14a\x01\xDBW`\0\x80\xFD[\x80cB\x96lh\x14a\x01\\W\x80cp\xA0\x821\x14a\x01qW\x80cy\xCCg\x90\x14a\x01\x9AW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x18\x16\r\xDD\x14a\x01\x15W\x80c#\xB8r\xDD\x14a\x01'W\x80c1<\xE5g\x14a\x01:W\x80c9P\x93Q\x14a\x01IW[`\0\x80\xFD[a\0\xDCa\x01\xEEV[`@Qa\0\xE9\x91\x90a\x08\x7FV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\x08\xF0V[a\x02\x80V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[`\x02T[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x0156`\x04a\t\x1AV[a\x02\x98V[`@Q`\x12\x81R` \x01a\0\xE9V[a\x01\x05a\x01W6`\x04a\x08\xF0V[a\x02\xBCV[a\x01oa\x01j6`\x04a\tVV[a\x02\xDEV[\0[a\x01\x19a\x01\x7F6`\x04a\toV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01oa\x01\xA86`\x04a\x08\xF0V[a\x02\xEBV[a\0\xDCa\x03\x04V[a\x01\x05a\x01\xC36`\x04a\x08\xF0V[a\x03\x13V[a\x01\x05a\x01\xD66`\x04a\x08\xF0V[a\x03\x93V[a\x01\x19a\x01\xE96`\x04a\t\x91V[a\x03\xA1V[```\x03\x80Ta\x01\xFD\x90a\t\xC4V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02)\x90a\t\xC4V[\x80\x15a\x02vW\x80`\x1F\x10a\x02KWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02vV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02YW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\x8E\x81\x85\x85a\x03\xCCV[P`\x01\x93\x92PPPV[`\x003a\x02\xA6\x85\x82\x85a\x04\xF1V[a\x02\xB1\x85\x85\x85a\x05kV[P`\x01\x94\x93PPPPV[`\x003a\x02\x8E\x81\x85\x85a\x02\xCF\x83\x83a\x03\xA1V[a\x02\xD9\x91\x90a\n\x15V[a\x03\xCCV[a\x02\xE83\x82a\x079V[PV[a\x02\xF6\x823\x83a\x04\xF1V[a\x03\0\x82\x82a\x079V[PPV[```\x04\x80Ta\x01\xFD\x90a\t\xC4V[`\x003\x81a\x03!\x82\x86a\x03\xA1V[\x90P\x83\x81\x10\x15a\x03\x86W`@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\x02\xB1\x82\x86\x86\x84\x03a\x03\xCCV[`\x003a\x02\x8E\x81\x85\x85a\x05kV[`\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\x04.W`@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\x8FW`@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[`\0a\x04\xFD\x84\x84a\x03\xA1V[\x90P`\0\x19\x81\x14a\x05eW\x81\x81\x10\x15a\x05XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03}V[a\x05e\x84\x84\x84\x84\x03a\x03\xCCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\xCFW`@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\x061W`@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\x06\xA9W`@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\xE0\x90\x84\x90a\n\x15V[\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\x07,\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x05eV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FERC20: burn from the zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: burn amount exceeds balan`D\x82\x01Race`\xF0\x1B`d\x82\x01R`\x84\x01a\x03}V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x83\x83\x03\x90U`\x02\x80T\x84\x92\x90a\x08<\x90\x84\x90a\n-V[\x90\x91UPP`@Q\x82\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\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` \x01a\x04\xE4V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x08\xACW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x08\x90V[\x81\x81\x11\x15a\x08\xBEW`\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\x08\xEBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x03W`\0\x80\xFD[a\t\x0C\x83a\x08\xD4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t/W`\0\x80\xFD[a\t8\x84a\x08\xD4V[\x92Pa\tF` \x85\x01a\x08\xD4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\thW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[a\t\x8A\x82a\x08\xD4V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xA4W`\0\x80\xFD[a\t\xAD\x83a\x08\xD4V[\x91Pa\t\xBB` \x84\x01a\x08\xD4V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\t\xD8W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\t\xF9WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\n(Wa\n(a\t\xFFV[P\x01\x90V[`\0\x82\x82\x10\x15a\n?Wa\n?a\t\xFFV[P\x03\x90V\xFE\xA2dipfsX\"\x12 \xEB\xB8\x19=\xE4\x8D\x7Fl\x8E\xC0$Iy\x0F\x11\xD7s\xA8}\xCA\xD9\xD4\x90w\\\xFA\x9Ah\x06\xED\xB6\xE4dsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 \x17\x93x\xAA\x0C\x85\xFD[6N\x91\x03\xDD{\xD2Q\xA6\xAC\x07\x0CZ\xE3\xE7\xB3$\x9A@$\xBF\xB3X\xAFdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall {} + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (); + 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<'_> { + () + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `mul(uint256)` and selector `0x131e2f18`. + ```solidity + function mul(uint256 x) external returns (BN254.G2Point memory g2Point); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulCall { + pub x: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mul(uint256)`](mulCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct mulReturn { + pub g2Point: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: mulCall) -> Self { + (value.x,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { x: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: mulReturn) -> Self { + (value.g2Point,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mulReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { g2Point: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mulCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mulReturn; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mul(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 30u8, 47u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.x, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`IntegrationConfig`](self) function calls. + pub enum IntegrationConfigCalls { + IS_TEST(IS_TESTCall), + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + mul(mulCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl IntegrationConfigCalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [10u8, 146u8, 84u8, 228u8], + [19u8, 30u8, 47u8, 24u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [45u8, 188u8, 176u8, 76u8], + [61u8, 251u8, 64u8, 224u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IntegrationConfigCalls { + const NAME: &'static str = "IntegrationConfigCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 19usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::avsDirectory(_) => ::SELECTOR, + Self::churnApprover(_) => ::SELECTOR, + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::mul(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::timeMachine(_) => ::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 churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::churnApprover) + } + churnApprover + }, + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationConfigCalls::setUp) + } + setUp + }, + { + fn mul( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationConfigCalls::mul) + } + mul + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::churnApproverPrivateKey) + } + churnApproverPrivateKey + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::timeMachine) + } + timeMachine + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::targetSelectors) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationConfigCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationConfigCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationConfigCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApprover(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::mul(inner) => ::abi_encoded_size(inner), + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::timeMachine(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApprover(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mul(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::timeMachine(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IntegrationConfig`](self) events. + pub enum IntegrationConfigEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl IntegrationConfigEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IntegrationConfigEvents { + const NAME: &'static str = "IntegrationConfigEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 IntegrationConfigEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IntegrationConfig`](self) contract instance. + + See the [wrapper's documentation](`IntegrationConfigInstance`) 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, + ) -> IntegrationConfigInstance { + IntegrationConfigInstance::::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>> + { + IntegrationConfigInstance::::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 { + IntegrationConfigInstance::::deploy_builder(provider) + } + /**A [`IntegrationConfig`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IntegrationConfig`](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 IntegrationConfigInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IntegrationConfigInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IntegrationConfigInstance") + .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, + > IntegrationConfigInstance + { + /**Creates a new wrapper around an on-chain [`IntegrationConfig`](self) contract instance. + + See the [wrapper's documentation](`IntegrationConfigInstance`) 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 IntegrationConfigInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IntegrationConfigInstance { + IntegrationConfigInstance { + 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, + > IntegrationConfigInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`mul`] function. + pub fn mul( + &self, + x: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mulCall { x }) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IntegrationConfigInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/integrationdeployer.rs b/crates/utils/src/middleware/integrationdeployer.rs new file mode 100644 index 00000000..1209a2b2 --- /dev/null +++ b/crates/utils/src/middleware/integrationdeployer.rs @@ -0,0 +1,6865 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface IntegrationDeployer { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function registryCoordinator() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function setUp() external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IntegrationDeployer { + 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 `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`IntegrationDeployer`](self) function calls. + pub enum IntegrationDeployerCalls { + IS_TEST(IS_TESTCall), + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + setUp(setUpCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl IntegrationDeployerCalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [10u8, 146u8, 84u8, 228u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [45u8, 188u8, 176u8, 76u8], + [61u8, 251u8, 64u8, 224u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IntegrationDeployerCalls { + const NAME: &'static str = "IntegrationDeployerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 18usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::avsDirectory(_) => ::SELECTOR, + Self::churnApprover(_) => ::SELECTOR, + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::setUp(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::timeMachine(_) => ::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 churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::churnApprover) + } + churnApprover + }, + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationDeployerCalls::setUp) + } + setUp + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::churnApproverPrivateKey) + } + churnApproverPrivateKey + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::timeMachine) + } + timeMachine + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::targetSelectors) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationDeployerCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IntegrationDeployerCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IntegrationDeployerCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApprover(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::timeMachine(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApprover(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::timeMachine(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IntegrationDeployer`](self) events. + pub enum IntegrationDeployerEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl IntegrationDeployerEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IntegrationDeployerEvents { + const NAME: &'static str = "IntegrationDeployerEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 IntegrationDeployerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IntegrationDeployer`](self) contract instance. + + See the [wrapper's documentation](`IntegrationDeployerInstance`) 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, + ) -> IntegrationDeployerInstance { + IntegrationDeployerInstance::::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>> + { + IntegrationDeployerInstance::::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 { + IntegrationDeployerInstance::::deploy_builder(provider) + } + /**A [`IntegrationDeployer`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IntegrationDeployer`](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 IntegrationDeployerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IntegrationDeployerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IntegrationDeployerInstance") + .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, + > IntegrationDeployerInstance + { + /**Creates a new wrapper around an on-chain [`IntegrationDeployer`](self) contract instance. + + See the [wrapper's documentation](`IntegrationDeployerInstance`) 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 IntegrationDeployerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IntegrationDeployerInstance { + IntegrationDeployerInstance { + 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, + > IntegrationDeployerInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IntegrationDeployerInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/ipausable.rs b/crates/utils/src/middleware/ipausable.rs new file mode 100644 index 00000000..bce0231d --- /dev/null +++ b/crates/utils/src/middleware/ipausable.rs @@ -0,0 +1,1852 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/ipauserregistry.rs b/crates/utils/src/middleware/ipauserregistry.rs new file mode 100644 index 00000000..7331f8c0 --- /dev/null +++ b/crates/utils/src/middleware/ipauserregistry.rs @@ -0,0 +1,951 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isPauserReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauserCall {} + ///Container type for the return parameters of the [`unpauser()`](unpauserCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauserReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/iregistry.rs b/crates/utils/src/middleware/iregistry.rs new file mode 100644 index 00000000..a696719c --- /dev/null +++ b/crates/utils/src/middleware/iregistry.rs @@ -0,0 +1,438 @@ +/** + +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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/iregistrycoordinator.rs b/crates/utils/src/middleware/iregistrycoordinator.rs new file mode 100644 index 00000000..d5c13abc --- /dev/null +++ b/crates/utils/src/middleware/iregistrycoordinator.rs @@ -0,0 +1,5886 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorSetParam { + pub maxOperatorCount: u32, + pub kickBIPsOfOperatorStake: u16, + pub kickBIPsOfTotalStake: u16, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromIdReturn { + pub operator: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSetParamsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorStatusReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesCall {} + ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountCall {} + ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registriesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/iservicemanager.rs b/crates/utils/src/middleware/iservicemanager.rs new file mode 100644 index 00000000..310d80cc --- /dev/null +++ b/crates/utils/src/middleware/iservicemanager.rs @@ -0,0 +1,1679 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 IServiceManager { + 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::pub_underscore_fields, + 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"", + ); + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall {} + ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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), + 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], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IServiceManagerCalls { + const NAME: &'static str = "IServiceManagerCalls"; + 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(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 + }, + ]; + 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 [`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 [`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) + } + } +} diff --git a/crates/utils/src/middleware/isignatureutils.rs b/crates/utils/src/middleware/isignatureutils.rs new file mode 100644 index 00000000..d88bb748 --- /dev/null +++ b/crates/utils/src/middleware/isignatureutils.rs @@ -0,0 +1,226 @@ +/** + +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::pub_underscore_fields, + 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/middleware/islasher.rs b/crates/utils/src/middleware/islasher.rs new file mode 100644 index 00000000..fd8d776d --- /dev/null +++ b/crates/utils/src/middleware/islasher.rs @@ -0,0 +1,5120 @@ +/** + +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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MiddlewareTimes { + pub stalestUpdateBlock: u32, + pub latestServeUntilBlock: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canSlashReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWithdrawReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct contractCanSlashOperatorUntilBlockReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct freezeOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCorrectValueForInsertAfterReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexServeUntilBlockReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexStalestUpdateBlockReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isFrozenReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestUpdateBlockReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct middlewareTimesLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorToMiddlewareTimesReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorWhitelistedContractsLinkedListSizeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct optIntoSlashingReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordFirstStakeUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordLastStakeUpdateAndRevokeSlashingAbilityReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordStakeUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetFrozenStatusReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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/middleware/isocketupdater.rs b/crates/utils/src/middleware/isocketupdater.rs new file mode 100644 index 00000000..286ad736 --- /dev/null +++ b/crates/utils/src/middleware/isocketupdater.rs @@ -0,0 +1,641 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateSocketReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/istakeregistry.rs b/crates/utils/src/middleware/istakeregistry.rs new file mode 100644 index 00000000..2945975c --- /dev/null +++ b/crates/utils/src/middleware/istakeregistry.rs @@ -0,0 +1,6844 @@ +/** + +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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentTotalStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestStakeUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeHistoryReturn { + pub _0: + alloy::sol_types::private::Vec<::RustType>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minimumStakeForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyStrategyParamsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/istakeregistryevents.rs b/crates/utils/src/middleware/istakeregistryevents.rs new file mode 100644 index 00000000..00bcd13d --- /dev/null +++ b/crates/utils/src/middleware/istakeregistryevents.rs @@ -0,0 +1,1209 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IStakeRegistryEvents { + 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); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "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::pub_underscore_fields, + clippy::style +)] +pub mod IStakeRegistryEvents { + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + ///Container for all the [`IStakeRegistryEvents`](self) events. + pub enum IStakeRegistryEventsEvents { + MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated), + OperatorStakeUpdate(OperatorStakeUpdate), + QuorumCreated(QuorumCreated), + StrategyAddedToQuorum(StrategyAddedToQuorum), + StrategyMultiplierUpdated(StrategyMultiplierUpdated), + StrategyRemovedFromQuorum(StrategyRemovedFromQuorum), + } + #[automatically_derived] + impl IStakeRegistryEventsEvents { + /// 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 IStakeRegistryEventsEvents { + const NAME: &'static str = "IStakeRegistryEventsEvents"; + 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 IStakeRegistryEventsEvents { + 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 [`IStakeRegistryEvents`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryEventsInstance`) 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, + ) -> IStakeRegistryEventsInstance { + IStakeRegistryEventsInstance::::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>, + > { + IStakeRegistryEventsInstance::::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 { + IStakeRegistryEventsInstance::::deploy_builder(provider) + } + /**A [`IStakeRegistryEvents`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IStakeRegistryEvents`](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 IStakeRegistryEventsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IStakeRegistryEventsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IStakeRegistryEventsInstance") + .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, + > IStakeRegistryEventsInstance + { + /**Creates a new wrapper around an on-chain [`IStakeRegistryEvents`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryEventsInstance`) 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 IStakeRegistryEventsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IStakeRegistryEventsInstance { + IStakeRegistryEventsInstance { + 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, + > IStakeRegistryEventsInstance + { + /// 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, + > IStakeRegistryEventsInstance + { + /// 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/middleware/istrategy.rs b/crates/utils/src/middleware/istrategy.rs new file mode 100644 index 00000000..b66bbf2a --- /dev/null +++ b/crates/utils/src/middleware/istrategy.rs @@ -0,0 +1,2624 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IStrategy { + event ExchangeRateEmitted(uint256 rate); + event StrategyTokenSet(address token, uint8 decimals); + + 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" + }, + { + "type": "event", + "name": "ExchangeRateEmitted", + "inputs": [ + { + "name": "rate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyTokenSet", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "decimals", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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"", + ); + /**Event with signature `ExchangeRateEmitted(uint256)` and selector `0xd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be8`. + ```solidity + event ExchangeRateEmitted(uint256 rate); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ExchangeRateEmitted { + #[allow(missing_docs)] + pub rate: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ExchangeRateEmitted { + 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 = "ExchangeRateEmitted(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { rate: 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.rate, + ), + ) + } + #[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 ExchangeRateEmitted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ExchangeRateEmitted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ExchangeRateEmitted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyTokenSet(address,uint8)` and selector `0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507`. + ```solidity + event StrategyTokenSet(address token, uint8 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct StrategyTokenSet { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub decimals: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyTokenSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + 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 = "StrategyTokenSet(address,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 28u8, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, + 199u8, 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, + 50u8, 122u8, 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + token: data.0, + decimals: 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.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 StrategyTokenSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyTokenSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyTokenSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct explanationCall {} + ///Container type for the return parameters of the [`explanation()`](explanationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct explanationReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sharesToUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sharesToUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSharesCall {} + ///Container type for the return parameters of the [`totalShares()`](totalSharesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct totalSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct underlyingToSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct underlyingToSharesViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct underlyingTokenCall {} + ///Container type for the return parameters of the [`underlyingToken()`](underlyingTokenCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct underlyingTokenReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct userUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct userUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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) + } + } + } + } + ///Container for all the [`IStrategy`](self) events. + pub enum IStrategyEvents { + ExchangeRateEmitted(ExchangeRateEmitted), + StrategyTokenSet(StrategyTokenSet), + } + #[automatically_derived] + impl IStrategyEvents { + /// 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, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, 199u8, + 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, 50u8, 122u8, + 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ], + [ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IStrategyEvents { + const NAME: &'static str = "IStrategyEvents"; + 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::ExchangeRateEmitted) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyTokenSet) + } + _ => 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 IStrategyEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyTokenSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyTokenSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + 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) + } + ///Creates a new event filter for the [`ExchangeRateEmitted`] event. + pub fn ExchangeRateEmitted_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyTokenSet`] event. + pub fn StrategyTokenSet_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/istrategymanager.rs b/crates/utils/src/middleware/istrategymanager.rs new file mode 100644 index 00000000..33406b57 --- /dev/null +++ b/crates/utils/src/middleware/istrategymanager.rs @@ -0,0 +1,4619 @@ +/** + +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 domainSeparator() external view returns (bytes32); + 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 setStrategyWhitelister(address newStrategyWhitelister) external; + function setThirdPartyTransfersForbidden(address strategy, bool value) 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": "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": "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": "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": "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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addStrategiesToDepositWhitelistReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoStrategyReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoStrategyWithSignatureReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesFromDepositWhitelistReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setStrategyWhitelister(address)` and selector `0xc6656702`. + ```solidity + function setStrategyWhitelister(address newStrategyWhitelister) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWhitelisterReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setThirdPartyTransfersForbiddenReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategyListLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategySharesReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyIsWhitelistedForDepositReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWhitelisterCall {} + ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWhitelisterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct thirdPartyTransfersForbiddenReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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), + domainSeparator(domainSeparatorCall), + eigenPodManager(eigenPodManagerCall), + getDeposits(getDepositsCall), + removeShares(removeSharesCall), + removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall), + setStrategyWhitelister(setStrategyWhitelisterCall), + setThirdPartyTransfersForbidden(setThirdPartyTransfersForbiddenCall), + 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], + [78u8, 90u8, 66u8, 99u8], + [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], + [198u8, 101u8, 103u8, 2u8], + [223u8, 91u8, 53u8, 71u8], + [223u8, 92u8, 247u8, 35u8], + [231u8, 160u8, 80u8, 170u8], + [246u8, 152u8, 218u8, 37u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IStrategyManagerCalls { + const NAME: &'static str = "IStrategyManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 19usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + 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::removeShares(_) => ::SELECTOR, + Self::removeStrategiesFromDepositWhitelist(_) => { + ::SELECTOR + } + Self::setStrategyWhitelister(_) => { + ::SELECTOR + } + Self::setThirdPartyTransfersForbidden(_) => { + ::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 setThirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStrategyManagerCalls::setThirdPartyTransfersForbidden) + } + setThirdPartyTransfersForbidden + }, + { + 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 setStrategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::setStrategyWhitelister) + } + setStrategyWhitelister + }, + { + 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 + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::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::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::removeShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeStrategiesFromDepositWhitelist(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::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::domainSeparator(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::setStrategyWhitelister(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setThirdPartyTransfersForbidden(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 [`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 [`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 [`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 [`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/middleware/iuserdeployer.rs b/crates/utils/src/middleware/iuserdeployer.rs new file mode 100644 index 00000000..c76932c8 --- /dev/null +++ b/crates/utils/src/middleware/iuserdeployer.rs @@ -0,0 +1,1049 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IUserDeployer { + function avsDirectory() external view returns (address); + function churnApprover() external view returns (address); + function churnApproverPrivateKey() external view returns (uint256); + function registryCoordinator() external view returns (address); + function timeMachine() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApproverPrivateKey", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "timeMachine", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TimeMachine" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod IUserDeployer { + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `churnApproverPrivateKey()` and selector `0x2dbcb04c`. + ```solidity + function churnApproverPrivateKey() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyCall {} + ///Container type for the return parameters of the [`churnApproverPrivateKey()`](churnApproverPrivateKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverPrivateKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverPrivateKeyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyCall { + 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: churnApproverPrivateKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverPrivateKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverPrivateKeyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverPrivateKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApproverPrivateKey()"; + const SELECTOR: [u8; 4] = [45u8, 188u8, 176u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `timeMachine()` and selector `0x3dfb40e0`. + ```solidity + function timeMachine() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineCall {} + ///Container type for the return parameters of the [`timeMachine()`](timeMachineCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct timeMachineReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timeMachineCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineCall { + 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: timeMachineReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timeMachineReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timeMachineCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timeMachineReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timeMachine()"; + const SELECTOR: [u8; 4] = [61u8, 251u8, 64u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`IUserDeployer`](self) function calls. + pub enum IUserDeployerCalls { + avsDirectory(avsDirectoryCall), + churnApprover(churnApproverCall), + churnApproverPrivateKey(churnApproverPrivateKeyCall), + registryCoordinator(registryCoordinatorCall), + timeMachine(timeMachineCall), + } + #[automatically_derived] + impl IUserDeployerCalls { + /// 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]] = &[ + [5u8, 67u8, 16u8, 230u8], + [45u8, 188u8, 176u8, 76u8], + [61u8, 251u8, 64u8, 224u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IUserDeployerCalls { + const NAME: &'static str = "IUserDeployerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 5usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::avsDirectory(_) => ::SELECTOR, + Self::churnApprover(_) => ::SELECTOR, + Self::churnApproverPrivateKey(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::timeMachine(_) => ::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 churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IUserDeployerCalls::churnApprover) + } + churnApprover + }, + { + fn churnApproverPrivateKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IUserDeployerCalls::churnApproverPrivateKey) + } + churnApproverPrivateKey + }, + { + fn timeMachine( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IUserDeployerCalls::timeMachine) + } + timeMachine + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IUserDeployerCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IUserDeployerCalls::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::avsDirectory(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApprover(inner) => { + ::abi_encoded_size(inner) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::timeMachine(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::churnApprover(inner) => { + ::abi_encode_raw(inner, out) + } + Self::churnApproverPrivateKey(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::timeMachine(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IUserDeployer`](self) contract instance. + + See the [wrapper's documentation](`IUserDeployerInstance`) 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, + ) -> IUserDeployerInstance { + IUserDeployerInstance::::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>> + { + IUserDeployerInstance::::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 { + IUserDeployerInstance::::deploy_builder(provider) + } + /**A [`IUserDeployer`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IUserDeployer`](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 IUserDeployerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IUserDeployerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IUserDeployerInstance") + .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, + > IUserDeployerInstance + { + /**Creates a new wrapper around an on-chain [`IUserDeployer`](self) contract instance. + + See the [wrapper's documentation](`IUserDeployerInstance`) 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 IUserDeployerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IUserDeployerInstance { + IUserDeployerInstance { + 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, + > IUserDeployerInstance + { + /// 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 [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`churnApproverPrivateKey`] function. + pub fn churnApproverPrivateKey( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverPrivateKeyCall {}) + } + ///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 [`timeMachine`] function. + pub fn timeMachine(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&timeMachineCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IUserDeployerInstance + { + /// 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/mathupgradeable.rs b/crates/utils/src/middleware/mathupgradeable.rs similarity index 94% rename from crates/utils/src/mathupgradeable.rs rename to crates/utils/src/middleware/mathupgradeable.rs index 0c92a85b..7f6a5b9d 100644 --- a/crates/utils/src/mathupgradeable.rs +++ b/crates/utils/src/middleware/mathupgradeable.rs @@ -9,29 +9,34 @@ interface MathUpgradeable {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod MathUpgradeable { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220acb5e3863367fe7d20bcfab8fe1086dd581a1992874fa17cde246e67611f745464736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220273f0aec6452483fbfa7a0222a547e5fa3562f34db67de26edc610f57ef65a0764736f6c634300080c0033 /// ``` #[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", + 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 '?\n\xECdRH?\xBF\xA7\xA0\"*T~_\xA3V/4\xDBg\xDE&\xED\xC6\x10\xF5~\xF6Z\x07dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220acb5e3863367fe7d20bcfab8fe1086dd581a1992874fa17cde246e67611f745464736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220273f0aec6452483fbfa7a0222a547e5fa3562f34db67de26edc610f57ef65a0764736f6c634300080c0033 /// ``` #[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", + 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 '?\n\xECdRH?\xBF\xA7\xA0\"*T~_\xA3V/4\xDBg\xDE&\xED\xC6\x10\xF5~\xF6Z\x07dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`MathUpgradeable`](self) contract instance. diff --git a/crates/utils/src/merkle.rs b/crates/utils/src/middleware/merkle.rs similarity index 93% rename from crates/utils/src/merkle.rs rename to crates/utils/src/middleware/merkle.rs index e5cc52f5..25fbecaf 100644 --- a/crates/utils/src/merkle.rs +++ b/crates/utils/src/middleware/merkle.rs @@ -9,29 +9,34 @@ interface Merkle {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod Merkle { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e749e3fd90ba9436ceb6143bff97485e8ae021e3bf949d69b767df5fae8c68164736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220856ec365ee599fe7170d5981b447331f13e671c101c803ec56f16e4c56dbb02b64736f6c634300080c0033 /// ``` #[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", + 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 \x85n\xC3e\xEEY\x9F\xE7\x17\rY\x81\xB4G3\x1F\x13\xE6q\xC1\x01\xC8\x03\xECV\xF1nLV\xDB\xB0+dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e749e3fd90ba9436ceb6143bff97485e8ae021e3bf949d69b767df5fae8c68164736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220856ec365ee599fe7170d5981b447331f13e671c101c803ec56f16e4c56dbb02b64736f6c634300080c0033 /// ``` #[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", + 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 \x85n\xC3e\xEEY\x9F\xE7\x17\rY\x81\xB4G3\x1F\x13\xE6q\xC1\x01\xC8\x03\xECV\xF1nLV\xDB\xB0+dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Merkle`](self) contract instance. diff --git a/crates/utils/src/middleware/mockavsdeployer.rs b/crates/utils/src/middleware/mockavsdeployer.rs new file mode 100644 index 00000000..01ffba1a --- /dev/null +++ b/crates/utils/src/middleware/mockavsdeployer.rs @@ -0,0 +1,10070 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface MockAVSDeployer { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function WEIGHTING_DIVISOR() external view returns (uint256); + function avsDirectory() external view returns (address); + function avsDirectoryImplementation() external view returns (address); + function avsDirectoryMock() external view returns (address); + function blsApkRegistry() external view returns (address); + function blsApkRegistryImplementation() external view returns (address); + function delegationMock() external view returns (address); + function eigenPodManagerMock() external view returns (address); + function emptyContract() external view returns (address); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function indexRegistry() external view returns (address); + function indexRegistryImplementation() external view returns (address); + function operatorStateRetriever() external view returns (address); + function pauser() external view returns (address); + function pauserRegistry() external view returns (address); + function proxyAdmin() external view returns (address); + function proxyAdminOwner() external view returns (address); + function registryCoordinator() external view returns (address); + function registryCoordinatorImplementation() external view returns (address); + function registryCoordinatorOwner() external view returns (address); + function serviceManager() external view returns (address); + function serviceManagerImplementation() external view returns (address); + function slasher() external view returns (address); + function slasherImplementation() external view returns (address); + function stakeRegistry() external view returns (address); + function stakeRegistryImplementation() external view returns (address); + function strategyManagerMock() external view returns (address); + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function unpauser() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "WEIGHTING_DIVISOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectoryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsDirectoryMock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract AVSDirectoryMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract BLSApkRegistryHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegationMock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract DelegationMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodManagerMock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract EigenPodManagerMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "emptyContract", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract EmptyContract" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "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": "operatorStateRetriever", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract OperatorStateRetriever" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauser", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract PauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxyAdmin", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ProxyAdmin" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxyAdminOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinatorHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinatorHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "serviceManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ServiceManagerMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "serviceManagerImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ServiceManagerMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "slasherImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract Slasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract StakeRegistryHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract StakeRegistryHarness" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyManagerMock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract StrategyManagerMock" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpauser", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod MockAVSDeployer { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604081905260078054600160ff199182168117909255600b80549091169091179055601c8054737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03199182168117909255601f8054821673b3fb3cc0d24c9f3d05cd6ab406871083ef9432e117905560338054821673244c1d28b0585b6a171c0858d4e54868add703b517905560348054821673beb9864e3d6a1ba44e131a462f6328f2d1d6d54d17905560358054821673833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f1790556036805490911673bce510bdc87c434922d931652989268c253b89751790557fa3e2a0c4ce206b9c6679ac6361c034f31c8844ae3104108f47ed8c413acf333260378190556001625e79b760e01b031990925260849190915263ffa1864960a4602060405180830381865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000399565b603880546001600160a01b03929092166001600160a01b03199283161790557f882c3c7dd8a5e5709b6d991769431084d0efbd23d1e9d649dc7fb0bbfb55f1e7603955603a8054736915a67877a178d5129a28d2af871ac1fceb3fd3908316179055603b80547373e2ce949f15be901f76b54f5a4554a6c8dcf53992169190911790556040805180820182527f285ecc55224ef409b253324696e77debac0ac31de952bd91c772f7021fd01ef18082527f0796a45b154da1243011d14b5dc7bae521e24e47d85c94cb3b6836f6fb99ae2b6020928301819052603d91909155603e558151808301909252600f8083526e036392e36392e36392e36393a34323608c1b929091019182526200028091603f91620002f3565b50604080546001600160b01b03191675c000963a980000000a00000000000de0b6b3a764000017905560428054600460ff199091168117909155604355604480546001600160401b031916640a000000641790556001600160c01b03604d55348015620002ec57600080fd5b5062000408565b8280546200030190620003cb565b90600052602060002090601f01602090048101928262000325576000855562000370565b82601f106200034057805160ff191683800117855562000370565b8280016001018555821562000370579182015b828111156200037057825182559160200191906001019062000353565b506200037e92915062000382565b5090565b5b808211156200037e576000815560010162000383565b600060208284031215620003ac57600080fd5b81516001600160a01b0381168114620003c457600080fd5b9392505050565b600181811c90821680620003e057607f821691505b602082108114156200040257634e487b7160e01b600052602260045260246000fd5b50919050565b610fbc80620004186000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80637bef4aac11610130578063b1344271116100b8578063e20c9f711161007c578063e20c9f71146104b2578063e3a8b345146104ba578063e4b5200b146104cd578063eab66d7a146104e0578063fa7626d4146104f357600080fd5b8063b134427114610459578063b5508aa91461046c578063ba414fa614610474578063dad544e01461048c578063e18272c21461049f57600080fd5b8063916a17c6116100ff578063916a17c6146104055780639d8b9cb41461040d5780639e3ba437146104205780639e9923c2146104335780639fd0506d1461044657600080fd5b80637bef4aac146103b757806385226c81146103ca578063886f1195146103df5780638b2c69eb146103f257600080fd5b80633f7286f4116101be57806366d9a9a01161018257806366d9a9a014610356578063683048351461036b578063694ed6101461037e5780636b3aa72e146103915780636d14a987146103a457600080fd5b80633f7286f4146102f85780634ca22c3f1461030057806356f0b8a0146103135780635df45946146103265780635e5a67751461033957600080fd5b80633998fdd3116102055780633998fdd3146102a457806339a5fcfa146102b75780633e2bee3b146102ca5780633e47158c146102dd5780633e5e3c23146102f057600080fd5b80630832af52146102375780631ed7831c14610267578063248294ab1461027c5780632ade38801461028f575b600080fd5b60205461024a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61026f610500565b60405161025e9190610c5d565b602f5461024a906001600160a01b031681565b610297610562565b60405161025e9190610cda565b602c5461024a906001600160a01b031681565b60225461024a906001600160a01b031681565b60315461024a906001600160a01b031681565b601d5461024a906001600160a01b031681565b61026f6106a4565b61026f610704565b60275461024a906001600160a01b031681565b60325461024a906001600160a01b031681565b602a5461024a906001600160a01b031681565b610348670de0b6b3a764000081565b60405190815260200161025e565b61035e610764565b60405161025e9190610db5565b60295461024a906001600160a01b031681565b602e5461024a906001600160a01b031681565b60305461024a906001600160a01b031681565b60285461024a906001600160a01b031681565b60265461024a906001600160a01b031681565b6103d261084a565b60405161025e9190610e68565b601e5461024a906001600160a01b031681565b60255461024a906001600160a01b031681565b61035e61091a565b60345461024a906001600160a01b031681565b60245461024a906001600160a01b031681565b602b5461024a906001600160a01b031681565b60355461024a906001600160a01b031681565b601f5461024a906001600160a01b031681565b6103d2610a00565b61047c610ad0565b604051901515815260200161025e565b60335461024a906001600160a01b031681565b60235461024a906001600160a01b031681565b61026f610bfd565b60215461024a906001600160a01b031681565b602d5461024a906001600160a01b031681565b60365461024a906001600160a01b031681565b60075461047c9060ff1681565b6060601480548060200260200160405190810160405280929190818152602001828054801561055857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161053a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561069b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106845783829060005260206000200180546105f790610ed5565b80601f016020809104026020016040519081016040528092919081815260200182805461062390610ed5565b80156106705780601f1061064557610100808354040283529160200191610670565b820191906000526020600020905b81548152906001019060200180831161065357829003601f168201915b5050505050815260200190600101906105d8565b505050508152505081526020019060010190610586565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610558576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161053a575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610558576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161053a575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561069b5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561083257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107f45790505b50505050508152505081526020019060010190610788565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561069b57838290600052602060002001805461088d90610ed5565b80601f01602080910402602001604051908101604052809291908181526020018280546108b990610ed5565b80156109065780601f106108db57610100808354040283529160200191610906565b820191906000526020600020905b8154815290600101906020018083116108e957829003601f168201915b50505050508152602001906001019061086e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561069b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156109e857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109aa5790505b5050505050815250508152602001906001019061093e565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561069b578382906000526020600020018054610a4390610ed5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6f90610ed5565b8015610abc5780601f10610a9157610100808354040283529160200191610abc565b820191906000526020600020905b815481529060010190602001808311610a9f57829003601f168201915b505050505081526020019060010190610a24565b600754600090610100900460ff1615610af25750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610bf85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610b80917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001610f10565b60408051601f1981840301815290829052610b9a91610f41565b6000604051808303816000865af19150503d8060008114610bd7576040519150601f19603f3d011682016040523d82523d6000602084013e610bdc565b606091505b5091505080806020019051810190610bf49190610f5d565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015610558576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161053a575050505050905090565b6020808252825182820181905260009190848201906040850190845b81811015610c9e5783516001600160a01b031683529284019291840191600101610c79565b50909695505050505050565b60005b83811015610cc5578181015183820152602001610cad565b83811115610cd4576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610da857603f19888603018452815180516001600160a01b0316865286015160408787018190528151908701819052908701906060600582901b88018101919088019060005b81811015610d9157898403605f1901835284518051808652610d72818e88018f8501610caa565b958c0195601f01601f1916949094018b019350918a0191600101610d4b565b509197505050938601935090850190600101610d01565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610e5957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610e445783516001600160e01b0319168252928b019260019290920191908b0190610e1a565b50978a01979550505091870191600101610ddd565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610da857878503603f1901845281518051808752610eb6818989018a8501610caa565b601f01601f191695909501860194509285019290850190600101610e8f565b600181811c90821680610ee957607f821691505b60208210811415610f0a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090610f33816004850160208701610caa565b919091016004019392505050565b60008251610f53818460208701610caa565b9190910192915050565b600060208284031215610f6f57600080fd5b81518015158114610f7f57600080fd5b939250505056fea2646970667358221220a37a4d3828e50241430fce78619c164347d4b2c6122837bd9e5ec211b136cb0b64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@\x81\x90R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80Tsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x81\x17\x90\x92U`\x1F\x80T\x82\x16s\xB3\xFB<\xC0\xD2L\x9F=\x05\xCDj\xB4\x06\x87\x10\x83\xEF\x942\xE1\x17\x90U`3\x80T\x82\x16s$L\x1D(\xB0X[j\x17\x1C\x08X\xD4\xE5Hh\xAD\xD7\x03\xB5\x17\x90U`4\x80T\x82\x16s\xBE\xB9\x86N=j\x1B\xA4N\x13\x1AF/c(\xF2\xD1\xD6\xD5M\x17\x90U`5\x80T\x82\x16s\x83=?M\x9D&\xF3\xAE}^\xF2\x96_\x81\xFET\x95\x04\x9AO\x17\x90U`6\x80T\x90\x91\x16s\xBC\xE5\x10\xBD\xC8|CI\"\xD91e)\x89&\x8C%;\x89u\x17\x90U\x7F\xA3\xE2\xA0\xC4\xCE k\x9Cfy\xACca\xC04\xF3\x1C\x88D\xAE1\x04\x10\x8FG\xED\x8CA:\xCF32`7\x81\x90U`\x01b^y\xB7`\xE0\x1B\x03\x19\x90\x92R`\x84\x91\x90\x91Rc\xFF\xA1\x86I`\xA4` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x03\x99V[`8\x80T`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90U\x7F\x88,<}\xD8\xA5\xE5p\x9Bm\x99\x17iC\x10\x84\xD0\xEF\xBD#\xD1\xE9\xD6I\xDC\x7F\xB0\xBB\xFBU\xF1\xE7`9U`:\x80Tsi\x15\xA6xw\xA1x\xD5\x12\x9A(\xD2\xAF\x87\x1A\xC1\xFC\xEB?\xD3\x90\x83\x16\x17\x90U`;\x80Tss\xE2\xCE\x94\x9F\x15\xBE\x90\x1Fv\xB5OZET\xA6\xC8\xDC\xF59\x92\x16\x91\x90\x91\x17\x90U`@\x80Q\x80\x82\x01\x82R\x7F(^\xCCU\"N\xF4\t\xB2S2F\x96\xE7}\xEB\xAC\n\xC3\x1D\xE9R\xBD\x91\xC7r\xF7\x02\x1F\xD0\x1E\xF1\x80\x82R\x7F\x07\x96\xA4[\x15M\xA1$0\x11\xD1K]\xC7\xBA\xE5!\xE2NG\xD8\\\x94\xCB;h6\xF6\xFB\x99\xAE+` \x92\x83\x01\x81\x90R`=\x91\x90\x91U`>U\x81Q\x80\x83\x01\x90\x92R`\x0F\x80\x83Rn\x03c\x92\xE3c\x92\xE3c\x92\xE3c\x93\xA3C#`\x8C\x1B\x92\x90\x91\x01\x91\x82Rb\0\x02\x80\x91`?\x91b\0\x02\xF3V[P`@\x80T`\x01`\x01`\xB0\x1B\x03\x19\x16u\xC0\0\x96:\x98\0\0\0\n\0\0\0\0\0\r\xE0\xB6\xB3\xA7d\0\0\x17\x90U`B\x80T`\x04`\xFF\x19\x90\x91\x16\x81\x17\x90\x91U`CU`D\x80T`\x01`\x01`@\x1B\x03\x19\x16d\n\0\0\0d\x17\x90U`\x01`\x01`\xC0\x1B\x03`MU4\x80\x15b\0\x02\xECW`\0\x80\xFD[Pb\0\x04\x08V[\x82\x80Tb\0\x03\x01\x90b\0\x03\xCBV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x03%W`\0\x85Ub\0\x03pV[\x82`\x1F\x10b\0\x03@W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x03pV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x03pW\x91\x82\x01[\x82\x81\x11\x15b\0\x03pW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x03SV[Pb\0\x03~\x92\x91Pb\0\x03\x82V[P\x90V[[\x80\x82\x11\x15b\0\x03~W`\0\x81U`\x01\x01b\0\x03\x83V[`\0` \x82\x84\x03\x12\x15b\0\x03\xACW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03\xC4W`\0\x80\xFD[\x93\x92PPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03\xE0W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x04\x02WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\x0F\xBC\x80b\0\x04\x18`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x022W`\x005`\xE0\x1C\x80c{\xEFJ\xAC\x11a\x010W\x80c\xB14Bq\x11a\0\xB8W\x80c\xE2\x0C\x9Fq\x11a\0|W\x80c\xE2\x0C\x9Fq\x14a\x04\xB2W\x80c\xE3\xA8\xB3E\x14a\x04\xBAW\x80c\xE4\xB5 \x0B\x14a\x04\xCDW\x80c\xEA\xB6mz\x14a\x04\xE0W\x80c\xFAv&\xD4\x14a\x04\xF3W`\0\x80\xFD[\x80c\xB14Bq\x14a\x04YW\x80c\xB5P\x8A\xA9\x14a\x04lW\x80c\xBAAO\xA6\x14a\x04tW\x80c\xDA\xD5D\xE0\x14a\x04\x8CW\x80c\xE1\x82r\xC2\x14a\x04\x9FW`\0\x80\xFD[\x80c\x91j\x17\xC6\x11a\0\xFFW\x80c\x91j\x17\xC6\x14a\x04\x05W\x80c\x9D\x8B\x9C\xB4\x14a\x04\rW\x80c\x9E;\xA47\x14a\x04 W\x80c\x9E\x99#\xC2\x14a\x043W\x80c\x9F\xD0Pm\x14a\x04FW`\0\x80\xFD[\x80c{\xEFJ\xAC\x14a\x03\xB7W\x80c\x85\"l\x81\x14a\x03\xCAW\x80c\x88o\x11\x95\x14a\x03\xDFW\x80c\x8B,i\xEB\x14a\x03\xF2W`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\xBEW\x80cf\xD9\xA9\xA0\x11a\x01\x82W\x80cf\xD9\xA9\xA0\x14a\x03VW\x80ch0H5\x14a\x03kW\x80ciN\xD6\x10\x14a\x03~W\x80ck:\xA7.\x14a\x03\x91W\x80cm\x14\xA9\x87\x14a\x03\xA4W`\0\x80\xFD[\x80c?r\x86\xF4\x14a\x02\xF8W\x80cL\xA2,?\x14a\x03\0W\x80cV\xF0\xB8\xA0\x14a\x03\x13W\x80c]\xF4YF\x14a\x03&W\x80c^Zgu\x14a\x039W`\0\x80\xFD[\x80c9\x98\xFD\xD3\x11a\x02\x05W\x80c9\x98\xFD\xD3\x14a\x02\xA4W\x80c9\xA5\xFC\xFA\x14a\x02\xB7W\x80c>+\xEE;\x14a\x02\xCAW\x80c>G\x15\x8C\x14a\x02\xDDW\x80c>^<#\x14a\x02\xF0W`\0\x80\xFD[\x80c\x082\xAFR\x14a\x027W\x80c\x1E\xD7\x83\x1C\x14a\x02gW\x80c$\x82\x94\xAB\x14a\x02|W\x80c*\xDE8\x80\x14a\x02\x8FW[`\0\x80\xFD[` Ta\x02J\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\x02oa\x05\0V[`@Qa\x02^\x91\x90a\x0C]V[`/Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\x97a\x05bV[`@Qa\x02^\x91\x90a\x0C\xDAV[`,Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\"Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`1Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x1DTa\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02oa\x06\xA4V[a\x02oa\x07\x04V[`'Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`2Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`*Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03Hg\r\xE0\xB6\xB3\xA7d\0\0\x81V[`@Q\x90\x81R` \x01a\x02^V[a\x03^a\x07dV[`@Qa\x02^\x91\x90a\r\xB5V[`)Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`.Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`0Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`&Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\xD2a\x08JV[`@Qa\x02^\x91\x90a\x0EhV[`\x1ETa\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`%Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03^a\t\x1AV[`4Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`$Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`+Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`5Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x1FTa\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\xD2a\n\0V[a\x04|a\n\xD0V[`@Q\x90\x15\x15\x81R` \x01a\x02^V[`3Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`#Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02oa\x0B\xFDV[`!Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`-Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`6Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x07Ta\x04|\x90`\xFF\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05XW` \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\x05:W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06\x84W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xF7\x90a\x0E\xD5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06#\x90a\x0E\xD5V[\x80\x15a\x06pW\x80`\x1F\x10a\x06EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06pV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06SW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x86V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05XW` \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\x05:WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05XW` \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\x05:WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x082W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\xF4W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\x88V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x8D\x90a\x0E\xD5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xB9\x90a\x0E\xD5V[\x80\x15a\t\x06W\x80`\x1F\x10a\x08\xDBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x06V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08\xE9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08nV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\t\xE8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\t\xAAW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\t>V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\nC\x90a\x0E\xD5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\no\x90a\x0E\xD5V[\x80\x15a\n\xBCW\x80`\x1F\x10a\n\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n$V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\n\xF2WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x0B\xF8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x0B\x80\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x0F\x10V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0B\x9A\x91a\x0FAV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0B\xD7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0B\xDCV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0B\xF4\x91\x90a\x0F]V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05XW` \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\x05:WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0C\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0CyV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x0C\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0C\xADV[\x83\x81\x11\x15a\x0C\xD4W`\0\x84\x84\x01R[PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\r\xA8W`?\x19\x88\x86\x03\x01\x84R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x86R\x86\x01Q`@\x87\x87\x01\x81\x90R\x81Q\x90\x87\x01\x81\x90R\x90\x87\x01\x90```\x05\x82\x90\x1B\x88\x01\x81\x01\x91\x90\x88\x01\x90`\0[\x81\x81\x10\x15a\r\x91W\x89\x84\x03`_\x19\x01\x83R\x84Q\x80Q\x80\x86Ra\rr\x81\x8E\x88\x01\x8F\x85\x01a\x0C\xAAV[\x95\x8C\x01\x95`\x1F\x01`\x1F\x19\x16\x94\x90\x94\x01\x8B\x01\x93P\x91\x8A\x01\x91`\x01\x01a\rKV[P\x91\x97PPP\x93\x86\x01\x93P\x90\x85\x01\x90`\x01\x01a\r\x01V[P\x92\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0EYW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0EDW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\x1AV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xDDV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\r\xA8W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0E\xB6\x81\x89\x89\x01\x8A\x85\x01a\x0C\xAAV[`\x1F\x01`\x1F\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0E\x8FV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\xE9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\nWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x0F3\x81`\x04\x85\x01` \x87\x01a\x0C\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x0FS\x81\x84` \x87\x01a\x0C\xAAV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0FoW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0F\x7FW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xA3zM8(\xE5\x02AC\x0F\xCExa\x9C\x16CG\xD4\xB2\xC6\x12(7\xBD\x9E^\xC2\x11\xB16\xCB\x0BdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106102325760003560e01c80637bef4aac11610130578063b1344271116100b8578063e20c9f711161007c578063e20c9f71146104b2578063e3a8b345146104ba578063e4b5200b146104cd578063eab66d7a146104e0578063fa7626d4146104f357600080fd5b8063b134427114610459578063b5508aa91461046c578063ba414fa614610474578063dad544e01461048c578063e18272c21461049f57600080fd5b8063916a17c6116100ff578063916a17c6146104055780639d8b9cb41461040d5780639e3ba437146104205780639e9923c2146104335780639fd0506d1461044657600080fd5b80637bef4aac146103b757806385226c81146103ca578063886f1195146103df5780638b2c69eb146103f257600080fd5b80633f7286f4116101be57806366d9a9a01161018257806366d9a9a014610356578063683048351461036b578063694ed6101461037e5780636b3aa72e146103915780636d14a987146103a457600080fd5b80633f7286f4146102f85780634ca22c3f1461030057806356f0b8a0146103135780635df45946146103265780635e5a67751461033957600080fd5b80633998fdd3116102055780633998fdd3146102a457806339a5fcfa146102b75780633e2bee3b146102ca5780633e47158c146102dd5780633e5e3c23146102f057600080fd5b80630832af52146102375780631ed7831c14610267578063248294ab1461027c5780632ade38801461028f575b600080fd5b60205461024a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61026f610500565b60405161025e9190610c5d565b602f5461024a906001600160a01b031681565b610297610562565b60405161025e9190610cda565b602c5461024a906001600160a01b031681565b60225461024a906001600160a01b031681565b60315461024a906001600160a01b031681565b601d5461024a906001600160a01b031681565b61026f6106a4565b61026f610704565b60275461024a906001600160a01b031681565b60325461024a906001600160a01b031681565b602a5461024a906001600160a01b031681565b610348670de0b6b3a764000081565b60405190815260200161025e565b61035e610764565b60405161025e9190610db5565b60295461024a906001600160a01b031681565b602e5461024a906001600160a01b031681565b60305461024a906001600160a01b031681565b60285461024a906001600160a01b031681565b60265461024a906001600160a01b031681565b6103d261084a565b60405161025e9190610e68565b601e5461024a906001600160a01b031681565b60255461024a906001600160a01b031681565b61035e61091a565b60345461024a906001600160a01b031681565b60245461024a906001600160a01b031681565b602b5461024a906001600160a01b031681565b60355461024a906001600160a01b031681565b601f5461024a906001600160a01b031681565b6103d2610a00565b61047c610ad0565b604051901515815260200161025e565b60335461024a906001600160a01b031681565b60235461024a906001600160a01b031681565b61026f610bfd565b60215461024a906001600160a01b031681565b602d5461024a906001600160a01b031681565b60365461024a906001600160a01b031681565b60075461047c9060ff1681565b6060601480548060200260200160405190810160405280929190818152602001828054801561055857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161053a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561069b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106845783829060005260206000200180546105f790610ed5565b80601f016020809104026020016040519081016040528092919081815260200182805461062390610ed5565b80156106705780601f1061064557610100808354040283529160200191610670565b820191906000526020600020905b81548152906001019060200180831161065357829003601f168201915b5050505050815260200190600101906105d8565b505050508152505081526020019060010190610586565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610558576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161053a575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610558576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161053a575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561069b5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561083257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107f45790505b50505050508152505081526020019060010190610788565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561069b57838290600052602060002001805461088d90610ed5565b80601f01602080910402602001604051908101604052809291908181526020018280546108b990610ed5565b80156109065780601f106108db57610100808354040283529160200191610906565b820191906000526020600020905b8154815290600101906020018083116108e957829003601f168201915b50505050508152602001906001019061086e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561069b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156109e857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109aa5790505b5050505050815250508152602001906001019061093e565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561069b578382906000526020600020018054610a4390610ed5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6f90610ed5565b8015610abc5780601f10610a9157610100808354040283529160200191610abc565b820191906000526020600020905b815481529060010190602001808311610a9f57829003601f168201915b505050505081526020019060010190610a24565b600754600090610100900460ff1615610af25750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610bf85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610b80917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001610f10565b60408051601f1981840301815290829052610b9a91610f41565b6000604051808303816000865af19150503d8060008114610bd7576040519150601f19603f3d011682016040523d82523d6000602084013e610bdc565b606091505b5091505080806020019051810190610bf49190610f5d565b9150505b919050565b60606013805480602002602001604051908101604052809291908181526020018280548015610558576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161053a575050505050905090565b6020808252825182820181905260009190848201906040850190845b81811015610c9e5783516001600160a01b031683529284019291840191600101610c79565b50909695505050505050565b60005b83811015610cc5578181015183820152602001610cad565b83811115610cd4576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610da857603f19888603018452815180516001600160a01b0316865286015160408787018190528151908701819052908701906060600582901b88018101919088019060005b81811015610d9157898403605f1901835284518051808652610d72818e88018f8501610caa565b958c0195601f01601f1916949094018b019350918a0191600101610d4b565b509197505050938601935090850190600101610d01565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610e5957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610e445783516001600160e01b0319168252928b019260019290920191908b0190610e1a565b50978a01979550505091870191600101610ddd565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610da857878503603f1901845281518051808752610eb6818989018a8501610caa565b601f01601f191695909501860194509285019290850190600101610e8f565b600181811c90821680610ee957607f821691505b60208210811415610f0a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090610f33816004850160208701610caa565b919091016004019392505050565b60008251610f53818460208701610caa565b9190910192915050565b600060208284031215610f6f57600080fd5b81518015158114610f7f57600080fd5b939250505056fea2646970667358221220a37a4d3828e50241430fce78619c164347d4b2c6122837bd9e5ec211b136cb0b64736f6c634300080c0033 + /// ``` + #[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\x022W`\x005`\xE0\x1C\x80c{\xEFJ\xAC\x11a\x010W\x80c\xB14Bq\x11a\0\xB8W\x80c\xE2\x0C\x9Fq\x11a\0|W\x80c\xE2\x0C\x9Fq\x14a\x04\xB2W\x80c\xE3\xA8\xB3E\x14a\x04\xBAW\x80c\xE4\xB5 \x0B\x14a\x04\xCDW\x80c\xEA\xB6mz\x14a\x04\xE0W\x80c\xFAv&\xD4\x14a\x04\xF3W`\0\x80\xFD[\x80c\xB14Bq\x14a\x04YW\x80c\xB5P\x8A\xA9\x14a\x04lW\x80c\xBAAO\xA6\x14a\x04tW\x80c\xDA\xD5D\xE0\x14a\x04\x8CW\x80c\xE1\x82r\xC2\x14a\x04\x9FW`\0\x80\xFD[\x80c\x91j\x17\xC6\x11a\0\xFFW\x80c\x91j\x17\xC6\x14a\x04\x05W\x80c\x9D\x8B\x9C\xB4\x14a\x04\rW\x80c\x9E;\xA47\x14a\x04 W\x80c\x9E\x99#\xC2\x14a\x043W\x80c\x9F\xD0Pm\x14a\x04FW`\0\x80\xFD[\x80c{\xEFJ\xAC\x14a\x03\xB7W\x80c\x85\"l\x81\x14a\x03\xCAW\x80c\x88o\x11\x95\x14a\x03\xDFW\x80c\x8B,i\xEB\x14a\x03\xF2W`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\xBEW\x80cf\xD9\xA9\xA0\x11a\x01\x82W\x80cf\xD9\xA9\xA0\x14a\x03VW\x80ch0H5\x14a\x03kW\x80ciN\xD6\x10\x14a\x03~W\x80ck:\xA7.\x14a\x03\x91W\x80cm\x14\xA9\x87\x14a\x03\xA4W`\0\x80\xFD[\x80c?r\x86\xF4\x14a\x02\xF8W\x80cL\xA2,?\x14a\x03\0W\x80cV\xF0\xB8\xA0\x14a\x03\x13W\x80c]\xF4YF\x14a\x03&W\x80c^Zgu\x14a\x039W`\0\x80\xFD[\x80c9\x98\xFD\xD3\x11a\x02\x05W\x80c9\x98\xFD\xD3\x14a\x02\xA4W\x80c9\xA5\xFC\xFA\x14a\x02\xB7W\x80c>+\xEE;\x14a\x02\xCAW\x80c>G\x15\x8C\x14a\x02\xDDW\x80c>^<#\x14a\x02\xF0W`\0\x80\xFD[\x80c\x082\xAFR\x14a\x027W\x80c\x1E\xD7\x83\x1C\x14a\x02gW\x80c$\x82\x94\xAB\x14a\x02|W\x80c*\xDE8\x80\x14a\x02\x8FW[`\0\x80\xFD[` Ta\x02J\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\x02oa\x05\0V[`@Qa\x02^\x91\x90a\x0C]V[`/Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\x97a\x05bV[`@Qa\x02^\x91\x90a\x0C\xDAV[`,Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\"Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`1Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x1DTa\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02oa\x06\xA4V[a\x02oa\x07\x04V[`'Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`2Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`*Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03Hg\r\xE0\xB6\xB3\xA7d\0\0\x81V[`@Q\x90\x81R` \x01a\x02^V[a\x03^a\x07dV[`@Qa\x02^\x91\x90a\r\xB5V[`)Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`.Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`0Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`(Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`&Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\xD2a\x08JV[`@Qa\x02^\x91\x90a\x0EhV[`\x1ETa\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`%Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03^a\t\x1AV[`4Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`$Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`+Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`5Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x1FTa\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\xD2a\n\0V[a\x04|a\n\xD0V[`@Q\x90\x15\x15\x81R` \x01a\x02^V[`3Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`#Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02oa\x0B\xFDV[`!Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`-Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`6Ta\x02J\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x07Ta\x04|\x90`\xFF\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05XW` \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\x05:W[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06\x84W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xF7\x90a\x0E\xD5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06#\x90a\x0E\xD5V[\x80\x15a\x06pW\x80`\x1F\x10a\x06EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06pV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06SW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x86V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05XW` \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\x05:WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05XW` \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\x05:WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x082W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\xF4W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\x88V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x8D\x90a\x0E\xD5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xB9\x90a\x0E\xD5V[\x80\x15a\t\x06W\x80`\x1F\x10a\x08\xDBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x06V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08\xE9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08nV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\t\xE8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\t\xAAW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\t>V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\nC\x90a\x0E\xD5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\no\x90a\x0E\xD5V[\x80\x15a\n\xBCW\x80`\x1F\x10a\n\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n$V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\n\xF2WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x0B\xF8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x0B\x80\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x0F\x10V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0B\x9A\x91a\x0FAV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0B\xD7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0B\xDCV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0B\xF4\x91\x90a\x0F]V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05XW` \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\x05:WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0C\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0CyV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x0C\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0C\xADV[\x83\x81\x11\x15a\x0C\xD4W`\0\x84\x84\x01R[PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\r\xA8W`?\x19\x88\x86\x03\x01\x84R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x86R\x86\x01Q`@\x87\x87\x01\x81\x90R\x81Q\x90\x87\x01\x81\x90R\x90\x87\x01\x90```\x05\x82\x90\x1B\x88\x01\x81\x01\x91\x90\x88\x01\x90`\0[\x81\x81\x10\x15a\r\x91W\x89\x84\x03`_\x19\x01\x83R\x84Q\x80Q\x80\x86Ra\rr\x81\x8E\x88\x01\x8F\x85\x01a\x0C\xAAV[\x95\x8C\x01\x95`\x1F\x01`\x1F\x19\x16\x94\x90\x94\x01\x8B\x01\x93P\x91\x8A\x01\x91`\x01\x01a\rKV[P\x91\x97PPP\x93\x86\x01\x93P\x90\x85\x01\x90`\x01\x01a\r\x01V[P\x92\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0EYW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0EDW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\x1AV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xDDV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\r\xA8W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0E\xB6\x81\x89\x89\x01\x8A\x85\x01a\x0C\xAAV[`\x1F\x01`\x1F\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0E\x8FV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\xE9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\nWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x0F3\x81`\x04\x85\x01` \x87\x01a\x0C\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x0FS\x81\x84` \x87\x01a\x0C\xAAV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0FoW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0F\x7FW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xA3zM8(\xE5\x02AC\x0F\xCExa\x9C\x16CG\xD4\xB2\xC6\x12(7\xBD\x9E^\xC2\x11\xB16\xCB\x0BdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `WEIGHTING_DIVISOR()` and selector `0x5e5a6775`. + ```solidity + function WEIGHTING_DIVISOR() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `avsDirectoryImplementation()` and selector `0x3e2bee3b`. + ```solidity + function avsDirectoryImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryImplementationCall {} + ///Container type for the return parameters of the [`avsDirectoryImplementation()`](avsDirectoryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryImplementationCall { + 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: avsDirectoryImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectoryImplementation()"; + const SELECTOR: [u8; 4] = [62u8, 43u8, 238u8, 59u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `avsDirectoryMock()` and selector `0x56f0b8a0`. + ```solidity + function avsDirectoryMock() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryMockCall {} + ///Container type for the return parameters of the [`avsDirectoryMock()`](avsDirectoryMockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct avsDirectoryMockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryMockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryMockCall { + 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: avsDirectoryMockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryMockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryMockCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryMockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectoryMock()"; + const SELECTOR: [u8; 4] = [86u8, 240u8, 184u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationCall {} + ///Container type for the return parameters of the [`blsApkRegistryImplementation()`](blsApkRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `delegationMock()` and selector `0x694ed610`. + ```solidity + function delegationMock() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationMockCall {} + ///Container type for the return parameters of the [`delegationMock()`](delegationMockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationMockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationMockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationMockCall { + 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: delegationMockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationMockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationMockCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationMockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegationMock()"; + const SELECTOR: [u8; 4] = [105u8, 78u8, 214u8, 16u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `eigenPodManagerMock()` and selector `0x248294ab`. + ```solidity + function eigenPodManagerMock() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerMockCall {} + ///Container type for the return parameters of the [`eigenPodManagerMock()`](eigenPodManagerMockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerMockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerMockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerMockCall { + 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: eigenPodManagerMockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerMockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eigenPodManagerMockCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eigenPodManagerMockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eigenPodManagerMock()"; + const SELECTOR: [u8; 4] = [36u8, 130u8, 148u8, 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 `emptyContract()` and selector `0xe3a8b345`. + ```solidity + function emptyContract() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct emptyContractCall {} + ///Container type for the return parameters of the [`emptyContract()`](emptyContractCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct emptyContractReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `indexRegistry()` and selector `0x9e9923c2`. + ```solidity + function indexRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryImplementationCall {} + ///Container type for the return parameters of the [`indexRegistryImplementation()`](indexRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `operatorStateRetriever()` and selector `0x4ca22c3f`. + ```solidity + function operatorStateRetriever() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorStateRetrieverCall {} + ///Container type for the return parameters of the [`operatorStateRetriever()`](operatorStateRetrieverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorStateRetrieverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `pauser()` and selector `0x9fd0506d`. + ```solidity + function pauser() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserCall {} + ///Container type for the return parameters of the [`pauser()`](pauserCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserCall { + 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: pauserReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauser()"; + const SELECTOR: [u8; 4] = [159u8, 208u8, 80u8, 109u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `proxyAdmin()` and selector `0x3e47158c`. + ```solidity + function proxyAdmin() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxyAdminCall {} + ///Container type for the return parameters of the [`proxyAdmin()`](proxyAdminCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxyAdminReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proxyAdminCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxyAdminCall { + 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: proxyAdminReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxyAdminReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for proxyAdminCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = proxyAdminReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "proxyAdmin()"; + const SELECTOR: [u8; 4] = [62u8, 71u8, 21u8, 140u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `proxyAdminOwner()` and selector `0xdad544e0`. + ```solidity + function proxyAdminOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxyAdminOwnerCall {} + ///Container type for the return parameters of the [`proxyAdminOwner()`](proxyAdminOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxyAdminOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proxyAdminOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxyAdminOwnerCall { + 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: proxyAdminOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxyAdminOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for proxyAdminOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = proxyAdminOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "proxyAdminOwner()"; + const SELECTOR: [u8; 4] = [218u8, 213u8, 68u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationCall {} + ///Container type for the return parameters of the [`registryCoordinatorImplementation()`](registryCoordinatorImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `registryCoordinatorOwner()` and selector `0x9d8b9cb4`. + ```solidity + function registryCoordinatorOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerCall {} + ///Container type for the return parameters of the [`registryCoordinatorOwner()`](registryCoordinatorOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerCall { + 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: registryCoordinatorOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [157u8, 139u8, 156u8, 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 `serviceManager()` and selector `0x3998fdd3`. + ```solidity + function serviceManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerCall {} + ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `serviceManagerImplementation()` and selector `0x7bef4aac`. + ```solidity + function serviceManagerImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerImplementationCall {} + ///Container type for the return parameters of the [`serviceManagerImplementation()`](serviceManagerImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: serviceManagerImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for serviceManagerImplementationCall { + 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: serviceManagerImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for serviceManagerImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for serviceManagerImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = serviceManagerImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "serviceManagerImplementation()"; + const SELECTOR: [u8; 4] = [123u8, 239u8, 74u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `slasherImplementation()` and selector `0x0832af52`. + ```solidity + function slasherImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherImplementationCall {} + ///Container type for the return parameters of the [`slasherImplementation()`](slasherImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherImplementationCall { + 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: slasherImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for slasherImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = slasherImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "slasherImplementation()"; + const SELECTOR: [u8; 4] = [8u8, 50u8, 175u8, 82u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryImplementationCall {} + ///Container type for the return parameters of the [`stakeRegistryImplementation()`](stakeRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `strategyManagerMock()` and selector `0xe4b5200b`. + ```solidity + function strategyManagerMock() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerMockCall {} + ///Container type for the return parameters of the [`strategyManagerMock()`](strategyManagerMockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerMockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerMockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerMockCall { + 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: strategyManagerMockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerMockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyManagerMockCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyManagerMockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyManagerMock()"; + const SELECTOR: [u8; 4] = [228u8, 181u8, 32u8, 11u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `unpauser()` and selector `0xeab66d7a`. + ```solidity + function unpauser() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauserCall {} + ///Container type for the return parameters of the [`unpauser()`](unpauserCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauserReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 [`MockAVSDeployer`](self) function calls. + pub enum MockAVSDeployerCalls { + IS_TEST(IS_TESTCall), + WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall), + avsDirectory(avsDirectoryCall), + avsDirectoryImplementation(avsDirectoryImplementationCall), + avsDirectoryMock(avsDirectoryMockCall), + blsApkRegistry(blsApkRegistryCall), + blsApkRegistryImplementation(blsApkRegistryImplementationCall), + delegationMock(delegationMockCall), + eigenPodManagerMock(eigenPodManagerMockCall), + emptyContract(emptyContractCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + indexRegistry(indexRegistryCall), + indexRegistryImplementation(indexRegistryImplementationCall), + operatorStateRetriever(operatorStateRetrieverCall), + pauser(pauserCall), + pauserRegistry(pauserRegistryCall), + proxyAdmin(proxyAdminCall), + proxyAdminOwner(proxyAdminOwnerCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorImplementation(registryCoordinatorImplementationCall), + registryCoordinatorOwner(registryCoordinatorOwnerCall), + serviceManager(serviceManagerCall), + serviceManagerImplementation(serviceManagerImplementationCall), + slasher(slasherCall), + slasherImplementation(slasherImplementationCall), + stakeRegistry(stakeRegistryCall), + stakeRegistryImplementation(stakeRegistryImplementationCall), + strategyManagerMock(strategyManagerMockCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + unpauser(unpauserCall), + } + #[automatically_derived] + impl MockAVSDeployerCalls { + /// 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]] = &[ + [8u8, 50u8, 175u8, 82u8], + [30u8, 215u8, 131u8, 28u8], + [36u8, 130u8, 148u8, 171u8], + [42u8, 222u8, 56u8, 128u8], + [57u8, 152u8, 253u8, 211u8], + [57u8, 165u8, 252u8, 250u8], + [62u8, 43u8, 238u8, 59u8], + [62u8, 71u8, 21u8, 140u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [76u8, 162u8, 44u8, 63u8], + [86u8, 240u8, 184u8, 160u8], + [93u8, 244u8, 89u8, 70u8], + [94u8, 90u8, 103u8, 117u8], + [102u8, 217u8, 169u8, 160u8], + [104u8, 48u8, 72u8, 53u8], + [105u8, 78u8, 214u8, 16u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [123u8, 239u8, 74u8, 172u8], + [133u8, 34u8, 108u8, 129u8], + [136u8, 111u8, 17u8, 149u8], + [139u8, 44u8, 105u8, 235u8], + [145u8, 106u8, 23u8, 198u8], + [157u8, 139u8, 156u8, 180u8], + [158u8, 59u8, 164u8, 55u8], + [158u8, 153u8, 35u8, 194u8], + [159u8, 208u8, 80u8, 109u8], + [177u8, 52u8, 66u8, 113u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [218u8, 213u8, 68u8, 224u8], + [225u8, 130u8, 114u8, 194u8], + [226u8, 12u8, 159u8, 113u8], + [227u8, 168u8, 179u8, 69u8], + [228u8, 181u8, 32u8, 11u8], + [234u8, 182u8, 109u8, 122u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockAVSDeployerCalls { + const NAME: &'static str = "MockAVSDeployerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 38usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::WEIGHTING_DIVISOR(_) => { + ::SELECTOR + } + Self::avsDirectory(_) => ::SELECTOR, + Self::avsDirectoryImplementation(_) => { + ::SELECTOR + } + Self::avsDirectoryMock(_) => { + ::SELECTOR + } + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::blsApkRegistryImplementation(_) => { + ::SELECTOR + } + Self::delegationMock(_) => { + ::SELECTOR + } + Self::eigenPodManagerMock(_) => { + ::SELECTOR + } + Self::emptyContract(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::indexRegistry(_) => ::SELECTOR, + Self::indexRegistryImplementation(_) => { + ::SELECTOR + } + Self::operatorStateRetriever(_) => { + ::SELECTOR + } + Self::pauser(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::proxyAdmin(_) => ::SELECTOR, + Self::proxyAdminOwner(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorImplementation(_) => { + ::SELECTOR + } + Self::registryCoordinatorOwner(_) => { + ::SELECTOR + } + Self::serviceManager(_) => { + ::SELECTOR + } + Self::serviceManagerImplementation(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::slasherImplementation(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + Self::stakeRegistryImplementation(_) => { + ::SELECTOR + } + Self::strategyManagerMock(_) => { + ::SELECTOR + } + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::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 slasherImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::slasherImplementation) + } + slasherImplementation + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::excludeSenders) + } + excludeSenders + }, + { + fn eigenPodManagerMock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::eigenPodManagerMock) + } + eigenPodManagerMock + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn serviceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::serviceManager) + } + serviceManager + }, + { + fn registryCoordinatorImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockAVSDeployerCalls::registryCoordinatorImplementation) + } + registryCoordinatorImplementation + }, + { + fn avsDirectoryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockAVSDeployerCalls::avsDirectoryImplementation) + } + avsDirectoryImplementation + }, + { + fn proxyAdmin( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAVSDeployerCalls::proxyAdmin) + } + proxyAdmin + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::targetContracts) + } + targetContracts + }, + { + fn operatorStateRetriever( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::operatorStateRetriever) + } + operatorStateRetriever + }, + { + fn avsDirectoryMock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::avsDirectoryMock) + } + avsDirectoryMock + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn WEIGHTING_DIVISOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::WEIGHTING_DIVISOR) + } + WEIGHTING_DIVISOR + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn delegationMock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::delegationMock) + } + delegationMock + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn serviceManagerImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockAVSDeployerCalls::serviceManagerImplementation) + } + serviceManagerImplementation + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn indexRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockAVSDeployerCalls::indexRegistryImplementation) + } + indexRegistryImplementation + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::targetSelectors) + } + targetSelectors + }, + { + fn registryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::registryCoordinatorOwner) + } + registryCoordinatorOwner + }, + { + fn blsApkRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockAVSDeployerCalls::blsApkRegistryImplementation) + } + blsApkRegistryImplementation + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::indexRegistry) + } + indexRegistry + }, + { + fn pauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAVSDeployerCalls::pauser) + } + pauser + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAVSDeployerCalls::slasher) + } + slasher + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAVSDeployerCalls::failed) + } + failed + }, + { + fn proxyAdminOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::proxyAdminOwner) + } + proxyAdminOwner + }, + { + fn stakeRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockAVSDeployerCalls::stakeRegistryImplementation) + } + stakeRegistryImplementation + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::excludeContracts) + } + excludeContracts + }, + { + fn emptyContract( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::emptyContract) + } + emptyContract + }, + { + fn strategyManagerMock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAVSDeployerCalls::strategyManagerMock) + } + strategyManagerMock + }, + { + fn unpauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAVSDeployerCalls::unpauser) + } + unpauser + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAVSDeployerCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::avsDirectoryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::avsDirectoryMock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegationMock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManagerMock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::emptyContract(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::indexRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorStateRetriever(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::pauser(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::proxyAdmin(inner) => { + ::abi_encoded_size(inner) + } + Self::proxyAdminOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::serviceManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::serviceManagerImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::slasher(inner) => { + ::abi_encoded_size(inner) + } + Self::slasherImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyManagerMock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSenders(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::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::avsDirectory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::avsDirectoryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::avsDirectoryMock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegationMock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManagerMock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::emptyContract(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::indexRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorStateRetriever(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pauser(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::proxyAdmin(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::proxyAdminOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::serviceManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::serviceManagerImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::slasher(inner) => { + ::abi_encode_raw(inner, out) + } + Self::slasherImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyManagerMock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpauser(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockAVSDeployer`](self) events. + pub enum MockAVSDeployerEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl MockAVSDeployerEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockAVSDeployerEvents { + const NAME: &'static str = "MockAVSDeployerEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 MockAVSDeployerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockAVSDeployer`](self) contract instance. + + See the [wrapper's documentation](`MockAVSDeployerInstance`) 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, + ) -> MockAVSDeployerInstance { + MockAVSDeployerInstance::::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>> + { + MockAVSDeployerInstance::::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 { + MockAVSDeployerInstance::::deploy_builder(provider) + } + /**A [`MockAVSDeployer`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`MockAVSDeployer`](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 MockAVSDeployerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockAVSDeployerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockAVSDeployerInstance") + .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, + > MockAVSDeployerInstance + { + /**Creates a new wrapper around an on-chain [`MockAVSDeployer`](self) contract instance. + + See the [wrapper's documentation](`MockAVSDeployerInstance`) 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 MockAVSDeployerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockAVSDeployerInstance { + MockAVSDeployerInstance { + 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, + > MockAVSDeployerInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`avsDirectory`] function. + pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryCall {}) + } + ///Creates a new call builder for the [`avsDirectoryImplementation`] function. + pub fn avsDirectoryImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryImplementationCall {}) + } + ///Creates a new call builder for the [`avsDirectoryMock`] function. + pub fn avsDirectoryMock( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryMockCall {}) + } + ///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 [`delegationMock`] function. + pub fn delegationMock( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationMockCall {}) + } + ///Creates a new call builder for the [`eigenPodManagerMock`] function. + pub fn eigenPodManagerMock( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eigenPodManagerMockCall {}) + } + ///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 [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///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 [`operatorStateRetriever`] function. + pub fn operatorStateRetriever( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorStateRetrieverCall {}) + } + ///Creates a new call builder for the [`pauser`] function. + pub fn pauser(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserCall {}) + } + ///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 [`proxyAdmin`] function. + pub fn proxyAdmin(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&proxyAdminCall {}) + } + ///Creates a new call builder for the [`proxyAdminOwner`] function. + pub fn proxyAdminOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&proxyAdminOwnerCall {}) + } + ///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 [`registryCoordinatorOwner`] function. + pub fn registryCoordinatorOwner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorOwnerCall {}) + } + ///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 [`serviceManagerImplementation`] function. + pub fn serviceManagerImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&serviceManagerImplementationCall {}) + } + ///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 [`slasherImplementation`] function. + pub fn slasherImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&slasherImplementationCall {}) + } + ///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 {}) + } + ///Creates a new call builder for the [`strategyManagerMock`] function. + pub fn strategyManagerMock( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyManagerMockCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///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, + > MockAVSDeployerInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/mockdelegationmanager.rs b/crates/utils/src/middleware/mockdelegationmanager.rs new file mode 100644 index 00000000..088587f5 --- /dev/null +++ b/crates/utils/src/middleware/mockdelegationmanager.rs @@ -0,0 +1,674 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockDelegationManager { + function getOperatorShares(address, address[] memory strategies) external pure returns (uint256[] memory); + function operatorShares(address, address) external pure returns (uint256); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "getOperatorShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "operatorShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod MockDelegationManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061030b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063778e55f31461003b5780639004134714610065575b600080fd5b610052610049366004610131565b6103e892915050565b6040519081526020015b60405180910390f35b61007861007336600461017a565b610085565b60405161005c9190610252565b60606000825167ffffffffffffffff8111156100a3576100a3610164565b6040519080825280602002602001820160405280156100cc578160200160208202803683370190505b50905060005b835181101561010d576103e88282815181106100f0576100f0610296565b602090810291909101015280610105816102ac565b9150506100d2565b509392505050565b80356001600160a01b038116811461012c57600080fd5b919050565b6000806040838503121561014457600080fd5b61014d83610115565b915061015b60208401610115565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561018d57600080fd5b61019683610115565b915060208084013567ffffffffffffffff808211156101b457600080fd5b818601915086601f8301126101c857600080fd5b8135818111156101da576101da610164565b8060051b604051601f19603f830116810181811085821117156101ff576101ff610164565b60405291825284820192508381018501918983111561021d57600080fd5b938501935b828510156102425761023385610115565b84529385019392850192610222565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561028a5783518352928401929184019160010161026e565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156102ce57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220044609968e4209af57558f74bde90d5690cc68a4d97bf9dc5f705209c70b0d9064736f6c634300080c0033 + /// ``` + #[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\x03\x0B\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cw\x8EU\xF3\x14a\0;W\x80c\x90\x04\x13G\x14a\0eW[`\0\x80\xFD[a\0Ra\0I6`\x04a\x011V[a\x03\xE8\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0xa\0s6`\x04a\x01zV[a\0\x85V[`@Qa\0\\\x91\x90a\x02RV[```\0\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xA3Wa\0\xA3a\x01dV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\0\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x01\rWa\x03\xE8\x82\x82\x81Q\x81\x10a\0\xF0Wa\0\xF0a\x02\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x01\x05\x81a\x02\xACV[\x91PPa\0\xD2V[P\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01,W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01DW`\0\x80\xFD[a\x01M\x83a\x01\x15V[\x91Pa\x01[` \x84\x01a\x01\x15V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x01\x8DW`\0\x80\xFD[a\x01\x96\x83a\x01\x15V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xB4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x01\xC8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\xDAWa\x01\xDAa\x01dV[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x01\xFFWa\x01\xFFa\x01dV[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x89\x83\x11\x15a\x02\x1DW`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x02BWa\x023\x85a\x01\x15V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\"V[\x80\x96PPPPPPP\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\x8AW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02nV[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x02\xCEWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x04F\t\x96\x8EB\t\xAFWU\x8Ft\xBD\xE9\rV\x90\xCCh\xA4\xD9{\xF9\xDC_pR\t\xC7\x0B\r\x90dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063778e55f31461003b5780639004134714610065575b600080fd5b610052610049366004610131565b6103e892915050565b6040519081526020015b60405180910390f35b61007861007336600461017a565b610085565b60405161005c9190610252565b60606000825167ffffffffffffffff8111156100a3576100a3610164565b6040519080825280602002602001820160405280156100cc578160200160208202803683370190505b50905060005b835181101561010d576103e88282815181106100f0576100f0610296565b602090810291909101015280610105816102ac565b9150506100d2565b509392505050565b80356001600160a01b038116811461012c57600080fd5b919050565b6000806040838503121561014457600080fd5b61014d83610115565b915061015b60208401610115565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561018d57600080fd5b61019683610115565b915060208084013567ffffffffffffffff808211156101b457600080fd5b818601915086601f8301126101c857600080fd5b8135818111156101da576101da610164565b8060051b604051601f19603f830116810181811085821117156101ff576101ff610164565b60405291825284820192508381018501918983111561021d57600080fd5b938501935b828510156102425761023385610115565b84529385019392850192610222565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561028a5783518352928401929184019160010161026e565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156102ce57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220044609968e4209af57558f74bde90d5690cc68a4d97bf9dc5f705209c70b0d9064736f6c634300080c0033 + /// ``` + #[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\x006W`\x005`\xE0\x1C\x80cw\x8EU\xF3\x14a\0;W\x80c\x90\x04\x13G\x14a\0eW[`\0\x80\xFD[a\0Ra\0I6`\x04a\x011V[a\x03\xE8\x92\x91PPV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0xa\0s6`\x04a\x01zV[a\0\x85V[`@Qa\0\\\x91\x90a\x02RV[```\0\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0\xA3Wa\0\xA3a\x01dV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\0\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x01\rWa\x03\xE8\x82\x82\x81Q\x81\x10a\0\xF0Wa\0\xF0a\x02\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x01\x05\x81a\x02\xACV[\x91PPa\0\xD2V[P\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01,W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01DW`\0\x80\xFD[a\x01M\x83a\x01\x15V[\x91Pa\x01[` \x84\x01a\x01\x15V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x01\x8DW`\0\x80\xFD[a\x01\x96\x83a\x01\x15V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xB4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x01\xC8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\xDAWa\x01\xDAa\x01dV[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x01\xFFWa\x01\xFFa\x01dV[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x89\x83\x11\x15a\x02\x1DW`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x02BWa\x023\x85a\x01\x15V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\"V[\x80\x96PPPPPPP\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\x8AW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02nV[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x02\xCEWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x04F\t\x96\x8EB\t\xAFWU\x8Ft\xBD\xE9\rV\x90\xCCh\xA4\xD9{\xF9\xDC_pR\t\xC7\x0B\r\x90dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `getOperatorShares(address,address[])` and selector `0x90041347`. + ```solidity + function getOperatorShares(address, address[] memory strategies) external pure returns (uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSharesCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSharesReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value.strategies) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: 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._0, + ), + 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 `operatorShares(address,address)` and selector `0x778e55f3`. + ```solidity + function operatorShares(address, address) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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) + } + } + }; + ///Container for all the [`MockDelegationManager`](self) function calls. + pub enum MockDelegationManagerCalls { + getOperatorShares(getOperatorSharesCall), + operatorShares(operatorSharesCall), + } + #[automatically_derived] + impl MockDelegationManagerCalls { + /// 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]] = + &[[119u8, 142u8, 85u8, 243u8], [144u8, 4u8, 19u8, 71u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockDelegationManagerCalls { + const NAME: &'static str = "MockDelegationManagerCalls"; + const MIN_DATA_LENGTH: usize = 64usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::getOperatorShares(_) => { + ::SELECTOR + } + Self::operatorShares(_) => { + ::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 operatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockDelegationManagerCalls::operatorShares) + } + operatorShares + }, + { + fn getOperatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockDelegationManagerCalls::getOperatorShares) + } + getOperatorShares + }, + ]; + 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::getOperatorShares(inner) => { + ::abi_encoded_size(inner) + } + Self::operatorShares(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::getOperatorShares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::operatorShares(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockDelegationManager`](self) contract instance. + + See the [wrapper's documentation](`MockDelegationManagerInstance`) 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, + ) -> MockDelegationManagerInstance { + MockDelegationManagerInstance::::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>, + > { + MockDelegationManagerInstance::::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 { + MockDelegationManagerInstance::::deploy_builder(provider) + } + /**A [`MockDelegationManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`MockDelegationManager`](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 MockDelegationManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockDelegationManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockDelegationManagerInstance") + .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, + > MockDelegationManagerInstance + { + /**Creates a new wrapper around an on-chain [`MockDelegationManager`](self) contract instance. + + See the [wrapper's documentation](`MockDelegationManagerInstance`) 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 MockDelegationManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockDelegationManagerInstance { + MockDelegationManagerInstance { + 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, + > MockDelegationManagerInstance + { + /// 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 [`getOperatorShares`] function. + pub fn getOperatorShares( + &self, + _0: alloy::sol_types::private::Address, + strategies: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSharesCall { _0, strategies }) + } + ///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 }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockDelegationManagerInstance + { + /// 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/middleware/mockservicemanager.rs b/crates/utils/src/middleware/mockservicemanager.rs new file mode 100644 index 00000000..da9ea0cf --- /dev/null +++ b/crates/utils/src/middleware/mockservicemanager.rs @@ -0,0 +1,1023 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 MockServiceManager { + function deregisterOperatorFromAVS(address) external; + function registerOperatorToAVS(address, ISignatureUtils.SignatureWithSaltAndExpiry memory) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "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" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod MockServiceManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610229806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639926ee7d1461003b578063a364f4da1461004f575b600080fd5b61004d6100493660046100ec565b5050565b005b61004d61005d3660046101d1565b50565b80356001600160a01b038116811461007757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156100b5576100b561007c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156100e4576100e461007c565b604052919050565b600080604083850312156100ff57600080fd5b61010883610060565b915060208084013567ffffffffffffffff8082111561012657600080fd5b908501906060828803121561013a57600080fd5b610142610092565b82358281111561015157600080fd5b8301601f8101891361016257600080fd5b8035838111156101745761017461007c565b610186601f8201601f191687016100bb565b9350808452898682840101111561019c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b6000602082840312156101e357600080fd5b6101ec82610060565b939250505056fea26469706673582212206943cdf3fa94350d7917a12c2d4b4a05065ffd77579c5291937d46934ca9fabd64736f6c634300080c0033 + /// ``` + #[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\x02)\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x99&\xEE}\x14a\0;W\x80c\xA3d\xF4\xDA\x14a\0OW[`\0\x80\xFD[a\0Ma\0I6`\x04a\0\xECV[PPV[\0[a\0Ma\0]6`\x04a\x01\xD1V[PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0wW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\0\xB5Wa\0\xB5a\0|V[`@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\0\xE4Wa\0\xE4a\0|V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xFFW`\0\x80\xFD[a\x01\x08\x83a\0`V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01&W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x01:W`\0\x80\xFD[a\x01Ba\0\x92V[\x825\x82\x81\x11\x15a\x01QW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x01bW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x01tWa\x01ta\0|V[a\x01\x86`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\0\xBBV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x01\x9CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xE3W`\0\x80\xFD[a\x01\xEC\x82a\0`V[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 iC\xCD\xF3\xFA\x945\ry\x17\xA1,-KJ\x05\x06_\xFDwW\x9CR\x91\x93}F\x93L\xA9\xFA\xBDdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100365760003560e01c80639926ee7d1461003b578063a364f4da1461004f575b600080fd5b61004d6100493660046100ec565b5050565b005b61004d61005d3660046101d1565b50565b80356001600160a01b038116811461007757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156100b5576100b561007c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156100e4576100e461007c565b604052919050565b600080604083850312156100ff57600080fd5b61010883610060565b915060208084013567ffffffffffffffff8082111561012657600080fd5b908501906060828803121561013a57600080fd5b610142610092565b82358281111561015157600080fd5b8301601f8101891361016257600080fd5b8035838111156101745761017461007c565b610186601f8201601f191687016100bb565b9350808452898682840101111561019c57600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b6000602082840312156101e357600080fd5b6101ec82610060565b939250505056fea26469706673582212206943cdf3fa94350d7917a12c2d4b4a05065ffd77579c5291937d46934ca9fabd64736f6c634300080c0033 + /// ``` + #[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\x006W`\x005`\xE0\x1C\x80c\x99&\xEE}\x14a\0;W\x80c\xA3d\xF4\xDA\x14a\0OW[`\0\x80\xFD[a\0Ma\0I6`\x04a\0\xECV[PPV[\0[a\0Ma\0]6`\x04a\x01\xD1V[PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0wW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\0\xB5Wa\0\xB5a\0|V[`@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\0\xE4Wa\0\xE4a\0|V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xFFW`\0\x80\xFD[a\x01\x08\x83a\0`V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01&W`\0\x80\xFD[\x90\x85\x01\x90``\x82\x88\x03\x12\x15a\x01:W`\0\x80\xFD[a\x01Ba\0\x92V[\x825\x82\x81\x11\x15a\x01QW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x89\x13a\x01bW`\0\x80\xFD[\x805\x83\x81\x11\x15a\x01tWa\x01ta\0|V[a\x01\x86`\x1F\x82\x01`\x1F\x19\x16\x87\x01a\0\xBBV[\x93P\x80\x84R\x89\x86\x82\x84\x01\x01\x11\x15a\x01\x9CW`\0\x80\xFD[\x80\x86\x83\x01\x87\x86\x017`\0\x86\x82\x86\x01\x01RPP\x81\x81R\x83\x83\x015\x84\x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xE3W`\0\x80\xFD[a\x01\xEC\x82a\0`V[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 iC\xCD\xF3\xFA\x945\ry\x17\xA1,-KJ\x05\x06_\xFDwW\x9CR\x91\x93}F\x93L\xA9\xFA\xBDdsolcC\0\x08\x0C\x003", + ); + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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 `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address, ISignatureUtils.SignatureWithSaltAndExpiry memory) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub _0: alloy::sol_types::private::Address, + pub _1: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: 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: 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._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) + } + } + }; + ///Container for all the [`MockServiceManager`](self) function calls. + pub enum MockServiceManagerCalls { + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + registerOperatorToAVS(registerOperatorToAVSCall), + } + #[automatically_derived] + impl MockServiceManagerCalls { + /// 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]] = + &[[153u8, 38u8, 238u8, 125u8], [163u8, 100u8, 244u8, 218u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockServiceManagerCalls { + const NAME: &'static str = "MockServiceManagerCalls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::registerOperatorToAVS(_) => { + ::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 registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockServiceManagerCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockServiceManagerCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + ]; + 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::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockServiceManager`](self) contract instance. + + See the [wrapper's documentation](`MockServiceManagerInstance`) 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, + ) -> MockServiceManagerInstance { + MockServiceManagerInstance::::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>> + { + MockServiceManagerInstance::::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 { + MockServiceManagerInstance::::deploy_builder(provider) + } + /**A [`MockServiceManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`MockServiceManager`](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 MockServiceManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockServiceManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockServiceManagerInstance") + .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, + > MockServiceManagerInstance + { + /**Creates a new wrapper around an on-chain [`MockServiceManager`](self) contract instance. + + See the [wrapper's documentation](`MockServiceManagerInstance`) 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 MockServiceManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockServiceManagerInstance { + MockServiceManagerInstance { + 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, + > MockServiceManagerInstance + { + /// 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 [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { _0 }) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + _0: alloy::sol_types::private::Address, + _1: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { _0, _1 }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockServiceManagerInstance + { + /// 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/middleware/mod.rs b/crates/utils/src/middleware/mod.rs new file mode 100644 index 00000000..d3154da1 --- /dev/null +++ b/crates/utils/src/middleware/mod.rs @@ -0,0 +1,154 @@ +#![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 avsdirectorymock; +pub mod avsdirectorystorage; +pub mod beaconchainoraclemock; +pub mod beaconchainproofs; +pub mod beaconproxy; +pub mod bitmapstrings; +pub mod bitmaputils; +pub mod bitmaputilswrapper; +pub mod blsapkregistry; +pub mod blsapkregistryharness; +pub mod blsapkregistrystorage; +pub mod blsmockavsdeployer; +pub mod blssignaturechecker; +pub mod bn254; +pub mod byteslib; +pub mod checkpointsupgradeable; +pub mod constants; +pub mod context; +pub mod contextupgradeable; +pub mod create2; +pub mod delegationmanager; +pub mod delegationmanagerstorage; +pub mod delegationmock; +pub mod ecdsa; +pub mod ecdsastakeregistry; +pub mod ecdsastakeregistryequalweight; +pub mod ecdsastakeregistryeventsanderrors; +pub mod ecdsastakeregistrypermissioned; +pub mod ecdsastakeregistrysetup; +pub mod ecdsastakeregistrystorage; +pub mod ecdsaupgradeable; +pub mod eigenpod; +pub mod eigenpodmanager; +pub mod eigenpodmanagermock; +pub mod eigenpodmanagerstorage; +pub mod eigenpodpausingconstants; +pub mod eigenpodstorage; +pub mod eip1271signatureutils; +pub mod eip712; +pub mod emptycontract; +pub mod endian; +pub mod equalweightecdsaregistry; +pub mod erc1967proxy; +pub mod erc1967upgrade; +pub mod erc20; +pub mod erc20burnable; +pub mod erc20presetfixedsupply; +pub mod ethposdepositmock; +pub mod g2operations; +pub mod greeter; +pub mod greeterproxiable; +pub mod greeterv2; +pub mod greeterv2proxiable; +pub mod iavsdirectory; +pub mod ibeacon; +pub mod ibeaconchainoracle_deprecatedm1; +pub mod iblsapkregistry; +pub mod iblsapkregistryevents; +pub mod iblssignaturechecker; +pub mod idelegationmanager; +pub mod ieigenpod; +pub mod ieigenpodmanager; +pub mod ierc1271; +pub mod ierc1271upgradeable; +pub mod ierc1822proxiable; +pub mod ierc20; +pub mod ierc20metadata; +pub mod ierc20permit; +pub mod iethposdeposit; +pub mod iindexregistry; +pub mod iindexregistryevents; +pub mod indexregistry; +pub mod indexregistrystorage; +pub mod initializable; +pub mod integration_avs_sync_gascosts_ffi; +pub mod integration_full_register_deregister; +pub mod integration_nonfull_register_corebalancechange_update; +pub mod integration_nonfull_register_deregister; +pub mod integrationbase; +pub mod integrationchecks; +pub mod integrationconfig; +pub mod integrationdeployer; +pub mod ipausable; +pub mod ipauserregistry; +pub mod iregistry; +pub mod iregistrycoordinator; +pub mod iservicemanager; +pub mod isignatureutils; +pub mod islasher; +pub mod isocketupdater; +pub mod istakeregistry; +pub mod istakeregistryevents; +pub mod istrategy; +pub mod istrategymanager; +pub mod iuserdeployer; +pub mod mathupgradeable; +pub mod merkle; +pub mod mockavsdeployer; +pub mod mockdelegationmanager; +pub mod mockservicemanager; +pub mod noinitializer; +pub mod operators; +pub mod operatorstateretriever; +pub mod ownable; +pub mod ownableupgradeable; +pub mod owners; +pub mod pausable; +pub mod pauserregistry; +pub mod proofparsing; +pub mod proxiable; +pub mod proxy; +pub mod proxyadmin; +pub mod reentrancyguardupgradeable; +pub mod registrycoordinator; +pub mod registrycoordinatorharness; +pub mod registrycoordinatormock; +pub mod registrycoordinatorstorage; +pub mod safecastupgradeable; +pub mod safeerc20; +pub mod servicemanagerbase; +pub mod servicemanagermock; +pub mod servicemanagerrouter; +pub mod servicemanagerrouterdeploy; +pub mod signaturecheckerupgradeable; +pub mod signaturecompaction; +pub mod slasher; +pub mod sort; +pub mod stakeregistry; +pub mod stakeregistryharness; +pub mod stakeregistrymock; +pub mod stakeregistrystorage; +pub mod storageslot; +pub mod strategybase; +pub mod strategymanager; +pub mod strategymanagermock; +pub mod strategymanagerstorage; +pub mod strings; +pub mod stringsupgradeable; +pub mod timemachine; +pub mod transparentupgradeableproxy; +pub mod upgradeablebeacon; +pub mod upgradeableproxyutils; +pub mod user; +pub mod user_altmethods; +pub mod utils; +pub mod withconstructor; diff --git a/crates/utils/src/middleware/noinitializer.rs b/crates/utils/src/middleware/noinitializer.rs new file mode 100644 index 00000000..4cb2ed62 --- /dev/null +++ b/crates/utils/src/middleware/noinitializer.rs @@ -0,0 +1,512 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface NoInitializer { + constructor(uint256 _a); + + function a() external view returns (uint256); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_a", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "a", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod NoInitializer { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b5060405161010338038061010383398101604081905261002f91610037565b608052610050565b60006020828403121561004957600080fd5b5051919050565b608051609b610068600039600060310152609b6000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80630dbe671f14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f3fea26469706673582212206827c7a07141180f65584243b5c9e83412dcd041abe8e7f9034c27ade039b71264736f6c634300080c0033 + /// ``` + #[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\x01\x038\x03\x80a\x01\x03\x839\x81\x01`@\x81\x90Ra\0/\x91a\x007V[`\x80Ra\0PV[`\0` \x82\x84\x03\x12\x15a\0IW`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\x9Ba\0h`\09`\0`1\x01R`\x9B`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\r\xBEg\x1F\x14`-W[`\0\x80\xFD[`S\x7F\0\0\0\0\0\0\0\0\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\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 h'\xC7\xA0qA\x18\x0FeXBC\xB5\xC9\xE84\x12\xDC\xD0A\xAB\xE8\xE7\xF9\x03L'\xAD\xE09\xB7\x12dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c80630dbe671f14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f3fea26469706673582212206827c7a07141180f65584243b5c9e83412dcd041abe8e7f9034c27ade039b71264736f6c634300080c0033 + /// ``` + #[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\r\xBEg\x1F\x14`-W[`\0\x80\xFD[`S\x7F\0\0\0\0\0\0\0\0\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\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 h'\xC7\xA0qA\x18\x0FeXBC\xB5\xC9\xE84\x12\xDC\xD0A\xAB\xE8\xE7\xF9\x03L'\xAD\xE09\xB7\x12dsolcC\0\x08\x0C\x003", + ); + /**Constructor`. + ```solidity + constructor(uint256 _a); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub _a: alloy::sol_types::private::primitives::aliases::U256, + } + 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: constructorCall) -> Self { + (value._a,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _a: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + 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._a, + ), + ) + } + } + }; + /**Function with signature `a()` and selector `0x0dbe671f`. + ```solidity + function a() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct aCall {} + ///Container type for the return parameters of the [`a()`](aCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct aReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: aCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for aCall { + 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: aReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for aReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for aCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = aReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "a()"; + const SELECTOR: [u8; 4] = [13u8, 190u8, 103u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`NoInitializer`](self) function calls. + pub enum NoInitializerCalls { + a(aCall), + } + #[automatically_derived] + impl NoInitializerCalls { + /// 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]] = &[[13u8, 190u8, 103u8, 31u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for NoInitializerCalls { + const NAME: &'static str = "NoInitializerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::a(_) => ::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 a(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(NoInitializerCalls::a) + } + a + }]; + 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::a(inner) => ::abi_encoded_size(inner), + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::a(inner) => ::abi_encode_raw(inner, out), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`NoInitializer`](self) contract instance. + + See the [wrapper's documentation](`NoInitializerInstance`) 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, + ) -> NoInitializerInstance { + NoInitializerInstance::::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, + _a: alloy::sol_types::private::primitives::aliases::U256, + ) -> impl ::core::future::Future>> + { + NoInitializerInstance::::deploy(provider, _a) + } + /**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, + _a: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::RawCallBuilder { + NoInitializerInstance::::deploy_builder(provider, _a) + } + /**A [`NoInitializer`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`NoInitializer`](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 NoInitializerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for NoInitializerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("NoInitializerInstance") + .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, + > NoInitializerInstance + { + /**Creates a new wrapper around an on-chain [`NoInitializer`](self) contract instance. + + See the [wrapper's documentation](`NoInitializerInstance`) 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, + _a: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _a); + 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, + _a: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { _a })[..], + ] + .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 NoInitializerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> NoInitializerInstance { + NoInitializerInstance { + 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, + > NoInitializerInstance + { + /// 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 [`a`] function. + pub fn a(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&aCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NoInitializerInstance + { + /// 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/middleware/operators.rs b/crates/utils/src/middleware/operators.rs new file mode 100644 index 00000000..d96937b3 --- /dev/null +++ b/crates/utils/src/middleware/operators.rs @@ -0,0 +1,8146 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface Operators { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + constructor(); + + function IS_TEST() external view returns (bool); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function getNumOperators() external view returns (uint256); + function getOperatorAddress(uint256 index) external view returns (address); + function getOperatorPubkeyG1(uint256 index) external view returns (BN254.G1Point memory); + function getOperatorPubkeyG2(uint256 index) external view returns (BN254.G2Point memory); + function getOperatorSchnorrSignature(uint256 index) external view returns (uint256, BN254.G1Point memory); + function getOperatorSecretKey(uint256 index) external view returns (uint256); + function operatorPrefix(uint256 index) external pure returns (string memory); + function readUint(string memory json, uint256 index, string memory key) external pure returns (uint256); + function setOperatorJsonFilePath(string memory filepath) external; + function stringToUint(string memory s) external pure returns (uint256); + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getNumOperators", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorAddress", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorPubkeyG1", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "getOperatorPubkeyG2", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorSchnorrSignature", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "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": "getOperatorSecretKey", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorPrefix", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "readUint", + "inputs": [ + { + "name": "json", + "type": "string", + "internalType": "string" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "key", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "setOperatorJsonFilePath", + "inputs": [ + { + "name": "filepath", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stringToUint", + "inputs": [ + { + "name": "s", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Operators { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260078054600160ff199182168117909255600b805490911690911790553480156200002e57600080fd5b506040516360f9bb1160e01b815260206004820152602360248201527f2e2f7372632f746573742f746573742d646174612f6f70657261746f72732e6a60448201526239b7b760e91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190608401600060405180830381865afa158015620000b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000e39190810190620001bc565b8051620000f991601c9160209091019062000100565b50620002d5565b8280546200010e9062000298565b90600052602060002090601f0160209004810192826200013257600085556200017d565b82601f106200014d57805160ff19168380011785556200017d565b828001600101855582156200017d579182015b828111156200017d57825182559160200191906001019062000160565b506200018b9291506200018f565b5090565b5b808211156200018b576000815560010162000190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620001d057600080fd5b82516001600160401b0380821115620001e857600080fd5b818501915085601f830112620001fd57600080fd5b815181811115620002125762000212620001a6565b604051601f8201601f19908116603f011681019083821181831017156200023d576200023d620001a6565b8160405282815288868487010111156200025657600080fd5b600093505b828410156200027a57848401860151818501870152928501926200025b565b828411156200028c5760008684830101525b98975050505050505050565b600181811c90821680620002ad57607f821691505b60208210811415620002cf57634e487b7160e01b600052602260045260246000fd5b50919050565b611ff580620002e56000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806389a0d40e116100b8578063bcac47191161007c578063bcac471914610274578063d22dc42814610294578063d989a591146102b4578063e20c9f71146102bc578063fa7626d4146102c4578063fd78c12d146102d157600080fd5b806389a0d40e14610217578063916a17c614610237578063b5508aa91461023f578063ba414fa614610247578063bbec6f121461025f57600080fd5b80633e5e3c23116100ff5780633e5e3c23146101ca5780633f7286f4146101d2578063643f0350146101da57806366d9a9a0146101ed57806385226c811461020257600080fd5b80630f870a381461013c57806316bcb72e1461016c5780631bd951551461018d5780631ed7831c146101a05780632ade3880146101b5575b600080fd5b61014f61014a366004611852565b6102f2565b6040516001600160a01b0390911681526020015b60405180910390f35b61017f61017a366004611930565b6103b5565b604051908152602001610163565b61017f61019b36600461199d565b6103f7565b6101a86104a7565b60405161016391906119da565b6101bd610509565b6040516101639190611a83565b6101a861064b565b6101a86106ab565b61017f6101e8366004611852565b61070b565b6101f56107c3565b6040516101639190611b43565b61020a6108a9565b6040516101639190611bf6565b61022a610225366004611852565b610979565b6040516101639190611c58565b6101f5610b16565b61020a610bfc565b61024f610ccc565b6040519015158152602001610163565b61027261026d36600461199d565b610df9565b005b610287610282366004611852565b610e8d565b6040516101639190611c6f565b6102a76102a2366004611852565b610f4b565b6040516101639190611ca5565b61017f61127b565b6101a861133b565b60075461024f9060ff1681565b6102e46102df366004611852565b61139b565b604051610163929190611cd1565b60006103af601c805461030490611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461033090611cef565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b505050505061038b84610e8d565b60405160200161039b9190611d2a565b6040516020818303038152906040526115fb565b92915050565b60006103ed61019b856103c786610e8d565b856040516020016103d9929190611d55565b604051602081830303815290604052611678565b90505b9392505050565b60008181805b825181101561049f57603083828151811061041a5761041a611d84565b016020015160f81c1080159061044a5750603983828151811061043f5761043f611d84565b016020015160f81c11155b1561048d57603083828151811061046357610463611d84565b0160200151610475919060f81c611db0565b61048083600a611dc7565b61048a9190611de6565b91505b8061049781611dfe565b9150506103fd565b509392505050565b606060148054806020026020016040519081016040528092919081815260200182805480156104ff57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104e1575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561064257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561062b57838290600052602060002001805461059e90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546105ca90611cef565b80156106175780601f106105ec57610100808354040283529160200191610617565b820191906000526020600020905b8154815290600101906020018083116105fa57829003601f168201915b50505050508152602001906001019061057f565b50505050815250508152602001906001019061052d565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156104ff576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104e1575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156104ff576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104e1575050505050905090565b60006103af601c805461071d90611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461074990611cef565b80156107965780601f1061076b57610100808354040283529160200191610796565b820191906000526020600020905b81548152906001019060200180831161077957829003601f168201915b505050505083604051806040016040528060098152602001685365637265744b657960b81b8152506103b5565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106425760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561089157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108535790505b505050505081525050815260200190600101906107e7565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156106425783829060005260206000200180546108ec90611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461091890611cef565b80156109655780601f1061093a57610100808354040283529160200191610965565b820191906000526020600020905b81548152906001019060200180831161094857829003601f168201915b5050505050815260200190600101906108cd565b604080518082019091526000808252602082015260006040518060400160405280610a51601c80546109aa90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546109d690611cef565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b5050505050866040518060400160405280600a8152602001690a0eac4d6caf28e625cb60b31b8152506103b5565b8152602001610b0d601c8054610a6690611cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9290611cef565b8015610adf5780601f10610ab457610100808354040283529160200191610adf565b820191906000526020600020905b815481529060010190602001808311610ac257829003601f168201915b5050505050866040518060400160405280600a8152602001695075626b657947312e5960b01b8152506103b5565b90529392505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106425760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610be457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ba65790505b50505050508152505081526020019060010190610b3a565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610642578382906000526020600020018054610c3f90611cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6b90611cef565b8015610cb85780601f10610c8d57610100808354040283529160200191610cb8565b820191906000526020600020905b815481529060010190602001808311610c9b57829003601f168201915b505050505081526020019060010190610c20565b600754600090610100900460ff1615610cee5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610df45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610d7c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611e19565b60408051601f1981840301815290829052610d9691611e4a565b6000604051808303816000865af19150503d8060008114610dd3576040519150601f19603f3d011682016040523d82523d6000602084013e610dd8565b606091505b5091505080806020019051810190610df09190611e66565b9150505b919050565b6040516360f9bb1160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610e30908490600401611c6f565b600060405180830381865afa158015610e4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e759190810190611e88565b8051610e8991601c91602090910190611776565b5050565b60405163348051d760e11b815260048101829052606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610ee0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f089190810190611e88565b604051602001610f189190611eff565b60408051601f1981840301815290829052610f3591602001611f25565b6040516020818303038152906040529050919050565b610f536117fa565b600060405180604001604052806040518060400160405280611025601c8054610f7b90611cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa790611cef565b8015610ff45780601f10610fc957610100808354040283529160200191610ff4565b820191906000526020600020905b815481529060010190602001808311610fd757829003601f168201915b5050505050886040518060400160405280600d81526020016c5075626b657947322e582e413160981b8152506103b5565b81526020016110e4601c805461103a90611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461106690611cef565b80156110b35780601f10611088576101008083540402835291602001916110b3565b820191906000526020600020905b81548152906001019060200180831161109657829003601f168201915b5050505050886040518060400160405280600d81526020016c05075626b657947322e582e413609c1b8152506103b5565b815250815260200160405180604001604052806111b1601c805461110790611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461113390611cef565b80156111805780601f1061115557610100808354040283529160200191611180565b820191906000526020600020905b81548152906001019060200180831161116357829003601f168201915b5050505050886040518060400160405280600d81526020016c5075626b657947322e592e413160981b8152506103b5565b8152602001611270601c80546111c690611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546111f290611cef565b801561123f5780601f106112145761010080835404028352916020019161123f565b820191906000526020600020905b81548152906001019060200180831161122257829003601f168201915b5050505050886040518060400160405280600d81526020016c05075626b657947322e592e413609c1b8152506103b5565b905290529392505050565b6000611336601c805461128d90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546112b990611cef565b80156113065780601f106112db57610100808354040283529160200191611306565b820191906000526020600020905b8154815290600101906020018083116112e957829003601f168201915b50505050506040518060400160405280600d81526020016c2e6e756d4f70657261746f727360981b8152506116f9565b905090565b606060138054806020026020016040519081016040528092919081815260200182805480156104ff576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104e1575050505050905090565b60006113ba604051806040016040528060008152602001600081525090565b600061146f601c80546113cc90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546113f890611cef565b80156114455780601f1061141a57610100808354040283529160200191611445565b820191906000526020600020905b81548152906001019060200180831161142857829003601f168201915b5050505050856040518060400160405280600681526020016514d19a595b1960d21b8152506103b5565b905060006040518060400160405280611533601c805461148e90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546114ba90611cef565b80156115075780601f106114dc57610100808354040283529160200191611507565b820191906000526020600020905b8154815290600101906020018083116114ea57829003601f168201915b505050505088604051806040016040528060088152602001670a4a0ded2dce85cb60c31b8152506103b5565b81526020016115ed601c805461154890611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461157490611cef565b80156115c15780601f10611596576101008083540402835291602001916115c1565b820191906000526020600020905b8154815290600101906020018083116115a457829003601f168201915b5050505050886040518060400160405280600881526020016752506f696e742e5960c01b8152506103b5565b905291959194509092505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e657906116379086908690600401611f58565b602060405180830381865afa158015611654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f09190611f7d565b6040516309389f5960e31b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906349c4fac8906116b49086908690600401611f58565b600060405180830381865afa1580156116d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103f09190810190611e88565b6040516356eef15b60e11b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063addde2b6906117359086908690600401611f58565b602060405180830381865afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f09190611fa6565b82805461178290611cef565b90600052602060002090601f0160209004810192826117a457600085556117ea565b82601f106117bd57805160ff19168380011785556117ea565b828001600101855582156117ea579182015b828111156117ea5782518255916020019190600101906117cf565b506117f692915061181f565b5090565b604051806040016040528061180d611834565b815260200161181a611834565b905290565b5b808211156117f65760008155600101611820565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561186457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118aa576118aa61186b565b604052919050565b600067ffffffffffffffff8211156118cc576118cc61186b565b50601f01601f191660200190565b600082601f8301126118eb57600080fd5b81356118fe6118f9826118b2565b611881565b81815284602083860101111561191357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561194557600080fd5b833567ffffffffffffffff8082111561195d57600080fd5b611969878388016118da565b945060208601359350604086013591508082111561198657600080fd5b50611993868287016118da565b9150509250925092565b6000602082840312156119af57600080fd5b813567ffffffffffffffff8111156119c657600080fd5b6119d2848285016118da565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611a1b5783516001600160a01b0316835292840192918401916001016119f6565b50909695505050505050565b60005b83811015611a42578181015183820152602001611a2a565b83811115611a51576000848401525b50505050565b60008151808452611a6f816020860160208601611a27565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015611b3357603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015611b1d57605f19898503018352611b0b848651611a57565b948e01949350918d0191600101611aef565b505050978a019794505091880191600101611aaa565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611be757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611bd25783516001600160e01b0319168252928b019260019290920191908b0190611ba8565b50978a01979550505091870191600101611b6b565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611c4b57603f19888603018452611c39858351611a57565b94509285019290850190600101611c1d565b5092979650505050505050565b8151815260208083015190820152604081016103af565b6020815260006103f06020830184611a57565b8060005b6002811015611a51578151845260209384019390910190600101611c86565b6000608082019050611cb8828451611c82565b6020830151611cca6040840182611c82565b5092915050565b828152606081016103f0602083018480518252602090810151910152565b600181811c90821680611d0357607f821691505b60208210811415611d2457634e487b7160e01b600052602260045260246000fd5b50919050565b60008251611d3c818460208701611a27565b664164647265737360c81b920191825250600701919050565b60008351611d67818460208801611a27565b835190830190611d7b818360208801611a27565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611dc257611dc2611d9a565b500390565b6000816000190483118215151615611de157611de1611d9a565b500290565b60008219821115611df957611df9611d9a565b500190565b6000600019821415611e1257611e12611d9a565b5060010190565b6001600160e01b0319831681528151600090611e3c816004850160208701611a27565b919091016004019392505050565b60008251611e5c818460208701611a27565b9190910192915050565b600060208284031215611e7857600080fd5b815180151581146103f057600080fd5b600060208284031215611e9a57600080fd5b815167ffffffffffffffff811115611eb157600080fd5b8201601f81018413611ec257600080fd5b8051611ed06118f9826118b2565b818152856020838501011115611ee557600080fd5b611ef6826020830160208601611a27565b95945050505050565b60008251611f11818460208701611a27565b612e9760f11b920191825250600201919050565b6a2e6f70657261746f72735b60a81b815260008251611f4b81600b850160208701611a27565b91909101600b0192915050565b604081526000611f6b6040830185611a57565b8281036020840152611ef68185611a57565b600060208284031215611f8f57600080fd5b81516001600160a01b03811681146103f057600080fd5b600060208284031215611fb857600080fd5b505191905056fea2646970667358221220bd29591dbd4b55fb8fb6fcad4d228b29e3cd62d44e5dcb560b0858988d2a2d4264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15b\0\0.W`\0\x80\xFD[P`@Qc`\xF9\xBB\x11`\xE0\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7F./src/test/test-data/operators.j`D\x82\x01Rb9\xB7\xB7`\xE9\x1B`d\x82\x01Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90`\x84\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xB9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\0\xE3\x91\x90\x81\x01\x90b\0\x01\xBCV[\x80Qb\0\0\xF9\x91`\x1C\x91` \x90\x91\x01\x90b\0\x01\0V[Pb\0\x02\xD5V[\x82\x80Tb\0\x01\x0E\x90b\0\x02\x98V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x012W`\0\x85Ub\0\x01}V[\x82`\x1F\x10b\0\x01MW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01}V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01}W\x91\x82\x01[\x82\x81\x11\x15b\0\x01}W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01`V[Pb\0\x01\x8B\x92\x91Pb\0\x01\x8FV[P\x90V[[\x80\x82\x11\x15b\0\x01\x8BW`\0\x81U`\x01\x01b\0\x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15b\0\x01\xD0W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12b\0\x01\xFDW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x02\x12Wb\0\x02\x12b\0\x01\xA6V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x02=Wb\0\x02=b\0\x01\xA6V[\x81`@R\x82\x81R\x88\x86\x84\x87\x01\x01\x11\x15b\0\x02VW`\0\x80\xFD[`\0\x93P[\x82\x84\x10\x15b\0\x02zW\x84\x84\x01\x86\x01Q\x81\x85\x01\x87\x01R\x92\x85\x01\x92b\0\x02[V[\x82\x84\x11\x15b\0\x02\x8CW`\0\x86\x84\x83\x01\x01R[\x98\x97PPPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xADW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x02\xCFWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\x1F\xF5\x80b\0\x02\xE5`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x017W`\x005`\xE0\x1C\x80c\x89\xA0\xD4\x0E\x11a\0\xB8W\x80c\xBC\xACG\x19\x11a\0|W\x80c\xBC\xACG\x19\x14a\x02tW\x80c\xD2-\xC4(\x14a\x02\x94W\x80c\xD9\x89\xA5\x91\x14a\x02\xB4W\x80c\xE2\x0C\x9Fq\x14a\x02\xBCW\x80c\xFAv&\xD4\x14a\x02\xC4W\x80c\xFDx\xC1-\x14a\x02\xD1W`\0\x80\xFD[\x80c\x89\xA0\xD4\x0E\x14a\x02\x17W\x80c\x91j\x17\xC6\x14a\x027W\x80c\xB5P\x8A\xA9\x14a\x02?W\x80c\xBAAO\xA6\x14a\x02GW\x80c\xBB\xECo\x12\x14a\x02_W`\0\x80\xFD[\x80c>^<#\x11a\0\xFFW\x80c>^<#\x14a\x01\xCAW\x80c?r\x86\xF4\x14a\x01\xD2W\x80cd?\x03P\x14a\x01\xDAW\x80cf\xD9\xA9\xA0\x14a\x01\xEDW\x80c\x85\"l\x81\x14a\x02\x02W`\0\x80\xFD[\x80c\x0F\x87\n8\x14a\x01a\r\xD8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\r\xF0\x91\x90a\x1EfV[\x91PP[\x91\x90PV[`@Qc`\xF9\xBB\x11`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90a\x0E0\x90\x84\x90`\x04\x01a\x1CoV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EMW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0Eu\x91\x90\x81\x01\x90a\x1E\x88V[\x80Qa\x0E\x89\x91`\x1C\x91` \x90\x91\x01\x90a\x17vV[PPV[`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R``\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\xE0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x08\x91\x90\x81\x01\x90a\x1E\x88V[`@Q` \x01a\x0F\x18\x91\x90a\x1E\xFFV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F5\x91` \x01a\x1F%V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[a\x0FSa\x17\xFAV[`\0`@Q\x80`@\x01`@R\x80`@Q\x80`@\x01`@R\x80a\x10%`\x1C\x80Ta\x0F{\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F\xA7\x90a\x1C\xEFV[\x80\x15a\x0F\xF4W\x80`\x1F\x10a\x0F\xC9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\xF4V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0F\xD7W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\r\x81R` \x01lPubkeyG2.X.A1`\x98\x1B\x81RPa\x03\xB5V[\x81R` \x01a\x10\xE4`\x1C\x80Ta\x10:\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10f\x90a\x1C\xEFV[\x80\x15a\x10\xB3W\x80`\x1F\x10a\x10\x88Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10\xB3V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\x96W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l\x05\x07V&\xB6W\x94s\"\xE5\x82\xE4\x13`\x9C\x1B\x81RPa\x03\xB5V[\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80a\x11\xB1`\x1C\x80Ta\x11\x07\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x113\x90a\x1C\xEFV[\x80\x15a\x11\x80W\x80`\x1F\x10a\x11UWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\x80V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x11cW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\r\x81R` \x01lPubkeyG2.Y.A1`\x98\x1B\x81RPa\x03\xB5V[\x81R` \x01a\x12p`\x1C\x80Ta\x11\xC6\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x11\xF2\x90a\x1C\xEFV[\x80\x15a\x12?W\x80`\x1F\x10a\x12\x14Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x12?V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x12\"W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l\x05\x07V&\xB6W\x94s\"\xE5\x92\xE4\x13`\x9C\x1B\x81RPa\x03\xB5V[\x90R\x90R\x93\x92PPPV[`\0a\x136`\x1C\x80Ta\x12\x8D\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x12\xB9\x90a\x1C\xEFV[\x80\x15a\x13\x06W\x80`\x1F\x10a\x12\xDBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x13\x06V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x12\xE9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l.numOperators`\x98\x1B\x81RPa\x16\xF9V[\x90P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xFFW` \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\x04\xE1WPPPPP\x90P\x90V[`\0a\x13\xBA`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[`\0a\x14o`\x1C\x80Ta\x13\xCC\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x13\xF8\x90a\x1C\xEFV[\x80\x15a\x14EW\x80`\x1F\x10a\x14\x1AWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14(W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x85`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01e\x14\xD1\x9AY[\x19`\xD2\x1B\x81RPa\x03\xB5V[\x90P`\0`@Q\x80`@\x01`@R\x80a\x153`\x1C\x80Ta\x14\x8E\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14\xBA\x90a\x1C\xEFV[\x80\x15a\x15\x07W\x80`\x1F\x10a\x14\xDCWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x15\x07V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\xEAW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\nJ\r\xED-\xCE\x85\xCB`\xC3\x1B\x81RPa\x03\xB5V[\x81R` \x01a\x15\xED`\x1C\x80Ta\x15H\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15t\x90a\x1C\xEFV[\x80\x15a\x15\xC1W\x80`\x1F\x10a\x15\x96Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x15\xC1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x15\xA4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01gRPoint.Y`\xC0\x1B\x81RPa\x03\xB5V[\x90R\x91\x95\x91\x94P\x90\x92PPPV[`@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\x167\x90\x86\x90\x86\x90`\x04\x01a\x1FXV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16TW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xF0\x91\x90a\x1F}V[`@Qc\t8\x9FY`\xE3\x1B\x81R``\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cI\xC4\xFA\xC8\x90a\x16\xB4\x90\x86\x90\x86\x90`\x04\x01a\x1FXV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\xF0\x91\x90\x81\x01\x90a\x1E\x88V[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xAD\xDD\xE2\xB6\x90a\x175\x90\x86\x90\x86\x90`\x04\x01a\x1FXV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xF0\x91\x90a\x1F\xA6V[\x82\x80Ta\x17\x82\x90a\x1C\xEFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x17\xA4W`\0\x85Ua\x17\xEAV[\x82`\x1F\x10a\x17\xBDW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x17\xEAV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x17\xEAW\x91\x82\x01[\x82\x81\x11\x15a\x17\xEAW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x17\xCFV[Pa\x17\xF6\x92\x91Pa\x18\x1FV[P\x90V[`@Q\x80`@\x01`@R\x80a\x18\ra\x184V[\x81R` \x01a\x18\x1Aa\x184V[\x90R\x90V[[\x80\x82\x11\x15a\x17\xF6W`\0\x81U`\x01\x01a\x18 V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x18dW`\0\x80\xFD[P5\x91\x90PV[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\x18\xAAWa\x18\xAAa\x18kV[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x18\xCCWa\x18\xCCa\x18kV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x18\xEBW`\0\x80\xFD[\x815a\x18\xFEa\x18\xF9\x82a\x18\xB2V[a\x18\x81V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x19\x13W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x19EW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19]W`\0\x80\xFD[a\x19i\x87\x83\x88\x01a\x18\xDAV[\x94P` \x86\x015\x93P`@\x86\x015\x91P\x80\x82\x11\x15a\x19\x86W`\0\x80\xFD[Pa\x19\x93\x86\x82\x87\x01a\x18\xDAV[\x91PP\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x19\xAFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xC6W`\0\x80\xFD[a\x19\xD2\x84\x82\x85\x01a\x18\xDAV[\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\x1A\x1BW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x19\xF6V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x1ABW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1A*V[\x83\x81\x11\x15a\x1AQW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\x1Ao\x81` \x86\x01` \x86\x01a\x1A'V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x1B3W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x1B\x1DW`_\x19\x89\x85\x03\x01\x83Ra\x1B\x0B\x84\x86Qa\x1AWV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x1A\xEFV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x1A\xAAV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x1B\xE7W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1B\xD2W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x1B\xA8V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1BkV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x1CKW`?\x19\x88\x86\x03\x01\x84Ra\x1C9\x85\x83Qa\x1AWV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1C\x1DV[P\x92\x97\x96PPPPPPPV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x03\xAFV[` \x81R`\0a\x03\xF0` \x83\x01\x84a\x1AWV[\x80`\0[`\x02\x81\x10\x15a\x1AQW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a\x1C\x86V[`\0`\x80\x82\x01\x90Pa\x1C\xB8\x82\x84Qa\x1C\x82V[` \x83\x01Qa\x1C\xCA`@\x84\x01\x82a\x1C\x82V[P\x92\x91PPV[\x82\x81R``\x81\x01a\x03\xF0` \x83\x01\x84\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x1D\x03W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x1D$WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82Qa\x1D<\x81\x84` \x87\x01a\x1A'V[fAddress`\xC8\x1B\x92\x01\x91\x82RP`\x07\x01\x91\x90PV[`\0\x83Qa\x1Dg\x81\x84` \x88\x01a\x1A'V[\x83Q\x90\x83\x01\x90a\x1D{\x81\x83` \x88\x01a\x1A'V[\x01\x94\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a\x1D\xC2Wa\x1D\xC2a\x1D\x9AV[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1D\xE1Wa\x1D\xE1a\x1D\x9AV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1D\xF9Wa\x1D\xF9a\x1D\x9AV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\x12Wa\x1E\x12a\x1D\x9AV[P`\x01\x01\x90V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x1E<\x81`\x04\x85\x01` \x87\x01a\x1A'V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x1E\\\x81\x84` \x87\x01a\x1A'V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x1ExW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x03\xF0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1E\x9AW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xB1W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x1E\xC2W`\0\x80\xFD[\x80Qa\x1E\xD0a\x18\xF9\x82a\x18\xB2V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a\x1E\xE5W`\0\x80\xFD[a\x1E\xF6\x82` \x83\x01` \x86\x01a\x1A'V[\x95\x94PPPPPV[`\0\x82Qa\x1F\x11\x81\x84` \x87\x01a\x1A'V[a.\x97`\xF1\x1B\x92\x01\x91\x82RP`\x02\x01\x91\x90PV[j.operators[`\xA8\x1B\x81R`\0\x82Qa\x1FK\x81`\x0B\x85\x01` \x87\x01a\x1A'V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[`@\x81R`\0a\x1Fk`@\x83\x01\x85a\x1AWV[\x82\x81\x03` \x84\x01Ra\x1E\xF6\x81\x85a\x1AWV[`\0` \x82\x84\x03\x12\x15a\x1F\x8FW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xF0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1F\xB8W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xBD)Y\x1D\xBDKU\xFB\x8F\xB6\xFC\xADM\"\x8B)\xE3\xCDb\xD4N]\xCBV\x0B\x08X\x98\x8D*-BdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101375760003560e01c806389a0d40e116100b8578063bcac47191161007c578063bcac471914610274578063d22dc42814610294578063d989a591146102b4578063e20c9f71146102bc578063fa7626d4146102c4578063fd78c12d146102d157600080fd5b806389a0d40e14610217578063916a17c614610237578063b5508aa91461023f578063ba414fa614610247578063bbec6f121461025f57600080fd5b80633e5e3c23116100ff5780633e5e3c23146101ca5780633f7286f4146101d2578063643f0350146101da57806366d9a9a0146101ed57806385226c811461020257600080fd5b80630f870a381461013c57806316bcb72e1461016c5780631bd951551461018d5780631ed7831c146101a05780632ade3880146101b5575b600080fd5b61014f61014a366004611852565b6102f2565b6040516001600160a01b0390911681526020015b60405180910390f35b61017f61017a366004611930565b6103b5565b604051908152602001610163565b61017f61019b36600461199d565b6103f7565b6101a86104a7565b60405161016391906119da565b6101bd610509565b6040516101639190611a83565b6101a861064b565b6101a86106ab565b61017f6101e8366004611852565b61070b565b6101f56107c3565b6040516101639190611b43565b61020a6108a9565b6040516101639190611bf6565b61022a610225366004611852565b610979565b6040516101639190611c58565b6101f5610b16565b61020a610bfc565b61024f610ccc565b6040519015158152602001610163565b61027261026d36600461199d565b610df9565b005b610287610282366004611852565b610e8d565b6040516101639190611c6f565b6102a76102a2366004611852565b610f4b565b6040516101639190611ca5565b61017f61127b565b6101a861133b565b60075461024f9060ff1681565b6102e46102df366004611852565b61139b565b604051610163929190611cd1565b60006103af601c805461030490611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461033090611cef565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b505050505061038b84610e8d565b60405160200161039b9190611d2a565b6040516020818303038152906040526115fb565b92915050565b60006103ed61019b856103c786610e8d565b856040516020016103d9929190611d55565b604051602081830303815290604052611678565b90505b9392505050565b60008181805b825181101561049f57603083828151811061041a5761041a611d84565b016020015160f81c1080159061044a5750603983828151811061043f5761043f611d84565b016020015160f81c11155b1561048d57603083828151811061046357610463611d84565b0160200151610475919060f81c611db0565b61048083600a611dc7565b61048a9190611de6565b91505b8061049781611dfe565b9150506103fd565b509392505050565b606060148054806020026020016040519081016040528092919081815260200182805480156104ff57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104e1575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561064257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561062b57838290600052602060002001805461059e90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546105ca90611cef565b80156106175780601f106105ec57610100808354040283529160200191610617565b820191906000526020600020905b8154815290600101906020018083116105fa57829003601f168201915b50505050508152602001906001019061057f565b50505050815250508152602001906001019061052d565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156104ff576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104e1575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156104ff576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104e1575050505050905090565b60006103af601c805461071d90611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461074990611cef565b80156107965780601f1061076b57610100808354040283529160200191610796565b820191906000526020600020905b81548152906001019060200180831161077957829003601f168201915b505050505083604051806040016040528060098152602001685365637265744b657960b81b8152506103b5565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106425760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561089157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108535790505b505050505081525050815260200190600101906107e7565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156106425783829060005260206000200180546108ec90611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461091890611cef565b80156109655780601f1061093a57610100808354040283529160200191610965565b820191906000526020600020905b81548152906001019060200180831161094857829003601f168201915b5050505050815260200190600101906108cd565b604080518082019091526000808252602082015260006040518060400160405280610a51601c80546109aa90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546109d690611cef565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b5050505050866040518060400160405280600a8152602001690a0eac4d6caf28e625cb60b31b8152506103b5565b8152602001610b0d601c8054610a6690611cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9290611cef565b8015610adf5780601f10610ab457610100808354040283529160200191610adf565b820191906000526020600020905b815481529060010190602001808311610ac257829003601f168201915b5050505050866040518060400160405280600a8152602001695075626b657947312e5960b01b8152506103b5565b90529392505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106425760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610be457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ba65790505b50505050508152505081526020019060010190610b3a565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610642578382906000526020600020018054610c3f90611cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6b90611cef565b8015610cb85780601f10610c8d57610100808354040283529160200191610cb8565b820191906000526020600020905b815481529060010190602001808311610c9b57829003601f168201915b505050505081526020019060010190610c20565b600754600090610100900460ff1615610cee5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610df45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610d7c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611e19565b60408051601f1981840301815290829052610d9691611e4a565b6000604051808303816000865af19150503d8060008114610dd3576040519150601f19603f3d011682016040523d82523d6000602084013e610dd8565b606091505b5091505080806020019051810190610df09190611e66565b9150505b919050565b6040516360f9bb1160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610e30908490600401611c6f565b600060405180830381865afa158015610e4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e759190810190611e88565b8051610e8991601c91602090910190611776565b5050565b60405163348051d760e11b815260048101829052606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610ee0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f089190810190611e88565b604051602001610f189190611eff565b60408051601f1981840301815290829052610f3591602001611f25565b6040516020818303038152906040529050919050565b610f536117fa565b600060405180604001604052806040518060400160405280611025601c8054610f7b90611cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa790611cef565b8015610ff45780601f10610fc957610100808354040283529160200191610ff4565b820191906000526020600020905b815481529060010190602001808311610fd757829003601f168201915b5050505050886040518060400160405280600d81526020016c5075626b657947322e582e413160981b8152506103b5565b81526020016110e4601c805461103a90611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461106690611cef565b80156110b35780601f10611088576101008083540402835291602001916110b3565b820191906000526020600020905b81548152906001019060200180831161109657829003601f168201915b5050505050886040518060400160405280600d81526020016c05075626b657947322e582e413609c1b8152506103b5565b815250815260200160405180604001604052806111b1601c805461110790611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461113390611cef565b80156111805780601f1061115557610100808354040283529160200191611180565b820191906000526020600020905b81548152906001019060200180831161116357829003601f168201915b5050505050886040518060400160405280600d81526020016c5075626b657947322e592e413160981b8152506103b5565b8152602001611270601c80546111c690611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546111f290611cef565b801561123f5780601f106112145761010080835404028352916020019161123f565b820191906000526020600020905b81548152906001019060200180831161122257829003601f168201915b5050505050886040518060400160405280600d81526020016c05075626b657947322e592e413609c1b8152506103b5565b905290529392505050565b6000611336601c805461128d90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546112b990611cef565b80156113065780601f106112db57610100808354040283529160200191611306565b820191906000526020600020905b8154815290600101906020018083116112e957829003601f168201915b50505050506040518060400160405280600d81526020016c2e6e756d4f70657261746f727360981b8152506116f9565b905090565b606060138054806020026020016040519081016040528092919081815260200182805480156104ff576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104e1575050505050905090565b60006113ba604051806040016040528060008152602001600081525090565b600061146f601c80546113cc90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546113f890611cef565b80156114455780601f1061141a57610100808354040283529160200191611445565b820191906000526020600020905b81548152906001019060200180831161142857829003601f168201915b5050505050856040518060400160405280600681526020016514d19a595b1960d21b8152506103b5565b905060006040518060400160405280611533601c805461148e90611cef565b80601f01602080910402602001604051908101604052809291908181526020018280546114ba90611cef565b80156115075780601f106114dc57610100808354040283529160200191611507565b820191906000526020600020905b8154815290600101906020018083116114ea57829003601f168201915b505050505088604051806040016040528060088152602001670a4a0ded2dce85cb60c31b8152506103b5565b81526020016115ed601c805461154890611cef565b80601f016020809104026020016040519081016040528092919081815260200182805461157490611cef565b80156115c15780601f10611596576101008083540402835291602001916115c1565b820191906000526020600020905b8154815290600101906020018083116115a457829003601f168201915b5050505050886040518060400160405280600881526020016752506f696e742e5960c01b8152506103b5565b905291959194509092505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e657906116379086908690600401611f58565b602060405180830381865afa158015611654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f09190611f7d565b6040516309389f5960e31b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906349c4fac8906116b49086908690600401611f58565b600060405180830381865afa1580156116d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103f09190810190611e88565b6040516356eef15b60e11b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063addde2b6906117359086908690600401611f58565b602060405180830381865afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f09190611fa6565b82805461178290611cef565b90600052602060002090601f0160209004810192826117a457600085556117ea565b82601f106117bd57805160ff19168380011785556117ea565b828001600101855582156117ea579182015b828111156117ea5782518255916020019190600101906117cf565b506117f692915061181f565b5090565b604051806040016040528061180d611834565b815260200161181a611834565b905290565b5b808211156117f65760008155600101611820565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561186457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118aa576118aa61186b565b604052919050565b600067ffffffffffffffff8211156118cc576118cc61186b565b50601f01601f191660200190565b600082601f8301126118eb57600080fd5b81356118fe6118f9826118b2565b611881565b81815284602083860101111561191357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561194557600080fd5b833567ffffffffffffffff8082111561195d57600080fd5b611969878388016118da565b945060208601359350604086013591508082111561198657600080fd5b50611993868287016118da565b9150509250925092565b6000602082840312156119af57600080fd5b813567ffffffffffffffff8111156119c657600080fd5b6119d2848285016118da565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611a1b5783516001600160a01b0316835292840192918401916001016119f6565b50909695505050505050565b60005b83811015611a42578181015183820152602001611a2a565b83811115611a51576000848401525b50505050565b60008151808452611a6f816020860160208601611a27565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015611b3357603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015611b1d57605f19898503018352611b0b848651611a57565b948e01949350918d0191600101611aef565b505050978a019794505091880191600101611aaa565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611be757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611bd25783516001600160e01b0319168252928b019260019290920191908b0190611ba8565b50978a01979550505091870191600101611b6b565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611c4b57603f19888603018452611c39858351611a57565b94509285019290850190600101611c1d565b5092979650505050505050565b8151815260208083015190820152604081016103af565b6020815260006103f06020830184611a57565b8060005b6002811015611a51578151845260209384019390910190600101611c86565b6000608082019050611cb8828451611c82565b6020830151611cca6040840182611c82565b5092915050565b828152606081016103f0602083018480518252602090810151910152565b600181811c90821680611d0357607f821691505b60208210811415611d2457634e487b7160e01b600052602260045260246000fd5b50919050565b60008251611d3c818460208701611a27565b664164647265737360c81b920191825250600701919050565b60008351611d67818460208801611a27565b835190830190611d7b818360208801611a27565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611dc257611dc2611d9a565b500390565b6000816000190483118215151615611de157611de1611d9a565b500290565b60008219821115611df957611df9611d9a565b500190565b6000600019821415611e1257611e12611d9a565b5060010190565b6001600160e01b0319831681528151600090611e3c816004850160208701611a27565b919091016004019392505050565b60008251611e5c818460208701611a27565b9190910192915050565b600060208284031215611e7857600080fd5b815180151581146103f057600080fd5b600060208284031215611e9a57600080fd5b815167ffffffffffffffff811115611eb157600080fd5b8201601f81018413611ec257600080fd5b8051611ed06118f9826118b2565b818152856020838501011115611ee557600080fd5b611ef6826020830160208601611a27565b95945050505050565b60008251611f11818460208701611a27565b612e9760f11b920191825250600201919050565b6a2e6f70657261746f72735b60a81b815260008251611f4b81600b850160208701611a27565b91909101600b0192915050565b604081526000611f6b6040830185611a57565b8281036020840152611ef68185611a57565b600060208284031215611f8f57600080fd5b81516001600160a01b03811681146103f057600080fd5b600060208284031215611fb857600080fd5b505191905056fea2646970667358221220bd29591dbd4b55fb8fb6fcad4d228b29e3cd62d44e5dcb560b0858988d2a2d4264736f6c634300080c0033 + /// ``` + #[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\x89\xA0\xD4\x0E\x11a\0\xB8W\x80c\xBC\xACG\x19\x11a\0|W\x80c\xBC\xACG\x19\x14a\x02tW\x80c\xD2-\xC4(\x14a\x02\x94W\x80c\xD9\x89\xA5\x91\x14a\x02\xB4W\x80c\xE2\x0C\x9Fq\x14a\x02\xBCW\x80c\xFAv&\xD4\x14a\x02\xC4W\x80c\xFDx\xC1-\x14a\x02\xD1W`\0\x80\xFD[\x80c\x89\xA0\xD4\x0E\x14a\x02\x17W\x80c\x91j\x17\xC6\x14a\x027W\x80c\xB5P\x8A\xA9\x14a\x02?W\x80c\xBAAO\xA6\x14a\x02GW\x80c\xBB\xECo\x12\x14a\x02_W`\0\x80\xFD[\x80c>^<#\x11a\0\xFFW\x80c>^<#\x14a\x01\xCAW\x80c?r\x86\xF4\x14a\x01\xD2W\x80cd?\x03P\x14a\x01\xDAW\x80cf\xD9\xA9\xA0\x14a\x01\xEDW\x80c\x85\"l\x81\x14a\x02\x02W`\0\x80\xFD[\x80c\x0F\x87\n8\x14a\x01a\r\xD8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\r\xF0\x91\x90a\x1EfV[\x91PP[\x91\x90PV[`@Qc`\xF9\xBB\x11`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90a\x0E0\x90\x84\x90`\x04\x01a\x1CoV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EMW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0Eu\x91\x90\x81\x01\x90a\x1E\x88V[\x80Qa\x0E\x89\x91`\x1C\x91` \x90\x91\x01\x90a\x17vV[PPV[`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R``\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\xE0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x08\x91\x90\x81\x01\x90a\x1E\x88V[`@Q` \x01a\x0F\x18\x91\x90a\x1E\xFFV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F5\x91` \x01a\x1F%V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[a\x0FSa\x17\xFAV[`\0`@Q\x80`@\x01`@R\x80`@Q\x80`@\x01`@R\x80a\x10%`\x1C\x80Ta\x0F{\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F\xA7\x90a\x1C\xEFV[\x80\x15a\x0F\xF4W\x80`\x1F\x10a\x0F\xC9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\xF4V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0F\xD7W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\r\x81R` \x01lPubkeyG2.X.A1`\x98\x1B\x81RPa\x03\xB5V[\x81R` \x01a\x10\xE4`\x1C\x80Ta\x10:\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10f\x90a\x1C\xEFV[\x80\x15a\x10\xB3W\x80`\x1F\x10a\x10\x88Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10\xB3V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\x96W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l\x05\x07V&\xB6W\x94s\"\xE5\x82\xE4\x13`\x9C\x1B\x81RPa\x03\xB5V[\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80a\x11\xB1`\x1C\x80Ta\x11\x07\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x113\x90a\x1C\xEFV[\x80\x15a\x11\x80W\x80`\x1F\x10a\x11UWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\x80V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x11cW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\r\x81R` \x01lPubkeyG2.Y.A1`\x98\x1B\x81RPa\x03\xB5V[\x81R` \x01a\x12p`\x1C\x80Ta\x11\xC6\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x11\xF2\x90a\x1C\xEFV[\x80\x15a\x12?W\x80`\x1F\x10a\x12\x14Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x12?V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x12\"W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l\x05\x07V&\xB6W\x94s\"\xE5\x92\xE4\x13`\x9C\x1B\x81RPa\x03\xB5V[\x90R\x90R\x93\x92PPPV[`\0a\x136`\x1C\x80Ta\x12\x8D\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x12\xB9\x90a\x1C\xEFV[\x80\x15a\x13\x06W\x80`\x1F\x10a\x12\xDBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x13\x06V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x12\xE9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l.numOperators`\x98\x1B\x81RPa\x16\xF9V[\x90P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xFFW` \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\x04\xE1WPPPPP\x90P\x90V[`\0a\x13\xBA`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[`\0a\x14o`\x1C\x80Ta\x13\xCC\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x13\xF8\x90a\x1C\xEFV[\x80\x15a\x14EW\x80`\x1F\x10a\x14\x1AWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14(W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x85`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01e\x14\xD1\x9AY[\x19`\xD2\x1B\x81RPa\x03\xB5V[\x90P`\0`@Q\x80`@\x01`@R\x80a\x153`\x1C\x80Ta\x14\x8E\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14\xBA\x90a\x1C\xEFV[\x80\x15a\x15\x07W\x80`\x1F\x10a\x14\xDCWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x15\x07V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\xEAW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\nJ\r\xED-\xCE\x85\xCB`\xC3\x1B\x81RPa\x03\xB5V[\x81R` \x01a\x15\xED`\x1C\x80Ta\x15H\x90a\x1C\xEFV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15t\x90a\x1C\xEFV[\x80\x15a\x15\xC1W\x80`\x1F\x10a\x15\x96Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x15\xC1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x15\xA4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x88`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01gRPoint.Y`\xC0\x1B\x81RPa\x03\xB5V[\x90R\x91\x95\x91\x94P\x90\x92PPPV[`@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\x167\x90\x86\x90\x86\x90`\x04\x01a\x1FXV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16TW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xF0\x91\x90a\x1F}V[`@Qc\t8\x9FY`\xE3\x1B\x81R``\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cI\xC4\xFA\xC8\x90a\x16\xB4\x90\x86\x90\x86\x90`\x04\x01a\x1FXV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\xF0\x91\x90\x81\x01\x90a\x1E\x88V[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xAD\xDD\xE2\xB6\x90a\x175\x90\x86\x90\x86\x90`\x04\x01a\x1FXV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xF0\x91\x90a\x1F\xA6V[\x82\x80Ta\x17\x82\x90a\x1C\xEFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x17\xA4W`\0\x85Ua\x17\xEAV[\x82`\x1F\x10a\x17\xBDW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x17\xEAV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x17\xEAW\x91\x82\x01[\x82\x81\x11\x15a\x17\xEAW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x17\xCFV[Pa\x17\xF6\x92\x91Pa\x18\x1FV[P\x90V[`@Q\x80`@\x01`@R\x80a\x18\ra\x184V[\x81R` \x01a\x18\x1Aa\x184V[\x90R\x90V[[\x80\x82\x11\x15a\x17\xF6W`\0\x81U`\x01\x01a\x18 V[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x18dW`\0\x80\xFD[P5\x91\x90PV[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\x18\xAAWa\x18\xAAa\x18kV[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x18\xCCWa\x18\xCCa\x18kV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x18\xEBW`\0\x80\xFD[\x815a\x18\xFEa\x18\xF9\x82a\x18\xB2V[a\x18\x81V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x19\x13W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x19EW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19]W`\0\x80\xFD[a\x19i\x87\x83\x88\x01a\x18\xDAV[\x94P` \x86\x015\x93P`@\x86\x015\x91P\x80\x82\x11\x15a\x19\x86W`\0\x80\xFD[Pa\x19\x93\x86\x82\x87\x01a\x18\xDAV[\x91PP\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x19\xAFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xC6W`\0\x80\xFD[a\x19\xD2\x84\x82\x85\x01a\x18\xDAV[\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\x1A\x1BW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x19\xF6V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\x1ABW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1A*V[\x83\x81\x11\x15a\x1AQW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\x1Ao\x81` \x86\x01` \x86\x01a\x1A'V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x1B3W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x1B\x1DW`_\x19\x89\x85\x03\x01\x83Ra\x1B\x0B\x84\x86Qa\x1AWV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x1A\xEFV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x1A\xAAV[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x1B\xE7W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1B\xD2W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x1B\xA8V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1BkV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x1CKW`?\x19\x88\x86\x03\x01\x84Ra\x1C9\x85\x83Qa\x1AWV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1C\x1DV[P\x92\x97\x96PPPPPPPV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x03\xAFV[` \x81R`\0a\x03\xF0` \x83\x01\x84a\x1AWV[\x80`\0[`\x02\x81\x10\x15a\x1AQW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a\x1C\x86V[`\0`\x80\x82\x01\x90Pa\x1C\xB8\x82\x84Qa\x1C\x82V[` \x83\x01Qa\x1C\xCA`@\x84\x01\x82a\x1C\x82V[P\x92\x91PPV[\x82\x81R``\x81\x01a\x03\xF0` \x83\x01\x84\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x1D\x03W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x1D$WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82Qa\x1D<\x81\x84` \x87\x01a\x1A'V[fAddress`\xC8\x1B\x92\x01\x91\x82RP`\x07\x01\x91\x90PV[`\0\x83Qa\x1Dg\x81\x84` \x88\x01a\x1A'V[\x83Q\x90\x83\x01\x90a\x1D{\x81\x83` \x88\x01a\x1A'V[\x01\x94\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a\x1D\xC2Wa\x1D\xC2a\x1D\x9AV[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1D\xE1Wa\x1D\xE1a\x1D\x9AV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1D\xF9Wa\x1D\xF9a\x1D\x9AV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E\x12Wa\x1E\x12a\x1D\x9AV[P`\x01\x01\x90V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x1E<\x81`\x04\x85\x01` \x87\x01a\x1A'V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x1E\\\x81\x84` \x87\x01a\x1A'V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x1ExW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x03\xF0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1E\x9AW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xB1W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x1E\xC2W`\0\x80\xFD[\x80Qa\x1E\xD0a\x18\xF9\x82a\x18\xB2V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a\x1E\xE5W`\0\x80\xFD[a\x1E\xF6\x82` \x83\x01` \x86\x01a\x1A'V[\x95\x94PPPPPV[`\0\x82Qa\x1F\x11\x81\x84` \x87\x01a\x1A'V[a.\x97`\xF1\x1B\x92\x01\x91\x82RP`\x02\x01\x91\x90PV[j.operators[`\xA8\x1B\x81R`\0\x82Qa\x1FK\x81`\x0B\x85\x01` \x87\x01a\x1A'V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[`@\x81R`\0a\x1Fk`@\x83\x01\x85a\x1AWV[\x82\x81\x03` \x84\x01Ra\x1E\xF6\x81\x85a\x1AWV[`\0` \x82\x84\x03\x12\x15a\x1F\x8FW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xF0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1F\xB8W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xBD)Y\x1D\xBDKU\xFB\x8F\xB6\xFC\xADM\"\x8B)\xE3\xCDb\xD4N]\xCBV\x0B\x08X\x98\x8D*-BdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall {} + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (); + 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<'_> { + () + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `getNumOperators()` and selector `0xd989a591`. + ```solidity + function getNumOperators() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getNumOperatorsCall {} + ///Container type for the return parameters of the [`getNumOperators()`](getNumOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getNumOperatorsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getNumOperatorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getNumOperatorsCall { + 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: getNumOperatorsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getNumOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getNumOperatorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getNumOperatorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getNumOperators()"; + const SELECTOR: [u8; 4] = [217u8, 137u8, 165u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorAddress(uint256)` and selector `0x0f870a38`. + ```solidity + function getOperatorAddress(uint256 index) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorAddressCall { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOperatorAddress(uint256)`](getOperatorAddressCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorAddressReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getOperatorAddressCall) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorAddressCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: 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: getOperatorAddressReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorAddressReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorAddressCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorAddressReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorAddress(uint256)"; + const SELECTOR: [u8; 4] = [15u8, 135u8, 10u8, 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.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 `getOperatorPubkeyG1(uint256)` and selector `0x89a0d40e`. + ```solidity + function getOperatorPubkeyG1(uint256 index) external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorPubkeyG1Call { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOperatorPubkeyG1(uint256)`](getOperatorPubkeyG1Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorPubkeyG1Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getOperatorPubkeyG1Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorPubkeyG1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: 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: getOperatorPubkeyG1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorPubkeyG1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorPubkeyG1Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorPubkeyG1Return; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorPubkeyG1(uint256)"; + const SELECTOR: [u8; 4] = [137u8, 160u8, 212u8, 14u8]; + #[inline] + fn new<'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 `getOperatorPubkeyG2(uint256)` and selector `0xd22dc428`. + ```solidity + function getOperatorPubkeyG2(uint256 index) external view returns (BN254.G2Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorPubkeyG2Call { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOperatorPubkeyG2(uint256)`](getOperatorPubkeyG2Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorPubkeyG2Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getOperatorPubkeyG2Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorPubkeyG2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G2Point,); + #[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: getOperatorPubkeyG2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorPubkeyG2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorPubkeyG2Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorPubkeyG2Return; + type ReturnTuple<'a> = (BN254::G2Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorPubkeyG2(uint256)"; + const SELECTOR: [u8; 4] = [210u8, 45u8, 196u8, 40u8]; + #[inline] + fn new<'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 `getOperatorSchnorrSignature(uint256)` and selector `0xfd78c12d`. + ```solidity + function getOperatorSchnorrSignature(uint256 index) external view returns (uint256, BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSchnorrSignatureCall { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOperatorSchnorrSignature(uint256)`](getOperatorSchnorrSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSchnorrSignatureReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + pub _1: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getOperatorSchnorrSignatureCall) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSchnorrSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>, BN254::G1Point); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + 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: getOperatorSchnorrSignatureReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSchnorrSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSchnorrSignatureCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSchnorrSignatureReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>, BN254::G1Point); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorSchnorrSignature(uint256)"; + const SELECTOR: [u8; 4] = [253u8, 120u8, 193u8, 45u8]; + #[inline] + fn new<'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 `getOperatorSecretKey(uint256)` and selector `0x643f0350`. + ```solidity + function getOperatorSecretKey(uint256 index) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSecretKeyCall { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOperatorSecretKey(uint256)`](getOperatorSecretKeyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSecretKeyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getOperatorSecretKeyCall) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSecretKeyCall { + 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: getOperatorSecretKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSecretKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSecretKeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSecretKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorSecretKey(uint256)"; + const SELECTOR: [u8; 4] = [100u8, 63u8, 3u8, 80u8]; + #[inline] + fn new<'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 `operatorPrefix(uint256)` and selector `0xbcac4719`. + ```solidity + function operatorPrefix(uint256 index) external pure returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorPrefixCall { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`operatorPrefix(uint256)`](operatorPrefixCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorPrefixReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: operatorPrefixCall) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorPrefixCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: 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: operatorPrefixReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorPrefixReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorPrefixCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorPrefixReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorPrefix(uint256)"; + const SELECTOR: [u8; 4] = [188u8, 172u8, 71u8, 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.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 `readUint(string,uint256,string)` and selector `0x16bcb72e`. + ```solidity + function readUint(string memory json, uint256 index, string memory key) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct readUintCall { + pub json: alloy::sol_types::private::String, + pub index: alloy::sol_types::private::primitives::aliases::U256, + pub key: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`readUint(string,uint256,string)`](readUintCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct readUintReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Uint<256>, + alloy::sol_types::sol_data::String, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::primitives::aliases::U256, + 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: readUintCall) -> Self { + (value.json, value.index, value.key) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for readUintCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + json: tuple.0, + index: tuple.1, + key: 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: readUintReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for readUintReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for readUintCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::String, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = readUintReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "readUint(string,uint256,string)"; + const SELECTOR: [u8; 4] = [22u8, 188u8, 183u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.json, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ::tokenize( + &self.key, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setOperatorJsonFilePath(string)` and selector `0xbbec6f12`. + ```solidity + function setOperatorJsonFilePath(string memory filepath) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setOperatorJsonFilePathCall { + pub filepath: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`setOperatorJsonFilePath(string)`](setOperatorJsonFilePathCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setOperatorJsonFilePathReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setOperatorJsonFilePathCall) -> Self { + (value.filepath,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOperatorJsonFilePathCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { filepath: 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: setOperatorJsonFilePathReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOperatorJsonFilePathReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setOperatorJsonFilePathCall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setOperatorJsonFilePathReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setOperatorJsonFilePath(string)"; + const SELECTOR: [u8; 4] = [187u8, 236u8, 111u8, 18u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.filepath, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stringToUint(string)` and selector `0x1bd95155`. + ```solidity + function stringToUint(string memory s) external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stringToUintCall { + pub s: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`stringToUint(string)`](stringToUintCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stringToUintReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: stringToUintCall) -> Self { + (value.s,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stringToUintCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { s: 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: stringToUintReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stringToUintReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stringToUintCall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stringToUintReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stringToUint(string)"; + const SELECTOR: [u8; 4] = [27u8, 217u8, 81u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::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) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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) + } + } + }; + ///Container for all the [`Operators`](self) function calls. + pub enum OperatorsCalls { + IS_TEST(IS_TESTCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + getNumOperators(getNumOperatorsCall), + getOperatorAddress(getOperatorAddressCall), + getOperatorPubkeyG1(getOperatorPubkeyG1Call), + getOperatorPubkeyG2(getOperatorPubkeyG2Call), + getOperatorSchnorrSignature(getOperatorSchnorrSignatureCall), + getOperatorSecretKey(getOperatorSecretKeyCall), + operatorPrefix(operatorPrefixCall), + readUint(readUintCall), + setOperatorJsonFilePath(setOperatorJsonFilePathCall), + stringToUint(stringToUintCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + } + #[automatically_derived] + impl OperatorsCalls { + /// 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, 135u8, 10u8, 56u8], + [22u8, 188u8, 183u8, 46u8], + [27u8, 217u8, 81u8, 85u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [100u8, 63u8, 3u8, 80u8], + [102u8, 217u8, 169u8, 160u8], + [133u8, 34u8, 108u8, 129u8], + [137u8, 160u8, 212u8, 14u8], + [145u8, 106u8, 23u8, 198u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [187u8, 236u8, 111u8, 18u8], + [188u8, 172u8, 71u8, 25u8], + [210u8, 45u8, 196u8, 40u8], + [217u8, 137u8, 165u8, 145u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + [253u8, 120u8, 193u8, 45u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for OperatorsCalls { + const NAME: &'static str = "OperatorsCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 21usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::getNumOperators(_) => { + ::SELECTOR + } + Self::getOperatorAddress(_) => { + ::SELECTOR + } + Self::getOperatorPubkeyG1(_) => { + ::SELECTOR + } + Self::getOperatorPubkeyG2(_) => { + ::SELECTOR + } + Self::getOperatorSchnorrSignature(_) => { + ::SELECTOR + } + Self::getOperatorSecretKey(_) => { + ::SELECTOR + } + Self::operatorPrefix(_) => { + ::SELECTOR + } + Self::readUint(_) => ::SELECTOR, + Self::setOperatorJsonFilePath(_) => { + ::SELECTOR + } + Self::stringToUint(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::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 getOperatorAddress( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::getOperatorAddress) + } + getOperatorAddress + }, + { + fn readUint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(OperatorsCalls::readUint) + } + readUint + }, + { + fn stringToUint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::stringToUint) + } + stringToUint + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::targetContracts) + } + targetContracts + }, + { + fn getOperatorSecretKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::getOperatorSecretKey) + } + getOperatorSecretKey + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn getOperatorPubkeyG1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::getOperatorPubkeyG1) + } + getOperatorPubkeyG1 + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::targetSelectors) + } + targetSelectors + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(OperatorsCalls::failed) + } + failed + }, + { + fn setOperatorJsonFilePath( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::setOperatorJsonFilePath) + } + setOperatorJsonFilePath + }, + { + fn operatorPrefix( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::operatorPrefix) + } + operatorPrefix + }, + { + fn getOperatorPubkeyG2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::getOperatorPubkeyG2) + } + getOperatorPubkeyG2 + }, + { + fn getNumOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::getNumOperators) + } + getNumOperators + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorsCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(OperatorsCalls::IS_TEST) + } + IS_TEST + }, + { + fn getOperatorSchnorrSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(OperatorsCalls::getOperatorSchnorrSignature) + } + getOperatorSchnorrSignature + }, + ]; + 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_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::getNumOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::getOperatorAddress(inner) => { + ::abi_encoded_size(inner) + } + Self::getOperatorPubkeyG1(inner) => { + ::abi_encoded_size(inner) + } + Self::getOperatorPubkeyG2(inner) => { + ::abi_encoded_size(inner) + } + Self::getOperatorSchnorrSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorSecretKey(inner) => { + ::abi_encoded_size(inner) + } + Self::operatorPrefix(inner) => { + ::abi_encoded_size(inner) + } + Self::readUint(inner) => { + ::abi_encoded_size(inner) + } + Self::setOperatorJsonFilePath(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stringToUint(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getNumOperators(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getOperatorAddress(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getOperatorPubkeyG1(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorPubkeyG2(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorSchnorrSignature(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorSecretKey(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::operatorPrefix(inner) => { + ::abi_encode_raw(inner, out) + } + Self::readUint(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setOperatorJsonFilePath(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::stringToUint(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`Operators`](self) events. + pub enum OperatorsEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl OperatorsEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for OperatorsEvents { + const NAME: &'static str = "OperatorsEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 OperatorsEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Operators`](self) contract instance. + + See the [wrapper's documentation](`OperatorsInstance`) 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, + ) -> OperatorsInstance { + OperatorsInstance::::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>> + { + OperatorsInstance::::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 { + OperatorsInstance::::deploy_builder(provider) + } + /**A [`Operators`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Operators`](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 OperatorsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OperatorsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OperatorsInstance") + .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, + > OperatorsInstance + { + /**Creates a new wrapper around an on-chain [`Operators`](self) contract instance. + + See the [wrapper's documentation](`OperatorsInstance`) 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 OperatorsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OperatorsInstance { + OperatorsInstance { + 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, + > OperatorsInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`getNumOperators`] function. + pub fn getNumOperators( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getNumOperatorsCall {}) + } + ///Creates a new call builder for the [`getOperatorAddress`] function. + pub fn getOperatorAddress( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorAddressCall { index }) + } + ///Creates a new call builder for the [`getOperatorPubkeyG1`] function. + pub fn getOperatorPubkeyG1( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorPubkeyG1Call { index }) + } + ///Creates a new call builder for the [`getOperatorPubkeyG2`] function. + pub fn getOperatorPubkeyG2( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorPubkeyG2Call { index }) + } + ///Creates a new call builder for the [`getOperatorSchnorrSignature`] function. + pub fn getOperatorSchnorrSignature( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSchnorrSignatureCall { index }) + } + ///Creates a new call builder for the [`getOperatorSecretKey`] function. + pub fn getOperatorSecretKey( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSecretKeyCall { index }) + } + ///Creates a new call builder for the [`operatorPrefix`] function. + pub fn operatorPrefix( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorPrefixCall { index }) + } + ///Creates a new call builder for the [`readUint`] function. + pub fn readUint( + &self, + json: alloy::sol_types::private::String, + index: alloy::sol_types::private::primitives::aliases::U256, + key: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&readUintCall { json, index, key }) + } + ///Creates a new call builder for the [`setOperatorJsonFilePath`] function. + pub fn setOperatorJsonFilePath( + &self, + filepath: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setOperatorJsonFilePathCall { filepath }) + } + ///Creates a new call builder for the [`stringToUint`] function. + pub fn stringToUint( + &self, + s: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stringToUintCall { s }) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OperatorsInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/operatorstateretriever.rs b/crates/utils/src/middleware/operatorstateretriever.rs new file mode 100644 index 00000000..be7f8134 --- /dev/null +++ b/crates/utils/src/middleware/operatorstateretriever.rs @@ -0,0 +1,1761 @@ +/** + +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 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": "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::pub_underscore_fields, + clippy::style +)] +pub mod OperatorStateRetriever { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c0033 + /// ``` + #[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\x1A\x05\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea264697066735822122014ec9cef655bbe9b5fb329c99e65edd417d10b178cf45d3d01495a15908a93d064736f6c634300080c0033 + /// ``` + #[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\x80c5c\xB0\xD1\x14a\0QW\x80cOs\x9Ft\x14a\0zW\x80c\\\x15Vb\x14a\0\x9AW\x80c\xCE\xFD\xC1\xD4\x14a\0\xBAW[`\0\x80\xFD[a\0da\0_6`\x04a\x11rV[a\0\xDBV[`@Qa\0q\x91\x90a\x12\xCDV[`@Q\x80\x91\x03\x90\xF3[a\0\x8Da\0\x886`\x04a\x132V[a\x05qV[`@Qa\0q\x91\x90a\x145V[a\0\xADa\0\xA86`\x04a\x15\x13V[a\x0C\x9BV[`@Qa\0q\x91\x90a\x15\xC4V[a\0\xCDa\0\xC86`\x04a\x16\x08V[a\x0EcV[`@Qa\0q\x92\x91\x90a\x16JV[```\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\x01\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01A\x91\x90a\x16kV[\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\x01\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA7\x91\x90a\x16kV[\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\x01\xE9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\r\x91\x90a\x16kV[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02*Wa\x02*a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02]W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x02HW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x05eW`\0\x88\x82\x81Q\x81\x10a\x02\x80Wa\x02\x80a\x16\x88V[\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\x02\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\t\x91\x90\x81\x01\x90a\x16\x9EV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03$Wa\x03$a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03oW\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\x03BW\x90P[P\x84\x84\x81Q\x81\x10a\x03\x82Wa\x03\x82a\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x05OW`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x16\x88V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xEB\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04,\x91\x90a\x16kV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x04LWa\x04La\x16\x88V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x04zWa\x04za\x16\x88V[` \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\x04\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xFA\x91\x90a\x17.V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x05\x18Wa\x05\x18a\x16\x88V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x051Wa\x051a\x16\x88V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x05G\x90a\x17mV[\x91PPa\x03\x90V[PPP\x80\x80a\x05]\x90a\x17mV[\x91PPa\x02cV[P\x97\x96PPPPPPPV[a\x05\x9C`@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\x05\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\0\x91\x90a\x16kV[\x90Pa\x06-`@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\x06]\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x17\x88V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06\xA2\x91\x90\x81\x01\x90a\x17\xD2V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\x06\xD4\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x18\x89V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x19\x91\x90\x81\x01\x90a\x17\xD2V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x076Wa\x076a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07iW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07TW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0B\xACW`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x97Wa\x07\x97a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xC0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x07\xDAWa\x07\xDAa\x16\x88V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\n\xACW`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\x08\x13Wa\x08\x13a\x16\x88V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\x081Wa\x081a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08n\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\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x18\xB2V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\tWW`@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\tlWa\tla\x16\x88V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\n\x99W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\t\xAEWa\t\xAEa\x16\x88V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\t\xCAWa\t\xCAa\x16\x88V[`@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\n W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nD\x91\x90a\x18\xDBV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\n]Wa\n]a\x16\x88V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\nvWa\nva\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\n\x95\x81a\x17mV[\x93PP[P\x80a\n\xA4\x81a\x17mV[\x91PPa\x07\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xC7Wa\n\xC7a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xF0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0BqW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a\x16\x88V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0B0Wa\x0B0a\x16\x88V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x16\x88V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0Bi\x81a\x17mV[\x91PPa\n\xF6V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0B\x8CWa\x0B\x8Ca\x16\x88V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0B\xA4\x90a\x18\xF8V[\x91PPa\x07rV[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\x0B\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x11\x91\x90a\x16kV[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0CD\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x19\x18V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CaW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x89\x91\x90\x81\x01\x90a\x17\xD2V[` \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\x0C\xCD\x92\x91\x90a\x19BV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\x12\x91\x90\x81\x01\x90a\x17\xD2V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\r/Wa\r/a\x11\nV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rXW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x0EYW\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\r\x88Wa\r\x88a\x16\x88V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\r\xA3Wa\r\xA3a\x16\x88V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\xE0\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\r\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E!\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0E=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x1F\x91\x90\x81\x01\x90a\x17\xD2V[`\0\x81Q\x81\x10a\x0F1Wa\x0F1a\x16\x88V[` \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\x0F\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xC1\x91\x90a\x18\xB2V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x0F\xD7\x82a\x0F\xF5V[\x90P\x81a\x0F\xE5\x8A\x83\x8Aa\0\xDBV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x10\x03\x84a\x10\xC1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\x1EWa\x10\x1Ea\x11\nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x10HW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x10`WPa\x01\0\x81\x10[\x15a\x10\xB7W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x10\xA7W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x10\x89Wa\x10\x89a\x16\x88V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x10\xB0\x81a\x17mV[\x90Pa\x10OV[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x10\xECWa\x10\xD6`\x01\x84a\x19\x96V[\x90\x92\x16\x91\x80a\x10\xE4\x81a\x19\xADV[\x91PPa\x10\xC5V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x07W`\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\x11HWa\x11Ha\x11\nV[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x07W`\0\x80\xFD[\x805a\x11m\x81a\x11PV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\x87W`\0\x80\xFD[\x835a\x11\x92\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\xAFW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x11\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xD5Wa\x11\xD5a\x11\nV[a\x11\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x11 V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x11\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x12 `@\x85\x01a\x11bV[\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\x12\xBFW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x12\xAAW\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\x12fV[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x12HV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x12\xE0` \x83\x01\x84a\x12)V[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x12\xF9W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x10W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x13+W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x13KW`\0\x80\xFD[\x865a\x13V\x81a\x10\xF2V[\x95P` \x87\x015a\x13f\x81a\x11PV[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x13\x82W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x13\x96W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x13\xA5W`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x13\xB7W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x13\xD5W`\0\x80\xFD[Pa\x13\xE2\x89\x82\x8A\x01a\x12\xE7V[\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*W\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\x08V[P\x94\x95\x94PPPPPV[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x14Q`\xA0\x85\x01\x82a\x13\xF4V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x14n\x83\x83a\x13\xF4V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x14\x8B\x83\x83a\x13\xF4V[``\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\x14\xE2W\x84\x87\x83\x03\x01\x84Ra\x14\xD0\x82\x87Qa\x13\xF4V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x14\xB6V[P\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x15\tWa\x15\ta\x11\nV[P`\x05\x1B` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15(W`\0\x80\xFD[\x835a\x153\x81a\x10\xF2V[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15OW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x15`W`\0\x80\xFD[\x805a\x15sa\x15n\x82a\x14\xF0V[a\x11 V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x89\x83\x11\x15a\x15\x92W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x15\xB0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x15\x97V[\x80\x96PPPPPPa\x12 `@\x85\x01a\x11bV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x15\xFCW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x15\xE0V[P\x90\x96\x95PPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\x1DW`\0\x80\xFD[\x835a\x16(\x81a\x10\xF2V[\x92P` \x84\x015\x91P`@\x84\x015a\x16?\x81a\x11PV[\x80\x91PP\x92P\x92P\x92V[\x82\x81R`@` \x82\x01R`\0a\x16c`@\x83\x01\x84a\x12)V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x16}W`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x10\xF2V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15a\x16\xB1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xC7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x16\xD8W`\0\x80\xFD[\x80Qa\x16\xE6a\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x17\x05W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x17\nV[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x17@W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x17\x81Wa\x17\x81a\x17WV[P`\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R`\0`\x01`\x01`\xFB\x1B\x03\x83\x11\x15a\x17\xB5W`\0\x80\xFD[\x82`\x05\x1B\x80\x85``\x85\x017`\0\x92\x01``\x01\x91\x82RP\x93\x92PPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17\xE5W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFBW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\x0CW`\0\x80\xFD[\x80Qa\x18\x1Aa\x15n\x82a\x14\xF0V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\x189W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x17#W\x83Qa\x18Q\x81a\x11PV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x18>V[\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[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R`\0a\x18\xA9`@\x83\x01\x84\x86a\x18`V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x18\xC4W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x12\xE0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xEDW`\0\x80\xFD[\x81Qa\x12\xE0\x81a\x11PV[`\0`\xFF\x82\x16`\xFF\x81\x14\x15a\x19\x0FWa\x19\x0Fa\x17WV[`\x01\x01\x92\x91PPV[`@\x81R`\0a\x19,`@\x83\x01\x85\x87a\x18`V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[`\0`@\x82\x01c\xFF\xFF\xFF\xFF\x85\x16\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P\x82\x87\x01\x93P`\0[\x81\x81\x10\x15a\x19\x89W\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x19mV[P\x90\x97\x96PPPPPPPV[`\0\x82\x82\x10\x15a\x19\xA8Wa\x19\xA8a\x17WV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x19\xC5Wa\x19\xC5a\x17WV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x14\xEC\x9C\xEFe[\xBE\x9B_\xB3)\xC9\x9Ee\xED\xD4\x17\xD1\x0B\x17\x8C\xF4]=\x01IZ\x15\x90\x8A\x93\xD0dsolcC\0\x08\x0C\x003", + ); + /**```solidity + struct CheckSignaturesIndices { uint32[] nonSignerQuorumBitmapIndices; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CheckSignaturesIndices { + pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCheckSignaturesIndicesReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapsAtBlockNumberReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 { + 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]] = &[ + [53u8, 99u8, 176u8, 209u8], + [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 = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + 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 getOperatorState_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorStateRetrieverCalls::getOperatorState_0) + } + getOperatorState_0 + }, + { + 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::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::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 [`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/middleware/ownable.rs b/crates/utils/src/middleware/ownable.rs new file mode 100644 index 00000000..6b13f500 --- /dev/null +++ b/crates/utils/src/middleware/ownable.rs @@ -0,0 +1,936 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/ownableupgradeable.rs b/crates/utils/src/middleware/ownableupgradeable.rs new file mode 100644 index 00000000..813df832 --- /dev/null +++ b/crates/utils/src/middleware/ownableupgradeable.rs @@ -0,0 +1,1081 @@ +/** + +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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/owners.rs b/crates/utils/src/middleware/owners.rs new file mode 100644 index 00000000..1ec2d3a6 --- /dev/null +++ b/crates/utils/src/middleware/owners.rs @@ -0,0 +1,6820 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface Owners { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + constructor(); + + function IS_TEST() external view returns (bool); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function getNumOperators() external view returns (uint256); + function getOwnerAddress(uint256 index) external view returns (address); + function getOwnerAddresses() external returns (address[] memory); + function getReputedOwnerAddresses() external returns (address[] memory); + function ownerPrefix(uint256 index) external pure returns (string memory); + function resetOwnersConfigJson(string memory newConfig) external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getNumOperators", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOwnerAddress", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOwnerAddresses", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getReputedOwnerAddresses", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "ownerPrefix", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "resetOwnersConfigJson", + "inputs": [ + { + "name": "newConfig", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Owners { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260078054600160ff199182168117909255600b805490911690911790553480156200002e57600080fd5b506040516360f9bb1160e01b815260206004820181905260248201527f2e2f7372632f746573742f746573742d646174612f6f776e6572732e6a736f6e6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190606401600060405180830381865afa158015620000ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000d79190810190620001b0565b8051620000ed91601c91602090910190620000f4565b50620002c9565b82805462000102906200028c565b90600052602060002090601f01602090048101928262000126576000855562000171565b82601f106200014157805160ff191683800117855562000171565b8280016001018555821562000171579182015b828111156200017157825182559160200191906001019062000154565b506200017f92915062000183565b5090565b5b808211156200017f576000815560010162000184565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620001c457600080fd5b82516001600160401b0380821115620001dc57600080fd5b818501915085601f830112620001f157600080fd5b8151818111156200020657620002066200019a565b604051601f8201601f19908116603f011681019083821181831017156200023157620002316200019a565b8160405282815288868487010111156200024a57600080fd5b600093505b828410156200026e57848401860151818501870152928501926200024f565b82841115620002805760008684830101525b98975050505050505050565b600181811c90821680620002a157607f821691505b60208210811415620002c357634e487b7160e01b600052602260045260246000fd5b50919050565b61156280620002d96000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063916a17c6116100a2578063c457236a11610071578063c457236a146101ca578063d989a591146101ea578063dd55095814610200578063e20c9f711461022b578063fa7626d41461023357600080fd5b8063916a17c61461018d578063aa09133014610195578063b5508aa9146101aa578063ba414fa6146101b257600080fd5b80633f7286f4116100de5780633f7286f4146101535780634ee2d6571461015b57806366d9a9a01461016357806385226c811461017857600080fd5b80631ed7831c1461011057806325ed2a1e1461012e5780632ade3880146101365780633e5e3c231461014b575b600080fd5b610118610240565b6040516101259190610f61565b60405180910390f35b6101186102a2565b61013e610364565b604051610125919061100a565b6101186104a6565b610118610506565b610118610566565b61016b6105fc565b60405161012591906110ca565b6101806106e2565b604051610125919061117d565b61016b6107b2565b6101a86101a336600461124e565b610898565b005b61018061092c565b6101ba6109fc565b6040519015158152602001610125565b6101dd6101d83660046112ce565b610b29565b60405161012591906112e7565b6101f2610be7565b604051908152602001610125565b61021361020e3660046112ce565b610ca4565b6040516001600160a01b039091168152602001610125565b610118610d67565b6007546101ba9060ff1681565b6060601480548060200260200160405190810160405280929190818152602001828054801561029857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161027a575b5050505050905090565b606060005b6102af610be7565b81101561030557601d6102c182610ca4565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055806102fd816112fa565b9150506102a7565b50601d805480602002602001604051908101604052809291908181526020018280548015610298576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027a575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561049d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104865783829060005260206000200180546103f990611323565b80601f016020809104026020016040519081016040528092919081815260200182805461042590611323565b80156104725780601f1061044757610100808354040283529160200191610472565b820191906000526020600020905b81548152906001019060200180831161045557829003601f168201915b5050505050815260200190600101906103da565b505050508152505081526020019060010190610388565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610298576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027a575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610298576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027a575050505050905090565b606061059b604051806040016040528060128152602001713932b83aba32b227bbb732b939973539b7b760711b815250610898565b60005b6105a6610be7565b81101561030557601d6105b882610ca4565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055806105f4816112fa565b91505061059e565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561049d5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156106ca57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161068c5790505b50505050508152505081526020019060010190610620565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561049d57838290600052602060002001805461072590611323565b80601f016020809104026020016040519081016040528092919081815260200182805461075190611323565b801561079e5780601f106107735761010080835404028352916020019161079e565b820191906000526020600020905b81548152906001019060200180831161078157829003601f168201915b505050505081526020019060010190610706565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561049d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561088057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108425790505b505050505081525050815260200190600101906107d6565b6040516360f9bb1160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb11906108cf9084906004016112e7565b600060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610914919081019061135e565b805161092891601c91602090910190610ec8565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561049d57838290600052602060002001805461096f90611323565b80601f016020809104026020016040519081016040528092919081815260200182805461099b90611323565b80156109e85780601f106109bd576101008083540402835291602001916109e8565b820191906000526020600020905b8154815290600101906020018083116109cb57829003601f168201915b505050505081526020019060010190610950565b600754600090610100900460ff1615610a1e5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b245760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610aac917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016113d5565b60408051601f1981840301815290829052610ac691611406565b6000604051808303816000865af19150503d8060008114610b03576040519150601f19603f3d011682016040523d82523d6000602084013e610b08565b606091505b5091505080806020019051810190610b209190611422565b9150505b919050565b60405163348051d760e11b815260048101829052606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ba4919081019061135e565b604051602001610bb49190611444565b60408051601f1981840301815290829052610bd19160200161146a565b6040516020818303038152906040529050919050565b6000610c9f601c8054610bf990611323565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2590611323565b8015610c725780601f10610c4757610100808354040283529160200191610c72565b820191906000526020600020905b815481529060010190602001808311610c5557829003601f168201915b50505050506040518060400160405280600a8152602001692e6e756d4f776e65727360b01b815250610dc7565b905090565b6000610d61601c8054610cb690611323565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce290611323565b8015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b5050505050610d3d84610b29565b604051602001610d4d919061149a565b604051602081830303815290604052610e4b565b92915050565b60606013805480602002602001604051908101604052809291908181526020018280548015610298576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027a575050505050905090565b6040516356eef15b60e11b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063addde2b690610e0390869086906004016114c5565b602060405180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4491906114ea565b9392505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790610e8790869086906004016114c5565b602060405180830381865afa158015610ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190611503565b828054610ed490611323565b90600052602060002090601f016020900481019282610ef65760008555610f3c565b82601f10610f0f57805160ff1916838001178555610f3c565b82800160010185558215610f3c579182015b82811115610f3c578251825591602001919060010190610f21565b50610f48929150610f4c565b5090565b5b80821115610f485760008155600101610f4d565b6020808252825182820181905260009190848201906040850190845b81811015610fa25783516001600160a01b031683529284019291840191600101610f7d565b50909695505050505050565b60005b83811015610fc9578181015183820152602001610fb1565b83811115610fd8576000848401525b50505050565b60008151808452610ff6816020860160208601610fae565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156110ba57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156110a457605f19898503018352611092848651610fde565b948e01949350918d0191600101611076565b505050978a019794505091880191600101611031565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561116e57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156111595783516001600160e01b0319168252928b019260019290920191908b019061112f565b50978a019795505050918701916001016110f2565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111d257603f198886030184526111c0858351610fde565b945092850192908501906001016111a4565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561121e5761121e6111df565b604052919050565b600067ffffffffffffffff821115611240576112406111df565b50601f01601f191660200190565b60006020828403121561126057600080fd5b813567ffffffffffffffff81111561127757600080fd5b8201601f8101841361128857600080fd5b803561129b61129682611226565b6111f5565b8181528560208385010111156112b057600080fd5b81602084016020830137600091810160200191909152949350505050565b6000602082840312156112e057600080fd5b5035919050565b602081526000610e446020830184610fde565b600060001982141561131c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c9082168061133757607f821691505b6020821081141561135857634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561137057600080fd5b815167ffffffffffffffff81111561138757600080fd5b8201601f8101841361139857600080fd5b80516113a661129682611226565b8181528560208385010111156113bb57600080fd5b6113cc826020830160208601610fae565b95945050505050565b6001600160e01b03198316815281516000906113f8816004850160208701610fae565b919091016004019392505050565b60008251611418818460208701610fae565b9190910192915050565b60006020828403121561143457600080fd5b81518015158114610e4457600080fd5b60008251611456818460208701610fae565b612e9760f11b920191825250600201919050565b672e6f776e6572735b60c01b81526000825161148d816008850160208701610fae565b9190910160080192915050565b600082516114ac818460208701610fae565b664164647265737360c81b920191825250600701919050565b6040815260006114d86040830185610fde565b82810360208401526113cc8185610fde565b6000602082840312156114fc57600080fd5b5051919050565b60006020828403121561151557600080fd5b81516001600160a01b0381168114610e4457600080fdfea2646970667358221220c56553ec4f03f76a28e05e52d14bdf30e2b0d6456c3ba9dcd42e67bf359d2e3664736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15b\0\0.W`\0\x80\xFD[P`@Qc`\xF9\xBB\x11`\xE0\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7F./src/test/test-data/owners.json`D\x82\x01Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90`d\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\0\xD7\x91\x90\x81\x01\x90b\0\x01\xB0V[\x80Qb\0\0\xED\x91`\x1C\x91` \x90\x91\x01\x90b\0\0\xF4V[Pb\0\x02\xC9V[\x82\x80Tb\0\x01\x02\x90b\0\x02\x8CV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x01&W`\0\x85Ub\0\x01qV[\x82`\x1F\x10b\0\x01AW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\x01qV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\x01qW\x91\x82\x01[\x82\x81\x11\x15b\0\x01qW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\x01TV[Pb\0\x01\x7F\x92\x91Pb\0\x01\x83V[P\x90V[[\x80\x82\x11\x15b\0\x01\x7FW`\0\x81U`\x01\x01b\0\x01\x84V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x80\x83\x85\x03\x12\x15b\0\x01\xC4W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xDCW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12b\0\x01\xF1W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x02\x06Wb\0\x02\x06b\0\x01\x9AV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x021Wb\0\x021b\0\x01\x9AV[\x81`@R\x82\x81R\x88\x86\x84\x87\x01\x01\x11\x15b\0\x02JW`\0\x80\xFD[`\0\x93P[\x82\x84\x10\x15b\0\x02nW\x84\x84\x01\x86\x01Q\x81\x85\x01\x87\x01R\x92\x85\x01\x92b\0\x02OV[\x82\x84\x11\x15b\0\x02\x80W`\0\x86\x84\x83\x01\x01R[\x98\x97PPPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xA1W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x02\xC3WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\x15b\x80b\0\x02\xD9`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x0BW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\xA2W\x80c\xC4W#j\x11a\0qW\x80c\xC4W#j\x14a\x01\xCAW\x80c\xD9\x89\xA5\x91\x14a\x01\xEAW\x80c\xDDU\tX\x14a\x02\0W\x80c\xE2\x0C\x9Fq\x14a\x02+W\x80c\xFAv&\xD4\x14a\x023W`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01\x8DW\x80c\xAA\t\x130\x14a\x01\x95W\x80c\xB5P\x8A\xA9\x14a\x01\xAAW\x80c\xBAAO\xA6\x14a\x01\xB2W`\0\x80\xFD[\x80c?r\x86\xF4\x11a\0\xDEW\x80c?r\x86\xF4\x14a\x01SW\x80cN\xE2\xD6W\x14a\x01[W\x80cf\xD9\xA9\xA0\x14a\x01cW\x80c\x85\"l\x81\x14a\x01xW`\0\x80\xFD[\x80c\x1E\xD7\x83\x1C\x14a\x01\x10W\x80c%\xED*\x1E\x14a\x01.W\x80c*\xDE8\x80\x14a\x016W\x80c>^<#\x14a\x01KW[`\0\x80\xFD[a\x01\x18a\x02@V[`@Qa\x01%\x91\x90a\x0FaV[`@Q\x80\x91\x03\x90\xF3[a\x01\x18a\x02\xA2V[a\x01>a\x03dV[`@Qa\x01%\x91\x90a\x10\nV[a\x01\x18a\x04\xA6V[a\x01\x18a\x05\x06V[a\x01\x18a\x05fV[a\x01ka\x05\xFCV[`@Qa\x01%\x91\x90a\x10\xCAV[a\x01\x80a\x06\xE2V[`@Qa\x01%\x91\x90a\x11}V[a\x01ka\x07\xB2V[a\x01\xA8a\x01\xA36`\x04a\x12NV[a\x08\x98V[\0[a\x01\x80a\t,V[a\x01\xBAa\t\xFCV[`@Q\x90\x15\x15\x81R` \x01a\x01%V[a\x01\xDDa\x01\xD86`\x04a\x12\xCEV[a\x0B)V[`@Qa\x01%\x91\x90a\x12\xE7V[a\x01\xF2a\x0B\xE7V[`@Q\x90\x81R` \x01a\x01%V[a\x02\x13a\x02\x0E6`\x04a\x12\xCEV[a\x0C\xA4V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01%V[a\x01\x18a\rgV[`\x07Ta\x01\xBA\x90`\xFF\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zW[PPPPP\x90P\x90V[```\0[a\x02\xAFa\x0B\xE7V[\x81\x10\x15a\x03\x05W`\x1Da\x02\xC1\x82a\x0C\xA4V[\x81T`\x01\x81\x01\x83U`\0\x92\x83R` \x90\x92 \x90\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x80a\x02\xFD\x81a\x12\xFAV[\x91PPa\x02\xA7V[P`\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zWPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x04\x86W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03\xF9\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04%\x90a\x13#V[\x80\x15a\x04rW\x80`\x1F\x10a\x04GWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04rV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04UW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xDAV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\x88V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zWPPPPP\x90P\x90V[``a\x05\x9B`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q92\xB8:\xBA2\xB2'\xBB\xB72\xB99\x9759\xB7\xB7`q\x1B\x81RPa\x08\x98V[`\0[a\x05\xA6a\x0B\xE7V[\x81\x10\x15a\x03\x05W`\x1Da\x05\xB8\x82a\x0C\xA4V[\x81T`\x01\x81\x01\x83U`\0\x92\x83R` \x90\x92 \x90\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x80a\x05\xF4\x81a\x12\xFAV[\x91PPa\x05\x9EV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xCAW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06 V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x07%\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07Q\x90a\x13#V[\x80\x15a\x07\x9EW\x80`\x1F\x10a\x07sWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x9EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x81W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x06V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x80W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08BW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xD6V[`@Qc`\xF9\xBB\x11`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90a\x08\xCF\x90\x84\x90`\x04\x01a\x12\xE7V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xECW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x14\x91\x90\x81\x01\x90a\x13^V[\x80Qa\t(\x91`\x1C\x91` \x90\x91\x01\x90a\x0E\xC8V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW\x83\x82\x90`\0R` `\0 \x01\x80Ta\to\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\x9B\x90a\x13#V[\x80\x15a\t\xE8W\x80`\x1F\x10a\t\xBDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\xE8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\xCBW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\tPV[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\n\x1EWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x0B$W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\n\xAC\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x13\xD5V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\n\xC6\x91a\x14\x06V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0B\x03W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0B\x08V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0B \x91\x90a\x14\"V[\x91PP[\x91\x90PV[`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R``\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\x0B|W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0B\xA4\x91\x90\x81\x01\x90a\x13^V[`@Q` \x01a\x0B\xB4\x91\x90a\x14DV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0B\xD1\x91` \x01a\x14jV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\0a\x0C\x9F`\x1C\x80Ta\x0B\xF9\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0C%\x90a\x13#V[\x80\x15a\x0CrW\x80`\x1F\x10a\x0CGWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0CrV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0CUW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.numOwners`\xB0\x1B\x81RPa\r\xC7V[\x90P\x90V[`\0a\ra`\x1C\x80Ta\x0C\xB6\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0C\xE2\x90a\x13#V[\x80\x15a\r/W\x80`\x1F\x10a\r\x04Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\r/V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\r\x12W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPa\r=\x84a\x0B)V[`@Q` \x01a\rM\x91\x90a\x14\x9AV[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0EKV[\x92\x91PPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zWPPPPP\x90P\x90V[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xAD\xDD\xE2\xB6\x90a\x0E\x03\x90\x86\x90\x86\x90`\x04\x01a\x14\xC5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0ED\x91\x90a\x14\xEAV[\x93\x92PPPV[`@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\x0E\x87\x90\x86\x90\x86\x90`\x04\x01a\x14\xC5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0ED\x91\x90a\x15\x03V[\x82\x80Ta\x0E\xD4\x90a\x13#V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x0E\xF6W`\0\x85Ua\x0F^<#\x14a\x01KW[`\0\x80\xFD[a\x01\x18a\x02@V[`@Qa\x01%\x91\x90a\x0FaV[`@Q\x80\x91\x03\x90\xF3[a\x01\x18a\x02\xA2V[a\x01>a\x03dV[`@Qa\x01%\x91\x90a\x10\nV[a\x01\x18a\x04\xA6V[a\x01\x18a\x05\x06V[a\x01\x18a\x05fV[a\x01ka\x05\xFCV[`@Qa\x01%\x91\x90a\x10\xCAV[a\x01\x80a\x06\xE2V[`@Qa\x01%\x91\x90a\x11}V[a\x01ka\x07\xB2V[a\x01\xA8a\x01\xA36`\x04a\x12NV[a\x08\x98V[\0[a\x01\x80a\t,V[a\x01\xBAa\t\xFCV[`@Q\x90\x15\x15\x81R` \x01a\x01%V[a\x01\xDDa\x01\xD86`\x04a\x12\xCEV[a\x0B)V[`@Qa\x01%\x91\x90a\x12\xE7V[a\x01\xF2a\x0B\xE7V[`@Q\x90\x81R` \x01a\x01%V[a\x02\x13a\x02\x0E6`\x04a\x12\xCEV[a\x0C\xA4V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01%V[a\x01\x18a\rgV[`\x07Ta\x01\xBA\x90`\xFF\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zW[PPPPP\x90P\x90V[```\0[a\x02\xAFa\x0B\xE7V[\x81\x10\x15a\x03\x05W`\x1Da\x02\xC1\x82a\x0C\xA4V[\x81T`\x01\x81\x01\x83U`\0\x92\x83R` \x90\x92 \x90\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x80a\x02\xFD\x81a\x12\xFAV[\x91PPa\x02\xA7V[P`\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zWPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x04\x86W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03\xF9\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04%\x90a\x13#V[\x80\x15a\x04rW\x80`\x1F\x10a\x04GWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04rV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04UW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xDAV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\x88V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zWPPPPP\x90P\x90V[``a\x05\x9B`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q92\xB8:\xBA2\xB2'\xBB\xB72\xB99\x9759\xB7\xB7`q\x1B\x81RPa\x08\x98V[`\0[a\x05\xA6a\x0B\xE7V[\x81\x10\x15a\x03\x05W`\x1Da\x05\xB8\x82a\x0C\xA4V[\x81T`\x01\x81\x01\x83U`\0\x92\x83R` \x90\x92 \x90\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x80a\x05\xF4\x81a\x12\xFAV[\x91PPa\x05\x9EV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xCAW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06 V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x07%\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07Q\x90a\x13#V[\x80\x15a\x07\x9EW\x80`\x1F\x10a\x07sWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x9EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x81W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x06V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x80W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08BW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xD6V[`@Qc`\xF9\xBB\x11`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90a\x08\xCF\x90\x84\x90`\x04\x01a\x12\xE7V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xECW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x14\x91\x90\x81\x01\x90a\x13^V[\x80Qa\t(\x91`\x1C\x91` \x90\x91\x01\x90a\x0E\xC8V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x04\x9DW\x83\x82\x90`\0R` `\0 \x01\x80Ta\to\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\x9B\x90a\x13#V[\x80\x15a\t\xE8W\x80`\x1F\x10a\t\xBDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\xE8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\xCBW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\tPV[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\n\x1EWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x0B$W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\n\xAC\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x13\xD5V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\n\xC6\x91a\x14\x06V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0B\x03W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0B\x08V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0B \x91\x90a\x14\"V[\x91PP[\x91\x90PV[`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R``\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\x0B|W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0B\xA4\x91\x90\x81\x01\x90a\x13^V[`@Q` \x01a\x0B\xB4\x91\x90a\x14DV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0B\xD1\x91` \x01a\x14jV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\0a\x0C\x9F`\x1C\x80Ta\x0B\xF9\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0C%\x90a\x13#V[\x80\x15a\x0CrW\x80`\x1F\x10a\x0CGWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0CrV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0CUW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.numOwners`\xB0\x1B\x81RPa\r\xC7V[\x90P\x90V[`\0a\ra`\x1C\x80Ta\x0C\xB6\x90a\x13#V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0C\xE2\x90a\x13#V[\x80\x15a\r/W\x80`\x1F\x10a\r\x04Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\r/V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\r\x12W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPa\r=\x84a\x0B)V[`@Q` \x01a\rM\x91\x90a\x14\x9AV[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0EKV[\x92\x91PPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x98W` \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\x02zWPPPPP\x90P\x90V[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xAD\xDD\xE2\xB6\x90a\x0E\x03\x90\x86\x90\x86\x90`\x04\x01a\x14\xC5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0ED\x91\x90a\x14\xEAV[\x93\x92PPPV[`@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\x0E\x87\x90\x86\x90\x86\x90`\x04\x01a\x14\xC5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0ED\x91\x90a\x15\x03V[\x82\x80Ta\x0E\xD4\x90a\x13#V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x0E\xF6W`\0\x85Ua\x0F = (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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall {} + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (); + 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<'_> { + () + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `getNumOperators()` and selector `0xd989a591`. + ```solidity + function getNumOperators() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getNumOperatorsCall {} + ///Container type for the return parameters of the [`getNumOperators()`](getNumOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getNumOperatorsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getNumOperatorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getNumOperatorsCall { + 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: getNumOperatorsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getNumOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getNumOperatorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getNumOperatorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getNumOperators()"; + const SELECTOR: [u8; 4] = [217u8, 137u8, 165u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOwnerAddress(uint256)` and selector `0xdd550958`. + ```solidity + function getOwnerAddress(uint256 index) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOwnerAddressCall { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOwnerAddress(uint256)`](getOwnerAddressCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOwnerAddressReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getOwnerAddressCall) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOwnerAddressCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: 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: getOwnerAddressReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOwnerAddressReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOwnerAddressCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOwnerAddressReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOwnerAddress(uint256)"; + const SELECTOR: [u8; 4] = [221u8, 85u8, 9u8, 88u8]; + #[inline] + fn new<'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 `getOwnerAddresses()` and selector `0x25ed2a1e`. + ```solidity + function getOwnerAddresses() external returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOwnerAddressesCall {} + ///Container type for the return parameters of the [`getOwnerAddresses()`](getOwnerAddressesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOwnerAddressesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOwnerAddressesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOwnerAddressesCall { + 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: getOwnerAddressesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOwnerAddressesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOwnerAddressesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOwnerAddressesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOwnerAddresses()"; + const SELECTOR: [u8; 4] = [37u8, 237u8, 42u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getReputedOwnerAddresses()` and selector `0x4ee2d657`. + ```solidity + function getReputedOwnerAddresses() external returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getReputedOwnerAddressesCall {} + ///Container type for the return parameters of the [`getReputedOwnerAddresses()`](getReputedOwnerAddressesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getReputedOwnerAddressesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getReputedOwnerAddressesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getReputedOwnerAddressesCall { + 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: getReputedOwnerAddressesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getReputedOwnerAddressesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getReputedOwnerAddressesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getReputedOwnerAddressesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getReputedOwnerAddresses()"; + const SELECTOR: [u8; 4] = [78u8, 226u8, 214u8, 87u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ownerPrefix(uint256)` and selector `0xc457236a`. + ```solidity + function ownerPrefix(uint256 index) external pure returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerPrefixCall { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`ownerPrefix(uint256)`](ownerPrefixCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerPrefixReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: ownerPrefixCall) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerPrefixCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: 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: ownerPrefixReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerPrefixReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerPrefixCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerPrefixReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerPrefix(uint256)"; + const SELECTOR: [u8; 4] = [196u8, 87u8, 35u8, 106u8]; + #[inline] + fn new<'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 `resetOwnersConfigJson(string)` and selector `0xaa091330`. + ```solidity + function resetOwnersConfigJson(string memory newConfig) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetOwnersConfigJsonCall { + pub newConfig: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`resetOwnersConfigJson(string)`](resetOwnersConfigJsonCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetOwnersConfigJsonReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: resetOwnersConfigJsonCall) -> Self { + (value.newConfig,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetOwnersConfigJsonCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newConfig: 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: resetOwnersConfigJsonReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetOwnersConfigJsonReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for resetOwnersConfigJsonCall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = resetOwnersConfigJsonReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "resetOwnersConfigJson(string)"; + const SELECTOR: [u8; 4] = [170u8, 9u8, 19u8, 48u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newConfig, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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) + } + } + }; + ///Container for all the [`Owners`](self) function calls. + pub enum OwnersCalls { + IS_TEST(IS_TESTCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + getNumOperators(getNumOperatorsCall), + getOwnerAddress(getOwnerAddressCall), + getOwnerAddresses(getOwnerAddressesCall), + getReputedOwnerAddresses(getReputedOwnerAddressesCall), + ownerPrefix(ownerPrefixCall), + resetOwnersConfigJson(resetOwnersConfigJsonCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + } + #[automatically_derived] + impl OwnersCalls { + /// 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]] = &[ + [30u8, 215u8, 131u8, 28u8], + [37u8, 237u8, 42u8, 30u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [78u8, 226u8, 214u8, 87u8], + [102u8, 217u8, 169u8, 160u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [170u8, 9u8, 19u8, 48u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [196u8, 87u8, 35u8, 106u8], + [217u8, 137u8, 165u8, 145u8], + [221u8, 85u8, 9u8, 88u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for OwnersCalls { + const NAME: &'static str = "OwnersCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 17usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::getNumOperators(_) => { + ::SELECTOR + } + Self::getOwnerAddress(_) => { + ::SELECTOR + } + Self::getOwnerAddresses(_) => { + ::SELECTOR + } + Self::getReputedOwnerAddresses(_) => { + ::SELECTOR + } + Self::ownerPrefix(_) => ::SELECTOR, + Self::resetOwnersConfigJson(_) => { + ::SELECTOR + } + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::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 excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::excludeSenders) + } + excludeSenders + }, + { + fn getOwnerAddresses( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::getOwnerAddresses) + } + getOwnerAddresses + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::targetContracts) + } + targetContracts + }, + { + fn getReputedOwnerAddresses( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::getReputedOwnerAddresses) + } + getReputedOwnerAddresses + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::targetSelectors) + } + targetSelectors + }, + { + fn resetOwnersConfigJson( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::resetOwnersConfigJson) + } + resetOwnersConfigJson + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(OwnersCalls::failed) + } + failed + }, + { + fn ownerPrefix( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::ownerPrefix) + } + ownerPrefix + }, + { + fn getNumOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::getNumOperators) + } + getNumOperators + }, + { + fn getOwnerAddress( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::getOwnerAddress) + } + getOwnerAddress + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnersCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(OwnersCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::getNumOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::getOwnerAddress(inner) => { + ::abi_encoded_size(inner) + } + Self::getOwnerAddresses(inner) => { + ::abi_encoded_size(inner) + } + Self::getReputedOwnerAddresses(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ownerPrefix(inner) => { + ::abi_encoded_size(inner) + } + Self::resetOwnersConfigJson(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getNumOperators(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getOwnerAddress(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getOwnerAddresses(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getReputedOwnerAddresses(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::ownerPrefix(inner) => { + ::abi_encode_raw(inner, out) + } + Self::resetOwnersConfigJson(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`Owners`](self) events. + pub enum OwnersEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl OwnersEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for OwnersEvents { + const NAME: &'static str = "OwnersEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 OwnersEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Owners`](self) contract instance. + + See the [wrapper's documentation](`OwnersInstance`) 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, + ) -> OwnersInstance { + OwnersInstance::::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>> { + OwnersInstance::::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 { + OwnersInstance::::deploy_builder(provider) + } + /**A [`Owners`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Owners`](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 OwnersInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OwnersInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OwnersInstance") + .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, + > OwnersInstance + { + /**Creates a new wrapper around an on-chain [`Owners`](self) contract instance. + + See the [wrapper's documentation](`OwnersInstance`) 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 OwnersInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OwnersInstance { + OwnersInstance { + 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, + > OwnersInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`getNumOperators`] function. + pub fn getNumOperators( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getNumOperatorsCall {}) + } + ///Creates a new call builder for the [`getOwnerAddress`] function. + pub fn getOwnerAddress( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOwnerAddressCall { index }) + } + ///Creates a new call builder for the [`getOwnerAddresses`] function. + pub fn getOwnerAddresses( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOwnerAddressesCall {}) + } + ///Creates a new call builder for the [`getReputedOwnerAddresses`] function. + pub fn getReputedOwnerAddresses( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getReputedOwnerAddressesCall {}) + } + ///Creates a new call builder for the [`ownerPrefix`] function. + pub fn ownerPrefix( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerPrefixCall { index }) + } + ///Creates a new call builder for the [`resetOwnersConfigJson`] function. + pub fn resetOwnersConfigJson( + &self, + newConfig: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&resetOwnersConfigJsonCall { newConfig }) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnersInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/pausable.rs b/crates/utils/src/middleware/pausable.rs similarity index 96% rename from crates/utils/src/pausable.rs rename to crates/utils/src/middleware/pausable.rs index d4cd7653..7b404f70 100644 --- a/crates/utils/src/pausable.rs +++ b/crates/utils/src/middleware/pausable.rs @@ -170,35 +170,45 @@ interface Pausable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod Pausable { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b506107c2806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea26469706673582212201708735d0325577983acabd67000e3f0a89722ff7c28346f4fa4129cce1190aa64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b506107c2806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea26469706673582212208ca7b95e46d4369a9bd4b01f904968fb1623358291853c5b5a5bf398123619c064736f6c634300080c0033 /// ``` #[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", + 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 \x8C\xA7\xB9^F\xD46\x9A\x9B\xD4\xB0\x1F\x90Ih\xFB\x16#5\x82\x91\x85<[Z[\xF3\x98\x126\x19\xC0dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea26469706673582212201708735d0325577983acabd67000e3f0a89722ff7c28346f4fa4129cce1190aa64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea26469706673582212208ca7b95e46d4369a9bd4b01f904968fb1623358291853c5b5a5bf398123619c064736f6c634300080c0033 /// ``` #[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", + 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 \x8C\xA7\xB9^F\xD46\x9A\x9B\xD4\xB0\x1F\x90Ih\xFB\x16#5\x82\x91\x85<[Z[\xF3\x98\x126\x19\xC0dsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -206,7 +216,12 @@ pub mod Pausable { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -297,7 +312,12 @@ pub mod Pausable { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -305,7 +325,12 @@ pub mod Pausable { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -396,7 +421,12 @@ pub mod Pausable { ```solidity event Unpaused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -404,7 +434,12 @@ pub mod Pausable { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -495,16 +530,21 @@ pub mod Pausable { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -606,14 +646,19 @@ pub mod Pausable { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -709,18 +754,23 @@ pub mod Pausable { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -820,16 +870,21 @@ pub mod Pausable { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -925,16 +980,21 @@ pub mod Pausable { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1030,16 +1090,21 @@ pub mod Pausable { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1141,16 +1206,21 @@ pub mod Pausable { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/pauserregistry.rs b/crates/utils/src/middleware/pauserregistry.rs similarity index 96% rename from crates/utils/src/pauserregistry.rs rename to crates/utils/src/middleware/pauserregistry.rs index ed21b79e..ab94a962 100644 --- a/crates/utils/src/pauserregistry.rs +++ b/crates/utils/src/middleware/pauserregistry.rs @@ -137,35 +137,45 @@ interface PauserRegistry { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod PauserRegistry { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122027e896eed5afe944d6cc172aef72e26108db4cb82871c29ee297686046c2ee4d64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c0033 /// ``` #[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", + 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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122027e896eed5afe944d6cc172aef72e26108db4cb82871c29ee297686046c2ee4d64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220309e5a170a31fcdccee8db370c2f093bc32995f0ceb219ae4dbee92a58cf2ae664736f6c634300080c0033 /// ``` #[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", + 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 0\x9EZ\x17\n1\xFC\xDC\xCE\xE8\xDB7\x0C/\t;\xC3)\x95\xF0\xCE\xB2\x19\xAEM\xBE\xE9*X\xCF*\xE6dsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserStatusChanged { #[allow(missing_docs)] @@ -173,7 +183,12 @@ pub mod PauserRegistry { #[allow(missing_docs)] pub canPause: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -264,7 +279,12 @@ pub mod PauserRegistry { ```solidity event UnpauserChanged(address previousUnpauser, address newUnpauser); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UnpauserChanged { #[allow(missing_docs)] @@ -272,7 +292,12 @@ pub mod PauserRegistry { #[allow(missing_docs)] pub newUnpauser: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -363,7 +388,7 @@ pub mod PauserRegistry { ```solidity constructor(address[] _pausers, address _unpauser); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _pausers: alloy::sol_types::private::Vec, @@ -439,18 +464,23 @@ pub mod PauserRegistry { ```solidity function isPauser(address) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isPauserReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -550,17 +580,22 @@ pub mod PauserRegistry { ```solidity function setIsPauser(address newPauser, bool canPause) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setIsPauserReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -672,16 +707,21 @@ pub mod PauserRegistry { ```solidity function setUnpauser(address newUnpauser) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUnpauserReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -783,16 +823,21 @@ pub mod PauserRegistry { ```solidity function unpauser() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauserCall {} ///Container type for the return parameters of the [`unpauser()`](unpauserCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauserReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/proofparsing.rs b/crates/utils/src/middleware/proofparsing.rs new file mode 100644 index 00000000..73e597a2 --- /dev/null +++ b/crates/utils/src/middleware/proofparsing.rs @@ -0,0 +1,10207 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface ProofParsing { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function getBalanceRoot() external view returns (bytes32); + function getBalanceUpdateSlotProof() external returns (bytes32[] memory); + function getBeaconStateRoot() external view returns (bytes32); + function getBlockHeaderProof() external returns (bytes32[18] memory); + function getBlockRoot() external view returns (bytes32); + function getBlockRootIndex() external view returns (uint256); + function getExecutionPayloadProof() external returns (bytes32[7] memory); + function getExecutionPayloadRoot() external view returns (bytes32); + function getHistoricalSummaryIndex() external view returns (uint256); + function getHistoricalSummaryProof() external returns (bytes32[44] memory); + function getLatestBlockRoot() external view returns (bytes32); + function getSlot() external view returns (uint256); + function getSlotProof() external returns (bytes32[3] memory); + function getSlotRoot() external view returns (bytes32); + function getStateRootProof() external returns (bytes32[] memory); + function getTimestampProof() external returns (bytes32[4] memory); + function getTimestampRoot() external view returns (bytes32); + function getValidatorBalanceProof() external returns (bytes32[] memory); + function getValidatorFields() external returns (bytes32[] memory); + function getValidatorFieldsProof() external returns (bytes32[] memory); + function getValidatorIndex() external view returns (uint256); + function getValidatorProof() external returns (bytes32[46] memory); + function getValidatorPubkeyHash() external view returns (bytes32); + function getWithdrawalCredentialProof() external returns (bytes32[] memory); + function getWithdrawalFields() external returns (bytes32[] memory); + function getWithdrawalIndex() external view returns (uint256); + function getWithdrawalProof() external returns (bytes32[9] memory); + function setJSON(string memory path) external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getBalanceRoot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getBalanceUpdateSlotProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getBeaconStateRoot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getBlockHeaderProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[18]", + "internalType": "bytes32[18]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getBlockRoot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getBlockRootIndex", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getExecutionPayloadProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[7]", + "internalType": "bytes32[7]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getExecutionPayloadRoot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getHistoricalSummaryIndex", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getHistoricalSummaryProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[44]", + "internalType": "bytes32[44]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getLatestBlockRoot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getSlot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getSlotProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[3]", + "internalType": "bytes32[3]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getSlotRoot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStateRootProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getTimestampProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[4]", + "internalType": "bytes32[4]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getTimestampRoot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidatorBalanceProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getValidatorFields", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getValidatorFieldsProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getValidatorIndex", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidatorProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[46]", + "internalType": "bytes32[46]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getValidatorPubkeyHash", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getWithdrawalCredentialProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getWithdrawalFields", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getWithdrawalIndex", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getWithdrawalProof", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32[9]", + "internalType": "bytes32[9]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setJSON", + "inputs": [ + { + "name": "path", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod ProofParsing { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260078054600160ff199182168117909255600b8054909116909117905534801561002d57600080fd5b5061345e8061003d6000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c8063765aa6061161013b578063b5508aa9116100b8578063d944472f1161007c578063d944472f14610411578063db364a4014610419578063e20c9f711461042e578063f148082c14610436578063fa7626d41461043e57600080fd5b8063b5508aa9146103cc578063ba414fa6146103d4578063c3da8ae9146103ec578063d6461cbb146103f4578063d911b683146103fc57600080fd5b80639de4a9b3116100ff5780639de4a9b31461037d578063a507742914610392578063a6b7a848146103a7578063ab72161c146103af578063b38061bf146103c457600080fd5b8063765aa6061461034857806385226c8114610350578063893893ca14610365578063916a17c61461036d578063950bb6821461037557600080fd5b806334e3d90e116101c95780634c20f5101161018d5780634c20f510146103065780634c38f9131461030e57806364f38ed71461032357806366d9a9a01461032b5780636c877c841461034057600080fd5b806334e3d90e146102de5780633e5e3c23146102e65780633f7286f4146102ee57806342864734146102f65780634656fdb5146102fe57600080fd5b80631ed7831c116102105780631ed7831c14610282578063275378b1146102975780632872e20c1461029f5780632ade3880146102b45780632fd1793c146102c957600080fd5b806308a4d71f1461024257806316f0715314610257578063177541fc1461027257806318aadf311461027a575b600080fd5b610255610250366004612aba565b61044b565b005b61025f6104d9565b6040519081526020015b60405180910390f35b61025f610595565b61025f610653565b61028a610717565b6040516102699190612b3a565b61025f610779565b6102a7610837565b6040516102699190612b87565b6102bc610a89565b6040516102699190612c15565b6102d1610bcb565b6040516102699190612cd5565b6102d1610d09565b61028a610e3e565b61028a610e9e565b61025f610efe565b61025f610fc1565b6102d161107b565b6103166111b3565b6040516102699190612d0d565b61025f6112f2565b6103336113b0565b6040516102699190612d36565b61025f611496565b61025f611549565b610358611606565b6040516102699190612de9565b6102d16116d6565b61033361180e565b6102d16118f4565b610385611a2a565b6040516102699190612e4b565b61039a611b68565b6040516102699190612e73565b6102d1611ca7565b6103b7611ddf565b6040516102699190612e9c565b61025f611f1e565b610358611fda565b6103dc6120aa565b6040519015158152602001610269565b6102d16121cb565b61025f612301565b6104046123cc565b6040516102699190612ec5565b61025f61250a565b6104216125cd565b6040516102699190612eed565b61028a61270b565b61025f61276b565b6007546103dc9060ff1681565b6040516360f9bb1160e01b8152600080516020613409833981519152906360f9bb119061047c908490600401612f15565b600060405180830381865afa158015610499573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104c19190810190612f28565b80516104d591601c916020909101906128dc565b5050565b6000610590601c80546104eb90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461051790612f9f565b80156105645780601f1061053957610100808354040283529160200191610564565b820191906000526020600020905b81548152906001019060200180831161054757829003601f168201915b5050505050604051806040016040528060098152602001680b9cdb1bdd149bdbdd60ba1b815250612828565b905090565b6000610590601c80546105a790612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390612f9f565b80156106205780601f106105f557610100808354040283529160200191610620565b820191906000526020600020905b81548152906001019060200180831161060357829003601f168201915b50505050506040518060400160405280601081526020016f0b98995858dbdb94dd185d19549bdbdd60821b815250612828565b6000610590601c805461066590612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461069190612f9f565b80156106de5780601f106106b3576101008083540402835291602001916106de565b820191906000526020600020905b8154815290600101906020018083116106c157829003601f168201915b5050505050604051806040016040528060168152602001750b9b185d195cdd109b1bd8dad2195859195c949bdbdd60521b815250612828565b6060601480548060200260200160405190810160405280929190818152602001828054801561076f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610751575b5050505050905090565b6000610590601c805461078b90612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546107b790612f9f565b80156108045780601f106107d957610100808354040283529160200191610804565b820191906000526020600020905b8154815290600101906020018083116107e757829003601f168201915b50505050506040518060400160405280601081526020016f0b989b1bd8dad2195859195c949bdbdd60821b815250612828565b61083f612960565b60005b602c811015610a545760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bd9190810190612f28565b6040516020016108cd9190612fd4565b60408051601f19818403018152908290526108ea91602001612ff9565b604051602081830303815290604052601d908051906020019061090e9291906128dc565b50610a2d601c805461091f90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461094b90612f9f565b80156109985780601f1061096d57610100808354040283529160200191610998565b820191906000526020600020905b81548152906001019060200180831161097b57829003601f168201915b5050505050601d80546109aa90612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546109d690612f9f565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b5050505050612828565b606a82602c8110610a4057610a4061303e565b015580610a4c81613054565b915050610842565b506040805161058081019182905290606a90602c9082845b815481526020019060010190808311610a6c575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bc257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610bab578382906000526020600020018054610b1e90612f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90612f9f565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b505050505081526020019060010190610aff565b505050508152505081526020019060010190610aad565b50505050905090565b60408051602e8082526105e0820190925260609160009190602082016105c08036833701905050905060005b602e811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015610c4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c729190810190612f28565b604051602001610c829190612fd4565b60408051601f1981840301815290829052610c9f9160200161307d565b604051602081830303815290604052601d9080519060200190610cc39291906128dc565b50610cd4601c805461091f90612f9f565b828281518110610ce657610ce661303e565b602090810291909101015280610cfb81613054565b915050610bf7565b50919050565b604080516003808252608082019092526060916000919060208201848036833701905050905060005b6003811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015610d85573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dad9190810190612f28565b604051602001610dbd9190612fd4565b60408051601f1981840301815290829052610dda916020016130c2565b604051602081830303815290604052601d9080519060200190610dfe9291906128dc565b50610e0f601c805461091f90612f9f565b828281518110610e2157610e2161303e565b602090810291909101015280610e3681613054565b915050610d32565b6060601680548060200260200160405190810160405280929190818152602001828054801561076f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610751575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561076f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610751575050505050905090565b6000610590601c8054610f1090612f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3c90612f9f565b8015610f895780601f10610f5e57610100808354040283529160200191610f89565b820191906000526020600020905b815481529060010190602001808311610f6c57829003601f168201915b50505050506040518060400160405280601581526020017405cc4d8dec6d690cac2c8cae4a4dedee892dcc8caf605b1b8152506128a6565b6000610590601c8054610fd390612f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fff90612f9f565b801561104c5780601f106110215761010080835404028352916020019161104c565b820191906000526020600020905b81548152906001019060200180831161102f57829003601f168201915b50505050506040518060400160405280600c81526020016b0b98985b185b98d9549bdbdd60a21b815250612828565b604080516008808252610120820190925260609160009190602082016101008036833701905050905060005b6008811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa1580156110fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111229190810190612f28565b6040516020016111329190612fd4565b60408051601f198184030181529082905261114f91602001613118565b604051602081830303815290604052601d90805190602001906111739291906128dc565b50611184601c805461091f90612f9f565b8282815181106111965761119661303e565b6020908102919091010152806111ab81613054565b9150506110a7565b6111bb61297f565b60005b602e8110156112c25760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611211573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112399190810190612f28565b6040516020016112499190612fd4565b60408051601f198184030181529082905261126691602001613151565b604051602081830303815290604052601d908051906020019061128a9291906128dc565b5061129b601c805461091f90612f9f565b603c82602e81106112ae576112ae61303e565b0155806112ba81613054565b9150506111be565b50604080516105c0810191829052603c805482529091602e90603d60208501808311610a6c575050505050905090565b6000610590601c805461130490612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461133090612f9f565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b50505050506040518060400160405280601081526020016f05ceed2e8d0c8e4c2eec2d892dcc8caf60831b8152506128a6565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bc25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561147e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116114405790505b505050505081525050815260200190600101906113d4565b6000610590601c80546114a890612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546114d490612f9f565b80156115215780601f106114f657610100808354040283529160200191611521565b820191906000526020600020905b81548152906001019060200180831161150457829003601f168201915b5050505050604051806040016040528060058152602001640b9cdb1bdd60da1b8152506128a6565b6000610590601c805461155b90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461158790612f9f565b80156115d45780601f106115a9576101008083540402835291602001916115d4565b820191906000526020600020905b8154815290600101906020018083116115b757829003601f168201915b50505050506040518060400160405280600f81526020016e05cecc2d8d2c8c2e8dee492dcc8caf608b1b8152506128a6565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610bc257838290600052602060002001805461164990612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461167590612f9f565b80156116c25780601f10611697576101008083540402835291602001916116c2565b820191906000526020600020905b8154815290600101906020018083116116a557829003601f168201915b50505050508152602001906001019061162a565b60408051602e8082526105e0820190925260609160009190602082016105c08036833701905050905060005b602e811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611755573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261177d9190810190612f28565b60405160200161178d9190612fd4565b60408051601f19818403018152908290526117aa91602001613189565b604051602081830303815290604052601d90805190602001906117ce9291906128dc565b506117df601c805461091f90612f9f565b8282815181106117f1576117f161303e565b60209081029190910101528061180681613054565b915050611702565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bc25760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156118dc57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161189e5790505b50505050508152505081526020019060010190611832565b60408051600480825260a08201909252606091600091906020820160808036833701905050905060005b6004811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611971573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119999190810190612f28565b6040516020016119a99190612fd4565b60408051601f19818403018152908290526119c6916020016131c7565b604051602081830303815290604052601d90805190602001906119ea9291906128dc565b506119fb601c805461091f90612f9f565b828281518110611a0d57611a0d61303e565b602090810291909101015280611a2281613054565b91505061191e565b611a3261299e565b60005b6003811015611b395760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190612f28565b604051602001611ac09190612fd4565b60408051601f1981840301815290829052611add91602001613201565b604051602081830303815290604052601d9080519060200190611b019291906128dc565b50611b12601c805461091f90612f9f565b60308260038110611b2557611b2561303e565b015580611b3181613054565b915050611a35565b506040805160608101918290526030805482529091600390603160208501808311610a6c575050505050905090565b611b706129bc565b60005b6012811015611c775760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611bc6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bee9190810190612f28565b604051602001611bfe9190612fd4565b60408051601f1981840301815290829052611c1b91602001613234565b604051602081830303815290604052601d9080519060200190611c3f9291906128dc565b50611c50601c805461091f90612f9f565b601e8260128110611c6357611c6361303e565b015580611c6f81613054565b915050611b73565b5060408051610240810191829052601e805482529091601290601f60208501808311610a6c575050505050905090565b60408051602c8082526105a0820190925260609160009190602082016105808036833701905050905060005b602c811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611d26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d4e9190810190612f28565b604051602001611d5e9190612fd4565b60408051601f1981840301815290829052611d7b91602001613261565b604051602081830303815290604052601d9080519060200190611d9f9291906128dc565b50611db0601c805461091f90612f9f565b828281518110611dc257611dc261303e565b602090810291909101015280611dd781613054565b915050611cd3565b611de76129db565b60005b6009811015611eee5760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e659190810190612f28565b604051602001611e759190612fd4565b60408051601f1981840301815290829052611e92916020016132a6565b604051602081830303815290604052601d9080519060200190611eb69291906128dc565b50611ec7601c805461091f90612f9f565b60338260098110611eda57611eda61303e565b015580611ee681613054565b915050611dea565b50604080516101208101918290526033805482529091600990603460208501808311610a6c575050505050905090565b6000610590601c8054611f3090612f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5c90612f9f565b8015611fa95780601f10611f7e57610100808354040283529160200191611fa9565b820191906000526020600020905b815481529060010190602001808311611f8c57829003601f168201915b50505050506040518060400160405280600e81526020016d0b9d1a5b595cdd185b5c149bdbdd60921b815250612828565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610bc257838290600052602060002001805461201d90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461204990612f9f565b80156120965780601f1061206b57610100808354040283529160200191612096565b820191906000526020600020905b81548152906001019060200180831161207957829003601f168201915b505050505081526020019060010190611ffe565b600754600090610100900460ff16156120cc5750600754610100900460ff1690565b60006000805160206134098339815191523b156121c65760408051600080516020613409833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161214e917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016132d2565b60408051601f198184030181529082905261216891613303565b6000604051808303816000865af19150503d80600081146121a5576040519150601f19603f3d011682016040523d82523d6000602084013e6121aa565b606091505b50915050808060200190518101906121c2919061331f565b9150505b919050565b60408051600580825260c08201909252606091600091906020820160a08036833701905050905060005b6005811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015612248573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122709190810190612f28565b6040516020016122809190612fd4565b60408051601f198184030181529082905261229d91602001613341565b604051602081830303815290604052601d90805190602001906122c19291906128dc565b506122d2601c805461091f90612f9f565b8282815181106122e4576122e461303e565b6020908102919091010152806122f981613054565b9150506121f5565b6000610590601c805461231390612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461233f90612f9f565b801561238c5780601f106123615761010080835404028352916020019161238c565b820191906000526020600020905b81548152906001019060200180831161236f57829003601f168201915b50505050506040518060400160405280601781526020017f2e686973746f726963616c53756d6d617279496e6465780000000000000000008152506128a6565b6123d46129fa565b60005b60048110156124db5760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa15801561242a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124529190810190612f28565b6040516020016124629190612fd4565b60408051601f198184030181529082905261247f91602001613367565b604051602081830303815290604052601d90805190602001906124a39291906128dc565b506124b4601c805461091f90612f9f565b609d82600481106124c7576124c761303e565b0155806124d381613054565b9150506123d7565b50604080516080810191829052609d805482529091600490609e60208501808311610a6c575050505050905090565b6000610590601c805461251c90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461254890612f9f565b80156125955780601f1061256a57610100808354040283529160200191612595565b820191906000526020600020905b81548152906001019060200180831161257857829003601f168201915b5050505050604051806040016040528060158152602001740b995e1958dd5d1a5bdb94185e5b1bd859149bdbdd605a1b815250612828565b6125d5612a18565b60005b60078110156126dc5760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa15801561262b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126539190810190612f28565b6040516020016126639190612fd4565b60408051601f198184030181529082905261268091602001613392565b604051602081830303815290604052601d90805190602001906126a49291906128dc565b506126b5601c805461091f90612f9f565b609682600781106126c8576126c861303e565b0155806126d481613054565b9150506125d8565b506040805160e08101918290526096805482529091600790609760208501808311610a6c575050505050905090565b6060601380548060200260200160405190810160405280929190818152602001828054801561076f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610751575050505050905090565b6000610590601c805461277d90612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546127a990612f9f565b80156127f65780601f106127cb576101008083540402835291602001916127f6565b820191906000526020600020905b8154815290600101906020018083116127d957829003601f168201915b5050505050604051806040016040528060138152602001722e56616c696461746f724669656c64735b305d60681b8152505b604051631777e59d60e01b815260009060008051602061340983398151915290631777e59d9061285e90869086906004016133ca565b602060405180830381865afa15801561287b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289f91906133ef565b9392505050565b6040516356eef15b60e11b81526000906000805160206134098339815191529063addde2b69061285e90869086906004016133ca565b8280546128e890612f9f565b90600052602060002090601f01602090048101928261290a5760008555612950565b82601f1061292357805160ff1916838001178555612950565b82800160010185558215612950579182015b82811115612950578251825591602001919060010190612935565b5061295c929150612a36565b5090565b604051806105800160405280602c906020820280368337509192915050565b604051806105c00160405280602e906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518061024001604052806012906020820280368337509192915050565b6040518061012001604052806009906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060e001604052806007906020820280368337509192915050565b5b8082111561295c5760008155600101612a37565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a8a57612a8a612a4b565b604052919050565b600067ffffffffffffffff821115612aac57612aac612a4b565b50601f01601f191660200190565b600060208284031215612acc57600080fd5b813567ffffffffffffffff811115612ae357600080fd5b8201601f81018413612af457600080fd5b8035612b07612b0282612a92565b612a61565b818152856020838501011115612b1c57600080fd5b81602084016020830137600091810160200191909152949350505050565b6020808252825182820181905260009190848201906040850190845b81811015612b7b5783516001600160a01b031683529284019291840191600101612b56565b50909695505050505050565b6105808101818360005b602c811015612bb0578151835260209283019290910190600101612b91565b50505092915050565b60005b83811015612bd4578181015183820152602001612bbc565b83811115612be3576000848401525b50505050565b60008151808452612c01816020860160208601612bb9565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612cc557603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612caf57605f19898503018352612c9d848651612be9565b948e01949350918d0191600101612c81565b505050978a019794505091880191600101612c3c565b50919a9950505050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612b7b57835183529284019291840191600101612cf1565b6105c08101818360005b602e811015612bb0578151835260209283019290910190600101612d17565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612dda57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612dc55783516001600160e01b0319168252928b019260019290920191908b0190612d9b565b50978a01979550505091870191600101612d5e565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e3e57603f19888603018452612e2c858351612be9565b94509285019290850190600101612e10565b5092979650505050505050565b60608101818360005b6003811015612bb0578151835260209283019290910190600101612e54565b6102408101818360005b6012811015612bb0578151835260209283019290910190600101612e7d565b6101208101818360005b6009811015612bb0578151835260209283019290910190600101612ea6565b60808101818360005b6004811015612bb0578151835260209283019290910190600101612ece565b60e08101818360005b6007811015612bb0578151835260209283019290910190600101612ef6565b60208152600061289f6020830184612be9565b600060208284031215612f3a57600080fd5b815167ffffffffffffffff811115612f5157600080fd5b8201601f81018413612f6257600080fd5b8051612f70612b0282612a92565b818152856020838501011115612f8557600080fd5b612f96826020830160208601612bb9565b95945050505050565b600181811c90821680612fb357607f821691505b60208210811415610d0357634e487b7160e01b600052602260045260246000fd5b60008251612fe6818460208701612bb9565b605d60f81b920191825250600101919050565b7f2e486973746f726963616c53756d6d61727950726f6f665b0000000000000000815260008251613031816018850160208701612bb9565b9190910160180192915050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561307657634e487b7160e01b600052601160045260246000fd5b5060010190565b7f2e5769746864726177616c43726564656e7469616c50726f6f665b00000000008152600082516130b581601b850160208701612bb9565b91909101601b0192915050565b7f2e5374617465526f6f74416761696e73744c6174657374426c6f636b48656164815267657250726f6f665b60c01b60208201526000825161310b816028850160208701612bb9565b9190910160280192915050565b702e56616c696461746f724669656c64735b60781b815260008251613144816011850160208701612bb9565b9190910160110192915050565b6f2e56616c696461746f7250726f6f665b60801b81526000825161317c816010850160208701612bb9565b9190910160100192915050565b752e56616c696461746f724669656c647350726f6f665b60501b8152600082516131ba816016850160208701612bb9565b9190910160160192915050565b712e5769746864726177616c4669656c64735b60701b8152600082516131f4816012850160208701612bb9565b9190910160120192915050565b6a2e536c6f7450726f6f665b60a81b81526000825161322781600b850160208701612bb9565b91909101600b0192915050565b712e426c6f636b48656164657250726f6f665b60701b8152600082516131f4816012850160208701612bb9565b7f2e56616c696461746f7242616c616e636550726f6f665b000000000000000000815260008251613299816017850160208701612bb9565b9190910160170192915050565b702e5769746864726177616c50726f6f665b60781b815260008251613144816011850160208701612bb9565b6001600160e01b03198316815281516000906132f5816004850160208701612bb9565b919091016004019392505050565b60008251613315818460208701612bb9565b9190910192915050565b60006020828403121561333157600080fd5b8151801515811461289f57600080fd5b6a2e736c6f7450726f6f665b60a81b81526000825161322781600b850160208701612bb9565b6f2e54696d657374616d7050726f6f665b60801b81526000825161317c816010850160208701612bb9565b7f2e457865637574696f6e5061796c6f616450726f6f665b000000000000000000815260008251613299816017850160208701612bb9565b6040815260006133dd6040830185612be9565b8281036020840152612f968185612be9565b60006020828403121561340157600080fd5b505191905056fe0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122057ae67fee4fb3d1c6d71cd6b6dd37596486c5ab1b5fdae13d9517067b5b9d15c64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15a\0-W`\0\x80\xFD[Pa4^\x80a\0=`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02=W`\x005`\xE0\x1C\x80cvZ\xA6\x06\x11a\x01;W\x80c\xB5P\x8A\xA9\x11a\0\xB8W\x80c\xD9DG/\x11a\0|W\x80c\xD9DG/\x14a\x04\x11W\x80c\xDB6J@\x14a\x04\x19W\x80c\xE2\x0C\x9Fq\x14a\x04.W\x80c\xF1H\x08,\x14a\x046W\x80c\xFAv&\xD4\x14a\x04>W`\0\x80\xFD[\x80c\xB5P\x8A\xA9\x14a\x03\xCCW\x80c\xBAAO\xA6\x14a\x03\xD4W\x80c\xC3\xDA\x8A\xE9\x14a\x03\xECW\x80c\xD6F\x1C\xBB\x14a\x03\xF4W\x80c\xD9\x11\xB6\x83\x14a\x03\xFCW`\0\x80\xFD[\x80c\x9D\xE4\xA9\xB3\x11a\0\xFFW\x80c\x9D\xE4\xA9\xB3\x14a\x03}W\x80c\xA5\x07t)\x14a\x03\x92W\x80c\xA6\xB7\xA8H\x14a\x03\xA7W\x80c\xABr\x16\x1C\x14a\x03\xAFW\x80c\xB3\x80a\xBF\x14a\x03\xC4W`\0\x80\xFD[\x80cvZ\xA6\x06\x14a\x03HW\x80c\x85\"l\x81\x14a\x03PW\x80c\x898\x93\xCA\x14a\x03eW\x80c\x91j\x17\xC6\x14a\x03mW\x80c\x95\x0B\xB6\x82\x14a\x03uW`\0\x80\xFD[\x80c4\xE3\xD9\x0E\x11a\x01\xC9W\x80cL \xF5\x10\x11a\x01\x8DW\x80cL \xF5\x10\x14a\x03\x06W\x80cL8\xF9\x13\x14a\x03\x0EW\x80cd\xF3\x8E\xD7\x14a\x03#W\x80cf\xD9\xA9\xA0\x14a\x03+W\x80cl\x87|\x84\x14a\x03@W`\0\x80\xFD[\x80c4\xE3\xD9\x0E\x14a\x02\xDEW\x80c>^<#\x14a\x02\xE6W\x80c?r\x86\xF4\x14a\x02\xEEW\x80cB\x86G4\x14a\x02\xF6W\x80cFV\xFD\xB5\x14a\x02\xFEW`\0\x80\xFD[\x80c\x1E\xD7\x83\x1C\x11a\x02\x10W\x80c\x1E\xD7\x83\x1C\x14a\x02\x82W\x80c'Sx\xB1\x14a\x02\x97W\x80c(r\xE2\x0C\x14a\x02\x9FW\x80c*\xDE8\x80\x14a\x02\xB4W\x80c/\xD1y<\x14a\x02\xC9W`\0\x80\xFD[\x80c\x08\xA4\xD7\x1F\x14a\x02BW\x80c\x16\xF0qS\x14a\x02WW\x80c\x17uA\xFC\x14a\x02rW\x80c\x18\xAA\xDF1\x14a\x02zW[`\0\x80\xFD[a\x02Ua\x02P6`\x04a*\xBAV[a\x04KV[\0[a\x02_a\x04\xD9V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02_a\x05\x95V[a\x02_a\x06SV[a\x02\x8Aa\x07\x17V[`@Qa\x02i\x91\x90a+:V[a\x02_a\x07yV[a\x02\xA7a\x087V[`@Qa\x02i\x91\x90a+\x87V[a\x02\xBCa\n\x89V[`@Qa\x02i\x91\x90a,\x15V[a\x02\xD1a\x0B\xCBV[`@Qa\x02i\x91\x90a,\xD5V[a\x02\xD1a\r\tV[a\x02\x8Aa\x0E>V[a\x02\x8Aa\x0E\x9EV[a\x02_a\x0E\xFEV[a\x02_a\x0F\xC1V[a\x02\xD1a\x10{V[a\x03\x16a\x11\xB3V[`@Qa\x02i\x91\x90a-\rV[a\x02_a\x12\xF2V[a\x033a\x13\xB0V[`@Qa\x02i\x91\x90a-6V[a\x02_a\x14\x96V[a\x02_a\x15IV[a\x03Xa\x16\x06V[`@Qa\x02i\x91\x90a-\xE9V[a\x02\xD1a\x16\xD6V[a\x033a\x18\x0EV[a\x02\xD1a\x18\xF4V[a\x03\x85a\x1A*V[`@Qa\x02i\x91\x90a.KV[a\x03\x9Aa\x1BhV[`@Qa\x02i\x91\x90a.sV[a\x02\xD1a\x1C\xA7V[a\x03\xB7a\x1D\xDFV[`@Qa\x02i\x91\x90a.\x9CV[a\x02_a\x1F\x1EV[a\x03Xa\x1F\xDAV[a\x03\xDCa \xAAV[`@Q\x90\x15\x15\x81R` \x01a\x02iV[a\x02\xD1a!\xCBV[a\x02_a#\x01V[a\x04\x04a#\xCCV[`@Qa\x02i\x91\x90a.\xC5V[a\x02_a%\nV[a\x04!a%\xCDV[`@Qa\x02i\x91\x90a.\xEDV[a\x02\x8Aa'\x0BV[a\x02_a'kV[`\x07Ta\x03\xDC\x90`\xFF\x16\x81V[`@Qc`\xF9\xBB\x11`\xE0\x1B\x81R`\0\x80Q` a4\t\x839\x81Q\x91R\x90c`\xF9\xBB\x11\x90a\x04|\x90\x84\x90`\x04\x01a/\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x99W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x04\xC1\x91\x90\x81\x01\x90a/(V[\x80Qa\x04\xD5\x91`\x1C\x91` \x90\x91\x01\x90a(\xDCV[PPV[`\0a\x05\x90`\x1C\x80Ta\x04\xEB\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x17\x90a/\x9FV[\x80\x15a\x05dW\x80`\x1F\x10a\x059Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05dV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05GW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\t\x81R` \x01h\x0B\x9C\xDB\x1B\xDD\x14\x9B\xDB\xDD`\xBA\x1B\x81RPa((V[\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x05\xA7\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xD3\x90a/\x9FV[\x80\x15a\x06 W\x80`\x1F\x10a\x05\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06 V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o\x0B\x98\x99XX\xDB\xDB\x94\xDD\x18]\x19T\x9B\xDB\xDD`\x82\x1B\x81RPa((V[`\0a\x05\x90`\x1C\x80Ta\x06e\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x91\x90a/\x9FV[\x80\x15a\x06\xDEW\x80`\x1F\x10a\x06\xB3Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xDEV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xC1W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01u\x0B\x9B\x18]\x19\\\xDD\x10\x9B\x1B\xD8\xDA\xD2\x19XY\x19\\\x94\x9B\xDB\xDD`R\x1B\x81RPa((V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x07oW` \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\x07QW[PPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x07\x8B\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xB7\x90a/\x9FV[\x80\x15a\x08\x04W\x80`\x1F\x10a\x07\xD9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x04V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xE7W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o\x0B\x98\x9B\x1B\xD8\xDA\xD2\x19XY\x19\\\x94\x9B\xDB\xDD`\x82\x1B\x81RPa((V[a\x08?a)`V[`\0[`,\x81\x10\x15a\nTW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x08\xBD\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x08\xCD\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\xEA\x91` \x01a/\xF9V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\t\x0E\x92\x91\x90a(\xDCV[Pa\n-`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\tK\x90a/\x9FV[\x80\x15a\t\x98W\x80`\x1F\x10a\tmWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x98V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t{W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`\x1D\x80Ta\t\xAA\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xD6\x90a/\x9FV[\x80\x15a\n#W\x80`\x1F\x10a\t\xF8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n#V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x06W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPa((V[`j\x82`,\x81\x10a\n@Wa\n@a0>V[\x01U\x80a\nL\x81a0TV[\x91PPa\x08BV[P`@\x80Qa\x05\x80\x81\x01\x91\x82\x90R\x90`j\x90`,\x90\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\nlWPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x0B\xABW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0B\x1E\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0BJ\x90a/\x9FV[\x80\x15a\x0B\x97W\x80`\x1F\x10a\x0BlWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0B\x97V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0BzW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n\xFFV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n\xADV[PPPP\x90P\x90V[`@\x80Q`.\x80\x82Ra\x05\xE0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01a\x05\xC0\x806\x837\x01\x90PP\x90P`\0[`.\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CJW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0Cr\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x0C\x82\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\x9F\x91` \x01a0}V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x0C\xC3\x92\x91\x90a(\xDCV[Pa\x0C\xD4`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x0C\xE6Wa\x0C\xE6a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x0C\xFB\x81a0TV[\x91PPa\x0B\xF7V[P\x91\x90PV[`@\x80Q`\x03\x80\x82R`\x80\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01\x84\x806\x837\x01\x90PP\x90P`\0[`\x03\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\xAD\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\r\xBD\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\xDA\x91` \x01a0\xC2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\r\xFE\x92\x91\x90a(\xDCV[Pa\x0E\x0F`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x0E!Wa\x0E!a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x0E6\x81a0TV[\x91PPa\r2V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x07oW` \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\x07QWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x07oW` \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\x07QWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x0F\x10\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F<\x90a/\x9FV[\x80\x15a\x0F\x89W\x80`\x1F\x10a\x0F^Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x89V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FlW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x05\xCCM\x8D\xECmi\x0C\xAC,\x8C\xAEJM\xED\xEE\x89-\xCC\x8C\xAF`[\x1B\x81RPa(\xA6V[`\0a\x05\x90`\x1C\x80Ta\x0F\xD3\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F\xFF\x90a/\x9FV[\x80\x15a\x10LW\x80`\x1F\x10a\x10!Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10LV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10/W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x0B\x98\x98[\x18[\x98\xD9T\x9B\xDB\xDD`\xA2\x1B\x81RPa((V[`@\x80Q`\x08\x80\x82Ra\x01 \x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01a\x01\0\x806\x837\x01\x90PP\x90P`\0[`\x08\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x11\"\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x112\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11O\x91` \x01a1\x18V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x11s\x92\x91\x90a(\xDCV[Pa\x11\x84`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x11\x96Wa\x11\x96a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x11\xAB\x81a0TV[\x91PPa\x10\xA7V[a\x11\xBBa)\x7FV[`\0[`.\x81\x10\x15a\x12\xC2W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x11W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x129\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x12I\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12f\x91` \x01a1QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x12\x8A\x92\x91\x90a(\xDCV[Pa\x12\x9B`\x1C\x80Ta\t\x1F\x90a/\x9FV[`<\x82`.\x81\x10a\x12\xAEWa\x12\xAEa0>V[\x01U\x80a\x12\xBA\x81a0TV[\x91PPa\x11\xBEV[P`@\x80Qa\x05\xC0\x81\x01\x91\x82\x90R`<\x80T\x82R\x90\x91`.\x90`=` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x13\x04\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x130\x90a/\x9FV[\x80\x15a\x13}W\x80`\x1F\x10a\x13RWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x13}V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x13`W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o\x05\xCE\xED.\x8D\x0C\x8EL.\xEC-\x89-\xCC\x8C\xAF`\x83\x1B\x81RPa(\xA6V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x14~W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x14@W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x13\xD4V[`\0a\x05\x90`\x1C\x80Ta\x14\xA8\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14\xD4\x90a/\x9FV[\x80\x15a\x15!W\x80`\x1F\x10a\x14\xF6Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x15!V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x15\x04W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x0B\x9C\xDB\x1B\xDD`\xDA\x1B\x81RPa(\xA6V[`\0a\x05\x90`\x1C\x80Ta\x15[\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\x87\x90a/\x9FV[\x80\x15a\x15\xD4W\x80`\x1F\x10a\x15\xA9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x15\xD4V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x15\xB7W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x0F\x81R` \x01n\x05\xCE\xCC-\x8D,\x8C.\x8D\xEEI-\xCC\x8C\xAF`\x8B\x1B\x81RPa(\xA6V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x16I\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x16u\x90a/\x9FV[\x80\x15a\x16\xC2W\x80`\x1F\x10a\x16\x97Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x16\xC2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\xA5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x16*V[`@\x80Q`.\x80\x82Ra\x05\xE0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01a\x05\xC0\x806\x837\x01\x90PP\x90P`\0[`.\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x17}\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x17\x8D\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x17\xAA\x91` \x01a1\x89V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x17\xCE\x92\x91\x90a(\xDCV[Pa\x17\xDF`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x17\xF1Wa\x17\xF1a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x18\x06\x81a0TV[\x91PPa\x17\x02V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x18\xDCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x18\x9EW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x182V[`@\x80Q`\x04\x80\x82R`\xA0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01`\x80\x806\x837\x01\x90PP\x90P`\0[`\x04\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x19\x99\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x19\xA9\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xC6\x91` \x01a1\xC7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x19\xEA\x92\x91\x90a(\xDCV[Pa\x19\xFB`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x1A\rWa\x1A\ra0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x1A\"\x81a0TV[\x91PPa\x19\x1EV[a\x1A2a)\x9EV[`\0[`\x03\x81\x10\x15a\x1B9W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1A\xB0\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x1A\xC0\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1A\xDD\x91` \x01a2\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x1B\x01\x92\x91\x90a(\xDCV[Pa\x1B\x12`\x1C\x80Ta\t\x1F\x90a/\x9FV[`0\x82`\x03\x81\x10a\x1B%Wa\x1B%a0>V[\x01U\x80a\x1B1\x81a0TV[\x91PPa\x1A5V[P`@\x80Q``\x81\x01\x91\x82\x90R`0\x80T\x82R\x90\x91`\x03\x90`1` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[a\x1Bpa)\xBCV[`\0[`\x12\x81\x10\x15a\x1CwW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1B\xEE\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x1B\xFE\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\x1B\x91` \x01a24V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x1C?\x92\x91\x90a(\xDCV[Pa\x1CP`\x1C\x80Ta\t\x1F\x90a/\x9FV[`\x1E\x82`\x12\x81\x10a\x1CcWa\x1Cca0>V[\x01U\x80a\x1Co\x81a0TV[\x91PPa\x1BsV[P`@\x80Qa\x02@\x81\x01\x91\x82\x90R`\x1E\x80T\x82R\x90\x91`\x12\x90`\x1F` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[`@\x80Q`,\x80\x82Ra\x05\xA0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01a\x05\x80\x806\x837\x01\x90PP\x90P`\0[`,\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D&W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1DN\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x1D^\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1D{\x91` \x01a2aV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x1D\x9F\x92\x91\x90a(\xDCV[Pa\x1D\xB0`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x1D\xC2Wa\x1D\xC2a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x1D\xD7\x81a0TV[\x91PPa\x1C\xD3V[a\x1D\xE7a)\xDBV[`\0[`\t\x81\x10\x15a\x1E\xEEW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1Ee\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x1Eu\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x92\x91` \x01a2\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x1E\xB6\x92\x91\x90a(\xDCV[Pa\x1E\xC7`\x1C\x80Ta\t\x1F\x90a/\x9FV[`3\x82`\t\x81\x10a\x1E\xDAWa\x1E\xDAa0>V[\x01U\x80a\x1E\xE6\x81a0TV[\x91PPa\x1D\xEAV[P`@\x80Qa\x01 \x81\x01\x91\x82\x90R`3\x80T\x82R\x90\x91`\t\x90`4` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x1F0\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1F\\\x90a/\x9FV[\x80\x15a\x1F\xA9W\x80`\x1F\x10a\x1F~Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1F\xA9V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1F\x8CW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01m\x0B\x9D\x1A[Y\\\xDD\x18[\\\x14\x9B\xDB\xDD`\x92\x1B\x81RPa((V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W\x83\x82\x90`\0R` `\0 \x01\x80Ta \x1D\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta I\x90a/\x9FV[\x80\x15a \x96W\x80`\x1F\x10a kWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a \x96V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a yW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1F\xFEV[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a \xCCWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0`\0\x80Q` a4\t\x839\x81Q\x91R;\x15a!\xC6W`@\x80Q`\0\x80Q` a4\t\x839\x81Q\x91R` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a!N\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a2\xD2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra!h\x91a3\x03V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a!\xA5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a!\xAAV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a!\xC2\x91\x90a3\x1FV[\x91PP[\x91\x90PV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01`\xA0\x806\x837\x01\x90PP\x90P`\0[`\x05\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\"HW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\"p\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\"\x80\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\x9D\x91` \x01a3AV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\"\xC1\x92\x91\x90a(\xDCV[Pa\"\xD2`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\"\xE4Wa\"\xE4a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\"\xF9\x81a0TV[\x91PPa!\xF5V[`\0a\x05\x90`\x1C\x80Ta#\x13\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta#?\x90a/\x9FV[\x80\x15a#\x8CW\x80`\x1F\x10a#aWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a#\x8CV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a#oW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.historicalSummaryIndex\0\0\0\0\0\0\0\0\0\x81RPa(\xA6V[a#\xD4a)\xFAV[`\0[`\x04\x81\x10\x15a$\xDBW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a$*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra$R\x91\x90\x81\x01\x90a/(V[`@Q` \x01a$b\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra$\x7F\x91` \x01a3gV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a$\xA3\x92\x91\x90a(\xDCV[Pa$\xB4`\x1C\x80Ta\t\x1F\x90a/\x9FV[`\x9D\x82`\x04\x81\x10a$\xC7Wa$\xC7a0>V[\x01U\x80a$\xD3\x81a0TV[\x91PPa#\xD7V[P`@\x80Q`\x80\x81\x01\x91\x82\x90R`\x9D\x80T\x82R\x90\x91`\x04\x90`\x9E` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta%\x1C\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta%H\x90a/\x9FV[\x80\x15a%\x95W\x80`\x1F\x10a%jWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a%\x95V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a%xW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x0B\x99^\x19X\xDD]\x1A[\xDB\x94\x18^[\x1B\xD8Y\x14\x9B\xDB\xDD`Z\x1B\x81RPa((V[a%\xD5a*\x18V[`\0[`\x07\x81\x10\x15a&\xDCW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra&S\x91\x90\x81\x01\x90a/(V[`@Q` \x01a&c\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra&\x80\x91` \x01a3\x92V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a&\xA4\x92\x91\x90a(\xDCV[Pa&\xB5`\x1C\x80Ta\t\x1F\x90a/\x9FV[`\x96\x82`\x07\x81\x10a&\xC8Wa&\xC8a0>V[\x01U\x80a&\xD4\x81a0TV[\x91PPa%\xD8V[P`@\x80Q`\xE0\x81\x01\x91\x82\x90R`\x96\x80T\x82R\x90\x91`\x07\x90`\x97` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x07oW` \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\x07QWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta'}\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta'\xA9\x90a/\x9FV[\x80\x15a'\xF6W\x80`\x1F\x10a'\xCBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a'\xF6V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a'\xD9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x13\x81R` \x01r.ValidatorFields[0]`h\x1B\x81RP[`@Qc\x17w\xE5\x9D`\xE0\x1B\x81R`\0\x90`\0\x80Q` a4\t\x839\x81Q\x91R\x90c\x17w\xE5\x9D\x90a(^\x90\x86\x90\x86\x90`\x04\x01a3\xCAV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a({W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a(\x9F\x91\x90a3\xEFV[\x93\x92PPPV[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90`\0\x80Q` a4\t\x839\x81Q\x91R\x90c\xAD\xDD\xE2\xB6\x90a(^\x90\x86\x90\x86\x90`\x04\x01a3\xCAV[\x82\x80Ta(\xE8\x90a/\x9FV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a)\nW`\0\x85Ua)PV[\x82`\x1F\x10a)#W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua)PV[\x82\x80\x01`\x01\x01\x85U\x82\x15a)PW\x91\x82\x01[\x82\x81\x11\x15a)PW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a)5V[Pa)\\\x92\x91Pa*6V[P\x90V[`@Q\x80a\x05\x80\x01`@R\x80`,\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x05\xC0\x01`@R\x80`.\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x02@\x01`@R\x80`\x12\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01 \x01`@R\x80`\t\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`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\\W`\0\x81U`\x01\x01a*7V[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*\x8AWa*\x8Aa*KV[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\xACWa*\xACa*KV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0` \x82\x84\x03\x12\x15a*\xCCW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xE3W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a*\xF4W`\0\x80\xFD[\x805a+\x07a+\x02\x82a*\x92V[a*aV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a+\x1CW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\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+{W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a+VV[P\x90\x96\x95PPPPPPV[a\x05\x80\x81\x01\x81\x83`\0[`,\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a+\x91V[PPP\x92\x91PPV[`\0[\x83\x81\x10\x15a+\xD4W\x81\x81\x01Q\x83\x82\x01R` \x01a+\xBCV[\x83\x81\x11\x15a+\xE3W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra,\x01\x81` \x86\x01` \x86\x01a+\xB9V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a,\xC5W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a,\xAFW`_\x19\x89\x85\x03\x01\x83Ra,\x9D\x84\x86Qa+\xE9V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a,\x81V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a,W`?\x19\x88\x86\x03\x01\x84Ra.,\x85\x83Qa+\xE9V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.\x10V[P\x92\x97\x96PPPPPPPV[``\x81\x01\x81\x83`\0[`\x03\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.TV[a\x02@\x81\x01\x81\x83`\0[`\x12\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.}V[a\x01 \x81\x01\x81\x83`\0[`\t\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.\xA6V[`\x80\x81\x01\x81\x83`\0[`\x04\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.\xCEV[`\xE0\x81\x01\x81\x83`\0[`\x07\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.\xF6V[` \x81R`\0a(\x9F` \x83\x01\x84a+\xE9V[`\0` \x82\x84\x03\x12\x15a/:W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/QW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a/bW`\0\x80\xFD[\x80Qa/pa+\x02\x82a*\x92V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a/\x85W`\0\x80\xFD[a/\x96\x82` \x83\x01` \x86\x01a+\xB9V[\x95\x94PPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/\xB3W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\r\x03WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\0\x82Qa/\xE6\x81\x84` \x87\x01a+\xB9V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[\x7F.HistoricalSummaryProof[\0\0\0\0\0\0\0\0\x81R`\0\x82Qa01\x81`\x18\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x18\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a0vWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[\x7F.WithdrawalCredentialProof[\0\0\0\0\0\x81R`\0\x82Qa0\xB5\x81`\x1B\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x1B\x01\x92\x91PPV[\x7F.StateRootAgainstLatestBlockHead\x81RgerProof[`\xC0\x1B` \x82\x01R`\0\x82Qa1\x0B\x81`(\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`(\x01\x92\x91PPV[p.ValidatorFields[`x\x1B\x81R`\0\x82Qa1D\x81`\x11\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x11\x01\x92\x91PPV[o.ValidatorProof[`\x80\x1B\x81R`\0\x82Qa1|\x81`\x10\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x10\x01\x92\x91PPV[u.ValidatorFieldsProof[`P\x1B\x81R`\0\x82Qa1\xBA\x81`\x16\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x16\x01\x92\x91PPV[q.WithdrawalFields[`p\x1B\x81R`\0\x82Qa1\xF4\x81`\x12\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x12\x01\x92\x91PPV[j.SlotProof[`\xA8\x1B\x81R`\0\x82Qa2'\x81`\x0B\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[q.BlockHeaderProof[`p\x1B\x81R`\0\x82Qa1\xF4\x81`\x12\x85\x01` \x87\x01a+\xB9V[\x7F.ValidatorBalanceProof[\0\0\0\0\0\0\0\0\0\x81R`\0\x82Qa2\x99\x81`\x17\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x17\x01\x92\x91PPV[p.WithdrawalProof[`x\x1B\x81R`\0\x82Qa1D\x81`\x11\x85\x01` \x87\x01a+\xB9V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a2\xF5\x81`\x04\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa3\x15\x81\x84` \x87\x01a+\xB9V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a31W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9FW`\0\x80\xFD[j.slotProof[`\xA8\x1B\x81R`\0\x82Qa2'\x81`\x0B\x85\x01` \x87\x01a+\xB9V[o.TimestampProof[`\x80\x1B\x81R`\0\x82Qa1|\x81`\x10\x85\x01` \x87\x01a+\xB9V[\x7F.ExecutionPayloadProof[\0\0\0\0\0\0\0\0\0\x81R`\0\x82Qa2\x99\x81`\x17\x85\x01` \x87\x01a+\xB9V[`@\x81R`\0a3\xDD`@\x83\x01\x85a+\xE9V[\x82\x81\x03` \x84\x01Ra/\x96\x81\x85a+\xE9V[`\0` \x82\x84\x03\x12\x15a4\x01W`\0\x80\xFD[PQ\x91\x90PV\xFE\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\xA2dipfsX\"\x12 W\xAEg\xFE\xE4\xFB=\x1Cmq\xCDkm\xD3u\x96HlZ\xB1\xB5\xFD\xAE\x13\xD9Qpg\xB5\xB9\xD1\\dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061023d5760003560e01c8063765aa6061161013b578063b5508aa9116100b8578063d944472f1161007c578063d944472f14610411578063db364a4014610419578063e20c9f711461042e578063f148082c14610436578063fa7626d41461043e57600080fd5b8063b5508aa9146103cc578063ba414fa6146103d4578063c3da8ae9146103ec578063d6461cbb146103f4578063d911b683146103fc57600080fd5b80639de4a9b3116100ff5780639de4a9b31461037d578063a507742914610392578063a6b7a848146103a7578063ab72161c146103af578063b38061bf146103c457600080fd5b8063765aa6061461034857806385226c8114610350578063893893ca14610365578063916a17c61461036d578063950bb6821461037557600080fd5b806334e3d90e116101c95780634c20f5101161018d5780634c20f510146103065780634c38f9131461030e57806364f38ed71461032357806366d9a9a01461032b5780636c877c841461034057600080fd5b806334e3d90e146102de5780633e5e3c23146102e65780633f7286f4146102ee57806342864734146102f65780634656fdb5146102fe57600080fd5b80631ed7831c116102105780631ed7831c14610282578063275378b1146102975780632872e20c1461029f5780632ade3880146102b45780632fd1793c146102c957600080fd5b806308a4d71f1461024257806316f0715314610257578063177541fc1461027257806318aadf311461027a575b600080fd5b610255610250366004612aba565b61044b565b005b61025f6104d9565b6040519081526020015b60405180910390f35b61025f610595565b61025f610653565b61028a610717565b6040516102699190612b3a565b61025f610779565b6102a7610837565b6040516102699190612b87565b6102bc610a89565b6040516102699190612c15565b6102d1610bcb565b6040516102699190612cd5565b6102d1610d09565b61028a610e3e565b61028a610e9e565b61025f610efe565b61025f610fc1565b6102d161107b565b6103166111b3565b6040516102699190612d0d565b61025f6112f2565b6103336113b0565b6040516102699190612d36565b61025f611496565b61025f611549565b610358611606565b6040516102699190612de9565b6102d16116d6565b61033361180e565b6102d16118f4565b610385611a2a565b6040516102699190612e4b565b61039a611b68565b6040516102699190612e73565b6102d1611ca7565b6103b7611ddf565b6040516102699190612e9c565b61025f611f1e565b610358611fda565b6103dc6120aa565b6040519015158152602001610269565b6102d16121cb565b61025f612301565b6104046123cc565b6040516102699190612ec5565b61025f61250a565b6104216125cd565b6040516102699190612eed565b61028a61270b565b61025f61276b565b6007546103dc9060ff1681565b6040516360f9bb1160e01b8152600080516020613409833981519152906360f9bb119061047c908490600401612f15565b600060405180830381865afa158015610499573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104c19190810190612f28565b80516104d591601c916020909101906128dc565b5050565b6000610590601c80546104eb90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461051790612f9f565b80156105645780601f1061053957610100808354040283529160200191610564565b820191906000526020600020905b81548152906001019060200180831161054757829003601f168201915b5050505050604051806040016040528060098152602001680b9cdb1bdd149bdbdd60ba1b815250612828565b905090565b6000610590601c80546105a790612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390612f9f565b80156106205780601f106105f557610100808354040283529160200191610620565b820191906000526020600020905b81548152906001019060200180831161060357829003601f168201915b50505050506040518060400160405280601081526020016f0b98995858dbdb94dd185d19549bdbdd60821b815250612828565b6000610590601c805461066590612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461069190612f9f565b80156106de5780601f106106b3576101008083540402835291602001916106de565b820191906000526020600020905b8154815290600101906020018083116106c157829003601f168201915b5050505050604051806040016040528060168152602001750b9b185d195cdd109b1bd8dad2195859195c949bdbdd60521b815250612828565b6060601480548060200260200160405190810160405280929190818152602001828054801561076f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610751575b5050505050905090565b6000610590601c805461078b90612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546107b790612f9f565b80156108045780601f106107d957610100808354040283529160200191610804565b820191906000526020600020905b8154815290600101906020018083116107e757829003601f168201915b50505050506040518060400160405280601081526020016f0b989b1bd8dad2195859195c949bdbdd60821b815250612828565b61083f612960565b60005b602c811015610a545760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bd9190810190612f28565b6040516020016108cd9190612fd4565b60408051601f19818403018152908290526108ea91602001612ff9565b604051602081830303815290604052601d908051906020019061090e9291906128dc565b50610a2d601c805461091f90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461094b90612f9f565b80156109985780601f1061096d57610100808354040283529160200191610998565b820191906000526020600020905b81548152906001019060200180831161097b57829003601f168201915b5050505050601d80546109aa90612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546109d690612f9f565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b5050505050612828565b606a82602c8110610a4057610a4061303e565b015580610a4c81613054565b915050610842565b506040805161058081019182905290606a90602c9082845b815481526020019060010190808311610a6c575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bc257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610bab578382906000526020600020018054610b1e90612f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90612f9f565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b505050505081526020019060010190610aff565b505050508152505081526020019060010190610aad565b50505050905090565b60408051602e8082526105e0820190925260609160009190602082016105c08036833701905050905060005b602e811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015610c4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c729190810190612f28565b604051602001610c829190612fd4565b60408051601f1981840301815290829052610c9f9160200161307d565b604051602081830303815290604052601d9080519060200190610cc39291906128dc565b50610cd4601c805461091f90612f9f565b828281518110610ce657610ce661303e565b602090810291909101015280610cfb81613054565b915050610bf7565b50919050565b604080516003808252608082019092526060916000919060208201848036833701905050905060005b6003811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015610d85573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dad9190810190612f28565b604051602001610dbd9190612fd4565b60408051601f1981840301815290829052610dda916020016130c2565b604051602081830303815290604052601d9080519060200190610dfe9291906128dc565b50610e0f601c805461091f90612f9f565b828281518110610e2157610e2161303e565b602090810291909101015280610e3681613054565b915050610d32565b6060601680548060200260200160405190810160405280929190818152602001828054801561076f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610751575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561076f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610751575050505050905090565b6000610590601c8054610f1090612f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3c90612f9f565b8015610f895780601f10610f5e57610100808354040283529160200191610f89565b820191906000526020600020905b815481529060010190602001808311610f6c57829003601f168201915b50505050506040518060400160405280601581526020017405cc4d8dec6d690cac2c8cae4a4dedee892dcc8caf605b1b8152506128a6565b6000610590601c8054610fd390612f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fff90612f9f565b801561104c5780601f106110215761010080835404028352916020019161104c565b820191906000526020600020905b81548152906001019060200180831161102f57829003601f168201915b50505050506040518060400160405280600c81526020016b0b98985b185b98d9549bdbdd60a21b815250612828565b604080516008808252610120820190925260609160009190602082016101008036833701905050905060005b6008811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa1580156110fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111229190810190612f28565b6040516020016111329190612fd4565b60408051601f198184030181529082905261114f91602001613118565b604051602081830303815290604052601d90805190602001906111739291906128dc565b50611184601c805461091f90612f9f565b8282815181106111965761119661303e565b6020908102919091010152806111ab81613054565b9150506110a7565b6111bb61297f565b60005b602e8110156112c25760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611211573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112399190810190612f28565b6040516020016112499190612fd4565b60408051601f198184030181529082905261126691602001613151565b604051602081830303815290604052601d908051906020019061128a9291906128dc565b5061129b601c805461091f90612f9f565b603c82602e81106112ae576112ae61303e565b0155806112ba81613054565b9150506111be565b50604080516105c0810191829052603c805482529091602e90603d60208501808311610a6c575050505050905090565b6000610590601c805461130490612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461133090612f9f565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b50505050506040518060400160405280601081526020016f05ceed2e8d0c8e4c2eec2d892dcc8caf60831b8152506128a6565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bc25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561147e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116114405790505b505050505081525050815260200190600101906113d4565b6000610590601c80546114a890612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546114d490612f9f565b80156115215780601f106114f657610100808354040283529160200191611521565b820191906000526020600020905b81548152906001019060200180831161150457829003601f168201915b5050505050604051806040016040528060058152602001640b9cdb1bdd60da1b8152506128a6565b6000610590601c805461155b90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461158790612f9f565b80156115d45780601f106115a9576101008083540402835291602001916115d4565b820191906000526020600020905b8154815290600101906020018083116115b757829003601f168201915b50505050506040518060400160405280600f81526020016e05cecc2d8d2c8c2e8dee492dcc8caf608b1b8152506128a6565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610bc257838290600052602060002001805461164990612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461167590612f9f565b80156116c25780601f10611697576101008083540402835291602001916116c2565b820191906000526020600020905b8154815290600101906020018083116116a557829003601f168201915b50505050508152602001906001019061162a565b60408051602e8082526105e0820190925260609160009190602082016105c08036833701905050905060005b602e811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611755573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261177d9190810190612f28565b60405160200161178d9190612fd4565b60408051601f19818403018152908290526117aa91602001613189565b604051602081830303815290604052601d90805190602001906117ce9291906128dc565b506117df601c805461091f90612f9f565b8282815181106117f1576117f161303e565b60209081029190910101528061180681613054565b915050611702565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bc25760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156118dc57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161189e5790505b50505050508152505081526020019060010190611832565b60408051600480825260a08201909252606091600091906020820160808036833701905050905060005b6004811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611971573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119999190810190612f28565b6040516020016119a99190612fd4565b60408051601f19818403018152908290526119c6916020016131c7565b604051602081830303815290604052601d90805190602001906119ea9291906128dc565b506119fb601c805461091f90612f9f565b828281518110611a0d57611a0d61303e565b602090810291909101015280611a2281613054565b91505061191e565b611a3261299e565b60005b6003811015611b395760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190612f28565b604051602001611ac09190612fd4565b60408051601f1981840301815290829052611add91602001613201565b604051602081830303815290604052601d9080519060200190611b019291906128dc565b50611b12601c805461091f90612f9f565b60308260038110611b2557611b2561303e565b015580611b3181613054565b915050611a35565b506040805160608101918290526030805482529091600390603160208501808311610a6c575050505050905090565b611b706129bc565b60005b6012811015611c775760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611bc6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bee9190810190612f28565b604051602001611bfe9190612fd4565b60408051601f1981840301815290829052611c1b91602001613234565b604051602081830303815290604052601d9080519060200190611c3f9291906128dc565b50611c50601c805461091f90612f9f565b601e8260128110611c6357611c6361303e565b015580611c6f81613054565b915050611b73565b5060408051610240810191829052601e805482529091601290601f60208501808311610a6c575050505050905090565b60408051602c8082526105a0820190925260609160009190602082016105808036833701905050905060005b602c811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611d26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d4e9190810190612f28565b604051602001611d5e9190612fd4565b60408051601f1981840301815290829052611d7b91602001613261565b604051602081830303815290604052601d9080519060200190611d9f9291906128dc565b50611db0601c805461091f90612f9f565b828281518110611dc257611dc261303e565b602090810291909101015280611dd781613054565b915050611cd3565b611de76129db565b60005b6009811015611eee5760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015611e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e659190810190612f28565b604051602001611e759190612fd4565b60408051601f1981840301815290829052611e92916020016132a6565b604051602081830303815290604052601d9080519060200190611eb69291906128dc565b50611ec7601c805461091f90612f9f565b60338260098110611eda57611eda61303e565b015580611ee681613054565b915050611dea565b50604080516101208101918290526033805482529091600990603460208501808311610a6c575050505050905090565b6000610590601c8054611f3090612f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5c90612f9f565b8015611fa95780601f10611f7e57610100808354040283529160200191611fa9565b820191906000526020600020905b815481529060010190602001808311611f8c57829003601f168201915b50505050506040518060400160405280600e81526020016d0b9d1a5b595cdd185b5c149bdbdd60921b815250612828565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610bc257838290600052602060002001805461201d90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461204990612f9f565b80156120965780601f1061206b57610100808354040283529160200191612096565b820191906000526020600020905b81548152906001019060200180831161207957829003601f168201915b505050505081526020019060010190611ffe565b600754600090610100900460ff16156120cc5750600754610100900460ff1690565b60006000805160206134098339815191523b156121c65760408051600080516020613409833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161214e917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016132d2565b60408051601f198184030181529082905261216891613303565b6000604051808303816000865af19150503d80600081146121a5576040519150601f19603f3d011682016040523d82523d6000602084013e6121aa565b606091505b50915050808060200190518101906121c2919061331f565b9150505b919050565b60408051600580825260c08201909252606091600091906020820160a08036833701905050905060005b6005811015610d035760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa158015612248573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122709190810190612f28565b6040516020016122809190612fd4565b60408051601f198184030181529082905261229d91602001613341565b604051602081830303815290604052601d90805190602001906122c19291906128dc565b506122d2601c805461091f90612f9f565b8282815181106122e4576122e461303e565b6020908102919091010152806122f981613054565b9150506121f5565b6000610590601c805461231390612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461233f90612f9f565b801561238c5780601f106123615761010080835404028352916020019161238c565b820191906000526020600020905b81548152906001019060200180831161236f57829003601f168201915b50505050506040518060400160405280601781526020017f2e686973746f726963616c53756d6d617279496e6465780000000000000000008152506128a6565b6123d46129fa565b60005b60048110156124db5760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa15801561242a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124529190810190612f28565b6040516020016124629190612fd4565b60408051601f198184030181529082905261247f91602001613367565b604051602081830303815290604052601d90805190602001906124a39291906128dc565b506124b4601c805461091f90612f9f565b609d82600481106124c7576124c761303e565b0155806124d381613054565b9150506123d7565b50604080516080810191829052609d805482529091600490609e60208501808311610a6c575050505050905090565b6000610590601c805461251c90612f9f565b80601f016020809104026020016040519081016040528092919081815260200182805461254890612f9f565b80156125955780601f1061256a57610100808354040283529160200191612595565b820191906000526020600020905b81548152906001019060200180831161257857829003601f168201915b5050505050604051806040016040528060158152602001740b995e1958dd5d1a5bdb94185e5b1bd859149bdbdd605a1b815250612828565b6125d5612a18565b60005b60078110156126dc5760405163348051d760e11b81526004810182905260008051602061340983398151915290636900a3ae90602401600060405180830381865afa15801561262b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126539190810190612f28565b6040516020016126639190612fd4565b60408051601f198184030181529082905261268091602001613392565b604051602081830303815290604052601d90805190602001906126a49291906128dc565b506126b5601c805461091f90612f9f565b609682600781106126c8576126c861303e565b0155806126d481613054565b9150506125d8565b506040805160e08101918290526096805482529091600790609760208501808311610a6c575050505050905090565b6060601380548060200260200160405190810160405280929190818152602001828054801561076f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610751575050505050905090565b6000610590601c805461277d90612f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546127a990612f9f565b80156127f65780601f106127cb576101008083540402835291602001916127f6565b820191906000526020600020905b8154815290600101906020018083116127d957829003601f168201915b5050505050604051806040016040528060138152602001722e56616c696461746f724669656c64735b305d60681b8152505b604051631777e59d60e01b815260009060008051602061340983398151915290631777e59d9061285e90869086906004016133ca565b602060405180830381865afa15801561287b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289f91906133ef565b9392505050565b6040516356eef15b60e11b81526000906000805160206134098339815191529063addde2b69061285e90869086906004016133ca565b8280546128e890612f9f565b90600052602060002090601f01602090048101928261290a5760008555612950565b82601f1061292357805160ff1916838001178555612950565b82800160010185558215612950579182015b82811115612950578251825591602001919060010190612935565b5061295c929150612a36565b5090565b604051806105800160405280602c906020820280368337509192915050565b604051806105c00160405280602e906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518061024001604052806012906020820280368337509192915050565b6040518061012001604052806009906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060e001604052806007906020820280368337509192915050565b5b8082111561295c5760008155600101612a37565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a8a57612a8a612a4b565b604052919050565b600067ffffffffffffffff821115612aac57612aac612a4b565b50601f01601f191660200190565b600060208284031215612acc57600080fd5b813567ffffffffffffffff811115612ae357600080fd5b8201601f81018413612af457600080fd5b8035612b07612b0282612a92565b612a61565b818152856020838501011115612b1c57600080fd5b81602084016020830137600091810160200191909152949350505050565b6020808252825182820181905260009190848201906040850190845b81811015612b7b5783516001600160a01b031683529284019291840191600101612b56565b50909695505050505050565b6105808101818360005b602c811015612bb0578151835260209283019290910190600101612b91565b50505092915050565b60005b83811015612bd4578181015183820152602001612bbc565b83811115612be3576000848401525b50505050565b60008151808452612c01816020860160208601612bb9565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612cc557603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612caf57605f19898503018352612c9d848651612be9565b948e01949350918d0191600101612c81565b505050978a019794505091880191600101612c3c565b50919a9950505050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612b7b57835183529284019291840191600101612cf1565b6105c08101818360005b602e811015612bb0578151835260209283019290910190600101612d17565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612dda57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612dc55783516001600160e01b0319168252928b019260019290920191908b0190612d9b565b50978a01979550505091870191600101612d5e565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e3e57603f19888603018452612e2c858351612be9565b94509285019290850190600101612e10565b5092979650505050505050565b60608101818360005b6003811015612bb0578151835260209283019290910190600101612e54565b6102408101818360005b6012811015612bb0578151835260209283019290910190600101612e7d565b6101208101818360005b6009811015612bb0578151835260209283019290910190600101612ea6565b60808101818360005b6004811015612bb0578151835260209283019290910190600101612ece565b60e08101818360005b6007811015612bb0578151835260209283019290910190600101612ef6565b60208152600061289f6020830184612be9565b600060208284031215612f3a57600080fd5b815167ffffffffffffffff811115612f5157600080fd5b8201601f81018413612f6257600080fd5b8051612f70612b0282612a92565b818152856020838501011115612f8557600080fd5b612f96826020830160208601612bb9565b95945050505050565b600181811c90821680612fb357607f821691505b60208210811415610d0357634e487b7160e01b600052602260045260246000fd5b60008251612fe6818460208701612bb9565b605d60f81b920191825250600101919050565b7f2e486973746f726963616c53756d6d61727950726f6f665b0000000000000000815260008251613031816018850160208701612bb9565b9190910160180192915050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561307657634e487b7160e01b600052601160045260246000fd5b5060010190565b7f2e5769746864726177616c43726564656e7469616c50726f6f665b00000000008152600082516130b581601b850160208701612bb9565b91909101601b0192915050565b7f2e5374617465526f6f74416761696e73744c6174657374426c6f636b48656164815267657250726f6f665b60c01b60208201526000825161310b816028850160208701612bb9565b9190910160280192915050565b702e56616c696461746f724669656c64735b60781b815260008251613144816011850160208701612bb9565b9190910160110192915050565b6f2e56616c696461746f7250726f6f665b60801b81526000825161317c816010850160208701612bb9565b9190910160100192915050565b752e56616c696461746f724669656c647350726f6f665b60501b8152600082516131ba816016850160208701612bb9565b9190910160160192915050565b712e5769746864726177616c4669656c64735b60701b8152600082516131f4816012850160208701612bb9565b9190910160120192915050565b6a2e536c6f7450726f6f665b60a81b81526000825161322781600b850160208701612bb9565b91909101600b0192915050565b712e426c6f636b48656164657250726f6f665b60701b8152600082516131f4816012850160208701612bb9565b7f2e56616c696461746f7242616c616e636550726f6f665b000000000000000000815260008251613299816017850160208701612bb9565b9190910160170192915050565b702e5769746864726177616c50726f6f665b60781b815260008251613144816011850160208701612bb9565b6001600160e01b03198316815281516000906132f5816004850160208701612bb9565b919091016004019392505050565b60008251613315818460208701612bb9565b9190910192915050565b60006020828403121561333157600080fd5b8151801515811461289f57600080fd5b6a2e736c6f7450726f6f665b60a81b81526000825161322781600b850160208701612bb9565b6f2e54696d657374616d7050726f6f665b60801b81526000825161317c816010850160208701612bb9565b7f2e457865637574696f6e5061796c6f616450726f6f665b000000000000000000815260008251613299816017850160208701612bb9565b6040815260006133dd6040830185612be9565b8281036020840152612f968185612be9565b60006020828403121561340157600080fd5b505191905056fe0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122057ae67fee4fb3d1c6d71cd6b6dd37596486c5ab1b5fdae13d9517067b5b9d15c64736f6c634300080c0033 + /// ``` + #[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=W`\x005`\xE0\x1C\x80cvZ\xA6\x06\x11a\x01;W\x80c\xB5P\x8A\xA9\x11a\0\xB8W\x80c\xD9DG/\x11a\0|W\x80c\xD9DG/\x14a\x04\x11W\x80c\xDB6J@\x14a\x04\x19W\x80c\xE2\x0C\x9Fq\x14a\x04.W\x80c\xF1H\x08,\x14a\x046W\x80c\xFAv&\xD4\x14a\x04>W`\0\x80\xFD[\x80c\xB5P\x8A\xA9\x14a\x03\xCCW\x80c\xBAAO\xA6\x14a\x03\xD4W\x80c\xC3\xDA\x8A\xE9\x14a\x03\xECW\x80c\xD6F\x1C\xBB\x14a\x03\xF4W\x80c\xD9\x11\xB6\x83\x14a\x03\xFCW`\0\x80\xFD[\x80c\x9D\xE4\xA9\xB3\x11a\0\xFFW\x80c\x9D\xE4\xA9\xB3\x14a\x03}W\x80c\xA5\x07t)\x14a\x03\x92W\x80c\xA6\xB7\xA8H\x14a\x03\xA7W\x80c\xABr\x16\x1C\x14a\x03\xAFW\x80c\xB3\x80a\xBF\x14a\x03\xC4W`\0\x80\xFD[\x80cvZ\xA6\x06\x14a\x03HW\x80c\x85\"l\x81\x14a\x03PW\x80c\x898\x93\xCA\x14a\x03eW\x80c\x91j\x17\xC6\x14a\x03mW\x80c\x95\x0B\xB6\x82\x14a\x03uW`\0\x80\xFD[\x80c4\xE3\xD9\x0E\x11a\x01\xC9W\x80cL \xF5\x10\x11a\x01\x8DW\x80cL \xF5\x10\x14a\x03\x06W\x80cL8\xF9\x13\x14a\x03\x0EW\x80cd\xF3\x8E\xD7\x14a\x03#W\x80cf\xD9\xA9\xA0\x14a\x03+W\x80cl\x87|\x84\x14a\x03@W`\0\x80\xFD[\x80c4\xE3\xD9\x0E\x14a\x02\xDEW\x80c>^<#\x14a\x02\xE6W\x80c?r\x86\xF4\x14a\x02\xEEW\x80cB\x86G4\x14a\x02\xF6W\x80cFV\xFD\xB5\x14a\x02\xFEW`\0\x80\xFD[\x80c\x1E\xD7\x83\x1C\x11a\x02\x10W\x80c\x1E\xD7\x83\x1C\x14a\x02\x82W\x80c'Sx\xB1\x14a\x02\x97W\x80c(r\xE2\x0C\x14a\x02\x9FW\x80c*\xDE8\x80\x14a\x02\xB4W\x80c/\xD1y<\x14a\x02\xC9W`\0\x80\xFD[\x80c\x08\xA4\xD7\x1F\x14a\x02BW\x80c\x16\xF0qS\x14a\x02WW\x80c\x17uA\xFC\x14a\x02rW\x80c\x18\xAA\xDF1\x14a\x02zW[`\0\x80\xFD[a\x02Ua\x02P6`\x04a*\xBAV[a\x04KV[\0[a\x02_a\x04\xD9V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02_a\x05\x95V[a\x02_a\x06SV[a\x02\x8Aa\x07\x17V[`@Qa\x02i\x91\x90a+:V[a\x02_a\x07yV[a\x02\xA7a\x087V[`@Qa\x02i\x91\x90a+\x87V[a\x02\xBCa\n\x89V[`@Qa\x02i\x91\x90a,\x15V[a\x02\xD1a\x0B\xCBV[`@Qa\x02i\x91\x90a,\xD5V[a\x02\xD1a\r\tV[a\x02\x8Aa\x0E>V[a\x02\x8Aa\x0E\x9EV[a\x02_a\x0E\xFEV[a\x02_a\x0F\xC1V[a\x02\xD1a\x10{V[a\x03\x16a\x11\xB3V[`@Qa\x02i\x91\x90a-\rV[a\x02_a\x12\xF2V[a\x033a\x13\xB0V[`@Qa\x02i\x91\x90a-6V[a\x02_a\x14\x96V[a\x02_a\x15IV[a\x03Xa\x16\x06V[`@Qa\x02i\x91\x90a-\xE9V[a\x02\xD1a\x16\xD6V[a\x033a\x18\x0EV[a\x02\xD1a\x18\xF4V[a\x03\x85a\x1A*V[`@Qa\x02i\x91\x90a.KV[a\x03\x9Aa\x1BhV[`@Qa\x02i\x91\x90a.sV[a\x02\xD1a\x1C\xA7V[a\x03\xB7a\x1D\xDFV[`@Qa\x02i\x91\x90a.\x9CV[a\x02_a\x1F\x1EV[a\x03Xa\x1F\xDAV[a\x03\xDCa \xAAV[`@Q\x90\x15\x15\x81R` \x01a\x02iV[a\x02\xD1a!\xCBV[a\x02_a#\x01V[a\x04\x04a#\xCCV[`@Qa\x02i\x91\x90a.\xC5V[a\x02_a%\nV[a\x04!a%\xCDV[`@Qa\x02i\x91\x90a.\xEDV[a\x02\x8Aa'\x0BV[a\x02_a'kV[`\x07Ta\x03\xDC\x90`\xFF\x16\x81V[`@Qc`\xF9\xBB\x11`\xE0\x1B\x81R`\0\x80Q` a4\t\x839\x81Q\x91R\x90c`\xF9\xBB\x11\x90a\x04|\x90\x84\x90`\x04\x01a/\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x99W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x04\xC1\x91\x90\x81\x01\x90a/(V[\x80Qa\x04\xD5\x91`\x1C\x91` \x90\x91\x01\x90a(\xDCV[PPV[`\0a\x05\x90`\x1C\x80Ta\x04\xEB\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x17\x90a/\x9FV[\x80\x15a\x05dW\x80`\x1F\x10a\x059Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05dV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05GW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\t\x81R` \x01h\x0B\x9C\xDB\x1B\xDD\x14\x9B\xDB\xDD`\xBA\x1B\x81RPa((V[\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x05\xA7\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xD3\x90a/\x9FV[\x80\x15a\x06 W\x80`\x1F\x10a\x05\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06 V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o\x0B\x98\x99XX\xDB\xDB\x94\xDD\x18]\x19T\x9B\xDB\xDD`\x82\x1B\x81RPa((V[`\0a\x05\x90`\x1C\x80Ta\x06e\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x91\x90a/\x9FV[\x80\x15a\x06\xDEW\x80`\x1F\x10a\x06\xB3Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xDEV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xC1W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x16\x81R` \x01u\x0B\x9B\x18]\x19\\\xDD\x10\x9B\x1B\xD8\xDA\xD2\x19XY\x19\\\x94\x9B\xDB\xDD`R\x1B\x81RPa((V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x07oW` \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\x07QW[PPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x07\x8B\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xB7\x90a/\x9FV[\x80\x15a\x08\x04W\x80`\x1F\x10a\x07\xD9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x04V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xE7W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o\x0B\x98\x9B\x1B\xD8\xDA\xD2\x19XY\x19\\\x94\x9B\xDB\xDD`\x82\x1B\x81RPa((V[a\x08?a)`V[`\0[`,\x81\x10\x15a\nTW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x08\xBD\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x08\xCD\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\xEA\x91` \x01a/\xF9V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\t\x0E\x92\x91\x90a(\xDCV[Pa\n-`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\tK\x90a/\x9FV[\x80\x15a\t\x98W\x80`\x1F\x10a\tmWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x98V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t{W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`\x1D\x80Ta\t\xAA\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xD6\x90a/\x9FV[\x80\x15a\n#W\x80`\x1F\x10a\t\xF8Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n#V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x06W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPPa((V[`j\x82`,\x81\x10a\n@Wa\n@a0>V[\x01U\x80a\nL\x81a0TV[\x91PPa\x08BV[P`@\x80Qa\x05\x80\x81\x01\x91\x82\x90R\x90`j\x90`,\x90\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\nlWPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x0B\xABW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0B\x1E\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0BJ\x90a/\x9FV[\x80\x15a\x0B\x97W\x80`\x1F\x10a\x0BlWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0B\x97V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0BzW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n\xFFV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n\xADV[PPPP\x90P\x90V[`@\x80Q`.\x80\x82Ra\x05\xE0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01a\x05\xC0\x806\x837\x01\x90PP\x90P`\0[`.\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CJW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0Cr\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x0C\x82\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\x9F\x91` \x01a0}V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x0C\xC3\x92\x91\x90a(\xDCV[Pa\x0C\xD4`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x0C\xE6Wa\x0C\xE6a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x0C\xFB\x81a0TV[\x91PPa\x0B\xF7V[P\x91\x90PV[`@\x80Q`\x03\x80\x82R`\x80\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01\x84\x806\x837\x01\x90PP\x90P`\0[`\x03\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\xAD\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\r\xBD\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\xDA\x91` \x01a0\xC2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\r\xFE\x92\x91\x90a(\xDCV[Pa\x0E\x0F`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x0E!Wa\x0E!a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x0E6\x81a0TV[\x91PPa\r2V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x07oW` \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\x07QWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x07oW` \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\x07QWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x0F\x10\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F<\x90a/\x9FV[\x80\x15a\x0F\x89W\x80`\x1F\x10a\x0F^Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x89V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FlW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x05\xCCM\x8D\xECmi\x0C\xAC,\x8C\xAEJM\xED\xEE\x89-\xCC\x8C\xAF`[\x1B\x81RPa(\xA6V[`\0a\x05\x90`\x1C\x80Ta\x0F\xD3\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F\xFF\x90a/\x9FV[\x80\x15a\x10LW\x80`\x1F\x10a\x10!Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10LV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10/W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x0B\x98\x98[\x18[\x98\xD9T\x9B\xDB\xDD`\xA2\x1B\x81RPa((V[`@\x80Q`\x08\x80\x82Ra\x01 \x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01a\x01\0\x806\x837\x01\x90PP\x90P`\0[`\x08\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x11\"\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x112\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11O\x91` \x01a1\x18V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x11s\x92\x91\x90a(\xDCV[Pa\x11\x84`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x11\x96Wa\x11\x96a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x11\xAB\x81a0TV[\x91PPa\x10\xA7V[a\x11\xBBa)\x7FV[`\0[`.\x81\x10\x15a\x12\xC2W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x11W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x129\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x12I\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x12f\x91` \x01a1QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x12\x8A\x92\x91\x90a(\xDCV[Pa\x12\x9B`\x1C\x80Ta\t\x1F\x90a/\x9FV[`<\x82`.\x81\x10a\x12\xAEWa\x12\xAEa0>V[\x01U\x80a\x12\xBA\x81a0TV[\x91PPa\x11\xBEV[P`@\x80Qa\x05\xC0\x81\x01\x91\x82\x90R`<\x80T\x82R\x90\x91`.\x90`=` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x13\x04\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x130\x90a/\x9FV[\x80\x15a\x13}W\x80`\x1F\x10a\x13RWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x13}V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x13`W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o\x05\xCE\xED.\x8D\x0C\x8EL.\xEC-\x89-\xCC\x8C\xAF`\x83\x1B\x81RPa(\xA6V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x14~W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x14@W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x13\xD4V[`\0a\x05\x90`\x1C\x80Ta\x14\xA8\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14\xD4\x90a/\x9FV[\x80\x15a\x15!W\x80`\x1F\x10a\x14\xF6Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x15!V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x15\x04W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x0B\x9C\xDB\x1B\xDD`\xDA\x1B\x81RPa(\xA6V[`\0a\x05\x90`\x1C\x80Ta\x15[\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\x87\x90a/\x9FV[\x80\x15a\x15\xD4W\x80`\x1F\x10a\x15\xA9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x15\xD4V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x15\xB7W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x0F\x81R` \x01n\x05\xCE\xCC-\x8D,\x8C.\x8D\xEEI-\xCC\x8C\xAF`\x8B\x1B\x81RPa(\xA6V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x16I\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x16u\x90a/\x9FV[\x80\x15a\x16\xC2W\x80`\x1F\x10a\x16\x97Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x16\xC2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\xA5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x16*V[`@\x80Q`.\x80\x82Ra\x05\xE0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01a\x05\xC0\x806\x837\x01\x90PP\x90P`\0[`.\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x17}\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x17\x8D\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x17\xAA\x91` \x01a1\x89V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x17\xCE\x92\x91\x90a(\xDCV[Pa\x17\xDF`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x17\xF1Wa\x17\xF1a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x18\x06\x81a0TV[\x91PPa\x17\x02V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x18\xDCW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x18\x9EW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x182V[`@\x80Q`\x04\x80\x82R`\xA0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01`\x80\x806\x837\x01\x90PP\x90P`\0[`\x04\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x19\x99\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x19\xA9\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xC6\x91` \x01a1\xC7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x19\xEA\x92\x91\x90a(\xDCV[Pa\x19\xFB`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x1A\rWa\x1A\ra0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x1A\"\x81a0TV[\x91PPa\x19\x1EV[a\x1A2a)\x9EV[`\0[`\x03\x81\x10\x15a\x1B9W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1A\xB0\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x1A\xC0\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1A\xDD\x91` \x01a2\x01V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x1B\x01\x92\x91\x90a(\xDCV[Pa\x1B\x12`\x1C\x80Ta\t\x1F\x90a/\x9FV[`0\x82`\x03\x81\x10a\x1B%Wa\x1B%a0>V[\x01U\x80a\x1B1\x81a0TV[\x91PPa\x1A5V[P`@\x80Q``\x81\x01\x91\x82\x90R`0\x80T\x82R\x90\x91`\x03\x90`1` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[a\x1Bpa)\xBCV[`\0[`\x12\x81\x10\x15a\x1CwW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1B\xEE\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x1B\xFE\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\x1B\x91` \x01a24V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x1C?\x92\x91\x90a(\xDCV[Pa\x1CP`\x1C\x80Ta\t\x1F\x90a/\x9FV[`\x1E\x82`\x12\x81\x10a\x1CcWa\x1Cca0>V[\x01U\x80a\x1Co\x81a0TV[\x91PPa\x1BsV[P`@\x80Qa\x02@\x81\x01\x91\x82\x90R`\x1E\x80T\x82R\x90\x91`\x12\x90`\x1F` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[`@\x80Q`,\x80\x82Ra\x05\xA0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01a\x05\x80\x806\x837\x01\x90PP\x90P`\0[`,\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D&W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1DN\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x1D^\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1D{\x91` \x01a2aV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x1D\x9F\x92\x91\x90a(\xDCV[Pa\x1D\xB0`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\x1D\xC2Wa\x1D\xC2a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x1D\xD7\x81a0TV[\x91PPa\x1C\xD3V[a\x1D\xE7a)\xDBV[`\0[`\t\x81\x10\x15a\x1E\xEEW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E=W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1Ee\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\x1Eu\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x92\x91` \x01a2\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\x1E\xB6\x92\x91\x90a(\xDCV[Pa\x1E\xC7`\x1C\x80Ta\t\x1F\x90a/\x9FV[`3\x82`\t\x81\x10a\x1E\xDAWa\x1E\xDAa0>V[\x01U\x80a\x1E\xE6\x81a0TV[\x91PPa\x1D\xEAV[P`@\x80Qa\x01 \x81\x01\x91\x82\x90R`3\x80T\x82R\x90\x91`\t\x90`4` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta\x1F0\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1F\\\x90a/\x9FV[\x80\x15a\x1F\xA9W\x80`\x1F\x10a\x1F~Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1F\xA9V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1F\x8CW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01m\x0B\x9D\x1A[Y\\\xDD\x18[\\\x14\x9B\xDB\xDD`\x92\x1B\x81RPa((V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x0B\xC2W\x83\x82\x90`\0R` `\0 \x01\x80Ta \x1D\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta I\x90a/\x9FV[\x80\x15a \x96W\x80`\x1F\x10a kWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a \x96V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a yW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1F\xFEV[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a \xCCWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0`\0\x80Q` a4\t\x839\x81Q\x91R;\x15a!\xC6W`@\x80Q`\0\x80Q` a4\t\x839\x81Q\x91R` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a!N\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a2\xD2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra!h\x91a3\x03V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a!\xA5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a!\xAAV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a!\xC2\x91\x90a3\x1FV[\x91PP[\x91\x90PV[`@\x80Q`\x05\x80\x82R`\xC0\x82\x01\x90\x92R``\x91`\0\x91\x90` \x82\x01`\xA0\x806\x837\x01\x90PP\x90P`\0[`\x05\x81\x10\x15a\r\x03W`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\"HW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\"p\x91\x90\x81\x01\x90a/(V[`@Q` \x01a\"\x80\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\x9D\x91` \x01a3AV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a\"\xC1\x92\x91\x90a(\xDCV[Pa\"\xD2`\x1C\x80Ta\t\x1F\x90a/\x9FV[\x82\x82\x81Q\x81\x10a\"\xE4Wa\"\xE4a0>V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\"\xF9\x81a0TV[\x91PPa!\xF5V[`\0a\x05\x90`\x1C\x80Ta#\x13\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta#?\x90a/\x9FV[\x80\x15a#\x8CW\x80`\x1F\x10a#aWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a#\x8CV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a#oW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.historicalSummaryIndex\0\0\0\0\0\0\0\0\0\x81RPa(\xA6V[a#\xD4a)\xFAV[`\0[`\x04\x81\x10\x15a$\xDBW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a$*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra$R\x91\x90\x81\x01\x90a/(V[`@Q` \x01a$b\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra$\x7F\x91` \x01a3gV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a$\xA3\x92\x91\x90a(\xDCV[Pa$\xB4`\x1C\x80Ta\t\x1F\x90a/\x9FV[`\x9D\x82`\x04\x81\x10a$\xC7Wa$\xC7a0>V[\x01U\x80a$\xD3\x81a0TV[\x91PPa#\xD7V[P`@\x80Q`\x80\x81\x01\x91\x82\x90R`\x9D\x80T\x82R\x90\x91`\x04\x90`\x9E` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta%\x1C\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta%H\x90a/\x9FV[\x80\x15a%\x95W\x80`\x1F\x10a%jWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a%\x95V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a%xW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x0B\x99^\x19X\xDD]\x1A[\xDB\x94\x18^[\x1B\xD8Y\x14\x9B\xDB\xDD`Z\x1B\x81RPa((V[a%\xD5a*\x18V[`\0[`\x07\x81\x10\x15a&\xDCW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x80Q` a4\t\x839\x81Q\x91R\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra&S\x91\x90\x81\x01\x90a/(V[`@Q` \x01a&c\x91\x90a/\xD4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra&\x80\x91` \x01a3\x92V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\x1D\x90\x80Q\x90` \x01\x90a&\xA4\x92\x91\x90a(\xDCV[Pa&\xB5`\x1C\x80Ta\t\x1F\x90a/\x9FV[`\x96\x82`\x07\x81\x10a&\xC8Wa&\xC8a0>V[\x01U\x80a&\xD4\x81a0TV[\x91PPa%\xD8V[P`@\x80Q`\xE0\x81\x01\x91\x82\x90R`\x96\x80T\x82R\x90\x91`\x07\x90`\x97` \x85\x01\x80\x83\x11a\nlWPPPPP\x90P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x07oW` \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\x07QWPPPPP\x90P\x90V[`\0a\x05\x90`\x1C\x80Ta'}\x90a/\x9FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta'\xA9\x90a/\x9FV[\x80\x15a'\xF6W\x80`\x1F\x10a'\xCBWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a'\xF6V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a'\xD9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP`@Q\x80`@\x01`@R\x80`\x13\x81R` \x01r.ValidatorFields[0]`h\x1B\x81RP[`@Qc\x17w\xE5\x9D`\xE0\x1B\x81R`\0\x90`\0\x80Q` a4\t\x839\x81Q\x91R\x90c\x17w\xE5\x9D\x90a(^\x90\x86\x90\x86\x90`\x04\x01a3\xCAV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a({W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a(\x9F\x91\x90a3\xEFV[\x93\x92PPPV[`@QcV\xEE\xF1[`\xE1\x1B\x81R`\0\x90`\0\x80Q` a4\t\x839\x81Q\x91R\x90c\xAD\xDD\xE2\xB6\x90a(^\x90\x86\x90\x86\x90`\x04\x01a3\xCAV[\x82\x80Ta(\xE8\x90a/\x9FV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a)\nW`\0\x85Ua)PV[\x82`\x1F\x10a)#W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua)PV[\x82\x80\x01`\x01\x01\x85U\x82\x15a)PW\x91\x82\x01[\x82\x81\x11\x15a)PW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a)5V[Pa)\\\x92\x91Pa*6V[P\x90V[`@Q\x80a\x05\x80\x01`@R\x80`,\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x05\xC0\x01`@R\x80`.\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x02@\x01`@R\x80`\x12\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01 \x01`@R\x80`\t\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`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\\W`\0\x81U`\x01\x01a*7V[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*\x8AWa*\x8Aa*KV[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\xACWa*\xACa*KV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0` \x82\x84\x03\x12\x15a*\xCCW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xE3W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a*\xF4W`\0\x80\xFD[\x805a+\x07a+\x02\x82a*\x92V[a*aV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a+\x1CW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\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+{W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a+VV[P\x90\x96\x95PPPPPPV[a\x05\x80\x81\x01\x81\x83`\0[`,\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a+\x91V[PPP\x92\x91PPV[`\0[\x83\x81\x10\x15a+\xD4W\x81\x81\x01Q\x83\x82\x01R` \x01a+\xBCV[\x83\x81\x11\x15a+\xE3W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra,\x01\x81` \x86\x01` \x86\x01a+\xB9V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a,\xC5W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a,\xAFW`_\x19\x89\x85\x03\x01\x83Ra,\x9D\x84\x86Qa+\xE9V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a,\x81V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a,W`?\x19\x88\x86\x03\x01\x84Ra.,\x85\x83Qa+\xE9V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.\x10V[P\x92\x97\x96PPPPPPPV[``\x81\x01\x81\x83`\0[`\x03\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.TV[a\x02@\x81\x01\x81\x83`\0[`\x12\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.}V[a\x01 \x81\x01\x81\x83`\0[`\t\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.\xA6V[`\x80\x81\x01\x81\x83`\0[`\x04\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.\xCEV[`\xE0\x81\x01\x81\x83`\0[`\x07\x81\x10\x15a+\xB0W\x81Q\x83R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a.\xF6V[` \x81R`\0a(\x9F` \x83\x01\x84a+\xE9V[`\0` \x82\x84\x03\x12\x15a/:W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/QW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a/bW`\0\x80\xFD[\x80Qa/pa+\x02\x82a*\x92V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a/\x85W`\0\x80\xFD[a/\x96\x82` \x83\x01` \x86\x01a+\xB9V[\x95\x94PPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/\xB3W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\r\x03WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\0\x82Qa/\xE6\x81\x84` \x87\x01a+\xB9V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[\x7F.HistoricalSummaryProof[\0\0\0\0\0\0\0\0\x81R`\0\x82Qa01\x81`\x18\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x18\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a0vWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[\x7F.WithdrawalCredentialProof[\0\0\0\0\0\x81R`\0\x82Qa0\xB5\x81`\x1B\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x1B\x01\x92\x91PPV[\x7F.StateRootAgainstLatestBlockHead\x81RgerProof[`\xC0\x1B` \x82\x01R`\0\x82Qa1\x0B\x81`(\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`(\x01\x92\x91PPV[p.ValidatorFields[`x\x1B\x81R`\0\x82Qa1D\x81`\x11\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x11\x01\x92\x91PPV[o.ValidatorProof[`\x80\x1B\x81R`\0\x82Qa1|\x81`\x10\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x10\x01\x92\x91PPV[u.ValidatorFieldsProof[`P\x1B\x81R`\0\x82Qa1\xBA\x81`\x16\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x16\x01\x92\x91PPV[q.WithdrawalFields[`p\x1B\x81R`\0\x82Qa1\xF4\x81`\x12\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x12\x01\x92\x91PPV[j.SlotProof[`\xA8\x1B\x81R`\0\x82Qa2'\x81`\x0B\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[q.BlockHeaderProof[`p\x1B\x81R`\0\x82Qa1\xF4\x81`\x12\x85\x01` \x87\x01a+\xB9V[\x7F.ValidatorBalanceProof[\0\0\0\0\0\0\0\0\0\x81R`\0\x82Qa2\x99\x81`\x17\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x17\x01\x92\x91PPV[p.WithdrawalProof[`x\x1B\x81R`\0\x82Qa1D\x81`\x11\x85\x01` \x87\x01a+\xB9V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a2\xF5\x81`\x04\x85\x01` \x87\x01a+\xB9V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa3\x15\x81\x84` \x87\x01a+\xB9V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a31W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9FW`\0\x80\xFD[j.slotProof[`\xA8\x1B\x81R`\0\x82Qa2'\x81`\x0B\x85\x01` \x87\x01a+\xB9V[o.TimestampProof[`\x80\x1B\x81R`\0\x82Qa1|\x81`\x10\x85\x01` \x87\x01a+\xB9V[\x7F.ExecutionPayloadProof[\0\0\0\0\0\0\0\0\0\x81R`\0\x82Qa2\x99\x81`\x17\x85\x01` \x87\x01a+\xB9V[`@\x81R`\0a3\xDD`@\x83\x01\x85a+\xE9V[\x82\x81\x03` \x84\x01Ra/\x96\x81\x85a+\xE9V[`\0` \x82\x84\x03\x12\x15a4\x01W`\0\x80\xFD[PQ\x91\x90PV\xFE\0\0\0\0\0\0\0\0\0\0\0\0q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\xA2dipfsX\"\x12 W\xAEg\xFE\xE4\xFB=\x1Cmq\xCDkm\xD3u\x96HlZ\xB1\xB5\xFD\xAE\x13\xD9Qpg\xB5\xB9\xD1\\dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `getBalanceRoot()` and selector `0x4656fdb5`. + ```solidity + function getBalanceRoot() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBalanceRootCall {} + ///Container type for the return parameters of the [`getBalanceRoot()`](getBalanceRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBalanceRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBalanceRootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBalanceRootCall { + 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: getBalanceRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBalanceRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBalanceRootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBalanceRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBalanceRoot()"; + const SELECTOR: [u8; 4] = [70u8, 86u8, 253u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBalanceUpdateSlotProof()` and selector `0xc3da8ae9`. + ```solidity + function getBalanceUpdateSlotProof() external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBalanceUpdateSlotProofCall {} + ///Container type for the return parameters of the [`getBalanceUpdateSlotProof()`](getBalanceUpdateSlotProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBalanceUpdateSlotProofReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBalanceUpdateSlotProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBalanceUpdateSlotProofCall { + 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: getBalanceUpdateSlotProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBalanceUpdateSlotProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBalanceUpdateSlotProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBalanceUpdateSlotProofReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBalanceUpdateSlotProof()"; + const SELECTOR: [u8; 4] = [195u8, 218u8, 138u8, 233u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBeaconStateRoot()` and selector `0x177541fc`. + ```solidity + function getBeaconStateRoot() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBeaconStateRootCall {} + ///Container type for the return parameters of the [`getBeaconStateRoot()`](getBeaconStateRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBeaconStateRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBeaconStateRootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBeaconStateRootCall { + 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: getBeaconStateRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBeaconStateRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBeaconStateRootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBeaconStateRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBeaconStateRoot()"; + const SELECTOR: [u8; 4] = [23u8, 117u8, 65u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBlockHeaderProof()` and selector `0xa5077429`. + ```solidity + function getBlockHeaderProof() external returns (bytes32[18] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlockHeaderProofCall {} + ///Container type for the return parameters of the [`getBlockHeaderProof()`](getBlockHeaderProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlockHeaderProofReturn { + pub _0: [alloy::sol_types::private::FixedBytes<32>; 18usize], + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBlockHeaderProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBlockHeaderProofCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 18usize, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ([alloy::sol_types::private::FixedBytes<32>; 18usize],); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBlockHeaderProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBlockHeaderProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBlockHeaderProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBlockHeaderProofReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 18usize, + >, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBlockHeaderProof()"; + const SELECTOR: [u8; 4] = [165u8, 7u8, 116u8, 41u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBlockRoot()` and selector `0x275378b1`. + ```solidity + function getBlockRoot() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlockRootCall {} + ///Container type for the return parameters of the [`getBlockRoot()`](getBlockRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlockRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBlockRootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBlockRootCall { + 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: getBlockRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBlockRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBlockRootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBlockRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBlockRoot()"; + const SELECTOR: [u8; 4] = [39u8, 83u8, 120u8, 177u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBlockRootIndex()` and selector `0x42864734`. + ```solidity + function getBlockRootIndex() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlockRootIndexCall {} + ///Container type for the return parameters of the [`getBlockRootIndex()`](getBlockRootIndexCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlockRootIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBlockRootIndexCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBlockRootIndexCall { + 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: getBlockRootIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBlockRootIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBlockRootIndexCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBlockRootIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBlockRootIndex()"; + const SELECTOR: [u8; 4] = [66u8, 134u8, 71u8, 52u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getExecutionPayloadProof()` and selector `0xdb364a40`. + ```solidity + function getExecutionPayloadProof() external returns (bytes32[7] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getExecutionPayloadProofCall {} + ///Container type for the return parameters of the [`getExecutionPayloadProof()`](getExecutionPayloadProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getExecutionPayloadProofReturn { + pub _0: [alloy::sol_types::private::FixedBytes<32>; 7usize], + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getExecutionPayloadProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getExecutionPayloadProofCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 7usize, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ([alloy::sol_types::private::FixedBytes<32>; 7usize],); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getExecutionPayloadProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getExecutionPayloadProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getExecutionPayloadProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getExecutionPayloadProofReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 7usize, + >, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getExecutionPayloadProof()"; + const SELECTOR: [u8; 4] = [219u8, 54u8, 74u8, 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 `getExecutionPayloadRoot()` and selector `0xd944472f`. + ```solidity + function getExecutionPayloadRoot() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getExecutionPayloadRootCall {} + ///Container type for the return parameters of the [`getExecutionPayloadRoot()`](getExecutionPayloadRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getExecutionPayloadRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getExecutionPayloadRootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getExecutionPayloadRootCall { + 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: getExecutionPayloadRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getExecutionPayloadRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getExecutionPayloadRootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getExecutionPayloadRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getExecutionPayloadRoot()"; + const SELECTOR: [u8; 4] = [217u8, 68u8, 71u8, 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) + } + } + }; + /**Function with signature `getHistoricalSummaryIndex()` and selector `0xd6461cbb`. + ```solidity + function getHistoricalSummaryIndex() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getHistoricalSummaryIndexCall {} + ///Container type for the return parameters of the [`getHistoricalSummaryIndex()`](getHistoricalSummaryIndexCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getHistoricalSummaryIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getHistoricalSummaryIndexCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getHistoricalSummaryIndexCall { + 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: getHistoricalSummaryIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getHistoricalSummaryIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getHistoricalSummaryIndexCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getHistoricalSummaryIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getHistoricalSummaryIndex()"; + const SELECTOR: [u8; 4] = [214u8, 70u8, 28u8, 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 `getHistoricalSummaryProof()` and selector `0x2872e20c`. + ```solidity + function getHistoricalSummaryProof() external returns (bytes32[44] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getHistoricalSummaryProofCall {} + ///Container type for the return parameters of the [`getHistoricalSummaryProof()`](getHistoricalSummaryProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getHistoricalSummaryProofReturn { + pub _0: [alloy::sol_types::private::FixedBytes<32>; 44usize], + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getHistoricalSummaryProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getHistoricalSummaryProofCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 44usize, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ([alloy::sol_types::private::FixedBytes<32>; 44usize],); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getHistoricalSummaryProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getHistoricalSummaryProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getHistoricalSummaryProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getHistoricalSummaryProofReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 44usize, + >, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getHistoricalSummaryProof()"; + const SELECTOR: [u8; 4] = [40u8, 114u8, 226u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestBlockRoot()` and selector `0x18aadf31`. + ```solidity + function getLatestBlockRoot() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestBlockRootCall {} + ///Container type for the return parameters of the [`getLatestBlockRoot()`](getLatestBlockRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestBlockRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestBlockRootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestBlockRootCall { + 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: getLatestBlockRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestBlockRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestBlockRootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestBlockRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestBlockRoot()"; + const SELECTOR: [u8; 4] = [24u8, 170u8, 223u8, 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 `getSlot()` and selector `0x6c877c84`. + ```solidity + function getSlot() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getSlotCall {} + ///Container type for the return parameters of the [`getSlot()`](getSlotCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getSlotReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getSlotCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getSlotCall { + 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: getSlotReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getSlotReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getSlotCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getSlotReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getSlot()"; + const SELECTOR: [u8; 4] = [108u8, 135u8, 124u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getSlotProof()` and selector `0x9de4a9b3`. + ```solidity + function getSlotProof() external returns (bytes32[3] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getSlotProofCall {} + ///Container type for the return parameters of the [`getSlotProof()`](getSlotProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getSlotProofReturn { + pub _0: [alloy::sol_types::private::FixedBytes<32>; 3usize], + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getSlotProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getSlotProofCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 3usize, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ([alloy::sol_types::private::FixedBytes<32>; 3usize],); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getSlotProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getSlotProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getSlotProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getSlotProofReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 3usize, + >, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getSlotProof()"; + const SELECTOR: [u8; 4] = [157u8, 228u8, 169u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getSlotRoot()` and selector `0x16f07153`. + ```solidity + function getSlotRoot() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getSlotRootCall {} + ///Container type for the return parameters of the [`getSlotRoot()`](getSlotRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getSlotRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getSlotRootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getSlotRootCall { + 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: getSlotRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getSlotRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getSlotRootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getSlotRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getSlotRoot()"; + const SELECTOR: [u8; 4] = [22u8, 240u8, 113u8, 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 `getStateRootProof()` and selector `0x34e3d90e`. + ```solidity + function getStateRootProof() external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStateRootProofCall {} + ///Container type for the return parameters of the [`getStateRootProof()`](getStateRootProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStateRootProofReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStateRootProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStateRootProofCall { + 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: getStateRootProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStateRootProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStateRootProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStateRootProofReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStateRootProof()"; + const SELECTOR: [u8; 4] = [52u8, 227u8, 217u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTimestampProof()` and selector `0xd911b683`. + ```solidity + function getTimestampProof() external returns (bytes32[4] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTimestampProofCall {} + ///Container type for the return parameters of the [`getTimestampProof()`](getTimestampProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTimestampProofReturn { + pub _0: [alloy::sol_types::private::FixedBytes<32>; 4usize], + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTimestampProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTimestampProofCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 4usize, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ([alloy::sol_types::private::FixedBytes<32>; 4usize],); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTimestampProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTimestampProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTimestampProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTimestampProofReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 4usize, + >, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTimestampProof()"; + const SELECTOR: [u8; 4] = [217u8, 17u8, 182u8, 131u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTimestampRoot()` and selector `0xb38061bf`. + ```solidity + function getTimestampRoot() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTimestampRootCall {} + ///Container type for the return parameters of the [`getTimestampRoot()`](getTimestampRootCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTimestampRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTimestampRootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTimestampRootCall { + 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: getTimestampRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTimestampRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTimestampRootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTimestampRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTimestampRoot()"; + const SELECTOR: [u8; 4] = [179u8, 128u8, 97u8, 191u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getValidatorBalanceProof()` and selector `0xa6b7a848`. + ```solidity + function getValidatorBalanceProof() external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorBalanceProofCall {} + ///Container type for the return parameters of the [`getValidatorBalanceProof()`](getValidatorBalanceProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorBalanceProofReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getValidatorBalanceProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorBalanceProofCall { + 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: getValidatorBalanceProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorBalanceProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getValidatorBalanceProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getValidatorBalanceProofReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getValidatorBalanceProof()"; + const SELECTOR: [u8; 4] = [166u8, 183u8, 168u8, 72u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getValidatorFields()` and selector `0x4c20f510`. + ```solidity + function getValidatorFields() external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorFieldsCall {} + ///Container type for the return parameters of the [`getValidatorFields()`](getValidatorFieldsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorFieldsReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getValidatorFieldsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorFieldsCall { + 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: getValidatorFieldsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorFieldsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getValidatorFieldsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getValidatorFieldsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getValidatorFields()"; + const SELECTOR: [u8; 4] = [76u8, 32u8, 245u8, 16u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getValidatorFieldsProof()` and selector `0x893893ca`. + ```solidity + function getValidatorFieldsProof() external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorFieldsProofCall {} + ///Container type for the return parameters of the [`getValidatorFieldsProof()`](getValidatorFieldsProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorFieldsProofReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getValidatorFieldsProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorFieldsProofCall { + 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: getValidatorFieldsProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorFieldsProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getValidatorFieldsProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getValidatorFieldsProofReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getValidatorFieldsProof()"; + const SELECTOR: [u8; 4] = [137u8, 56u8, 147u8, 202u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getValidatorIndex()` and selector `0x765aa606`. + ```solidity + function getValidatorIndex() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorIndexCall {} + ///Container type for the return parameters of the [`getValidatorIndex()`](getValidatorIndexCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getValidatorIndexCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorIndexCall { + 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: getValidatorIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getValidatorIndexCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getValidatorIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getValidatorIndex()"; + const SELECTOR: [u8; 4] = [118u8, 90u8, 166u8, 6u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getValidatorProof()` and selector `0x4c38f913`. + ```solidity + function getValidatorProof() external returns (bytes32[46] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorProofCall {} + ///Container type for the return parameters of the [`getValidatorProof()`](getValidatorProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorProofReturn { + pub _0: [alloy::sol_types::private::FixedBytes<32>; 46usize], + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getValidatorProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorProofCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 46usize, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ([alloy::sol_types::private::FixedBytes<32>; 46usize],); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getValidatorProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getValidatorProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getValidatorProofReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 46usize, + >, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getValidatorProof()"; + const SELECTOR: [u8; 4] = [76u8, 56u8, 249u8, 19u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getValidatorPubkeyHash()` and selector `0xf148082c`. + ```solidity + function getValidatorPubkeyHash() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorPubkeyHashCall {} + ///Container type for the return parameters of the [`getValidatorPubkeyHash()`](getValidatorPubkeyHashCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getValidatorPubkeyHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getValidatorPubkeyHashCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorPubkeyHashCall { + 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: getValidatorPubkeyHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getValidatorPubkeyHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getValidatorPubkeyHashCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getValidatorPubkeyHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getValidatorPubkeyHash()"; + const SELECTOR: [u8; 4] = [241u8, 72u8, 8u8, 44u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getWithdrawalCredentialProof()` and selector `0x2fd1793c`. + ```solidity + function getWithdrawalCredentialProof() external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalCredentialProofCall {} + ///Container type for the return parameters of the [`getWithdrawalCredentialProof()`](getWithdrawalCredentialProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalCredentialProofReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalCredentialProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalCredentialProofCall { + 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: getWithdrawalCredentialProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalCredentialProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getWithdrawalCredentialProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getWithdrawalCredentialProofReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getWithdrawalCredentialProof()"; + const SELECTOR: [u8; 4] = [47u8, 209u8, 121u8, 60u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getWithdrawalFields()` and selector `0x950bb682`. + ```solidity + function getWithdrawalFields() external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalFieldsCall {} + ///Container type for the return parameters of the [`getWithdrawalFields()`](getWithdrawalFieldsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalFieldsReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalFieldsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalFieldsCall { + 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: getWithdrawalFieldsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalFieldsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getWithdrawalFieldsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getWithdrawalFieldsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getWithdrawalFields()"; + const SELECTOR: [u8; 4] = [149u8, 11u8, 182u8, 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 `getWithdrawalIndex()` and selector `0x64f38ed7`. + ```solidity + function getWithdrawalIndex() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalIndexCall {} + ///Container type for the return parameters of the [`getWithdrawalIndex()`](getWithdrawalIndexCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalIndexCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalIndexCall { + 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: getWithdrawalIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getWithdrawalIndexCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getWithdrawalIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getWithdrawalIndex()"; + const SELECTOR: [u8; 4] = [100u8, 243u8, 142u8, 215u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getWithdrawalProof()` and selector `0xab72161c`. + ```solidity + function getWithdrawalProof() external returns (bytes32[9] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalProofCall {} + ///Container type for the return parameters of the [`getWithdrawalProof()`](getWithdrawalProofCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getWithdrawalProofReturn { + pub _0: [alloy::sol_types::private::FixedBytes<32>; 9usize], + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalProofCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalProofCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 9usize, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ([alloy::sol_types::private::FixedBytes<32>; 9usize],); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalProofReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalProofReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getWithdrawalProofCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getWithdrawalProofReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::FixedBytes<32>, + 9usize, + >, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getWithdrawalProof()"; + const SELECTOR: [u8; 4] = [171u8, 114u8, 22u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setJSON(string)` and selector `0x08a4d71f`. + ```solidity + function setJSON(string memory path) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setJSONCall { + pub path: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`setJSON(string)`](setJSONCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setJSONReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setJSONCall) -> Self { + (value.path,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setJSONCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { path: 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: setJSONReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setJSONReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setJSONCall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setJSONReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setJSON(string)"; + const SELECTOR: [u8; 4] = [8u8, 164u8, 215u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.path, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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) + } + } + }; + ///Container for all the [`ProofParsing`](self) function calls. + pub enum ProofParsingCalls { + IS_TEST(IS_TESTCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + getBalanceRoot(getBalanceRootCall), + getBalanceUpdateSlotProof(getBalanceUpdateSlotProofCall), + getBeaconStateRoot(getBeaconStateRootCall), + getBlockHeaderProof(getBlockHeaderProofCall), + getBlockRoot(getBlockRootCall), + getBlockRootIndex(getBlockRootIndexCall), + getExecutionPayloadProof(getExecutionPayloadProofCall), + getExecutionPayloadRoot(getExecutionPayloadRootCall), + getHistoricalSummaryIndex(getHistoricalSummaryIndexCall), + getHistoricalSummaryProof(getHistoricalSummaryProofCall), + getLatestBlockRoot(getLatestBlockRootCall), + getSlot(getSlotCall), + getSlotProof(getSlotProofCall), + getSlotRoot(getSlotRootCall), + getStateRootProof(getStateRootProofCall), + getTimestampProof(getTimestampProofCall), + getTimestampRoot(getTimestampRootCall), + getValidatorBalanceProof(getValidatorBalanceProofCall), + getValidatorFields(getValidatorFieldsCall), + getValidatorFieldsProof(getValidatorFieldsProofCall), + getValidatorIndex(getValidatorIndexCall), + getValidatorProof(getValidatorProofCall), + getValidatorPubkeyHash(getValidatorPubkeyHashCall), + getWithdrawalCredentialProof(getWithdrawalCredentialProofCall), + getWithdrawalFields(getWithdrawalFieldsCall), + getWithdrawalIndex(getWithdrawalIndexCall), + getWithdrawalProof(getWithdrawalProofCall), + setJSON(setJSONCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + } + #[automatically_derived] + impl ProofParsingCalls { + /// 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]] = &[ + [8u8, 164u8, 215u8, 31u8], + [22u8, 240u8, 113u8, 83u8], + [23u8, 117u8, 65u8, 252u8], + [24u8, 170u8, 223u8, 49u8], + [30u8, 215u8, 131u8, 28u8], + [39u8, 83u8, 120u8, 177u8], + [40u8, 114u8, 226u8, 12u8], + [42u8, 222u8, 56u8, 128u8], + [47u8, 209u8, 121u8, 60u8], + [52u8, 227u8, 217u8, 14u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [66u8, 134u8, 71u8, 52u8], + [70u8, 86u8, 253u8, 181u8], + [76u8, 32u8, 245u8, 16u8], + [76u8, 56u8, 249u8, 19u8], + [100u8, 243u8, 142u8, 215u8], + [102u8, 217u8, 169u8, 160u8], + [108u8, 135u8, 124u8, 132u8], + [118u8, 90u8, 166u8, 6u8], + [133u8, 34u8, 108u8, 129u8], + [137u8, 56u8, 147u8, 202u8], + [145u8, 106u8, 23u8, 198u8], + [149u8, 11u8, 182u8, 130u8], + [157u8, 228u8, 169u8, 179u8], + [165u8, 7u8, 116u8, 41u8], + [166u8, 183u8, 168u8, 72u8], + [171u8, 114u8, 22u8, 28u8], + [179u8, 128u8, 97u8, 191u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [195u8, 218u8, 138u8, 233u8], + [214u8, 70u8, 28u8, 187u8], + [217u8, 17u8, 182u8, 131u8], + [217u8, 68u8, 71u8, 47u8], + [219u8, 54u8, 74u8, 64u8], + [226u8, 12u8, 159u8, 113u8], + [241u8, 72u8, 8u8, 44u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ProofParsingCalls { + const NAME: &'static str = "ProofParsingCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 39usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::getBalanceRoot(_) => { + ::SELECTOR + } + Self::getBalanceUpdateSlotProof(_) => { + ::SELECTOR + } + Self::getBeaconStateRoot(_) => { + ::SELECTOR + } + Self::getBlockHeaderProof(_) => { + ::SELECTOR + } + Self::getBlockRoot(_) => ::SELECTOR, + Self::getBlockRootIndex(_) => { + ::SELECTOR + } + Self::getExecutionPayloadProof(_) => { + ::SELECTOR + } + Self::getExecutionPayloadRoot(_) => { + ::SELECTOR + } + Self::getHistoricalSummaryIndex(_) => { + ::SELECTOR + } + Self::getHistoricalSummaryProof(_) => { + ::SELECTOR + } + Self::getLatestBlockRoot(_) => { + ::SELECTOR + } + Self::getSlot(_) => ::SELECTOR, + Self::getSlotProof(_) => ::SELECTOR, + Self::getSlotRoot(_) => ::SELECTOR, + Self::getStateRootProof(_) => { + ::SELECTOR + } + Self::getTimestampProof(_) => { + ::SELECTOR + } + Self::getTimestampRoot(_) => { + ::SELECTOR + } + Self::getValidatorBalanceProof(_) => { + ::SELECTOR + } + Self::getValidatorFields(_) => { + ::SELECTOR + } + Self::getValidatorFieldsProof(_) => { + ::SELECTOR + } + Self::getValidatorIndex(_) => { + ::SELECTOR + } + Self::getValidatorProof(_) => { + ::SELECTOR + } + Self::getValidatorPubkeyHash(_) => { + ::SELECTOR + } + Self::getWithdrawalCredentialProof(_) => { + ::SELECTOR + } + Self::getWithdrawalFields(_) => { + ::SELECTOR + } + Self::getWithdrawalIndex(_) => { + ::SELECTOR + } + Self::getWithdrawalProof(_) => { + ::SELECTOR + } + Self::setJSON(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::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 setJSON( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ProofParsingCalls::setJSON) + } + setJSON + }, + { + fn getSlotRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getSlotRoot) + } + getSlotRoot + }, + { + fn getBeaconStateRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getBeaconStateRoot) + } + getBeaconStateRoot + }, + { + fn getLatestBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getLatestBlockRoot) + } + getLatestBlockRoot + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::excludeSenders) + } + excludeSenders + }, + { + fn getBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getBlockRoot) + } + getBlockRoot + }, + { + fn getHistoricalSummaryProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getHistoricalSummaryProof) + } + getHistoricalSummaryProof + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn getWithdrawalCredentialProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProofParsingCalls::getWithdrawalCredentialProof) + } + getWithdrawalCredentialProof + }, + { + fn getStateRootProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getStateRootProof) + } + getStateRootProof + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::targetContracts) + } + targetContracts + }, + { + fn getBlockRootIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getBlockRootIndex) + } + getBlockRootIndex + }, + { + fn getBalanceRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getBalanceRoot) + } + getBalanceRoot + }, + { + fn getValidatorFields( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getValidatorFields) + } + getValidatorFields + }, + { + fn getValidatorProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getValidatorProof) + } + getValidatorProof + }, + { + fn getWithdrawalIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getWithdrawalIndex) + } + getWithdrawalIndex + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn getSlot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ProofParsingCalls::getSlot) + } + getSlot + }, + { + fn getValidatorIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getValidatorIndex) + } + getValidatorIndex + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn getValidatorFieldsProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getValidatorFieldsProof) + } + getValidatorFieldsProof + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::targetSelectors) + } + targetSelectors + }, + { + fn getWithdrawalFields( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getWithdrawalFields) + } + getWithdrawalFields + }, + { + fn getSlotProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getSlotProof) + } + getSlotProof + }, + { + fn getBlockHeaderProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getBlockHeaderProof) + } + getBlockHeaderProof + }, + { + fn getValidatorBalanceProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getValidatorBalanceProof) + } + getValidatorBalanceProof + }, + { + fn getWithdrawalProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getWithdrawalProof) + } + getWithdrawalProof + }, + { + fn getTimestampRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getTimestampRoot) + } + getTimestampRoot + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ProofParsingCalls::failed) + } + failed + }, + { + fn getBalanceUpdateSlotProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getBalanceUpdateSlotProof) + } + getBalanceUpdateSlotProof + }, + { + fn getHistoricalSummaryIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getHistoricalSummaryIndex) + } + getHistoricalSummaryIndex + }, + { + fn getTimestampProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getTimestampProof) + } + getTimestampProof + }, + { + fn getExecutionPayloadRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getExecutionPayloadRoot) + } + getExecutionPayloadRoot + }, + { + fn getExecutionPayloadProof( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getExecutionPayloadProof) + } + getExecutionPayloadProof + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::excludeContracts) + } + excludeContracts + }, + { + fn getValidatorPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProofParsingCalls::getValidatorPubkeyHash) + } + getValidatorPubkeyHash + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ProofParsingCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::getBalanceRoot(inner) => { + ::abi_encoded_size(inner) + } + Self::getBalanceUpdateSlotProof(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getBeaconStateRoot(inner) => { + ::abi_encoded_size(inner) + } + Self::getBlockHeaderProof(inner) => { + ::abi_encoded_size(inner) + } + Self::getBlockRoot(inner) => { + ::abi_encoded_size(inner) + } + Self::getBlockRootIndex(inner) => { + ::abi_encoded_size(inner) + } + Self::getExecutionPayloadProof(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getExecutionPayloadRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getHistoricalSummaryIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getHistoricalSummaryProof(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLatestBlockRoot(inner) => { + ::abi_encoded_size(inner) + } + Self::getSlot(inner) => { + ::abi_encoded_size(inner) + } + Self::getSlotProof(inner) => { + ::abi_encoded_size(inner) + } + Self::getSlotRoot(inner) => { + ::abi_encoded_size(inner) + } + Self::getStateRootProof(inner) => { + ::abi_encoded_size(inner) + } + Self::getTimestampProof(inner) => { + ::abi_encoded_size(inner) + } + Self::getTimestampRoot(inner) => { + ::abi_encoded_size(inner) + } + Self::getValidatorBalanceProof(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getValidatorFields(inner) => { + ::abi_encoded_size(inner) + } + Self::getValidatorFieldsProof(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getValidatorIndex(inner) => { + ::abi_encoded_size(inner) + } + Self::getValidatorProof(inner) => { + ::abi_encoded_size(inner) + } + Self::getValidatorPubkeyHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getWithdrawalCredentialProof(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getWithdrawalFields(inner) => { + ::abi_encoded_size(inner) + } + Self::getWithdrawalIndex(inner) => { + ::abi_encoded_size(inner) + } + Self::getWithdrawalProof(inner) => { + ::abi_encoded_size(inner) + } + Self::setJSON(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getBalanceRoot(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getBalanceUpdateSlotProof(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getBeaconStateRoot(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getBlockHeaderProof(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getBlockRoot(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getBlockRootIndex(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getExecutionPayloadProof(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getExecutionPayloadRoot(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getHistoricalSummaryIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getHistoricalSummaryProof(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getLatestBlockRoot(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getSlot(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getSlotProof(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getSlotRoot(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getStateRootProof(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getTimestampProof(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getTimestampRoot(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getValidatorBalanceProof(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getValidatorFields(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getValidatorFieldsProof(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getValidatorIndex(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getValidatorProof(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getValidatorPubkeyHash(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getWithdrawalCredentialProof(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getWithdrawalFields(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getWithdrawalIndex(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getWithdrawalProof(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setJSON(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ProofParsing`](self) events. + pub enum ProofParsingEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl ProofParsingEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ProofParsingEvents { + const NAME: &'static str = "ProofParsingEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 ProofParsingEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ProofParsing`](self) contract instance. + + See the [wrapper's documentation](`ProofParsingInstance`) 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, + ) -> ProofParsingInstance { + ProofParsingInstance::::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>> + { + ProofParsingInstance::::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 { + ProofParsingInstance::::deploy_builder(provider) + } + /**A [`ProofParsing`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ProofParsing`](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 ProofParsingInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ProofParsingInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ProofParsingInstance") + .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, + > ProofParsingInstance + { + /**Creates a new wrapper around an on-chain [`ProofParsing`](self) contract instance. + + See the [wrapper's documentation](`ProofParsingInstance`) 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 ProofParsingInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ProofParsingInstance { + ProofParsingInstance { + 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, + > ProofParsingInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`getBalanceRoot`] function. + pub fn getBalanceRoot( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBalanceRootCall {}) + } + ///Creates a new call builder for the [`getBalanceUpdateSlotProof`] function. + pub fn getBalanceUpdateSlotProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBalanceUpdateSlotProofCall {}) + } + ///Creates a new call builder for the [`getBeaconStateRoot`] function. + pub fn getBeaconStateRoot( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBeaconStateRootCall {}) + } + ///Creates a new call builder for the [`getBlockHeaderProof`] function. + pub fn getBlockHeaderProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBlockHeaderProofCall {}) + } + ///Creates a new call builder for the [`getBlockRoot`] function. + pub fn getBlockRoot(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBlockRootCall {}) + } + ///Creates a new call builder for the [`getBlockRootIndex`] function. + pub fn getBlockRootIndex( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBlockRootIndexCall {}) + } + ///Creates a new call builder for the [`getExecutionPayloadProof`] function. + pub fn getExecutionPayloadProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getExecutionPayloadProofCall {}) + } + ///Creates a new call builder for the [`getExecutionPayloadRoot`] function. + pub fn getExecutionPayloadRoot( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getExecutionPayloadRootCall {}) + } + ///Creates a new call builder for the [`getHistoricalSummaryIndex`] function. + pub fn getHistoricalSummaryIndex( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getHistoricalSummaryIndexCall {}) + } + ///Creates a new call builder for the [`getHistoricalSummaryProof`] function. + pub fn getHistoricalSummaryProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getHistoricalSummaryProofCall {}) + } + ///Creates a new call builder for the [`getLatestBlockRoot`] function. + pub fn getLatestBlockRoot( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestBlockRootCall {}) + } + ///Creates a new call builder for the [`getSlot`] function. + pub fn getSlot(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&getSlotCall {}) + } + ///Creates a new call builder for the [`getSlotProof`] function. + pub fn getSlotProof(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&getSlotProofCall {}) + } + ///Creates a new call builder for the [`getSlotRoot`] function. + pub fn getSlotRoot(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&getSlotRootCall {}) + } + ///Creates a new call builder for the [`getStateRootProof`] function. + pub fn getStateRootProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStateRootProofCall {}) + } + ///Creates a new call builder for the [`getTimestampProof`] function. + pub fn getTimestampProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTimestampProofCall {}) + } + ///Creates a new call builder for the [`getTimestampRoot`] function. + pub fn getTimestampRoot( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTimestampRootCall {}) + } + ///Creates a new call builder for the [`getValidatorBalanceProof`] function. + pub fn getValidatorBalanceProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getValidatorBalanceProofCall {}) + } + ///Creates a new call builder for the [`getValidatorFields`] function. + pub fn getValidatorFields( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getValidatorFieldsCall {}) + } + ///Creates a new call builder for the [`getValidatorFieldsProof`] function. + pub fn getValidatorFieldsProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getValidatorFieldsProofCall {}) + } + ///Creates a new call builder for the [`getValidatorIndex`] function. + pub fn getValidatorIndex( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getValidatorIndexCall {}) + } + ///Creates a new call builder for the [`getValidatorProof`] function. + pub fn getValidatorProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getValidatorProofCall {}) + } + ///Creates a new call builder for the [`getValidatorPubkeyHash`] function. + pub fn getValidatorPubkeyHash( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getValidatorPubkeyHashCall {}) + } + ///Creates a new call builder for the [`getWithdrawalCredentialProof`] function. + pub fn getWithdrawalCredentialProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getWithdrawalCredentialProofCall {}) + } + ///Creates a new call builder for the [`getWithdrawalFields`] function. + pub fn getWithdrawalFields( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getWithdrawalFieldsCall {}) + } + ///Creates a new call builder for the [`getWithdrawalIndex`] function. + pub fn getWithdrawalIndex( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getWithdrawalIndexCall {}) + } + ///Creates a new call builder for the [`getWithdrawalProof`] function. + pub fn getWithdrawalProof( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getWithdrawalProofCall {}) + } + ///Creates a new call builder for the [`setJSON`] function. + pub fn setJSON( + &self, + path: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setJSONCall { path }) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProofParsingInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/proxiable.rs b/crates/utils/src/middleware/proxiable.rs new file mode 100644 index 00000000..720378ff --- /dev/null +++ b/crates/utils/src/middleware/proxiable.rs @@ -0,0 +1,775 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Proxiable { + function UPGRADE_INTERFACE_VERSION() external view returns (string memory); + function proxiableUUID() external view returns (bytes32); + function upgradeToAndCall(address newImplementation, bytes memory data) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "UPGRADE_INTERFACE_VERSION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Proxiable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610455806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634f1ef2861461004657806352d1902d1461005b578063ad3cb1cc1461008e575b600080fd5b610059610054366004610310565b6100bf565b005b6040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81526020015b60405180910390f35b6100b2604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008591906103a1565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610119575060408051601f3d908101601f19168201909252610116918101906103f6565b60015b61016a5760405162461bcd60e51b815260206004820152601e60248201527f74686520696d706c656d656e746174696f6e206973206e6f742055555053000060448201526064015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146101d95760405162461bcd60e51b815260206004820152601d60248201527f736c6f7420697320756e737570706f72746564206173206120757569640000006044820152606401610161565b610201847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b81156102b2576000846001600160a01b0316848460405161022392919061040f565b600060405180830381855af49150503d806000811461025e576040519150601f19603f3d011682016040523d82523d6000602084013e610263565b606091505b50509050806102ac5760405162461bcd60e51b81526020600482015260156024820152741d5c19dc9859194818d85b1b081c995d995c9d1959605a1b6044820152606401610161565b506102ba565b6102ba6102c0565b50505050565b341561030e5760405162461bcd60e51b815260206004820152601860248201527f6e6f6e2d70617961626c6520757067726164652063616c6c00000000000000006044820152606401610161565b565b60008060006040848603121561032557600080fd5b83356001600160a01b038116811461033c57600080fd5b9250602084013567ffffffffffffffff8082111561035957600080fd5b818601915086601f83011261036d57600080fd5b81358181111561037c57600080fd5b87602082850101111561038e57600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156103ce578581018301518582016040015282016103b2565b818111156103e0576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561040857600080fd5b5051919050565b818382376000910190815291905056fea264697066735822122033eb6dadc9bb63ea1a7c47c9b527b02c0b4ee5fbe754db083cf7498bc9a3fcdc64736f6c634300080c0033 + /// ``` + #[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\x04U\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cO\x1E\xF2\x86\x14a\0FW\x80cR\xD1\x90-\x14a\0[W\x80c\xAD<\xB1\xCC\x14a\0\x8EW[`\0\x80\xFD[a\0Ya\0T6`\x04a\x03\x10V[a\0\xBFV[\0[`@Q\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB2`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\0\x85\x91\x90a\x03\xA1V[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x01\x19WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x01\x16\x91\x81\x01\x90a\x03\xF6V[`\x01[a\x01jW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fthe implementation is not UUPS\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a\x01\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fslot is unsupported as a uuid\0\0\0`D\x82\x01R`d\x01a\x01aV[a\x02\x01\x84\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[\x81\x15a\x02\xB2W`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x02#\x92\x91\x90a\x04\x0FV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x02^W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02cV[``\x91P[PP\x90P\x80a\x02\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1D\\\x19\xDC\x98Y\x19H\x18\xD8[\x1B\x08\x1C\x99]\x99\\\x9D\x19Y`Z\x1B`D\x82\x01R`d\x01a\x01aV[Pa\x02\xBAV[a\x02\xBAa\x02\xC0V[PPPPV[4\x15a\x03\x0EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fnon-payable upgrade call\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01aV[V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x03%W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03 v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB2`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\0\x85\x91\x90a\x03\xA1V[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x01\x19WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x01\x16\x91\x81\x01\x90a\x03\xF6V[`\x01[a\x01jW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fthe implementation is not UUPS\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x81\x14a\x01\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fslot is unsupported as a uuid\0\0\0`D\x82\x01R`d\x01a\x01aV[a\x02\x01\x84\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[\x81\x15a\x02\xB2W`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x02#\x92\x91\x90a\x04\x0FV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x02^W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02cV[``\x91P[PP\x90P\x80a\x02\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1D\\\x19\xDC\x98Y\x19H\x18\xD8[\x1B\x08\x1C\x99]\x99\\\x9D\x19Y`Z\x1B`D\x82\x01R`d\x01a\x01aV[Pa\x02\xBAV[a\x02\xBAa\x02\xC0V[PPPPV[4\x15a\x03\x0EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fnon-payable upgrade call\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01aV[V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x03%W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03 = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for UPGRADE_INTERFACE_VERSIONCall { + 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: UPGRADE_INTERFACE_VERSIONReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for UPGRADE_INTERFACE_VERSIONReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = UPGRADE_INTERFACE_VERSIONReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()"; + const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `proxiableUUID()` and selector `0x52d1902d`. + ```solidity + function proxiableUUID() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxiableUUIDCall {} + ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct proxiableUUIDReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`. + ```solidity + function upgradeToAndCall(address newImplementation, bytes memory data) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct upgradeToAndCallReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`Proxiable`](self) function calls. + pub enum ProxiableCalls { + UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall), + proxiableUUID(proxiableUUIDCall), + upgradeToAndCall(upgradeToAndCallCall), + } + #[automatically_derived] + impl ProxiableCalls { + /// 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]] = &[ + [79u8, 30u8, 242u8, 134u8], + [82u8, 209u8, 144u8, 45u8], + [173u8, 60u8, 177u8, 204u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ProxiableCalls { + const NAME: &'static str = "ProxiableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::UPGRADE_INTERFACE_VERSION(_) => { + ::SELECTOR + } + Self::proxiableUUID(_) => ::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] = &[ + { + fn upgradeToAndCall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxiableCalls::upgradeToAndCall) + } + upgradeToAndCall + }, + { + fn proxiableUUID( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxiableCalls::proxiableUUID) + } + proxiableUUID + }, + { + fn UPGRADE_INTERFACE_VERSION( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxiableCalls::UPGRADE_INTERFACE_VERSION) + } + UPGRADE_INTERFACE_VERSION + }, + ]; + 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::UPGRADE_INTERFACE_VERSION(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::proxiableUUID(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::UPGRADE_INTERFACE_VERSION(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::proxiableUUID(inner) => { + ::abi_encode_raw(inner, out) + } + Self::upgradeToAndCall(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Proxiable`](self) contract instance. + + See the [wrapper's documentation](`ProxiableInstance`) 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, + ) -> ProxiableInstance { + ProxiableInstance::::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>> + { + ProxiableInstance::::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 { + ProxiableInstance::::deploy_builder(provider) + } + /**A [`Proxiable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Proxiable`](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 ProxiableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ProxiableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ProxiableInstance") + .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, + > ProxiableInstance + { + /**Creates a new wrapper around an on-chain [`Proxiable`](self) contract instance. + + See the [wrapper's documentation](`ProxiableInstance`) 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 ProxiableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ProxiableInstance { + ProxiableInstance { + 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, + > ProxiableInstance + { + /// 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 [`UPGRADE_INTERFACE_VERSION`] function. + pub fn UPGRADE_INTERFACE_VERSION( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {}) + } + ///Creates a new call builder for the [`proxiableUUID`] function. + pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&proxiableUUIDCall {}) + } + ///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, + > ProxiableInstance + { + /// 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/middleware/proxy.rs b/crates/utils/src/middleware/proxy.rs new file mode 100644 index 00000000..1227bc77 --- /dev/null +++ b/crates/utils/src/middleware/proxy.rs @@ -0,0 +1,234 @@ +/** + +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::pub_underscore_fields, + 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/middleware/proxyadmin.rs similarity index 96% rename from crates/utils/src/proxyadmin.rs rename to crates/utils/src/middleware/proxyadmin.rs index edb4ed78..c73ff1e8 100644 --- a/crates/utils/src/proxyadmin.rs +++ b/crates/utils/src/middleware/proxyadmin.rs @@ -170,35 +170,45 @@ interface ProxyAdmin { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ProxyAdmin { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220d2defa3201be949322800c3098b574d26d9d6a6cbac4560c147ae4c675a9d47a64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033 /// ``` #[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", + 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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220d2defa3201be949322800c3098b574d26d9d6a6cbac4560c147ae4c675a9d47a64736f6c634300080c0033 + ///0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212203653e9363efd0f0350f14c285a7a4ac2e7a71c1033bcf75084c6d0fe2d39b82964736f6c634300080c0033 /// ``` #[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", + 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 6S\xE96>\xFD\x0F\x03P\xF1L(ZzJ\xC2\xE7\xA7\x1C\x103\xBC\xF7P\x84\xC6\xD0\xFE-9\xB8)dsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -206,7 +216,12 @@ pub mod ProxyAdmin { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -301,17 +316,22 @@ pub mod ProxyAdmin { ```solidity function changeProxyAdmin(address proxy, address newAdmin) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct changeProxyAdminReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -426,18 +446,23 @@ pub mod ProxyAdmin { ```solidity function getProxyAdmin(address proxy) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getProxyAdminReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -537,18 +562,23 @@ pub mod ProxyAdmin { ```solidity function getProxyImplementation(address proxy) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getProxyImplementationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -648,16 +678,21 @@ pub mod ProxyAdmin { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -753,14 +788,19 @@ pub mod ProxyAdmin { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -856,16 +896,21 @@ pub mod ProxyAdmin { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -965,17 +1010,22 @@ pub mod ProxyAdmin { ```solidity function upgrade(address proxy, address implementation) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct upgradeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1090,7 +1140,7 @@ pub mod ProxyAdmin { ```solidity function upgradeAndCall(address proxy, address implementation, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct upgradeAndCallCall { pub proxy: alloy::sol_types::private::Address, @@ -1098,10 +1148,15 @@ pub mod ProxyAdmin { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct upgradeAndCallReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/reentrancyguardupgradeable.rs b/crates/utils/src/middleware/reentrancyguardupgradeable.rs new file mode 100644 index 00000000..e0e1b3fd --- /dev/null +++ b/crates/utils/src/middleware/reentrancyguardupgradeable.rs @@ -0,0 +1,408 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ReentrancyGuardUpgradeable { + 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::pub_underscore_fields, + clippy::style +)] +pub mod ReentrancyGuardUpgradeable { + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`ReentrancyGuardUpgradeable`](self) events. + pub enum ReentrancyGuardUpgradeableEvents { + Initialized(Initialized), + } + #[automatically_derived] + impl ReentrancyGuardUpgradeableEvents { + /// 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 ReentrancyGuardUpgradeableEvents { + const NAME: &'static str = "ReentrancyGuardUpgradeableEvents"; + 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 ReentrancyGuardUpgradeableEvents { + 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 [`ReentrancyGuardUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`ReentrancyGuardUpgradeableInstance`) 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, + ) -> ReentrancyGuardUpgradeableInstance { + ReentrancyGuardUpgradeableInstance::::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>, + > { + ReentrancyGuardUpgradeableInstance::::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 { + ReentrancyGuardUpgradeableInstance::::deploy_builder(provider) + } + /**A [`ReentrancyGuardUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ReentrancyGuardUpgradeable`](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 ReentrancyGuardUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ReentrancyGuardUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ReentrancyGuardUpgradeableInstance") + .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, + > ReentrancyGuardUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`ReentrancyGuardUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`ReentrancyGuardUpgradeableInstance`) 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 ReentrancyGuardUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ReentrancyGuardUpgradeableInstance { + ReentrancyGuardUpgradeableInstance { + 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, + > ReentrancyGuardUpgradeableInstance + { + /// 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, + > ReentrancyGuardUpgradeableInstance + { + /// 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/registrycoordinator.rs b/crates/utils/src/middleware/registrycoordinator.rs similarity index 70% rename from crates/utils/src/registrycoordinator.rs rename to crates/utils/src/middleware/registrycoordinator.rs index b5f2af1b..4fff99d3 100644 --- a/crates/utils/src/registrycoordinator.rs +++ b/crates/utils/src/middleware/registrycoordinator.rs @@ -7,20 +7,30 @@ library BN254 { struct G2Point { uint256[2] X; uint256[2] Y; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -196,13 +206,18 @@ pub mod BN254 { /**```solidity struct G2Point { uint256[2] X; uint256[2] Y; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -527,21 +542,31 @@ library IBLSApkRegistry { struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PubkeyRegistrationParams { pub pubkeyRegistrationSignature: ::RustType, pub pubkeyG1: ::RustType, pub pubkeyG2: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -875,11 +900,16 @@ library IRegistryCoordinator { struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod IRegistryCoordinator { use super::*; use alloy::sol_types as alloy_sol_types; - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorStatus(u8); const _: () = { @@ -991,13 +1021,18 @@ pub mod IRegistryCoordinator { /**```solidity struct OperatorInfo { bytes32 operatorId; OperatorStatus status; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1176,13 +1211,18 @@ pub mod IRegistryCoordinator { /**```solidity struct OperatorKickParam { uint8 quorumNumber; address operator; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1363,14 +1403,19 @@ pub mod IRegistryCoordinator { /**```solidity struct OperatorSetParam { uint32 maxOperatorCount; uint16 kickBIPsOfOperatorStake; uint16 kickBIPsOfTotalStake; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OperatorSetParam { pub maxOperatorCount: u32, pub kickBIPsOfOperatorStake: u16, pub kickBIPsOfTotalStake: u16, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1585,14 +1630,19 @@ pub mod IRegistryCoordinator { /**```solidity struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1944,21 +1994,31 @@ library ISignatureUtils { struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2296,20 +2356,30 @@ library IStakeRegistry { struct StrategyParams { address strategy; uint96 multiplier; } } ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2704,7 +2774,6 @@ interface RegistryCoordinator { 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); @@ -2719,7 +2788,6 @@ interface RegistryCoordinator { 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; @@ -2736,7 +2804,6 @@ interface RegistryCoordinator { 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; @@ -2964,19 +3031,6 @@ interface RegistryCoordinator { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "ejectionCooldown", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "ejector", @@ -3355,25 +3409,6 @@ interface RegistryCoordinator { ], "stateMutability": "view" }, - { - "type": "function", - "name": "lastEjectionTimestamp", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "numRegistries", @@ -3815,19 +3850,6 @@ interface RegistryCoordinator { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "setEjectionCooldown", - "inputs": [ - { - "name": "_ejectionCooldown", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, { "type": "function", "name": "setEjector", @@ -4213,35 +4235,45 @@ interface RegistryCoordinator { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod RegistryCoordinator { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6101c06040523480156200001257600080fd5b506040516200639938038062006399833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615fd5620003c4600039600081816106ab0152818161119d0152818161208501528181612eb50152818161376c0152613d440152600081816105f001528181612010015281816124b801528181612e35015281816136c3015281816139190152613cc30152600081816105b601528181610f380152818161204e01528181612db701528181612f9d01528181613013015281816136430152613dc00152600081816104fa01528181612d0d015261358b01526000613fc70152600061401601526000613ff101526000613f4a01526000613f7401526000613f9e0152615fd56000f3fe608060405234801561001057600080fd5b50600436106102d55760003560e01c80635df45946116101825780639feab859116100e9578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610798578063f2fde38b1461083b578063fabc1cbc1461084e578063fd39105a1461086157600080fd5b8063d72d8dd61461076a578063d75b4c8814610772578063dd8283f31461078557600080fd5b80639feab859146106cd578063a50857bf146106f4578063a96f783e14610707578063c391425e14610710578063ca0de88214610730578063ca4f2d971461075757600080fd5b8063871ef0491161013b578063871ef04914610640578063886f1195146106535780638da5cb5b1461066c5780639aa1653d146106745780639b5d177b146106935780639e9923c2146106a657600080fd5b80635df45946146105b15780636347c900146105d857806368304835146105eb5780636e3b17db14610612578063715018a61461062557806384ca52131461062d57600080fd5b8063249a0c42116102415780633c2a7f4c116101fa578063595c6a67116101d4578063595c6a671461056f5780635ac86ab7146105775780635b0b829f146105965780635c975abb146105a957600080fd5b80633c2a7f4c1461051c5780635140a5481461053c5780635865c60c1461054f57600080fd5b8063249a0c421461048957806328f61b31146104a9578063296bb064146104bc57806329d1e0c3146104cf5780632cdd1e86146104e25780633998fdd3146104f557600080fd5b806310d67a2f1161029357806310d67a2f1461039e578063125e0584146103b157806313542a4e146103d1578063136439dd146103fa5780631478851f1461040d5780631eb812da1461044057600080fd5b8062cf2ab5146102da57806303fd3492146102ef57806304ec635114610322578063054310e61461034d5780630cf4b767146103785780630d3f21341461038b575b600080fd5b6102ed6102e8366004614ac7565b61089d565b005b61030f6102fd366004614b08565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b610335610330366004614b33565b6109b3565b6040516001600160c01b039091168152602001610319565b609d54610360906001600160a01b031681565b6040516001600160a01b039091168152602001610319565b6102ed610386366004614c52565b610ba9565b6102ed610399366004614b08565b610c91565b6102ed6103ac366004614cc7565b610c9e565b61030f6103bf366004614cc7565b609f6020526000908152604090205481565b61030f6103df366004614cc7565b6001600160a01b031660009081526099602052604090205490565b6102ed610408366004614b08565b610d51565b61043061041b366004614b08565b609a6020526000908152604090205460ff1681565b6040519015158152602001610319565b61045361044e366004614ce4565b610e8e565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610319565b61030f610497366004614d17565b609b6020526000908152604090205481565b609e54610360906001600160a01b031681565b6103606104ca366004614b08565b610f1f565b6102ed6104dd366004614cc7565b610fab565b6102ed6104f0366004614cc7565b610fbc565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61052f61052a366004614cc7565b610fcd565b6040516103199190614d32565b6102ed61054a366004614d8a565b61104c565b61056261055d366004614cc7565b61155d565b6040516103199190614e2d565b6102ed6115d1565b610430610585366004614d17565b6001805460ff9092161b9081161490565b6102ed6105a4366004614eb2565b61169d565b60015461030f565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6103606105e6366004614b08565b6116be565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6102ed610620366004614ee6565b6116e8565b6102ed6117fe565b61030f61063b366004614f9d565b611812565b61033561064e366004614b08565b61185c565b600054610360906201000090046001600160a01b031681565b610360611867565b6096546106819060ff1681565b60405160ff9091168152602001610319565b6102ed6106a1366004615136565b611880565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61030f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ed61070236600461522f565b611bb8565b61030f60a05481565b61072361071e3660046152d7565b611d3c565b604051610319919061537c565b61030f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ed6107653660046153c6565b611df5565b609c5461030f565b6102ed6107803660046154ac565b611e5c565b6102ed61079336600461565f565b611e6f565b6108076107a6366004614d17565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610319565b6102ed610849366004614cc7565b612173565b6102ed61085c366004614b08565b6121e9565b61089061086f366004614cc7565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103199190615733565b600154600290600490811614156108cf5760405162461bcd60e51b81526004016108c690615741565b60405180910390fd5b60005b828110156109ad5760008484838181106108ee576108ee615778565b90506020020160208101906109039190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561094e5761094e614df5565b600281111561095f5761095f614df5565b9052508051909150600061097282612345565b90506000610988826001600160c01b03166123ae565b905061099585858361247a565b505050505080806109a5906157a4565b9150506108d2565b50505050565b60008381526098602052604081208054829190849081106109d6576109d6615778565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610ad05760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4016108c6565b602081015163ffffffff161580610af65750806020015163ffffffff168463ffffffff16105b610b9d5760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c4016108c6565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610bd257610bd2614df5565b14610c455760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f7420726567697374657265640000000060648201526084016108c6565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c8690849061580c565b60405180910390a250565b610c99612567565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d15919061581f565b6001600160a01b0316336001600160a01b031614610d455760405162461bcd60e51b81526004016108c69061583c565b610d4e816125c6565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190615886565b610dde5760405162461bcd60e51b81526004016108c6906158a8565b60015481811614610e575760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c86565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ecb57610ecb615778565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061581f565b610fb3612567565b610d4e816126cb565b610fc4612567565b610d4e81612734565b6040805180820190915260008082526020820152610f196110477f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68460405160200161102c9291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061279d565b6127eb565b600154600290600490811614156110755760405162461bcd60e51b81526004016108c690615741565b60006110bd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905084831461112e5760405162461bcd60e51b81526020600482015260436024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a4016108c6565b60005b8381101561155457600085858381811061114d5761114d615778565b919091013560f81c9150369050600089898581811061116e5761116e615778565b905060200281019061118091906158f0565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190615939565b63ffffffff1681146112ac5760405162461bcd60e51b81526020600482015260656024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c4016108c6565b6000805b828110156114f35760008484838181106112cc576112cc615778565b90506020020160208101906112e19190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561132c5761132c614df5565b600281111561133d5761133d614df5565b9052508051909150600061135082612345565b905060016001600160c01b03821660ff8b161c8116146113d45760405162461bcd60e51b815260206004820152604460248201819052600080516020615f40833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a4016108c6565b856001600160a01b0316846001600160a01b03161161147f5760405162461bcd60e51b81526020600482015260676024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c4016108c6565b506114dd83838f8f8d908e60016114969190615956565b926114a39392919061596e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247a92505050565b509092506114ec9050816157a4565b90506112b0565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061154d906157a4565b9050611131565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115b7576115b7614df5565b60028111156115c8576115c8614df5565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116429190615886565b61165e5760405162461bcd60e51b81526004016108c6906158a8565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a5612567565b816116af8161290c565b6116b9838361298a565b505050565b609c81815481106116ce57600080fd5b6000918252602090912001546001600160a01b0316905081565b6116f0612a37565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161175d9187908790819084018382808284376000920191909152505060965460ff16915061287b9050565b9050600061176a83612345565b905060018085015460ff16600281111561178657611786614df5565b14801561179b57506001600160c01b03821615155b80156117b957506117b96001600160c01b0383811690831681161490565b15611554576115548787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611806612567565b6118106000612f29565b565b60006118527f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a878787878760405160200161102c96959493929190615998565b9695505050505050565b6000610f1982612345565b600061187b6064546001600160a01b031690565b905090565b6001805460009190811614156118a85760405162461bcd60e51b81526004016108c690615741565b83891461192b5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016108c6565b60006119373388612f7b565b905061199733828888808060200260200160405190810160405280939291908181526020016000905b8282101561198c5761197d60408302860136819003810190615a1d565b81526020019060010190611960565b5050505050876130ac565b60006119de33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b905060005b8b811015611ba9576000609760008f8f85818110611a0357611a03615778565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a7057611a70615778565b602002602001015163ffffffff161115611b9657611b118e8e84818110611a9957611a99615778565b9050013560f81c60f81b60f81c84604001518481518110611abc57611abc615778565b60200260200101513386602001518681518110611adb57611adb615778565b60200260200101518d8d88818110611af557611af5615778565b905060400201803603810190611b0b9190615a1d565b866137fa565b611b96898984818110611b2657611b26615778565b9050604002016020016020810190611b3e9190614cc7565b8f8f8590866001611b4f9190615956565b92611b5c9392919061596e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b5080611ba1816157a4565b9150506119e3565b50505050505050505050505050565b600180546000919081161415611be05760405162461bcd60e51b81526004016108c690615741565b6000611bec3385612f7b565b90506000611c3533838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b51905060005b88811015611d305760008a8a83818110611c5757611c57615778565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c8d57611c8d615778565b602002602001015163ffffffff161115611d1d5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a4016108c6565b5080611d28816157a4565b915050611c3b565b50505050505050505050565b6060600082516001600160401b03811115611d5957611d59614b6b565b604051908082528060200260200182016040528015611d82578160200160208202803683370190505b50905060005b8351811015611ded57611db485858381518110611da757611da7615778565b6020026020010151613acf565b828281518110611dc657611dc6615778565b63ffffffff9092166020928302919091019091015280611de5816157a4565b915050611d88565b509392505050565b6001805460029081161415611e1c5760405162461bcd60e51b81526004016108c690615741565b6116b93384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611e64612567565b6116b9838383613c0b565b600054610100900460ff1615808015611e8f5750600054600160ff909116105b80611ea95750303b158015611ea9575060005460ff166001145b611f0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108c6565b6000805460ff191660011790558015611f2f576000805461ff0019166101001790555b82518451148015611f41575081518351145b611fab5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60648201526084016108c6565b611fb489612f29565b611fbe8686613e22565b611fc7886126cb565b611fd087612734565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156121215761210f8582815181106120ce576120ce615778565b60200260200101518583815181106120e8576120e8615778565b602002602001015185848151811061210257612102615778565b6020026020010151613c0b565b80612119816157a4565b9150506120b0565b508015612168576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61217b612567565b6001600160a01b0381166121e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b610d4e81612f29565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612260919061581f565b6001600160a01b0316336001600160a01b0316146122905760405162461bcd60e51b81526004016108c69061583c565b60015419811960015419161461230e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c86565b600081815260986020526040812054806123625750600092915050565b600083815260986020526040902061237b600183615a39565b8154811061238b5761238b615778565b600091825260209091200154600160401b90046001600160c01b03169392505050565b60606000806123bc84613f12565b61ffff166001600160401b038111156123d7576123d7614b6b565b6040519080825280601f01601f191660200182016040528015612401576020820181803683370190505b5090506000805b825182108015612419575061010081105b15612470576001811b935085841615612460578060f81b83838151811061244257612442615778565b60200101906001600160f81b031916908160001a9053508160010191505b612469816157a4565b9050612408565b5090949350505050565b60018260200151600281111561249257612492614df5565b1461249c57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124f190889086908890600401615a50565b6020604051808303816000875af1158015612510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125349190615a80565b90506001600160c01b03811615612560576125608561255b836001600160c01b03166123ae565b612ab7565b5050505050565b33612570611867565b6001600160a01b0316146118105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166126545760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016108c6565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f196127aa613f3d565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60408051808201909152600080825260208201526000808061281b600080516020615f8083398151915286615abf565b90505b61282781614064565b9093509150600080516020615f80833981519152828309831415612861576040805180820190915290815260208101919091529392505050565b600080516020615f8083398151915260018208905061281e565b600080612887846140e6565b9050808360ff166001901b116129055760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016108c6565b9392505050565b60965460ff90811690821610610d4e5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016108c6565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b609e546001600160a01b031633146118105760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f7200000000000060648201526084016108c6565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612aeb57612aeb614df5565b14612b6a5760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a4016108c6565b609654600090612b7e90859060ff1661287b565b90506000612b8b83612345565b90506001600160c01b038216612c095760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f742062652030000000000060648201526084016108c6565b612c206001600160c01b0383811690831681161490565b612cb85760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a4016108c6565b6001600160c01b0382811619821616612cd18482614273565b6001600160c01b038116612da05760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612dee908a908a90600401615ad3565b600060405180830381600087803b158015612e0857600080fd5b505af1158015612e1c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612e6e9087908a90600401615af7565b600060405180830381600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612eee9087908a90600401615af7565b600060405180830381600087803b158015612f0857600080fd5b505af1158015612f1c573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300a9190615b10565b905080610f19577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461304b87610fcd565b6040518463ffffffff1660e01b815260040161306993929190615b29565b6020604051808303816000875af1158015613088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129059190615b10565b6020808201516000908152609a909152604090205460ff16156131525760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a4016108c6565b42816040015110156131e75760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a4016108c6565b602080820180516000908152609a909252604091829020805460ff19166001179055609d549051918301516109ad926001600160a01b03909216916132329188918891889190611812565b8351614433565b61325d60405180606001604052806060815260200160608152602001606081525090565b60006132a586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905060006132b288612345565b90506001600160c01b0382166133305760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f7420626520300000000000000060648201526084016108c6565b8082166001600160c01b0316156133e65760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c4016108c6565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b038381169085161791429161341e9190615956565b1061349f5760405162461bcd60e51b815260206004820152604560248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f722063616e6e6f74207265726567697374656064820152641c881e595d60da1b608482015260a4016108c6565b6134a98982614273565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516134d9919061580c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561351357613513614df5565b1461362c576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561356e5761356e614df5565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906135c3908d908990600401615ba8565b600060405180830381600087803b1580156135dd57600080fd5b505af11580156135f1573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061367c908d908c908c90600401615c1c565b600060405180830381600087803b15801561369657600080fd5b505af11580156136aa573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613700908d908d908d908d90600401615c41565b6000604051808303816000875af115801561371f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137479190810190615ccd565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906137a4908c908c908c90600401615d30565b6000604051808303816000875af11580156137c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137eb9190810190615d4a565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716141561387a5760405162461bcd60e51b81526020600482015260356024820152600080516020615f6083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b60648201526084016108c6565b8760ff16846000015160ff16146138f75760405162461bcd60e51b81526020600482015260476024820152600080516020615f6083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a4016108c6565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398c9190615de3565b905061399881856145ed565b6001600160601b0316866001600160601b031611613a2b5760405162461bcd60e51b81526020600482015260566024820152600080516020615f6083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a4016108c6565b613a358885614611565b6001600160601b0316816001600160601b0316106121685760405162461bcd60e51b815260206004820152605c6024820152600080516020615f6083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a4016108c6565b600081815260986020526040812054815b81811015613b61576001613af48284615a39565b613afe9190615a39565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110613b3157613b31615778565b60009182526020909120015463ffffffff1611613b4f575050610f19565b80613b59816157a4565b915050613ae0565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c4016108c6565b60965460ff1660c08110613c7f5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b60648201526084016108c6565b613c8a816001615e00565b6096805460ff191660ff9290921691909117905580613ca9818661298a565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613cfc90849088908890600401615e25565b600060405180830381600087803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613d9257600080fd5b505af1158015613da6573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613e0e57600080fd5b505af1158015612168573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613e4957506001600160a01b03821615155b613ecb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613f0e826125c6565b5050565b6000805b8215610f1957613f27600184615a39565b9092169180613f3581615e9e565b915050613f16565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613f9657507f000000000000000000000000000000000000000000000000000000000000000046145b15613fc057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f808339815191526003600080516020615f8083398151915286600080516020615f808339815191528889090908905060006140da827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f8083398151915261462b565b91959194509092505050565b60006101008251111561416f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016108c6565b815161417d57506000919050565b6000808360008151811061419357614193615778565b0160200151600160f89190911c81901b92505b845181101561426a578481815181106141c1576141c1615778565b0160200151600160f89190911c1b91508282116142565760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016108c6565b91811791614263816157a4565b90506141a6565b50909392505050565b60008281526098602052604090205480614318576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120614331600184615a39565b8154811061434157614341615778565b600091825260209091200180549091504363ffffffff908116911614156143855780546001600160401b0316600160401b6001600160c01b038516021781556109ad565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561454d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144739086908690600401615af7565b602060405180830381865afa158015614490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b49190615ec0565b6001600160e01b031916146116b95760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016108c6565b826001600160a01b031661456183836146da565b6001600160a01b0316146116b95760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016108c6565b6020810151600090612710906146079061ffff1685615eea565b6129059190615f19565b6040810151600090612710906146079061ffff1685615eea565b600080614636614a47565b61463e614a65565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561467f57614681565bfe5b50826146cf5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016108c6565b505195945050505050565b60008060006146e985856146f6565b91509150611ded81614766565b60008082516041141561472d5760208301516040840151606085015160001a61472187828585614921565b9450945050505061475f565b825160401415614757576020830151604084015161474c868383614a0e565b93509350505061475f565b506000905060025b9250929050565b600081600481111561477a5761477a614df5565b14156147835750565b600181600481111561479757614797614df5565b14156147e55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c6565b60028160048111156147f9576147f9614df5565b14156148475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c6565b600381600481111561485b5761485b614df5565b14156148b45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108c6565b60048160048111156148c8576148c8614df5565b1415610d4e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016108c6565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149585750600090506003614a05565b8460ff16601b1415801561497057508460ff16601c14155b156149815750600090506004614a05565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156149d5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149fe57600060019250925050614a05565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a2b60ff86901c601b615956565b9050614a3987828885614921565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f840112614a9557600080fd5b5081356001600160401b03811115614aac57600080fd5b6020830191508360208260051b850101111561475f57600080fd5b60008060208385031215614ada57600080fd5b82356001600160401b03811115614af057600080fd5b614afc85828601614a83565b90969095509350505050565b600060208284031215614b1a57600080fd5b5035919050565b63ffffffff81168114610d4e57600080fd5b600080600060608486031215614b4857600080fd5b833592506020840135614b5a81614b21565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ba357614ba3614b6b565b60405290565b604080519081016001600160401b0381118282101715614ba357614ba3614b6b565b604051601f8201601f191681016001600160401b0381118282101715614bf357614bf3614b6b565b604052919050565b60006001600160401b03831115614c1457614c14614b6b565b614c27601f8401601f1916602001614bcb565b9050828152838383011115614c3b57600080fd5b828260208301376000602084830101529392505050565b600060208284031215614c6457600080fd5b81356001600160401b03811115614c7a57600080fd5b8201601f81018413614c8b57600080fd5b614c9a84823560208401614bfb565b949350505050565b6001600160a01b0381168114610d4e57600080fd5b8035614cc281614ca2565b919050565b600060208284031215614cd957600080fd5b813561290581614ca2565b60008060408385031215614cf757600080fd5b50508035926020909101359150565b803560ff81168114614cc257600080fd5b600060208284031215614d2957600080fd5b61290582614d06565b815181526020808301519082015260408101610f19565b60008083601f840112614d5b57600080fd5b5081356001600160401b03811115614d7257600080fd5b60208301915083602082850101111561475f57600080fd5b60008060008060408587031215614da057600080fd5b84356001600160401b0380821115614db757600080fd5b614dc388838901614a83565b90965094506020870135915080821115614ddc57600080fd5b50614de987828801614d49565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614e2957634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614e4890840182614e0b565b5092915050565b803561ffff81168114614cc257600080fd5b600060608284031215614e7357600080fd5b614e7b614b81565b90508135614e8881614b21565b8152614e9660208301614e4f565b6020820152614ea760408301614e4f565b604082015292915050565b60008060808385031215614ec557600080fd5b614ece83614d06565b9150614edd8460208501614e61565b90509250929050565b600080600060408486031215614efb57600080fd5b8335614f0681614ca2565b925060208401356001600160401b03811115614f2157600080fd5b614f2d86828701614d49565b9497909650939450505050565b60006001600160401b03821115614f5357614f53614b6b565b5060051b60200190565b600060408284031215614f6f57600080fd5b614f77614ba9565b9050614f8282614d06565b81526020820135614f9281614ca2565b602082015292915050565b600080600080600060a08688031215614fb557600080fd5b8535614fc081614ca2565b945060208681013594506040808801356001600160401b03811115614fe457600080fd5b8801601f81018a13614ff557600080fd5b803561500861500382614f3a565b614bcb565b81815260069190911b8201840190848101908c83111561502757600080fd5b928501925b8284101561504d5761503e8d85614f5d565b8252928401929085019061502c565b999c989b5098996060810135995060800135979650505050505050565b6000610100828403121561507d57600080fd5b50919050565b60008083601f84011261509557600080fd5b5081356001600160401b038111156150ac57600080fd5b6020830191508360208260061b850101111561475f57600080fd5b6000606082840312156150d957600080fd5b6150e1614b81565b905081356001600160401b038111156150f957600080fd5b8201601f8101841361510a57600080fd5b61511984823560208401614bfb565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c03121561515557600080fd5b89356001600160401b038082111561516c57600080fd5b6151788d838e01614d49565b909b50995060208c013591508082111561519157600080fd5b61519d8d838e01614d49565b90995097508791506151b28d60408e0161506a565b96506101408c01359150808211156151c957600080fd5b6151d58d838e01615083565b90965094506101608c01359150808211156151ef57600080fd5b6151fb8d838e016150c7565b93506101808c013591508082111561521257600080fd5b5061521f8c828d016150c7565b9150509295985092959850929598565b600080600080600080610160878903121561524957600080fd5b86356001600160401b038082111561526057600080fd5b61526c8a838b01614d49565b9098509650602089013591508082111561528557600080fd5b6152918a838b01614d49565b90965094508491506152a68a60408b0161506a565b93506101408901359150808211156152bd57600080fd5b506152ca89828a016150c7565b9150509295509295509295565b600080604083850312156152ea57600080fd5b82356152f581614b21565b91506020838101356001600160401b0381111561531157600080fd5b8401601f8101861361532257600080fd5b803561533061500382614f3a565b81815260059190911b8201830190838101908883111561534f57600080fd5b928401925b8284101561536d57833582529284019290840190615354565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156153ba57835163ffffffff1683529284019291840191600101615398565b50909695505050505050565b600080602083850312156153d957600080fd5b82356001600160401b038111156153ef57600080fd5b614afc85828601614d49565b6001600160601b0381168114610d4e57600080fd5b600082601f83011261542157600080fd5b8135602061543161500383614f3a565b82815260069290921b8401810191818101908684111561545057600080fd5b8286015b848110156154a1576040818903121561546d5760008081fd5b615475614ba9565b813561548081614ca2565b81528185013561548f816153fb565b81860152835291830191604001615454565b509695505050505050565b600080600060a084860312156154c157600080fd5b6154cb8585614e61565b925060608401356154db816153fb565b915060808401356001600160401b038111156154f657600080fd5b61550286828701615410565b9150509250925092565b600082601f83011261551d57600080fd5b8135602061552d61500383614f3a565b8281526060928302850182019282820191908785111561554c57600080fd5b8387015b8581101561556f576155628982614e61565b8452928401928101615550565b5090979650505050505050565b600082601f83011261558d57600080fd5b8135602061559d61500383614f3a565b82815260059290921b840181019181810190868411156155bc57600080fd5b8286015b848110156154a15780356155d3816153fb565b83529183019183016155c0565b600082601f8301126155f157600080fd5b8135602061560161500383614f3a565b82815260059290921b8401810191818101908684111561562057600080fd5b8286015b848110156154a15780356001600160401b038111156156435760008081fd5b6156518986838b0101615410565b845250918301918301615624565b600080600080600080600080610100898b03121561567c57600080fd5b61568589614cb7565b975061569360208a01614cb7565b96506156a160408a01614cb7565b95506156af60608a01614cb7565b94506080890135935060a08901356001600160401b03808211156156d257600080fd5b6156de8c838d0161550c565b945060c08b01359150808211156156f457600080fd5b6157008c838d0161557c565b935060e08b013591508082111561571657600080fd5b506157238b828c016155e0565b9150509295985092959890939650565b60208101610f198284614e0b565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157b8576157b861578e565b5060010190565b6000815180845260005b818110156157e5576020818501810151868301820152016157c9565b818111156157f7576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061290560208301846157bf565b60006020828403121561583157600080fd5b815161290581614ca2565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561589857600080fd5b8151801515811461290557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e1984360301811261590757600080fd5b8301803591506001600160401b0382111561592157600080fd5b6020019150600581901b360382131561475f57600080fd5b60006020828403121561594b57600080fd5b815161290581614b21565b600082198211156159695761596961578e565b500190565b6000808585111561597e57600080fd5b8386111561598b57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156159fd578651805160ff16845286015185168684015295850195918301916001016159d3565b505060808701989098525050505060a09091019190915250949350505050565b600060408284031215615a2f57600080fd5b6129058383614f5d565b600082821015615a4b57615a4b61578e565b500390565b60018060a01b0384168152826020820152606060408201526000615a7760608301846157bf565b95945050505050565b600060208284031215615a9257600080fd5b81516001600160c01b038116811461290557600080fd5b634e487b7160e01b600052601260045260246000fd5b600082615ace57615ace615aa9565b500690565b6001600160a01b0383168152604060208201819052600090614c9a908301846157bf565b828152604060208201526000614c9a60408301846157bf565b600060208284031215615b2257600080fd5b5051919050565b6001600160a01b03841681526101608101615b51602083018580358252602090810135910152565b615b6b606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615bd260a08401826157bf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201819052600090615a779083018486615bf3565b60018060a01b0385168152836020820152606060408201526000611852606083018486615bf3565b600082601f830112615c7a57600080fd5b81516020615c8a61500383614f3a565b82815260059290921b84018101918181019086841115615ca957600080fd5b8286015b848110156154a1578051615cc0816153fb565b8352918301918301615cad565b60008060408385031215615ce057600080fd5b82516001600160401b0380821115615cf757600080fd5b615d0386838701615c69565b93506020850151915080821115615d1957600080fd5b50615d2685828601615c69565b9150509250929050565b838152604060208201526000615a77604083018486615bf3565b60006020808385031215615d5d57600080fd5b82516001600160401b03811115615d7357600080fd5b8301601f81018513615d8457600080fd5b8051615d9261500382614f3a565b81815260059190911b82018301908381019087831115615db157600080fd5b928401925b82841015615dd8578351615dc981614b21565b82529284019290840190615db6565b979650505050505050565b600060208284031215615df557600080fd5b8151612905816153fb565b600060ff821660ff84168060ff03821115615e1d57615e1d61578e565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615e8e57865180516001600160a01b031684528601518516868401529585019591830191600101615e5e565b50909a9950505050505050505050565b600061ffff80831681811415615eb657615eb661578e565b6001019392505050565b600060208284031215615ed257600080fd5b81516001600160e01b03198116811461290557600080fd5b60006001600160601b0380831681851681830481118215151615615f1057615f1061578e565b02949350505050565b60006001600160601b0380841680615f3357615f33615aa9565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207491ac76a1cd7fce1d2d0cd906754d5efdf6335a0dcbfeda2692424d777b4a4a64736f6c634300080c0033 + ///0x6101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033 /// ``` #[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", + b"a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0a\x878\x03\x80b\0a\x87\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]\xC3b\0\x03\xC4`\09`\0\x81\x81a\x067\x01R\x81\x81a\x11\x13\x01R\x81\x81a \x1B\x01R\x81\x81a-M\x01R\x81\x81a5Z\x01Ra;2\x01R`\0\x81\x81a\x05|\x01R\x81\x81a\x1F\xA6\x01R\x81\x81a$N\x01R\x81\x81a,\xCD\x01R\x81\x81a4\xB1\x01R\x81\x81a7\x07\x01Ra:\xB1\x01R`\0\x81\x81a\x05B\x01R\x81\x81a\x0E\xAE\x01R\x81\x81a\x1F\xE4\x01R\x81\x81a,O\x01R\x81\x81a.5\x01R\x81\x81a.\xAB\x01R\x81\x81a41\x01Ra;\xAE\x01R`\0\x81\x81a\x04\x86\x01R\x81\x81a+\xA5\x01Ra3y\x01R`\0a=\xB5\x01R`\0a>\x04\x01R`\0a=\xDF\x01R`\0a=8\x01R`\0a=b\x01R`\0a=\x8C\x01Ra]\xC3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106102d55760003560e01c80635df45946116101825780639feab859116100e9578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610798578063f2fde38b1461083b578063fabc1cbc1461084e578063fd39105a1461086157600080fd5b8063d72d8dd61461076a578063d75b4c8814610772578063dd8283f31461078557600080fd5b80639feab859146106cd578063a50857bf146106f4578063a96f783e14610707578063c391425e14610710578063ca0de88214610730578063ca4f2d971461075757600080fd5b8063871ef0491161013b578063871ef04914610640578063886f1195146106535780638da5cb5b1461066c5780639aa1653d146106745780639b5d177b146106935780639e9923c2146106a657600080fd5b80635df45946146105b15780636347c900146105d857806368304835146105eb5780636e3b17db14610612578063715018a61461062557806384ca52131461062d57600080fd5b8063249a0c42116102415780633c2a7f4c116101fa578063595c6a67116101d4578063595c6a671461056f5780635ac86ab7146105775780635b0b829f146105965780635c975abb146105a957600080fd5b80633c2a7f4c1461051c5780635140a5481461053c5780635865c60c1461054f57600080fd5b8063249a0c421461048957806328f61b31146104a9578063296bb064146104bc57806329d1e0c3146104cf5780632cdd1e86146104e25780633998fdd3146104f557600080fd5b806310d67a2f1161029357806310d67a2f1461039e578063125e0584146103b157806313542a4e146103d1578063136439dd146103fa5780631478851f1461040d5780631eb812da1461044057600080fd5b8062cf2ab5146102da57806303fd3492146102ef57806304ec635114610322578063054310e61461034d5780630cf4b767146103785780630d3f21341461038b575b600080fd5b6102ed6102e8366004614ac7565b61089d565b005b61030f6102fd366004614b08565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b610335610330366004614b33565b6109b3565b6040516001600160c01b039091168152602001610319565b609d54610360906001600160a01b031681565b6040516001600160a01b039091168152602001610319565b6102ed610386366004614c52565b610ba9565b6102ed610399366004614b08565b610c91565b6102ed6103ac366004614cc7565b610c9e565b61030f6103bf366004614cc7565b609f6020526000908152604090205481565b61030f6103df366004614cc7565b6001600160a01b031660009081526099602052604090205490565b6102ed610408366004614b08565b610d51565b61043061041b366004614b08565b609a6020526000908152604090205460ff1681565b6040519015158152602001610319565b61045361044e366004614ce4565b610e8e565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610319565b61030f610497366004614d17565b609b6020526000908152604090205481565b609e54610360906001600160a01b031681565b6103606104ca366004614b08565b610f1f565b6102ed6104dd366004614cc7565b610fab565b6102ed6104f0366004614cc7565b610fbc565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61052f61052a366004614cc7565b610fcd565b6040516103199190614d32565b6102ed61054a366004614d8a565b61104c565b61056261055d366004614cc7565b61155d565b6040516103199190614e2d565b6102ed6115d1565b610430610585366004614d17565b6001805460ff9092161b9081161490565b6102ed6105a4366004614eb2565b61169d565b60015461030f565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6103606105e6366004614b08565b6116be565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6102ed610620366004614ee6565b6116e8565b6102ed6117fe565b61030f61063b366004614f9d565b611812565b61033561064e366004614b08565b61185c565b600054610360906201000090046001600160a01b031681565b610360611867565b6096546106819060ff1681565b60405160ff9091168152602001610319565b6102ed6106a1366004615136565b611880565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61030f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ed61070236600461522f565b611bb8565b61030f60a05481565b61072361071e3660046152d7565b611d3c565b604051610319919061537c565b61030f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ed6107653660046153c6565b611df5565b609c5461030f565b6102ed6107803660046154ac565b611e5c565b6102ed61079336600461565f565b611e6f565b6108076107a6366004614d17565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610319565b6102ed610849366004614cc7565b612173565b6102ed61085c366004614b08565b6121e9565b61089061086f366004614cc7565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103199190615733565b600154600290600490811614156108cf5760405162461bcd60e51b81526004016108c690615741565b60405180910390fd5b60005b828110156109ad5760008484838181106108ee576108ee615778565b90506020020160208101906109039190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561094e5761094e614df5565b600281111561095f5761095f614df5565b9052508051909150600061097282612345565b90506000610988826001600160c01b03166123ae565b905061099585858361247a565b505050505080806109a5906157a4565b9150506108d2565b50505050565b60008381526098602052604081208054829190849081106109d6576109d6615778565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610ad05760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4016108c6565b602081015163ffffffff161580610af65750806020015163ffffffff168463ffffffff16105b610b9d5760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c4016108c6565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610bd257610bd2614df5565b14610c455760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f7420726567697374657265640000000060648201526084016108c6565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c8690849061580c565b60405180910390a250565b610c99612567565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d15919061581f565b6001600160a01b0316336001600160a01b031614610d455760405162461bcd60e51b81526004016108c69061583c565b610d4e816125c6565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190615886565b610dde5760405162461bcd60e51b81526004016108c6906158a8565b60015481811614610e575760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c86565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ecb57610ecb615778565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061581f565b610fb3612567565b610d4e816126cb565b610fc4612567565b610d4e81612734565b6040805180820190915260008082526020820152610f196110477f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68460405160200161102c9291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061279d565b6127eb565b600154600290600490811614156110755760405162461bcd60e51b81526004016108c690615741565b60006110bd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905084831461112e5760405162461bcd60e51b81526020600482015260436024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a4016108c6565b60005b8381101561155457600085858381811061114d5761114d615778565b919091013560f81c9150369050600089898581811061116e5761116e615778565b905060200281019061118091906158f0565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190615939565b63ffffffff1681146112ac5760405162461bcd60e51b81526020600482015260656024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c4016108c6565b6000805b828110156114f35760008484838181106112cc576112cc615778565b90506020020160208101906112e19190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561132c5761132c614df5565b600281111561133d5761133d614df5565b9052508051909150600061135082612345565b905060016001600160c01b03821660ff8b161c8116146113d45760405162461bcd60e51b815260206004820152604460248201819052600080516020615f40833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a4016108c6565b856001600160a01b0316846001600160a01b03161161147f5760405162461bcd60e51b81526020600482015260676024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c4016108c6565b506114dd83838f8f8d908e60016114969190615956565b926114a39392919061596e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247a92505050565b509092506114ec9050816157a4565b90506112b0565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061154d906157a4565b9050611131565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115b7576115b7614df5565b60028111156115c8576115c8614df5565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116429190615886565b61165e5760405162461bcd60e51b81526004016108c6906158a8565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a5612567565b816116af8161290c565b6116b9838361298a565b505050565b609c81815481106116ce57600080fd5b6000918252602090912001546001600160a01b0316905081565b6116f0612a37565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161175d9187908790819084018382808284376000920191909152505060965460ff16915061287b9050565b9050600061176a83612345565b905060018085015460ff16600281111561178657611786614df5565b14801561179b57506001600160c01b03821615155b80156117b957506117b96001600160c01b0383811690831681161490565b15611554576115548787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611806612567565b6118106000612f29565b565b60006118527f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a878787878760405160200161102c96959493929190615998565b9695505050505050565b6000610f1982612345565b600061187b6064546001600160a01b031690565b905090565b6001805460009190811614156118a85760405162461bcd60e51b81526004016108c690615741565b83891461192b5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016108c6565b60006119373388612f7b565b905061199733828888808060200260200160405190810160405280939291908181526020016000905b8282101561198c5761197d60408302860136819003810190615a1d565b81526020019060010190611960565b5050505050876130ac565b60006119de33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b905060005b8b811015611ba9576000609760008f8f85818110611a0357611a03615778565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a7057611a70615778565b602002602001015163ffffffff161115611b9657611b118e8e84818110611a9957611a99615778565b9050013560f81c60f81b60f81c84604001518481518110611abc57611abc615778565b60200260200101513386602001518681518110611adb57611adb615778565b60200260200101518d8d88818110611af557611af5615778565b905060400201803603810190611b0b9190615a1d565b866137fa565b611b96898984818110611b2657611b26615778565b9050604002016020016020810190611b3e9190614cc7565b8f8f8590866001611b4f9190615956565b92611b5c9392919061596e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b5080611ba1816157a4565b9150506119e3565b50505050505050505050505050565b600180546000919081161415611be05760405162461bcd60e51b81526004016108c690615741565b6000611bec3385612f7b565b90506000611c3533838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b51905060005b88811015611d305760008a8a83818110611c5757611c57615778565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c8d57611c8d615778565b602002602001015163ffffffff161115611d1d5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a4016108c6565b5080611d28816157a4565b915050611c3b565b50505050505050505050565b6060600082516001600160401b03811115611d5957611d59614b6b565b604051908082528060200260200182016040528015611d82578160200160208202803683370190505b50905060005b8351811015611ded57611db485858381518110611da757611da7615778565b6020026020010151613acf565b828281518110611dc657611dc6615778565b63ffffffff9092166020928302919091019091015280611de5816157a4565b915050611d88565b509392505050565b6001805460029081161415611e1c5760405162461bcd60e51b81526004016108c690615741565b6116b93384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611e64612567565b6116b9838383613c0b565b600054610100900460ff1615808015611e8f5750600054600160ff909116105b80611ea95750303b158015611ea9575060005460ff166001145b611f0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108c6565b6000805460ff191660011790558015611f2f576000805461ff0019166101001790555b82518451148015611f41575081518351145b611fab5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60648201526084016108c6565b611fb489612f29565b611fbe8686613e22565b611fc7886126cb565b611fd087612734565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156121215761210f8582815181106120ce576120ce615778565b60200260200101518583815181106120e8576120e8615778565b602002602001015185848151811061210257612102615778565b6020026020010151613c0b565b80612119816157a4565b9150506120b0565b508015612168576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61217b612567565b6001600160a01b0381166121e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b610d4e81612f29565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612260919061581f565b6001600160a01b0316336001600160a01b0316146122905760405162461bcd60e51b81526004016108c69061583c565b60015419811960015419161461230e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c86565b600081815260986020526040812054806123625750600092915050565b600083815260986020526040902061237b600183615a39565b8154811061238b5761238b615778565b600091825260209091200154600160401b90046001600160c01b03169392505050565b60606000806123bc84613f12565b61ffff166001600160401b038111156123d7576123d7614b6b565b6040519080825280601f01601f191660200182016040528015612401576020820181803683370190505b5090506000805b825182108015612419575061010081105b15612470576001811b935085841615612460578060f81b83838151811061244257612442615778565b60200101906001600160f81b031916908160001a9053508160010191505b612469816157a4565b9050612408565b5090949350505050565b60018260200151600281111561249257612492614df5565b1461249c57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124f190889086908890600401615a50565b6020604051808303816000875af1158015612510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125349190615a80565b90506001600160c01b03811615612560576125608561255b836001600160c01b03166123ae565b612ab7565b5050505050565b33612570611867565b6001600160a01b0316146118105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166126545760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016108c6565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f196127aa613f3d565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60408051808201909152600080825260208201526000808061281b600080516020615f8083398151915286615abf565b90505b61282781614064565b9093509150600080516020615f80833981519152828309831415612861576040805180820190915290815260208101919091529392505050565b600080516020615f8083398151915260018208905061281e565b600080612887846140e6565b9050808360ff166001901b116129055760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016108c6565b9392505050565b60965460ff90811690821610610d4e5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016108c6565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b609e546001600160a01b031633146118105760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f7200000000000060648201526084016108c6565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612aeb57612aeb614df5565b14612b6a5760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a4016108c6565b609654600090612b7e90859060ff1661287b565b90506000612b8b83612345565b90506001600160c01b038216612c095760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f742062652030000000000060648201526084016108c6565b612c206001600160c01b0383811690831681161490565b612cb85760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a4016108c6565b6001600160c01b0382811619821616612cd18482614273565b6001600160c01b038116612da05760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612dee908a908a90600401615ad3565b600060405180830381600087803b158015612e0857600080fd5b505af1158015612e1c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612e6e9087908a90600401615af7565b600060405180830381600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612eee9087908a90600401615af7565b600060405180830381600087803b158015612f0857600080fd5b505af1158015612f1c573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300a9190615b10565b905080610f19577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461304b87610fcd565b6040518463ffffffff1660e01b815260040161306993929190615b29565b6020604051808303816000875af1158015613088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129059190615b10565b6020808201516000908152609a909152604090205460ff16156131525760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a4016108c6565b42816040015110156131e75760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a4016108c6565b602080820180516000908152609a909252604091829020805460ff19166001179055609d549051918301516109ad926001600160a01b03909216916132329188918891889190611812565b8351614433565b61325d60405180606001604052806060815260200160608152602001606081525090565b60006132a586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905060006132b288612345565b90506001600160c01b0382166133305760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f7420626520300000000000000060648201526084016108c6565b8082166001600160c01b0316156133e65760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c4016108c6565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b038381169085161791429161341e9190615956565b1061349f5760405162461bcd60e51b815260206004820152604560248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f722063616e6e6f74207265726567697374656064820152641c881e595d60da1b608482015260a4016108c6565b6134a98982614273565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516134d9919061580c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561351357613513614df5565b1461362c576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561356e5761356e614df5565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906135c3908d908990600401615ba8565b600060405180830381600087803b1580156135dd57600080fd5b505af11580156135f1573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061367c908d908c908c90600401615c1c565b600060405180830381600087803b15801561369657600080fd5b505af11580156136aa573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613700908d908d908d908d90600401615c41565b6000604051808303816000875af115801561371f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137479190810190615ccd565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906137a4908c908c908c90600401615d30565b6000604051808303816000875af11580156137c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137eb9190810190615d4a565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716141561387a5760405162461bcd60e51b81526020600482015260356024820152600080516020615f6083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b60648201526084016108c6565b8760ff16846000015160ff16146138f75760405162461bcd60e51b81526020600482015260476024820152600080516020615f6083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a4016108c6565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398c9190615de3565b905061399881856145ed565b6001600160601b0316866001600160601b031611613a2b5760405162461bcd60e51b81526020600482015260566024820152600080516020615f6083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a4016108c6565b613a358885614611565b6001600160601b0316816001600160601b0316106121685760405162461bcd60e51b815260206004820152605c6024820152600080516020615f6083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a4016108c6565b600081815260986020526040812054815b81811015613b61576001613af48284615a39565b613afe9190615a39565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110613b3157613b31615778565b60009182526020909120015463ffffffff1611613b4f575050610f19565b80613b59816157a4565b915050613ae0565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c4016108c6565b60965460ff1660c08110613c7f5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b60648201526084016108c6565b613c8a816001615e00565b6096805460ff191660ff9290921691909117905580613ca9818661298a565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613cfc90849088908890600401615e25565b600060405180830381600087803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613d9257600080fd5b505af1158015613da6573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613e0e57600080fd5b505af1158015612168573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613e4957506001600160a01b03821615155b613ecb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613f0e826125c6565b5050565b6000805b8215610f1957613f27600184615a39565b9092169180613f3581615e9e565b915050613f16565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613f9657507f000000000000000000000000000000000000000000000000000000000000000046145b15613fc057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f808339815191526003600080516020615f8083398151915286600080516020615f808339815191528889090908905060006140da827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f8083398151915261462b565b91959194509092505050565b60006101008251111561416f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016108c6565b815161417d57506000919050565b6000808360008151811061419357614193615778565b0160200151600160f89190911c81901b92505b845181101561426a578481815181106141c1576141c1615778565b0160200151600160f89190911c1b91508282116142565760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016108c6565b91811791614263816157a4565b90506141a6565b50909392505050565b60008281526098602052604090205480614318576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120614331600184615a39565b8154811061434157614341615778565b600091825260209091200180549091504363ffffffff908116911614156143855780546001600160401b0316600160401b6001600160c01b038516021781556109ad565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561454d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144739086908690600401615af7565b602060405180830381865afa158015614490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b49190615ec0565b6001600160e01b031916146116b95760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016108c6565b826001600160a01b031661456183836146da565b6001600160a01b0316146116b95760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016108c6565b6020810151600090612710906146079061ffff1685615eea565b6129059190615f19565b6040810151600090612710906146079061ffff1685615eea565b600080614636614a47565b61463e614a65565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561467f57614681565bfe5b50826146cf5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016108c6565b505195945050505050565b60008060006146e985856146f6565b91509150611ded81614766565b60008082516041141561472d5760208301516040840151606085015160001a61472187828585614921565b9450945050505061475f565b825160401415614757576020830151604084015161474c868383614a0e565b93509350505061475f565b506000905060025b9250929050565b600081600481111561477a5761477a614df5565b14156147835750565b600181600481111561479757614797614df5565b14156147e55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c6565b60028160048111156147f9576147f9614df5565b14156148475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c6565b600381600481111561485b5761485b614df5565b14156148b45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108c6565b60048160048111156148c8576148c8614df5565b1415610d4e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016108c6565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149585750600090506003614a05565b8460ff16601b1415801561497057508460ff16601c14155b156149815750600090506004614a05565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156149d5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149fe57600060019250925050614a05565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a2b60ff86901c601b615956565b9050614a3987828885614921565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f840112614a9557600080fd5b5081356001600160401b03811115614aac57600080fd5b6020830191508360208260051b850101111561475f57600080fd5b60008060208385031215614ada57600080fd5b82356001600160401b03811115614af057600080fd5b614afc85828601614a83565b90969095509350505050565b600060208284031215614b1a57600080fd5b5035919050565b63ffffffff81168114610d4e57600080fd5b600080600060608486031215614b4857600080fd5b833592506020840135614b5a81614b21565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ba357614ba3614b6b565b60405290565b604080519081016001600160401b0381118282101715614ba357614ba3614b6b565b604051601f8201601f191681016001600160401b0381118282101715614bf357614bf3614b6b565b604052919050565b60006001600160401b03831115614c1457614c14614b6b565b614c27601f8401601f1916602001614bcb565b9050828152838383011115614c3b57600080fd5b828260208301376000602084830101529392505050565b600060208284031215614c6457600080fd5b81356001600160401b03811115614c7a57600080fd5b8201601f81018413614c8b57600080fd5b614c9a84823560208401614bfb565b949350505050565b6001600160a01b0381168114610d4e57600080fd5b8035614cc281614ca2565b919050565b600060208284031215614cd957600080fd5b813561290581614ca2565b60008060408385031215614cf757600080fd5b50508035926020909101359150565b803560ff81168114614cc257600080fd5b600060208284031215614d2957600080fd5b61290582614d06565b815181526020808301519082015260408101610f19565b60008083601f840112614d5b57600080fd5b5081356001600160401b03811115614d7257600080fd5b60208301915083602082850101111561475f57600080fd5b60008060008060408587031215614da057600080fd5b84356001600160401b0380821115614db757600080fd5b614dc388838901614a83565b90965094506020870135915080821115614ddc57600080fd5b50614de987828801614d49565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614e2957634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614e4890840182614e0b565b5092915050565b803561ffff81168114614cc257600080fd5b600060608284031215614e7357600080fd5b614e7b614b81565b90508135614e8881614b21565b8152614e9660208301614e4f565b6020820152614ea760408301614e4f565b604082015292915050565b60008060808385031215614ec557600080fd5b614ece83614d06565b9150614edd8460208501614e61565b90509250929050565b600080600060408486031215614efb57600080fd5b8335614f0681614ca2565b925060208401356001600160401b03811115614f2157600080fd5b614f2d86828701614d49565b9497909650939450505050565b60006001600160401b03821115614f5357614f53614b6b565b5060051b60200190565b600060408284031215614f6f57600080fd5b614f77614ba9565b9050614f8282614d06565b81526020820135614f9281614ca2565b602082015292915050565b600080600080600060a08688031215614fb557600080fd5b8535614fc081614ca2565b945060208681013594506040808801356001600160401b03811115614fe457600080fd5b8801601f81018a13614ff557600080fd5b803561500861500382614f3a565b614bcb565b81815260069190911b8201840190848101908c83111561502757600080fd5b928501925b8284101561504d5761503e8d85614f5d565b8252928401929085019061502c565b999c989b5098996060810135995060800135979650505050505050565b6000610100828403121561507d57600080fd5b50919050565b60008083601f84011261509557600080fd5b5081356001600160401b038111156150ac57600080fd5b6020830191508360208260061b850101111561475f57600080fd5b6000606082840312156150d957600080fd5b6150e1614b81565b905081356001600160401b038111156150f957600080fd5b8201601f8101841361510a57600080fd5b61511984823560208401614bfb565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c03121561515557600080fd5b89356001600160401b038082111561516c57600080fd5b6151788d838e01614d49565b909b50995060208c013591508082111561519157600080fd5b61519d8d838e01614d49565b90995097508791506151b28d60408e0161506a565b96506101408c01359150808211156151c957600080fd5b6151d58d838e01615083565b90965094506101608c01359150808211156151ef57600080fd5b6151fb8d838e016150c7565b93506101808c013591508082111561521257600080fd5b5061521f8c828d016150c7565b9150509295985092959850929598565b600080600080600080610160878903121561524957600080fd5b86356001600160401b038082111561526057600080fd5b61526c8a838b01614d49565b9098509650602089013591508082111561528557600080fd5b6152918a838b01614d49565b90965094508491506152a68a60408b0161506a565b93506101408901359150808211156152bd57600080fd5b506152ca89828a016150c7565b9150509295509295509295565b600080604083850312156152ea57600080fd5b82356152f581614b21565b91506020838101356001600160401b0381111561531157600080fd5b8401601f8101861361532257600080fd5b803561533061500382614f3a565b81815260059190911b8201830190838101908883111561534f57600080fd5b928401925b8284101561536d57833582529284019290840190615354565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156153ba57835163ffffffff1683529284019291840191600101615398565b50909695505050505050565b600080602083850312156153d957600080fd5b82356001600160401b038111156153ef57600080fd5b614afc85828601614d49565b6001600160601b0381168114610d4e57600080fd5b600082601f83011261542157600080fd5b8135602061543161500383614f3a565b82815260069290921b8401810191818101908684111561545057600080fd5b8286015b848110156154a1576040818903121561546d5760008081fd5b615475614ba9565b813561548081614ca2565b81528185013561548f816153fb565b81860152835291830191604001615454565b509695505050505050565b600080600060a084860312156154c157600080fd5b6154cb8585614e61565b925060608401356154db816153fb565b915060808401356001600160401b038111156154f657600080fd5b61550286828701615410565b9150509250925092565b600082601f83011261551d57600080fd5b8135602061552d61500383614f3a565b8281526060928302850182019282820191908785111561554c57600080fd5b8387015b8581101561556f576155628982614e61565b8452928401928101615550565b5090979650505050505050565b600082601f83011261558d57600080fd5b8135602061559d61500383614f3a565b82815260059290921b840181019181810190868411156155bc57600080fd5b8286015b848110156154a15780356155d3816153fb565b83529183019183016155c0565b600082601f8301126155f157600080fd5b8135602061560161500383614f3a565b82815260059290921b8401810191818101908684111561562057600080fd5b8286015b848110156154a15780356001600160401b038111156156435760008081fd5b6156518986838b0101615410565b845250918301918301615624565b600080600080600080600080610100898b03121561567c57600080fd5b61568589614cb7565b975061569360208a01614cb7565b96506156a160408a01614cb7565b95506156af60608a01614cb7565b94506080890135935060a08901356001600160401b03808211156156d257600080fd5b6156de8c838d0161550c565b945060c08b01359150808211156156f457600080fd5b6157008c838d0161557c565b935060e08b013591508082111561571657600080fd5b506157238b828c016155e0565b9150509295985092959890939650565b60208101610f198284614e0b565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157b8576157b861578e565b5060010190565b6000815180845260005b818110156157e5576020818501810151868301820152016157c9565b818111156157f7576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061290560208301846157bf565b60006020828403121561583157600080fd5b815161290581614ca2565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561589857600080fd5b8151801515811461290557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e1984360301811261590757600080fd5b8301803591506001600160401b0382111561592157600080fd5b6020019150600581901b360382131561475f57600080fd5b60006020828403121561594b57600080fd5b815161290581614b21565b600082198211156159695761596961578e565b500190565b6000808585111561597e57600080fd5b8386111561598b57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156159fd578651805160ff16845286015185168684015295850195918301916001016159d3565b505060808701989098525050505060a09091019190915250949350505050565b600060408284031215615a2f57600080fd5b6129058383614f5d565b600082821015615a4b57615a4b61578e565b500390565b60018060a01b0384168152826020820152606060408201526000615a7760608301846157bf565b95945050505050565b600060208284031215615a9257600080fd5b81516001600160c01b038116811461290557600080fd5b634e487b7160e01b600052601260045260246000fd5b600082615ace57615ace615aa9565b500690565b6001600160a01b0383168152604060208201819052600090614c9a908301846157bf565b828152604060208201526000614c9a60408301846157bf565b600060208284031215615b2257600080fd5b5051919050565b6001600160a01b03841681526101608101615b51602083018580358252602090810135910152565b615b6b606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615bd260a08401826157bf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201819052600090615a779083018486615bf3565b60018060a01b0385168152836020820152606060408201526000611852606083018486615bf3565b600082601f830112615c7a57600080fd5b81516020615c8a61500383614f3a565b82815260059290921b84018101918181019086841115615ca957600080fd5b8286015b848110156154a1578051615cc0816153fb565b8352918301918301615cad565b60008060408385031215615ce057600080fd5b82516001600160401b0380821115615cf757600080fd5b615d0386838701615c69565b93506020850151915080821115615d1957600080fd5b50615d2685828601615c69565b9150509250929050565b838152604060208201526000615a77604083018486615bf3565b60006020808385031215615d5d57600080fd5b82516001600160401b03811115615d7357600080fd5b8301601f81018513615d8457600080fd5b8051615d9261500382614f3a565b81815260059190911b82018301908381019087831115615db157600080fd5b928401925b82841015615dd8578351615dc981614b21565b82529284019290840190615db6565b979650505050505050565b600060208284031215615df557600080fd5b8151612905816153fb565b600060ff821660ff84168060ff03821115615e1d57615e1d61578e565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615e8e57865180516001600160a01b031684528601518516868401529585019591830191600101615e5e565b50909a9950505050505050505050565b600061ffff80831681811415615eb657615eb661578e565b6001019392505050565b600060208284031215615ed257600080fd5b81516001600160e01b03198116811461290557600080fd5b60006001600160601b0380831681851681830481118215151615615f1057615f1061578e565b02949350505050565b60006001600160601b0380841680615f3357615f33615aa9565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207491ac76a1cd7fce1d2d0cd906754d5efdf6335a0dcbfeda2692424d777b4a4a64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207e2d8d09f208d886d78ee60f63e1aabc439497a33ec7d001f2d5582361673a8264736f6c634300080c0033 /// ``` #[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", + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x94W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01gW\x80c\x9F\xEA\xB8Y\x11a\0\xCEW\x80c\xD7[L\x88\x11a\0\x87W\x80c\xD7[L\x88\x14a\x06\xF5W\x80c\xDD\x82\x83\xF3\x14a\x07\x08W\x80c\xE6W\x97\xAD\x14a\x07\x1BW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xBEW\x80c\xFA\xBC\x1C\xBC\x14a\x07\xD1W\x80c\xFD9\x10Z\x14a\x07\xE4W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06YW\x80c\xA5\x08W\xBF\x14a\x06\x80W\x80c\xC3\x91B^\x14a\x06\x93W\x80c\xCA\r\xE8\x82\x14a\x06\xB3W\x80c\xCAO-\x97\x14a\x06\xDAW\x80c\xD7-\x8D\xD6\x14a\x06\xEDW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01 W\x80c\x87\x1E\xF0I\x14a\x05\xCCW\x80c\x88o\x11\x95\x14a\x05\xDFW\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x9A\xA1e=\x14a\x06\0W\x80c\x9B]\x17{\x14a\x06\x1FW\x80c\x9E\x99#\xC2\x14a\x062W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05=W\x80ccG\xC9\0\x14a\x05dW\x80ch0H5\x14a\x05wW\x80cn;\x17\xDB\x14a\x05\x9EW\x80cqP\x18\xA6\x14a\x05\xB1W\x80c\x84\xCAR\x13\x14a\x05\xB9W`\0\x80\xFD[\x80c(\xF6\x1B1\x11a\x02\x0BW\x80cQ@\xA5H\x11a\x01\xC4W\x80cQ@\xA5H\x14a\x04\xC8W\x80cXe\xC6\x0C\x14a\x04\xDBW\x80cY\\jg\x14a\x04\xFBW\x80cZ\xC8j\xB7\x14a\x05\x03W\x80c[\x0B\x82\x9F\x14a\x05\"W\x80c\\\x97Z\xBB\x14a\x055W`\0\x80\xFD[\x80c(\xF6\x1B1\x14a\x045W\x80c)k\xB0d\x14a\x04HW\x80c)\xD1\xE0\xC3\x14a\x04[W\x80c,\xDD\x1E\x86\x14a\x04nW\x80c9\x98\xFD\xD3\x14a\x04\x81W\x80c<*\x7FL\x14a\x04\xA8W`\0\x80\xFD[\x80c\x10\xD6z/\x11a\x02]W\x80c\x10\xD6z/\x14a\x03JW\x80c\x13T*N\x14a\x03]W\x80c\x13d9\xDD\x14a\x03\x86W\x80c\x14x\x85\x1F\x14a\x03\x99W\x80c\x1E\xB8\x12\xDA\x14a\x03\xCCW\x80c$\x9A\x0CB\x14a\x04\x15W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x02\x99W\x80c\x03\xFD4\x92\x14a\x02\xAEW\x80c\x04\xECcQ\x14a\x02\xE1W\x80c\x05C\x10\xE6\x14a\x03\x0CW\x80c\x0C\xF4\xB7g\x14a\x037W[`\0\x80\xFD[a\x02\xACa\x02\xA76`\x04aH\xB5V[a\x08 V[\0[a\x02\xCEa\x02\xBC6`\x04aH\xF6V[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\xF4a\x02\xEF6`\x04aI!V[a\t6V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[`\x9DTa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x03E6`\x04aJ@V[a\x0B,V[a\x02\xACa\x03X6`\x04aJ\xB5V[a\x0C\x14V[a\x02\xCEa\x03k6`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x02\xACa\x03\x946`\x04aH\xF6V[a\x0C\xC7V[a\x03\xBCa\x03\xA76`\x04aH\xF6V[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\xD8V[a\x03\xDFa\x03\xDA6`\x04aJ\xD2V[a\x0E\x04V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xCEa\x04#6`\x04aK\x05V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[`\x9ETa\x03\x1F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x04V6`\x04aH\xF6V[a\x0E\x95V[a\x02\xACa\x04i6`\x04aJ\xB5V[a\x0F!V[a\x02\xACa\x04|6`\x04aJ\xB5V[a\x0F2V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x04\xBBa\x04\xB66`\x04aJ\xB5V[a\x0FCV[`@Qa\x02\xD8\x91\x90aK V[a\x02\xACa\x04\xD66`\x04aKxV[a\x0F\xC2V[a\x04\xEEa\x04\xE96`\x04aJ\xB5V[a\x14\xD3V[`@Qa\x02\xD8\x91\x90aL\x1BV[a\x02\xACa\x15GV[a\x03\xBCa\x05\x116`\x04aK\x05V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x02\xACa\x0506`\x04aL\xA0V[a\x16\x13V[`\x01Ta\x02\xCEV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x03\x1Fa\x05r6`\x04aH\xF6V[a\x16\xAAV[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xACa\x05\xAC6`\x04aL\xD4V[a\x16\xD4V[a\x02\xACa\x17\x94V[a\x02\xCEa\x05\xC76`\x04aM\x8BV[a\x17\xA8V[a\x02\xF4a\x05\xDA6`\x04aH\xF6V[a\x17\xF2V[`\0Ta\x03\x1F\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\x1Fa\x17\xFDV[`\x96Ta\x06\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\xD8V[a\x02\xACa\x06-6`\x04aO$V[a\x18\x16V[a\x03\x1F\x7F\0\0\0\0\0\0\0\0\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\x02\xCE\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xACa\x06\x8E6`\x04aP\x1DV[a\x1BNV[a\x06\xA6a\x06\xA16`\x04aP\xC5V[a\x1C\xD2V[`@Qa\x02\xD8\x91\x90aQjV[a\x02\xCE\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x02\xACa\x06\xE86`\x04aQ\xB4V[a\x1D\x8BV[`\x9CTa\x02\xCEV[a\x02\xACa\x07\x036`\x04aR\x9AV[a\x1D\xF2V[a\x02\xACa\x07\x166`\x04aTMV[a\x1E\x05V[a\x07\x8Aa\x07)6`\x04aK\x05V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02\xD8V[a\x02\xACa\x07\xCC6`\x04aJ\xB5V[a!\tV[a\x02\xACa\x07\xDF6`\x04aH\xF6V[a!\x7FV[a\x08\x13a\x07\xF26`\x04aJ\xB5V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x02\xD8\x91\x90aU!V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x08RW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\t0W`\0\x84\x84\x83\x81\x81\x10a\x08qWa\x08qaUfV[\x90P` \x02\x01` \x81\x01\x90a\x08\x86\x91\x90aJ\xB5V[`\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\x08\xD1Wa\x08\xD1aK\xE3V[`\x02\x81\x11\x15a\x08\xE2Wa\x08\xE2aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x08\xF5\x82a\"\xDBV[\x90P`\0a\t\x0B\x82`\x01`\x01`\xC0\x1B\x03\x16a#DV[\x90Pa\t\x18\x85\x85\x83a$\x10V[PPPPP\x80\x80a\t(\x90aU\x92V[\x91PPa\x08UV[PPPPV[`\0\x83\x81R`\x98` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\tYWa\tYaUfV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x85R`\x01` \x1B\x83\x04\x82\x16\x95\x85\x01\x95\x90\x95R`\x01`@\x1B\x90\x91\x04`\x01`\x01`\xC0\x1B\x03\x16\x91\x83\x01\x91\x90\x91R\x90\x92P\x85\x16\x10\x15a\nSW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from after blockN`\x84\x82\x01Rd:\xB6\xB12\xB9`\xD9\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[` \x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\nyWP\x80` \x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x0B W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapAtBlockNumberByIndex: quorumB`d\x82\x01R\x7FitmapUpdate is from before block`\x84\x82\x01Re':\xB6\xB12\xB9`\xD1\x1B`\xA4\x82\x01R`\xC4\x01a\x08IV[`@\x01Q\x94\x93PPPPV[`\x013`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x0BUWa\x0BUaK\xE3V[\x14a\x0B\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FRegistryCoordinator.updateSocket`D\x82\x01R\x7F: operator is not registered\0\0\0\0`d\x82\x01R`\x84\x01a\x08IV[3`\0\x90\x81R`\x99` R`@\x90\x81\x90 T\x90Q\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x90a\x0C\t\x90\x84\x90aU\xFAV[`@Q\x80\x91\x03\x90\xA2PV[`\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\x0CgW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x8B\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[a\x0C\xC4\x81a$\xFDV[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\r\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r8\x91\x90aVtV[a\rTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\x01T\x81\x81\x16\x14a\r\xCDW`@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\x08IV[`\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\tV[`@\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\x0EAWa\x0EAaUfV[`\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\x0E\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x8F\x91\x90aV\rV[a\x0F)a&\x02V[a\x0C\xC4\x81a&aV[a\x0F:a&\x02V[a\x0C\xC4\x81a&\xCAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0E\x8Fa\x0F\xBD\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\x0F\xA2\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'3V[a'\x81V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x0F\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x103\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(\x11\x90PV[\x90P\x84\x83\x14a\x10\xA4W`@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\x08IV[`\0[\x83\x81\x10\x15a\x14\xCAW`\0\x85\x85\x83\x81\x81\x10a\x10\xC3Wa\x10\xC3aUfV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x10\xE4Wa\x10\xE4aUfV[\x90P` \x02\x81\x01\x90a\x10\xF6\x91\x90aV\xDEV[`@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\x11bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x86\x91\x90aW'V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\"W`@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\x08IV[`\0\x80[\x82\x81\x10\x15a\x14iW`\0\x84\x84\x83\x81\x81\x10a\x12BWa\x12BaUfV[\x90P` \x02\x01` \x81\x01\x90a\x12W\x91\x90aJ\xB5V[`\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\x12\xA2Wa\x12\xA2aK\xE3V[`\x02\x81\x11\x15a\x12\xB3Wa\x12\xB3aK\xE3V[\x90RP\x80Q\x90\x91P`\0a\x12\xC6\x82a\"\xDBV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13JW`@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\x08IV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x13\xF5W`@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\x08IV[Pa\x14S\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x0C\x91\x90aWDV[\x92a\x14\x19\x93\x92\x91\x90aW\\V[\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$\x10\x92PPPV[P\x90\x92Pa\x14b\x90P\x81aU\x92V[\x90Pa\x12&V[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\x14\xC3\x90aU\x92V[\x90Pa\x10\xA7V[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-Wa\x15-aK\xE3V[`\x02\x81\x11\x15a\x15>Wa\x15>aK\xE3V[\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\x15\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xB8\x91\x90aVtV[a\x15\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV\x96V[`\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\x1Ba&\x02V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x16\x9BW`@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\x08IV[a\x16\xA5\x83\x83a(\xA2V[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xBAW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17TW`@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\x08IV[a\x16\xA5\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\x91RPa)O\x92PPPV[a\x17\x9Ca&\x02V[a\x17\xA6`\0a-\xC1V[V[`\0a\x17\xE8\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\x0F\xA2\x96\x95\x94\x93\x92\x91\x90aW\x86V[\x96\x95PPPPPPV[`\0a\x0E\x8F\x82a\"\xDBV[`\0a\x18\x11`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18>W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[\x83\x89\x14a\x18\xC1W`@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\x08IV[`\0a\x18\xCD3\x88a.\x13V[\x90Pa\x19-3\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\"Wa\x19\x13`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aX\x0BV[\x81R` \x01\x90`\x01\x01\x90a\x18\xF6V[PPPPP\x87a/DV[`\0a\x19t3\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\x92Pa0\xD1\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B?W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x19\x99Wa\x19\x99aUfV[\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\x1A\x06Wa\x1A\x06aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B,Wa\x1A\xA7\x8E\x8E\x84\x81\x81\x10a\x1A/Wa\x1A/aUfV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1ARWa\x1ARaUfV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1AqWa\x1AqaUfV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\x8BWa\x1A\x8BaUfV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1A\xA1\x91\x90aX\x0BV[\x86a5\xE8V[a\x1B,\x89\x89\x84\x81\x81\x10a\x1A\xBCWa\x1A\xBCaUfV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1A\xD4\x91\x90aJ\xB5V[\x8F\x8F\x85\x90\x86`\x01a\x1A\xE5\x91\x90aWDV[\x92a\x1A\xF2\x93\x92\x91\x90aW\\V[\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)O\x92PPPV[P\x80a\x1B7\x81aU\x92V[\x91PPa\x19yV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1BvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[`\0a\x1B\x823\x85a.\x13V[\x90P`\0a\x1B\xCB3\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\x92Pa0\xD1\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1C\xC6W`\0\x8A\x8A\x83\x81\x81\x10a\x1B\xEDWa\x1B\xEDaUfV[\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#Wa\x1C#aUfV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1C\xB3W`@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\x08IV[P\x80a\x1C\xBE\x81aU\x92V[\x91PPa\x1B\xD1V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1C\xEFWa\x1C\xEFaIYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x18W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\x83Wa\x1DJ\x85\x85\x83\x81Q\x81\x10a\x1D=Wa\x1D=aUfV[` \x02` \x01\x01Qa8\xBDV[\x82\x82\x81Q\x81\x10a\x1D\\Wa\x1D\\aUfV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D{\x81aU\x92V[\x91PPa\x1D\x1EV[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1D\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aU/V[a\x16\xA53\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)O\x92PPPV[a\x1D\xFAa&\x02V[a\x16\xA5\x83\x83\x83a9\xF9V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E%WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E?WP0;\x15\x80\x15a\x1E?WP`\0T`\xFF\x16`\x01\x14[a\x1E\xA2W`@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\x08IV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1E\xC5W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1E\xD7WP\x81Q\x83Q\x14[a\x1FAW`@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\x08IV[a\x1FJ\x89a-\xC1V[a\x1FT\x86\x86a<\x10V[a\x1F]\x88a&aV[a\x1Ff\x87a&\xCAV[`\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 \xB7Wa \xA5\x85\x82\x81Q\x81\x10a dWa daUfV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a ~Wa ~aUfV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a \x98Wa \x98aUfV[` \x02` \x01\x01Qa9\xF9V[\x80a \xAF\x81aU\x92V[\x91PPa FV[P\x80\x15a \xFEW`\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!\x11a&\x02V[`\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\x08IV[a\x0C\xC4\x81a-\xC1V[`\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!\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xF6\x91\x90aV\rV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08I\x90aV*V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\"\xA4W`@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\x08IV[`\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\x0C\tV[`\0\x81\x81R`\x98` R`@\x81 T\x80a\"\xF8WP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a#\x11`\x01\x83aX'V[\x81T\x81\x10a#!Wa#!aUfV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[```\0\x80a#R\x84a=\0V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#mWa#maIYV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\x97W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#\xAFWPa\x01\0\x81\x10[\x15a$\x06W`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\xF6W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#\xD8Wa#\xD8aUfV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\xFF\x81aU\x92V[\x90Pa#\x9EV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a$(Wa$(aK\xE3V[\x14a$2WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a$\x87\x90\x88\x90\x86\x90\x88\x90`\x04\x01aX>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$\xCA\x91\x90aXnV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a$\xF6Wa$\xF6\x85a$\xF1\x83`\x01`\x01`\xC0\x1B\x03\x16a#DV[a)OV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a%\x8BW`@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\x08IV[`\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[3a&\x0Ba\x17\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08IV[`\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\x0E\x8Fa'@a=+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'\xB1`\0\x80Q` a]n\x839\x81Q\x91R\x86aX\xADV[\x90P[a'\xBD\x81a>RV[\x90\x93P\x91P`\0\x80Q` a]n\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\xF7W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a]n\x839\x81Q\x91R`\x01\x82\x08\x90Pa'\xB4V[`\0\x80a(\x1D\x84a>\xD4V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a(\x9BW`@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\x08IV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a)\x83Wa)\x83aK\xE3V[\x14a*\x02W`@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\x08IV[`\x96T`\0\x90a*\x16\x90\x85\x90`\xFF\x16a(\x11V[\x90P`\0a*#\x83a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a*\xA1W`@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\x08IV[a*\xB8`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a+PW`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a+i\x84\x82a@aV[`\x01`\x01`\xC0\x1B\x03\x81\x16a,8W`\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+\xE9W`\0\x80\xFD[PZ\xF1\x15\x80\x15a+\xFDW=`\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,\x86\x90\x8A\x90\x8A\x90`\x04\x01aX\xC1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xB4W=`\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-\x06\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a- W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-4W=`\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-\x86\x90\x87\x90\x8A\x90`\x04\x01aX\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a-\xB4W=`\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.~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xA2\x91\x90aX\xFEV[\x90P\x80a\x0E\x8FW\x7F\0\0\0\0\0\0\0\0\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\x84a.\xE3\x87a\x0FCV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a/\x01\x93\x92\x91\x90aY\x17V[` `@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(\x9B\x91\x90aX\xFEV[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a/\xEAW`@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\x08IV[B\x81`@\x01Q\x10\x15a0\x7FW`@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\x08IV[` \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\t0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a0\xCA\x91\x88\x91\x88\x91\x88\x91\x90a\x17\xA8V[\x83QaB!V[a0\xF5`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a1=\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(\x11\x90PV[\x90P`\0a1J\x88a\"\xDBV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1\xC8W`@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\x08IV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a2~W`@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\x08IV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a2\x97\x89\x82a@aV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2\xC7\x91\x90aU\xFAV[`@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\x15a3\x01Wa3\x01aK\xE3V[\x14a4\x1AW`@\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\x15a3\\Wa3\\aK\xE3V[\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}\x90a3\xB1\x90\x8D\x90\x89\x90`\x04\x01aY\x96V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xCBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xDFW=`\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\x90a4j\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01aZ\nV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a4\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a4\x98W=`\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\x91Pa4\xEE\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01aZ/V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra55\x91\x90\x81\x01\x90aZ\xBBV[`@\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\x90a5\x92\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a[\x1EV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra5\xD9\x91\x90\x81\x01\x90a[8V[\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\x15a6hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a]N\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08IV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a6\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`@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\x15a7VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a7z\x91\x90a[\xD1V[\x90Pa7\x86\x81\x85aC\xDBV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a8\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a]N\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\x08IV[a8#\x88\x85aC\xFFV[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a \xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a]N\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\x08IV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a9OW`\x01a8\xE2\x82\x84aX'V[a8\xEC\x91\x90aX'V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a9\x1FWa9\x1FaUfV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a9=WPPa\x0E\x8FV[\x80a9G\x81aU\x92V[\x91PPa8\xCEV[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\x08IV[`\x96T`\xFF\x16`\xC0\x81\x10a:mW`@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\x08IV[a:x\x81`\x01a[\xEEV[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a:\x97\x81\x86a(\xA2V[`@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:\xEA\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\\\x13V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a;\x04W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x18W=`\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;\x80W`\0\x80\xFD[PZ\xF1\x15\x80\x15a;\x94W=`\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;\xFCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a \xFEW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a<7WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a<\xB9W`@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\x08IV[`\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<\xFC\x82a$\xFDV[PPV[`\0\x80[\x82\x15a\x0E\x8FWa=\x15`\x01\x84aX'V[\x90\x92\x16\x91\x80a=#\x81a\\\x8CV[\x91PPa=\x04V[`\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=\x84WP\x7F\0\0\0\0\0\0\0\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=\xAEWP\x7F\0\0\0\0\0\0\0\0\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]n\x839\x81Q\x91R`\x03`\0\x80Q` a]n\x839\x81Q\x91R\x86`\0\x80Q` a]n\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a>\xC8\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]n\x839\x81Q\x91RaD\x19V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a?]W`@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\x08IV[\x81Qa?kWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a?\x81Wa?\x81aUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a@XW\x84\x81\x81Q\x81\x10a?\xAFWa?\xAFaUfV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a@DW`@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\x08IV[\x91\x81\x17\x91a@Q\x81aU\x92V[\x90Pa?\x94V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aA\x06W`\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 aA\x1F`\x01\x84aX'V[\x81T\x81\x10aA/WaA/aUfV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aAsW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t0V[\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;\x15aC;W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aBa\x90\x86\x90\x86\x90`\x04\x01aX\xE5V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\xA2\x91\x90a\\\xAEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xA5W`@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\x08IV[\x82`\x01`\x01`\xA0\x1B\x03\x16aCO\x83\x83aD\xC8V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xA5W`@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\x08IV[` \x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[a(\x9B\x91\x90a]\x07V[`@\x81\x01Q`\0\x90a'\x10\x90aC\xF5\x90a\xFF\xFF\x16\x85a\\\xD8V[`\0\x80aD$aH5V[aD,aHSV[` \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\x15aDmWaDoV[\xFE[P\x82aD\xBDW`@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\x08IV[PQ\x95\x94PPPPPV[`\0\x80`\0aD\xD7\x85\x85aD\xE4V[\x91P\x91Pa\x1D\x83\x81aETV[`\0\x80\x82Q`A\x14\x15aE\x1BW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaE\x0F\x87\x82\x85\x85aG\x0FV[\x94P\x94PPPPaEMV[\x82Q`@\x14\x15aEEW` \x83\x01Q`@\x84\x01QaE:\x86\x83\x83aG\xFCV[\x93P\x93PPPaEMV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aEhWaEhaK\xE3V[\x14\x15aEqWPV[`\x01\x81`\x04\x81\x11\x15aE\x85WaE\x85aK\xE3V[\x14\x15aE\xD3W`@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\x08IV[`\x02\x81`\x04\x81\x11\x15aE\xE7WaE\xE7aK\xE3V[\x14\x15aF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08IV[`\x03\x81`\x04\x81\x11\x15aFIWaFIaK\xE3V[\x14\x15aF\xA2W`@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\x08IV[`\x04\x81`\x04\x81\x11\x15aF\xB6WaF\xB6aK\xE3V[\x14\x15a\x0C\xC4W`@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\x08IV[`\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\x15aGFWP`\0\x90P`\x03aG\xF3V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG^WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGoWP`\0\x90P`\x04aG\xF3V[`@\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\xC3W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xECW`\0`\x01\x92P\x92PPaG\xF3V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aH\x19`\xFF\x86\x90\x1C`\x1BaWDV[\x90PaH'\x87\x82\x88\x85aG\x0FV[\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\x12aH\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aH\xC8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH\xDEW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aHqV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aI\x08W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aI6W`\0\x80\xFD[\x835\x92P` \x84\x015aIH\x81aI\x0FV[\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\x15aI\x91WaI\x91aIYV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\x91WaI\x91aIYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aI\xE1WaI\xE1aIYV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aJ\x02WaJ\x02aIYV[aJ\x15`\x1F\x84\x01`\x1F\x19\x16` \x01aI\xB9V[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aJ)W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aJRW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJhW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aJyW`\0\x80\xFD[aJ\x88\x84\x825` \x84\x01aI\xE9V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[\x805aJ\xB0\x81aJ\x90V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aJ\xC7W`\0\x80\xFD[\x815a(\x9B\x81aJ\x90V[`\0\x80`@\x83\x85\x03\x12\x15aJ\xE5W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aK\x17W`\0\x80\xFD[a(\x9B\x82aJ\xF4V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0E\x8FV[`\0\x80\x83`\x1F\x84\x01\x12aKIW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aK`W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aK\x8EW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA5W`\0\x80\xFD[aK\xB1\x88\x83\x89\x01aHqV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aK\xCAW`\0\x80\xFD[PaK\xD7\x87\x82\x88\x01aK7V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aL\x17WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aL6\x90\x84\x01\x82aK\xF9V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aJ\xB0W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aLaW`\0\x80\xFD[aLiaIoV[\x90P\x815aLv\x81aI\x0FV[\x81RaL\x84` \x83\x01aL=V[` \x82\x01RaL\x95`@\x83\x01aL=V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aL\xB3W`\0\x80\xFD[aL\xBC\x83aJ\xF4V[\x91PaL\xCB\x84` \x85\x01aLOV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aL\xE9W`\0\x80\xFD[\x835aL\xF4\x81aJ\x90V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\x0FW`\0\x80\xFD[aM\x1B\x86\x82\x87\x01aK7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aMAWaMAaIYV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aM]W`\0\x80\xFD[aMeaI\x97V[\x90PaMp\x82aJ\xF4V[\x81R` \x82\x015aM\x80\x81aJ\x90V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aM\xA3W`\0\x80\xFD[\x855aM\xAE\x81aJ\x90V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xD2W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aM\xE3W`\0\x80\xFD[\x805aM\xF6aM\xF1\x82aM(V[aI\xB9V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aN\x15W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aN;WaN,\x8D\x85aMKV[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aN\x1AV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aNkW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aN\x83W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aEMW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aN\xC7W`\0\x80\xFD[aN\xCFaIoV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xE7W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aN\xF8W`\0\x80\xFD[aO\x07\x84\x825` \x84\x01aI\xE9V[\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\x15aOCW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aOZW`\0\x80\xFD[aOf\x8D\x83\x8E\x01aK7V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aO\x7FW`\0\x80\xFD[aO\x8B\x8D\x83\x8E\x01aK7V[\x90\x99P\x97P\x87\x91PaO\xA0\x8D`@\x8E\x01aNXV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aO\xB7W`\0\x80\xFD[aO\xC3\x8D\x83\x8E\x01aNqV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aO\xDDW`\0\x80\xFD[aO\xE9\x8D\x83\x8E\x01aN\xB5V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aP\0W`\0\x80\xFD[PaP\r\x8C\x82\x8D\x01aN\xB5V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aP7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aPNW`\0\x80\xFD[aPZ\x8A\x83\x8B\x01aK7V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aPsW`\0\x80\xFD[aP\x7F\x8A\x83\x8B\x01aK7V[\x90\x96P\x94P\x84\x91PaP\x94\x8A`@\x8B\x01aNXV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aP\xABW`\0\x80\xFD[PaP\xB8\x89\x82\x8A\x01aN\xB5V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aP\xD8W`\0\x80\xFD[\x825aP\xE3\x81aI\x0FV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xFFW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aQ\x10W`\0\x80\xFD[\x805aQ\x1EaM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aQ=W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aQ[W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aQBV[\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\x15aQ\xA8W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aQ\x86V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aQ\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xDDW`\0\x80\xFD[aH\xEA\x85\x82\x86\x01aK7V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0C\xC4W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aR\x0FW`\0\x80\xFD[\x815` aR\x1FaM\xF1\x83aM(V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aR>W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW`@\x81\x89\x03\x12\x15aR[W`\0\x80\x81\xFD[aRcaI\x97V[\x815aRn\x81aJ\x90V[\x81R\x81\x85\x015aR}\x81aQ\xE9V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aRBV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aR\xAFW`\0\x80\xFD[aR\xB9\x85\x85aLOV[\x92P``\x84\x015aR\xC9\x81aQ\xE9V[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE4W`\0\x80\xFD[aR\xF0\x86\x82\x87\x01aQ\xFEV[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aS\x0BW`\0\x80\xFD[\x815` aS\x1BaM\xF1\x83aM(V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aS:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aS]WaSP\x89\x82aLOV[\x84R\x92\x84\x01\x92\x81\x01aS>V[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aS{W`\0\x80\xFD[\x815` aS\x8BaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aS\xAAW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805aS\xC1\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aS\xAEV[`\0\x82`\x1F\x83\x01\x12aS\xDFW`\0\x80\xFD[\x815` aS\xEFaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aT\x0EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aT1W`\0\x80\x81\xFD[aT?\x89\x86\x83\x8B\x01\x01aQ\xFEV[\x84RP\x91\x83\x01\x91\x83\x01aT\x12V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aTjW`\0\x80\xFD[aTs\x89aJ\xA5V[\x97PaT\x81` \x8A\x01aJ\xA5V[\x96PaT\x8F`@\x8A\x01aJ\xA5V[\x95PaT\x9D``\x8A\x01aJ\xA5V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aT\xC0W`\0\x80\xFD[aT\xCC\x8C\x83\x8D\x01aR\xFAV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aT\xE2W`\0\x80\xFD[aT\xEE\x8C\x83\x8D\x01aSjV[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aU\x04W`\0\x80\xFD[PaU\x11\x8B\x82\x8C\x01aS\xCEV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0E\x8F\x82\x84aK\xF9V[` \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\x15aU\xA6WaU\xA6aU|V[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aU\xD3W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aU\xB7V[\x81\x81\x11\x15aU\xE5W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a(\x9B` \x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aV\x1FW`\0\x80\xFD[\x81Qa(\x9B\x81aJ\x90V[` \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\x15aV\x86W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a(\x9BW`\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\x12aV\xF5W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aW\x0FW`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aEMW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW9W`\0\x80\xFD[\x81Qa(\x9B\x81aI\x0FV[`\0\x82\x19\x82\x11\x15aWWWaWWaU|V[P\x01\x90V[`\0\x80\x85\x85\x11\x15aWlW`\0\x80\xFD[\x83\x86\x11\x15aWyW`\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\x15aW\xEBW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aW\xC1V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aX\x1DW`\0\x80\xFD[a(\x9B\x83\x83aMKV[`\0\x82\x82\x10\x15aX9WaX9aU|V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aXe``\x83\x01\x84aU\xADV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aX\x80W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aX\xBCWaX\xBCaX\x97V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aJ\x88\x90\x83\x01\x84aU\xADV[\x82\x81R`@` \x82\x01R`\0aJ\x88`@\x83\x01\x84aU\xADV[`\0` \x82\x84\x03\x12\x15aY\x10W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aY?` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aYY``\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\x01RaY\xC0`\xA0\x84\x01\x82aU\xADV[\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\x90aXe\x90\x83\x01\x84\x86aY\xE1V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x17\xE8``\x83\x01\x84\x86aY\xE1V[`\0\x82`\x1F\x83\x01\x12aZhW`\0\x80\xFD[\x81Q` aZxaM\xF1\x83aM(V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aZ\x97W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aR\x8FW\x80QaZ\xAE\x81aQ\xE9V[\x83R\x91\x83\x01\x91\x83\x01aZ\x9BV[`\0\x80`@\x83\x85\x03\x12\x15aZ\xCEW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aZ\xE5W`\0\x80\xFD[aZ\xF1\x86\x83\x87\x01aZWV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a[\x07W`\0\x80\xFD[Pa[\x14\x85\x82\x86\x01aZWV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aXe`@\x83\x01\x84\x86aY\xE1V[`\0` \x80\x83\x85\x03\x12\x15a[KW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[aW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a[rW`\0\x80\xFD[\x80Qa[\x80aM\xF1\x82aM(V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a[\x9FW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a[\xC6W\x83Qa[\xB7\x81aI\x0FV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a[\xA4V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a[\xE3W`\0\x80\xFD[\x81Qa(\x9B\x81aQ\xE9V[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a\\\x0BWa\\\x0BaU|V[\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\\|W\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\\LV[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\\\xA4Wa\\\xA4aU|V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\\\xC0W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a(\x9BW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a\\\xFEWa\\\xFEaU|V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a]!Wa]!aX\x97V[\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 ~-\x8D\t\xF2\x08\xD8\x86\xD7\x8E\xE6\x0Fc\xE1\xAA\xBCC\x94\x97\xA3>\xC7\xD0\x01\xF2\xD5X#ag:\x82dsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ChurnApproverUpdated { #[allow(missing_docs)] @@ -4249,7 +4281,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub newChurnApprover: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4340,7 +4377,12 @@ pub mod RegistryCoordinator { ```solidity event EjectorUpdated(address prevEjector, address newEjector); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct EjectorUpdated { #[allow(missing_docs)] @@ -4348,7 +4390,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub newEjector: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4439,13 +4486,23 @@ pub mod RegistryCoordinator { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4527,7 +4584,12 @@ pub mod RegistryCoordinator { ```solidity event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorDeregistered { #[allow(missing_docs)] @@ -4535,7 +4597,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4630,7 +4697,12 @@ pub mod RegistryCoordinator { ```solidity event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorRegistered { #[allow(missing_docs)] @@ -4638,7 +4710,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub operatorId: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4733,7 +4810,12 @@ pub mod RegistryCoordinator { ```solidity event OperatorSetParamsUpdated(uint8 indexed quorumNumber, IRegistryCoordinator.OperatorSetParam operatorSetParams); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSetParamsUpdated { #[allow(missing_docs)] @@ -4742,7 +4824,12 @@ pub mod RegistryCoordinator { pub operatorSetParams: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4834,7 +4921,12 @@ pub mod RegistryCoordinator { ```solidity event OperatorSocketUpdate(bytes32 indexed operatorId, string socket); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OperatorSocketUpdate { #[allow(missing_docs)] @@ -4842,7 +4934,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub socket: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -4933,7 +5030,12 @@ pub mod RegistryCoordinator { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -4941,7 +5043,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -5036,7 +5143,12 @@ pub mod RegistryCoordinator { ```solidity event Paused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -5044,7 +5156,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -5135,7 +5252,12 @@ pub mod RegistryCoordinator { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -5143,7 +5265,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -5234,7 +5361,12 @@ pub mod RegistryCoordinator { ```solidity event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct QuorumBlockNumberUpdated { #[allow(missing_docs)] @@ -5242,7 +5374,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub blocknumber: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -5333,7 +5470,12 @@ pub mod RegistryCoordinator { ```solidity event Unpaused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -5341,7 +5483,12 @@ pub mod RegistryCoordinator { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -5432,7 +5579,7 @@ pub mod RegistryCoordinator { ```solidity constructor(address _serviceManager, address _stakeRegistry, address _blsApkRegistry, address _indexRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _serviceManager: alloy::sol_types::private::Address, @@ -5529,16 +5676,21 @@ pub mod RegistryCoordinator { ```solidity function OPERATOR_CHURN_APPROVAL_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5634,16 +5786,21 @@ pub mod RegistryCoordinator { ```solidity function PUBKEY_REGISTRATION_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5739,16 +5896,21 @@ pub mod RegistryCoordinator { ```solidity function blsApkRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryCall {} ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct blsApkRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5844,7 +6006,7 @@ pub mod RegistryCoordinator { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateOperatorChurnApprovalDigestHashCall { pub registeringOperator: alloy::sol_types::private::Address, @@ -5856,12 +6018,17 @@ pub mod RegistryCoordinator { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct calculateOperatorChurnApprovalDigestHashReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6015,16 +6182,21 @@ pub mod RegistryCoordinator { ```solidity function churnApprover() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct churnApproverCall {} ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct churnApproverReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6120,7 +6292,7 @@ pub mod RegistryCoordinator { ```solidity function createQuorum(IRegistryCoordinator.OperatorSetParam memory operatorSetParams, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory strategyParams) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct createQuorumCall { pub operatorSetParams: @@ -6131,10 +6303,15 @@ pub mod RegistryCoordinator { >, } ///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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct createQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6263,16 +6440,21 @@ pub mod RegistryCoordinator { ```solidity function deregisterOperator(bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6374,17 +6556,22 @@ pub mod RegistryCoordinator { ```solidity function ejectOperator(address operator, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6495,125 +6682,25 @@ pub mod RegistryCoordinator { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectorCall {} ///Container type for the return parameters of the [`ejector()`](ejectorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ejectorReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6709,18 +6796,23 @@ pub mod RegistryCoordinator { ```solidity function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getCurrentQuorumBitmapReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6822,18 +6914,23 @@ pub mod RegistryCoordinator { ```solidity function getOperator(address operator) external view returns (IRegistryCoordinator.OperatorInfo memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6934,18 +7031,23 @@ pub mod RegistryCoordinator { ```solidity function getOperatorFromId(bytes32 operatorId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorFromIdReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7047,18 +7149,23 @@ pub mod RegistryCoordinator { ```solidity function getOperatorId(address operator) external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorIdReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7158,18 +7265,23 @@ pub mod RegistryCoordinator { ```solidity function getOperatorSetParams(uint8 quorumNumber) external view returns (IRegistryCoordinator.OperatorSetParam memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorSetParamsReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7272,18 +7384,23 @@ pub mod RegistryCoordinator { ```solidity function getOperatorStatus(address operator) external view returns (IRegistryCoordinator.OperatorStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorStatusReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7384,7 +7501,7 @@ pub mod RegistryCoordinator { ```solidity function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapAtBlockNumberByIndexCall { pub operatorId: alloy::sol_types::private::FixedBytes<32>, @@ -7392,12 +7509,17 @@ pub mod RegistryCoordinator { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapAtBlockNumberByIndexReturn { pub _0: alloy::sol_types::private::primitives::aliases::U192, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7520,18 +7642,23 @@ pub mod RegistryCoordinator { ```solidity function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapHistoryLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7633,19 +7760,24 @@ pub mod RegistryCoordinator { ```solidity function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapIndicesAtBlockNumberReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7762,19 +7894,24 @@ pub mod RegistryCoordinator { ```solidity function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (IRegistryCoordinator.QuorumBitmapUpdate memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getQuorumBitmapUpdateByIndexReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7891,16 +8028,21 @@ pub mod RegistryCoordinator { ```solidity function indexRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryCall {} ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct indexRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -7996,7 +8138,7 @@ pub mod RegistryCoordinator { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeCall { pub _initialOwner: alloy::sol_types::private::Address, @@ -8016,10 +8158,15 @@ pub mod RegistryCoordinator { >, } ///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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8195,18 +8342,23 @@ pub mod RegistryCoordinator { ```solidity function isChurnApproverSaltUsed(bytes32) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isChurnApproverSaltUsedReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8302,131 +8454,25 @@ pub mod RegistryCoordinator { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct numRegistriesCall {} ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct numRegistriesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8522,16 +8568,21 @@ pub mod RegistryCoordinator { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8627,16 +8678,21 @@ pub mod RegistryCoordinator { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8738,14 +8794,19 @@ pub mod RegistryCoordinator { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8841,18 +8902,23 @@ pub mod RegistryCoordinator { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -8952,16 +9018,21 @@ pub mod RegistryCoordinator { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9057,16 +9128,21 @@ pub mod RegistryCoordinator { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9162,18 +9238,23 @@ pub mod RegistryCoordinator { ```solidity function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pubkeyRegistrationMessageHashReturn { pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9274,16 +9355,21 @@ pub mod RegistryCoordinator { ```solidity function quorumCount() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCountCall {} ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumCountReturn { pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9379,18 +9465,23 @@ pub mod RegistryCoordinator { ```solidity function quorumUpdateBlockNumber(uint8) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quorumUpdateBlockNumberReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9490,7 +9581,7 @@ pub mod RegistryCoordinator { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorCall { pub quorumNumbers: alloy::sol_types::private::Bytes, @@ -9501,10 +9592,15 @@ pub mod RegistryCoordinator { ::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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9638,7 +9734,7 @@ pub mod RegistryCoordinator { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorWithChurnCall { pub quorumNumbers: alloy::sol_types::private::Bytes, @@ -9654,10 +9750,15 @@ pub mod RegistryCoordinator { ::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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorWithChurnReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9809,18 +9910,23 @@ pub mod RegistryCoordinator { ```solidity function registries(uint256) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registriesReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -9920,14 +10026,19 @@ pub mod RegistryCoordinator { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10023,16 +10134,21 @@ pub mod RegistryCoordinator { ```solidity function serviceManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct serviceManagerCall {} ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct serviceManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10128,16 +10244,21 @@ pub mod RegistryCoordinator { ```solidity function setChurnApprover(address _churnApprover) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setChurnApproverReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10235,131 +10356,25 @@ pub mod RegistryCoordinator { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setEjectorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10459,7 +10474,7 @@ pub mod RegistryCoordinator { ```solidity function setOperatorSetParams(uint8 quorumNumber, IRegistryCoordinator.OperatorSetParam memory operatorSetParams) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setOperatorSetParamsCall { pub quorumNumber: u8, @@ -10467,10 +10482,15 @@ pub mod RegistryCoordinator { ::RustType, } ///Container type for the return parameters of the [`setOperatorSetParams(uint8,(uint32,uint16,uint16))`](setOperatorSetParamsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setOperatorSetParamsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10585,16 +10605,21 @@ pub mod RegistryCoordinator { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10696,16 +10721,21 @@ pub mod RegistryCoordinator { ```solidity function stakeRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryCall {} ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakeRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10801,16 +10831,21 @@ pub mod RegistryCoordinator { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -10910,16 +10945,21 @@ pub mod RegistryCoordinator { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -11021,16 +11061,21 @@ pub mod RegistryCoordinator { ```solidity function updateOperators(address[] memory operators) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -11133,7 +11178,7 @@ pub mod RegistryCoordinator { ```solidity function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory quorumNumbers) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsForQuorumCall { pub operatorsPerQuorum: alloy::sol_types::private::Vec< @@ -11142,10 +11187,15 @@ pub mod RegistryCoordinator { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateOperatorsForQuorumReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -11268,16 +11318,21 @@ pub mod RegistryCoordinator { ```solidity function updateSocket(string memory socket) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateSocketReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -11383,7 +11438,6 @@ pub mod RegistryCoordinator { createQuorum(createQuorumCall), deregisterOperator(deregisterOperatorCall), ejectOperator(ejectOperatorCall), - ejectionCooldown(ejectionCooldownCall), ejector(ejectorCall), getCurrentQuorumBitmap(getCurrentQuorumBitmapCall), getOperator(getOperatorCall), @@ -11398,7 +11452,6 @@ pub mod RegistryCoordinator { indexRegistry(indexRegistryCall), initialize(initializeCall), isChurnApproverSaltUsed(isChurnApproverSaltUsedCall), - lastEjectionTimestamp(lastEjectionTimestampCall), numRegistries(numRegistriesCall), owner(ownerCall), pause(pauseCall), @@ -11415,7 +11468,6 @@ pub mod RegistryCoordinator { renounceOwnership(renounceOwnershipCall), serviceManager(serviceManagerCall), setChurnApprover(setChurnApproverCall), - setEjectionCooldown(setEjectionCooldownCall), setEjector(setEjectorCall), setOperatorSetParams(setOperatorSetParamsCall), setPauserRegistry(setPauserRegistryCall), @@ -11440,9 +11492,7 @@ pub mod RegistryCoordinator { [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], @@ -11474,7 +11524,6 @@ pub mod RegistryCoordinator { [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], @@ -11491,7 +11540,7 @@ pub mod RegistryCoordinator { impl alloy_sol_types::SolInterface for RegistryCoordinatorCalls { const NAME: &'static str = "RegistryCoordinatorCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 50usize; + const COUNT: usize = 47usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -11519,9 +11568,6 @@ pub mod RegistryCoordinator { Self::ejectOperator(_) => { ::SELECTOR } - Self::ejectionCooldown(_) => { - ::SELECTOR - } Self::ejector(_) => ::SELECTOR, Self::getCurrentQuorumBitmap(_) => { ::SELECTOR @@ -11562,9 +11608,6 @@ pub mod RegistryCoordinator { Self::isChurnApproverSaltUsed(_) => { ::SELECTOR } - Self::lastEjectionTimestamp(_) => { - ::SELECTOR - } Self::numRegistries(_) => { ::SELECTOR } @@ -11603,9 +11646,6 @@ pub mod RegistryCoordinator { Self::setChurnApprover(_) => { ::SELECTOR } - Self::setEjectionCooldown(_) => { - ::SELECTOR - } Self::setEjector(_) => { ::SELECTOR } @@ -11717,18 +11757,6 @@ pub mod RegistryCoordinator { } updateSocket }, - { - fn setEjectionCooldown( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(RegistryCoordinatorCalls::setEjectionCooldown) - } - setEjectionCooldown - }, { fn setPauserRegistry( data: &[u8], @@ -11741,18 +11769,6 @@ pub mod RegistryCoordinator { } setPauserRegistry }, - { - fn lastEjectionTimestamp( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(RegistryCoordinatorCalls::lastEjectionTimestamp) - } - lastEjectionTimestamp - }, { fn getOperatorId( data: &[u8], @@ -12115,18 +12131,6 @@ pub mod RegistryCoordinator { } registerOperator }, - { - fn ejectionCooldown( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - ::abi_decode_raw( - data, validate, - ) - .map(RegistryCoordinatorCalls::ejectionCooldown) - } - ejectionCooldown - }, { fn getQuorumBitmapIndicesAtBlockNumber( data: &[u8], @@ -12301,11 +12305,6 @@ pub mod RegistryCoordinator { inner, ) } - Self::ejectionCooldown(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::ejector(inner) => { ::abi_encoded_size(inner) } @@ -12372,11 +12371,6 @@ pub mod RegistryCoordinator { inner, ) } - Self::lastEjectionTimestamp(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::numRegistries(inner) => { ::abi_encoded_size( inner, @@ -12445,11 +12439,6 @@ pub mod RegistryCoordinator { inner, ) } - Self::setEjectionCooldown(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::setEjector(inner) => { ::abi_encoded_size(inner) } @@ -12544,12 +12533,6 @@ pub mod RegistryCoordinator { out, ) } - Self::ejectionCooldown(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::ejector(inner) => { ::abi_encode_raw(inner, out) } @@ -12631,12 +12614,6 @@ pub mod RegistryCoordinator { out, ) } - Self::lastEjectionTimestamp(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::numRegistries(inner) => { ::abi_encode_raw( inner, @@ -12727,12 +12704,6 @@ pub mod RegistryCoordinator { out, ) } - Self::setEjectionCooldown(inner) => { - ::abi_encode_raw( - inner, - out, - ) - } Self::setEjector(inner) => { ::abi_encode_raw( inner, @@ -13328,12 +13299,6 @@ pub mod RegistryCoordinator { 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 {}) @@ -13463,13 +13428,6 @@ pub mod RegistryCoordinator { ) -> 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 {}) @@ -13586,13 +13544,6 @@ pub mod RegistryCoordinator { ) -> 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, diff --git a/crates/utils/src/middleware/registrycoordinatorharness.rs b/crates/utils/src/middleware/registrycoordinatorharness.rs new file mode 100644 index 00000000..a5f78976 --- /dev/null +++ b/crates/utils/src/middleware/registrycoordinatorharness.rs @@ -0,0 +1,20909 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style +)] +pub mod IRegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorKickParam { + pub quorumNumber: u8, + pub operator: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorSetParam { + pub maxOperatorCount: u32, + pub kickBIPsOfOperatorStake: u16, + pub kickBIPsOfTotalStake: u16, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library RegistryCoordinator { + struct RegisterResults { uint32[] numOperatorsPerQuorum; uint96[] operatorStakes; uint96[] totalStakes; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod RegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct RegisterResults { uint32[] numOperatorsPerQuorum; uint96[] operatorStakes; uint96[] totalStakes; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct RegisterResults { + pub numOperatorsPerQuorum: alloy::sol_types::private::Vec, + pub operatorStakes: + alloy::sol_types::private::Vec, + pub totalStakes: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + 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: RegisterResults) -> Self { + ( + value.numOperatorsPerQuorum, + value.operatorStakes, + value.totalStakes, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for RegisterResults { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + numOperatorsPerQuorum: tuple.0, + operatorStakes: tuple.1, + totalStakes: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for RegisterResults { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for RegisterResults { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.numOperatorsPerQuorum, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.operatorStakes), + , + > as alloy_sol_types::SolType>::tokenize(&self.totalStakes), + ) + } + #[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 RegisterResults { + 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 RegisterResults { + const NAME: &'static str = "RegisterResults"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "RegisterResults(uint32[] numOperatorsPerQuorum,uint96[] operatorStakes,uint96[] totalStakes)", + ) + } + #[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.numOperatorsPerQuorum, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.operatorStakes, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.totalStakes) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for RegisterResults { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.numOperatorsPerQuorum, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorStakes, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakes, + ) + } + #[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.numOperatorsPerQuorum, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorStakes, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakes, + 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 [`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) + } + /**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, + } + } + /// 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) + } + } + /// 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) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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; + } +} + +library RegistryCoordinator { + struct RegisterResults { + uint32[] numOperatorsPerQuorum; + uint96[] operatorStakes; + uint96[] totalStakes; + } +} + +library StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface RegistryCoordinatorHarness { + 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); + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + constructor(address _serviceManager, address _stakeRegistry, address _blsApkRegistry, address _indexRegistry); + + function IS_TEST() external view returns (bool); + function OPERATOR_CHURN_APPROVAL_TYPEHASH() external view returns (bytes32); + function PUBKEY_REGISTRATION_TYPEHASH() external view returns (bytes32); + function _deregisterOperatorExternal(address operator, bytes memory quorumNumbers) external; + function _registerOperatorExternal(address operator, bytes32 operatorId, bytes memory quorumNumbers, string memory socket, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external returns (RegistryCoordinator.RegisterResults memory results); + function _updateOperatorBitmapExternal(bytes32 operatorId, uint192 quorumBitmap) external; + function _updateOperatorExternal(address operator, IRegistryCoordinator.OperatorInfo memory operatorInfo, bytes memory quorumsToUpdate) external; + 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 ejector() external view returns (address); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + 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 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 setEjector(address _ejector) external; + function setOperatorId(address operator, bytes32 operatorId) external; + function setOperatorSetParams(uint8 quorumNumber, IRegistryCoordinator.OperatorSetParam memory operatorSetParams) external; + function setPauserRegistry(address newPauserRegistry) external; + function setQuorumCount(uint8 count) external; + function stakeRegistry() external view returns (address); + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + 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": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "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": "_deregisterOperatorExternal", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "_registerOperatorExternal", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "socket", + "type": "string", + "internalType": "string" + }, + { + "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": [ + { + "name": "results", + "type": "tuple", + "internalType": "struct RegistryCoordinator.RegisterResults", + "components": [ + { + "name": "numOperatorsPerQuorum", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "operatorStakes", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "totalStakes", + "type": "uint96[]", + "internalType": "uint96[]" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "_updateOperatorBitmapExternal", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumBitmap", + "type": "uint192", + "internalType": "uint192" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "_updateOperatorExternal", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorInfo", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorInfo", + "components": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IRegistryCoordinator.OperatorStatus" + } + ] + }, + { + "name": "quorumsToUpdate", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "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": "", + "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": "setOperatorId", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "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": "setQuorumCount", + "inputs": [ + { + "name": "count", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "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 + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod RegistryCoordinatorHarness { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101c060405260cf8054600160ff19918216811790925560d3805490911690911790553480156200002f57600080fd5b506040516200709d3803806200709d8339810160408190526200005291620002c0565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f7200000000000000000000602080830191825283518085018552600681526576302e302e3160d01b908201529151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c09384019096528051940193909320909252919052610120526001600160a01b0380851661014052808416610180528083166101605281166101a052838383836200017462000193565b5050505062000189336200025560201b60201c565b5050505062000328565b600054610100900460ff1615620002005760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000253576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381168114620002bd57600080fd5b50565b60008060008060808587031215620002d757600080fd5b8451620002e481620002a7565b6020860151909450620002f781620002a7565b60408601519093506200030a81620002a7565b60608601519092506200031d81620002a7565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051616c6d620004306000396000818161083701528181611645015281816129e1015281816134b701528181613e50015261471e01526000818161074c0152818161296c01528181612e7a0152818161340e01528181613dd0015281816142f3015261469d0152600081816106fd015281816111de015281816129aa0152818161338e01528181613d5201528181613f3801528181613fae015261479a015260008181610631015281816132d60152613ca80152600061499d015260006149ec015260006149c7015260006149200152600061494a015260006149740152616c6d6000f3fe608060405234801561001057600080fd5b50600436106103cf5760003560e01c806366d9a9a0116101ff578063b5508aa91161011a578063d92cbb84116100ad578063f2fde38b1161007c578063f2fde38b14610a24578063fa7626d414610a37578063fabc1cbc14610a44578063fd39105a14610a5757600080fd5b8063d92cbb841461093c578063dd8283f314610966578063e20c9f7114610979578063e65797ad1461098157600080fd5b8063ca0de882116100e9578063ca0de882146108e7578063ca4f2d971461090e578063d72d8dd614610921578063d75b4c881461092957600080fd5b8063b5508aa914610893578063ba414fa61461089b578063c391425e146108a3578063c4097d5e146108c357600080fd5b8063886f1195116101925780639b5d177b116101615780639b5d177b1461081f5780639e9923c2146108325780639feab85914610859578063a50857bf1461088057600080fd5b8063886f1195146107d75780638da5cb5b146107f0578063916a17c6146107f85780639aa1653d1461080057600080fd5b80638310fef6116101ce5780638310fef61461078957806384ca52131461079c57806385226c81146107af578063871ef049146107c457600080fd5b806366d9a9a01461073257806368304835146107475780636e3b17db1461076e578063715018a61461078157600080fd5b8063296bb064116102ef5780635140a548116102825780635b0b829f116102515780635b0b829f146106dd5780635c975abb146106f05780635df45946146106f85780636347c9001461071f57600080fd5b80635140a548146106835780635865c60c14610696578063595c6a67146106b65780635ac86ab7146106be57600080fd5b80633998fdd3116102be5780633998fdd31461062c5780633c2a7f4c146106535780633e5e3c23146106735780633f7286f41461067b57600080fd5b8063296bb064146105de57806329d1e0c3146105f15780632ade3880146106045780632cdd1e861461061957600080fd5b80631478851f11610367578063249a0c4211610336578063249a0c421461058557806327e79288146105a557806328f61b31146105b85780632953547c146105cb57600080fd5b80631478851f146104d45780631ab2574f146105075780631eb812da146105275780631ed7831c1461057057600080fd5b80630cf4b767116103a35780630cf4b7671461047257806310d67a2f1461048557806313542a4e14610498578063136439dd146104c157600080fd5b8062cf2ab5146103d457806303fd3492146103e957806304ec63511461041c578063054310e614610447575b600080fd5b6103e76103e23660046152dd565b610a93565b005b6104096103f736600461531e565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b61042f61042a366004615349565b610ba9565b6040516001600160c01b039091168152602001610413565b609d5461045a906001600160a01b031681565b6040516001600160a01b039091168152602001610413565b6103e7610480366004615480565b610d9f565b6103e76104933660046154dc565b610e87565b6104096104a63660046154dc565b6001600160a01b031660009081526099602052604090205490565b6103e76104cf36600461531e565b610f3a565b6104f76104e236600461531e565b609a6020526000908152604090205460ff1681565b6040519015158152602001610413565b61051a610515366004615595565b611077565b6040516104139190615681565b61053a610535366004615709565b6110b4565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610413565b610578611145565b604051610413919061572b565b610409610593366004615789565b609b6020526000908152604090205481565b6103e76105b33660046157b9565b6111a7565b609e5461045a906001600160a01b031681565b6103e76105d93660046157e9565b6111b5565b61045a6105ec36600461531e565b6111c5565b6103e76105ff3660046154dc565b611251565b61060c611262565b6040516104139190615923565b6103e76106273660046154dc565b6113a4565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6106666106613660046154dc565b6113b5565b60405161041391906159a0565b610578611434565b610578611494565b6103e76106913660046159b7565b6114f4565b6106a96106a43660046154dc565b611a05565b6040516104139190615a5a565b6103e7611a79565b6104f76106cc366004615789565b6001805460ff9092161b9081161490565b6103e76106eb366004615adf565b611b45565b600154610409565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b61045a61072d36600461531e565b611bd7565b61073a611c01565b6040516104139190615b13565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6103e761077c366004615bc6565b611ce7565b6103e7611da7565b6103e7610797366004615bc6565b611d67565b6104096107aa366004615c7d565b611dbb565b6107b7611e05565b6040516104139190615d4a565b61042f6107d236600461531e565b611ed5565b60005461045a906201000090046001600160a01b031681565b61045a611ee0565b61073a611ef9565b60965461080d9060ff1681565b60405160ff9091168152602001610413565b6103e761082d366004615db4565b611fdf565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6104097f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6103e761088e366004615ead565b612317565b6107b761249b565b6104f761256b565b6108b66108b1366004615f3b565b612698565b6040516104139190615fe0565b6103e76108d1366004615789565b6096805460ff191660ff92909216919091179055565b6104097f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6103e761091c36600461601e565b612751565b609c54610409565b6103e7610937366004616104565b6127b8565b6103e761094a36600461615a565b6001600160a01b03909116600090815260996020526040902055565b6103e76109743660046162d9565b6127cb565b610578612acf565b6109f061098f366004615789565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610413565b6103e7610a323660046154dc565b612b2f565b60cf546104f79060ff1681565b6103e7610a5236600461531e565b612ba5565b610a86610a653660046154dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b60405161041391906163ad565b60015460029060049081161415610ac55760405162461bcd60e51b8152600401610abc906163bb565b60405180910390fd5b60005b82811015610ba3576000848483818110610ae457610ae46163f2565b9050602002016020810190610af991906154dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610b4457610b44615a22565b6002811115610b5557610b55615a22565b90525080519091506000610b6882612d01565b90506000610b7e826001600160c01b0316612d70565b9050610b8b858583612e3c565b50505050508080610b9b9061641e565b915050610ac8565b50505050565b6000838152609860205260408120805482919084908110610bcc57610bcc6163f2565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610cc65760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610abc565b602081015163ffffffff161580610cec5750806020015163ffffffff168463ffffffff16105b610d935760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610abc565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610dc857610dc8615a22565b14610e3b5760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610abc565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610e7c908490616439565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efe919061644c565b6001600160a01b0316336001600160a01b031614610f2e5760405162461bcd60e51b8152600401610abc90616469565b610f3781612f29565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906164b3565b610fc75760405162461bcd60e51b8152600401610abc906164d5565b600154818116146110405760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610e7c565b61109b60405180606001604052806060815260200160608152602001606081525090565b6110a987878787878761302e565b979650505050505050565b604080516060810182526000808252602082018190529181019190915260008381526098602052604090208054839081106110f1576110f16163f2565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b606060dc80548060200260200160405190810160405280929190818152602001828054801561119d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161117f575b5050505050905090565b6111b18282613545565b5050565b6111c0838383612e3c565b505050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f919061644c565b611259613705565b610f3781613764565b606060e3805480602002602001604051908101604052809291908181526020016000905b8282101561139b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156113845783829060005260206000200180546112f79061651d565b80601f01602080910402602001604051908101604052809291908181526020018280546113239061651d565b80156113705780601f1061134557610100808354040283529160200191611370565b820191906000526020600020905b81548152906001019060200180831161135357829003601f168201915b5050505050815260200190600101906112d8565b505050508152505081526020019060010190611286565b50505050905090565b6113ac613705565b610f37816137cd565b604080518082019091526000808252602082015261113f61142f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016114149291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120613836565b613884565b606060de80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b606060dd80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b6001546002906004908116141561151d5760405162461bcd60e51b8152600401610abc906163bb565b600061156584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506139149050565b90508483146115d65760405162461bcd60e51b81526020600482015260436024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610abc565b60005b838110156119fc5760008585838181106115f5576115f56163f2565b919091013560f81c91503690506000898985818110611616576116166163f2565b90506020028101906116289190616552565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b8919061659b565b63ffffffff1681146117545760405162461bcd60e51b81526020600482015260656024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610abc565b6000805b8281101561199b576000848483818110611774576117746163f2565b905060200201602081019061178991906154dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156117d4576117d4615a22565b60028111156117e5576117e5615a22565b905250805190915060006117f882612d01565b905060016001600160c01b03821660ff8b161c81161461187c5760405162461bcd60e51b815260206004820152604460248201819052600080516020616bd8833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610abc565b856001600160a01b0316846001600160a01b0316116119275760405162461bcd60e51b81526020600482015260676024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610abc565b5061198583838f8f8d908e600161193e91906165b8565b9261194b939291906165d0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e3c92505050565b5090925061199490508161641e565b9050611758565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806119f59061641e565b90506115d9565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff166002811115611a5f57611a5f615a22565b6002811115611a7057611a70615a22565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea91906164b3565b611b065760405162461bcd60e51b8152600401610abc906164d5565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611b4d613705565b609654829060ff90811690821610611bcd5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610abc565b6111c083836139a5565b609c8181548110611be757600080fd5b6000918252602090912001546001600160a01b0316905081565b606060e1805480602002602001604051908101604052809291908181526020016000905b8282101561139b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ccf57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611c915790505b50505050508152505081526020019060010190611c25565b609e546001600160a01b03163314611d675760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610abc565b6111c08383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b611daf613705565b611db96000613ec4565b565b6000611dfb7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001611414969594939291906165fa565b9695505050505050565b606060e0805480602002602001604051908101604052809291908181526020016000905b8282101561139b578382906000526020600020018054611e489061651d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e749061651d565b8015611ec15780601f10611e9657610100808354040283529160200191611ec1565b820191906000526020600020905b815481529060010190602001808311611ea457829003601f168201915b505050505081526020019060010190611e29565b600061113f82612d01565b6000611ef46064546001600160a01b031690565b905090565b606060e2805480602002602001604051908101604052809291908181526020016000905b8282101561139b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fc757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611f895790505b50505050508152505081526020019060010190611f1d565b6001805460009190811614156120075760405162461bcd60e51b8152600401610abc906163bb565b83891461208a5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610abc565b60006120963388613f16565b90506120f633828888808060200260200160405190810160405280939291908181526020016000905b828210156120eb576120dc6040830286013681900381019061667f565b815260200190600101906120bf565b505050505087614047565b600061213d33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061302e915050565b905060005b8b811015612308576000609760008f8f85818110612162576121626163f2565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b909104909316918101919091528451805191935090849081106121cf576121cf6163f2565b602002602001015163ffffffff1611156122f5576122708e8e848181106121f8576121f86163f2565b9050013560f81c60f81b60f81c8460400151848151811061221b5761221b6163f2565b6020026020010151338660200151868151811061223a5761223a6163f2565b60200260200101518d8d88818110612254576122546163f2565b90506040020180360381019061226a919061667f565b866141d4565b6122f5898984818110612285576122856163f2565b905060400201602001602081019061229d91906154dc565b8f8f85908660016122ae91906165b8565b926122bb939291906165d0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b50806123008161641e565b915050612142565b50505050505050505050505050565b60018054600091908116141561233f5760405162461bcd60e51b8152600401610abc906163bb565b600061234b3385613f16565b9050600061239433838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061302e915050565b51905060005b8881101561248f5760008a8a838181106123b6576123b66163f2565b919091013560f81c600081815260976020526040902054855191935063ffffffff1691508490849081106123ec576123ec6163f2565b602002602001015163ffffffff16111561247c5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610abc565b50806124878161641e565b91505061239a565b50505050505050505050565b606060df805480602002602001604051908101604052809291908181526020016000905b8282101561139b5783829060005260206000200180546124de9061651d565b80601f016020809104026020016040519081016040528092919081815260200182805461250a9061651d565b80156125575780601f1061252c57610100808354040283529160200191612557565b820191906000526020600020905b81548152906001019060200180831161253a57829003601f168201915b5050505050815260200190600101906124bf565b60cf54600090610100900460ff161561258d575060cf54610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126935760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161261b917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161669b565b60408051601f1981840301815290829052612635916166cc565b6000604051808303816000865af19150503d8060008114612672576040519150601f19603f3d011682016040523d82523d6000602084013e612677565b606091505b509150508080602001905181019061268f91906164b3565b9150505b919050565b6060600082516001600160401b038111156126b5576126b5615381565b6040519080825280602002602001820160405280156126de578160200160208202803683370190505b50905060005b83518110156127495761271085858381518110612703576127036163f2565b60200260200101516144a9565b828281518110612722576127226163f2565b63ffffffff90921660209283029190910190910152806127418161641e565b9150506126e4565b509392505050565b60018054600290811614156127785760405162461bcd60e51b8152600401610abc906163bb565b6111c03384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b6127c0613705565b6111c08383836145e5565b600054610100900460ff16158080156127eb5750600054600160ff909116105b806128055750303b158015612805575060005460ff166001145b6128685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff19166001179055801561288b576000805461ff0019166101001790555b8251845114801561289d575081518351145b6129075760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610abc565b61291089613ec4565b61291a86866147fc565b61292388613764565b61292c876137cd565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b8451811015612a7d57612a6b858281518110612a2a57612a2a6163f2565b6020026020010151858381518110612a4457612a446163f2565b6020026020010151858481518110612a5e57612a5e6163f2565b60200260200101516145e5565b80612a758161641e565b915050612a0c565b508015612ac4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b606060db80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b612b37613705565b6001600160a01b038116612b9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610f3781613ec4565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1c919061644c565b6001600160a01b0316336001600160a01b031614612c4c5760405162461bcd60e51b8152600401610abc90616469565b600154198119600154191614612cca5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610e7c565b60008181526098602052604081205480612d1e5750600092915050565b6000838152609860205260409020612d376001836166e8565b81548110612d4757612d476163f2565b600091825260209091200154600160401b90046001600160c01b03169392505050565b50919050565b6060600080612d7e846148e8565b61ffff166001600160401b03811115612d9957612d99615381565b6040519080825280601f01601f191660200182016040528015612dc3576020820181803683370190505b5090506000805b825182108015612ddb575061010081105b15612e32576001811b935085841615612e22578060f81b838381518110612e0457612e046163f2565b60200101906001600160f81b031916908160001a9053508160010191505b612e2b8161641e565b9050612dca565b5090949350505050565b600182602001516002811115612e5457612e54615a22565b14612e5e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe90612eb3908890869088906004016166ff565b6020604051808303816000875af1158015612ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef6919061672f565b90506001600160c01b03811615612f2257612f2285612f1d836001600160c01b0316612d70565b613a52565b5050505050565b6001600160a01b038116612fb75760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61305260405180606001604052806060815260200160608152602001606081525090565b600061309a86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506139149050565b905060006130a788612d01565b90506001600160c01b0382166131255760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610abc565b8082166001600160c01b0316156131db5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610abc565b6001600160c01b03818116908316176131f48982613545565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132249190616439565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561325e5761325e615a22565b14613377576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff1916908360028111156132b9576132b9615a22565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d9061330e908d90899060040161674c565b600060405180830381600087803b15801561332857600080fd5b505af115801561333c573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb27952906133c7908d908c908c906004016167c0565b600060405180830381600087803b1580156133e157600080fd5b505af11580156133f5573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506325504777915061344b908d908d908d908d906004016167e5565b6000604051808303816000875af115801561346a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134929190810190616871565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906134ef908c908c908c906004016168d4565b6000604051808303816000875af115801561350e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261353691908101906168ee565b84525050509695505050505050565b600082815260986020526040902054806135ea576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206136036001846166e8565b81548110613613576136136163f2565b600091825260209091200180549091504363ffffffff908116911614156136575780546001600160401b0316600160401b6001600160c01b03851602178155610ba3565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b3361370e611ee0565b6001600160a01b031614611db95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b600061113f613843614913565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806138b4600080516020616c1883398151915286616992565b90505b6138c081614a3a565b9093509150600080516020616c188339815191528283098314156138fa576040805180820190915290815260208101919091529392505050565b600080516020616c188339815191526001820890506138b7565b60008061392084614abc565b9050808360ff166001901b1161399e5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610abc565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115613a8657613a86615a22565b14613b055760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610abc565b609654600090613b1990859060ff16613914565b90506000613b2683612d01565b90506001600160c01b038216613ba45760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610abc565b613bbb6001600160c01b0383811690831681161490565b613c535760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610abc565b6001600160c01b0382811619821616613c6c8482613545565b6001600160c01b038116613d3b5760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015613cec57600080fd5b505af1158015613d00573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590613d89908a908a906004016169a6565b600060405180830381600087803b158015613da357600080fd5b505af1158015613db7573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150613e099087908a906004016169ca565b600060405180830381600087803b158015613e2357600080fd5b505af1158015613e37573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150613e899087908a906004016169ca565b600060405180830381600087803b158015613ea357600080fd5b505af1158015613eb7573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015613f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fa591906169e3565b90508061113f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484613fe6876113b5565b6040518463ffffffff1660e01b8152600401614004939291906169fc565b6020604051808303816000875af1158015614023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399e91906169e3565b6020808201516000908152609a909152604090205460ff16156140ed5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610abc565b42816040015110156141825760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610abc565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610ba3926001600160a01b03909216916141cd9188918891889190611dbb565b8351614c49565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156142545760405162461bcd60e51b81526020600482015260356024820152600080516020616bf883398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610abc565b8760ff16846000015160ff16146142d15760405162461bcd60e51b81526020600482015260476024820152600080516020616bf883398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610abc565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015614342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143669190616a7b565b90506143728185614e03565b6001600160601b0316866001600160601b0316116144055760405162461bcd60e51b81526020600482015260566024820152600080516020616bf883398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610abc565b61440f8885614e27565b6001600160601b0316816001600160601b031610612ac45760405162461bcd60e51b815260206004820152605c6024820152600080516020616bf883398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610abc565b600081815260986020526040812054815b8181101561453b5760016144ce82846166e8565b6144d891906166e8565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061450b5761450b6163f2565b60009182526020909120015463ffffffff161161452957505061113f565b806145338161641e565b9150506144ba565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610abc565b60965460ff1660c081106146595760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610abc565b614664816001616a98565b6096805460ff191660ff929092169190911790558061468381866139a5565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a77906146d690849088908890600401616abd565b600060405180830381600087803b1580156146f057600080fd5b505af1158015614704573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561476c57600080fd5b505af1158015614780573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156147e857600080fd5b505af1158015612ac4573d6000803e3d6000fd5b6000546201000090046001600160a01b031615801561482357506001600160a01b03821615155b6148a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26111b182612f29565b6000805b821561113f576148fd6001846166e8565b909216918061490b81616b36565b9150506148ec565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561496c57507f000000000000000000000000000000000000000000000000000000000000000046145b1561499657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020616c188339815191526003600080516020616c1883398151915286600080516020616c18833981519152888909090890506000614ab0827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020616c18833981519152614e41565b91959194509092505050565b600061010082511115614b455760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610abc565b8151614b5357506000919050565b60008083600081518110614b6957614b696163f2565b0160200151600160f89190911c81901b92505b8451811015614c4057848181518110614b9757614b976163f2565b0160200151600160f89190911c1b9150828211614c2c5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610abc565b91811791614c398161641e565b9050614b7c565b50909392505050565b6001600160a01b0383163b15614d6357604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90614c8990869086906004016169ca565b602060405180830381865afa158015614ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cca9190616b58565b6001600160e01b031916146111c05760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b0316614d778383614ef0565b6001600160a01b0316146111c05760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b602081015160009061271090614e1d9061ffff1685616b82565b61399e9190616bb1565b604081015160009061271090614e1d9061ffff1685616b82565b600080614e4c61525d565b614e5461527b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015614e9557614e97565bfe5b5082614ee55760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610abc565b505195945050505050565b6000806000614eff8585614f0c565b9150915061274981614f7c565b600080825160411415614f435760208301516040840151606085015160001a614f3787828585615137565b94509450505050614f75565b825160401415614f6d5760208301516040840151614f62868383615224565b935093505050614f75565b506000905060025b9250929050565b6000816004811115614f9057614f90615a22565b1415614f995750565b6001816004811115614fad57614fad615a22565b1415614ffb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b600281600481111561500f5761500f615a22565b141561505d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561507157615071615a22565b14156150ca5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b60048160048111156150de576150de615a22565b1415610f375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561516e575060009050600361521b565b8460ff16601b1415801561518657508460ff16601c14155b15615197575060009050600461521b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156151eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166152145760006001925092505061521b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161524160ff86901c601b6165b8565b905061524f87828885615137565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126152ab57600080fd5b5081356001600160401b038111156152c257600080fd5b6020830191508360208260051b8501011115614f7557600080fd5b600080602083850312156152f057600080fd5b82356001600160401b0381111561530657600080fd5b61531285828601615299565b90969095509350505050565b60006020828403121561533057600080fd5b5035919050565b63ffffffff81168114610f3757600080fd5b60008060006060848603121561535e57600080fd5b83359250602084013561537081615337565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156153b9576153b9615381565b60405290565b604080519081016001600160401b03811182821017156153b9576153b9615381565b604051601f8201601f191681016001600160401b038111828210171561540957615409615381565b604052919050565b600082601f83011261542257600080fd5b81356001600160401b0381111561543b5761543b615381565b61544e601f8201601f19166020016153e1565b81815284602083860101111561546357600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561549257600080fd5b81356001600160401b038111156154a857600080fd5b6154b484828501615411565b949350505050565b6001600160a01b0381168114610f3757600080fd5b8035612693816154bc565b6000602082840312156154ee57600080fd5b813561399e816154bc565b60008083601f84011261550b57600080fd5b5081356001600160401b0381111561552257600080fd5b602083019150836020828501011115614f7557600080fd5b60006060828403121561554c57600080fd5b615554615397565b905081356001600160401b0381111561556c57600080fd5b61557884828501615411565b825250602082013560208201526040820135604082015292915050565b60008060008060008060a087890312156155ae57600080fd5b86356155b9816154bc565b95506020870135945060408701356001600160401b03808211156155dc57600080fd5b6155e88a838b016154f9565b9096509450606089013591508082111561560157600080fd5b61560d8a838b01615411565b9350608089013591508082111561562357600080fd5b5061563089828a0161553a565b9150509295509295509295565b600081518084526020808501945080840160005b838110156156765781516001600160601b031687529582019590820190600101615651565b509495945050505050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b808310156156cc57835163ffffffff1682529284019260019290920191908401906156a6565b50838701519350601f199250828682030160408701526156ec818561563d565b93505050604085015181858403016060860152611dfb838261563d565b6000806040838503121561571c57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561576c5783516001600160a01b031683529284019291840191600101615747565b50909695505050505050565b803560ff8116811461269357600080fd5b60006020828403121561579b57600080fd5b61399e82615778565b6001600160c01b0381168114610f3757600080fd5b600080604083850312156157cc57600080fd5b8235915060208301356157de816157a4565b809150509250929050565b600080600083850360808112156157ff57600080fd5b843561580a816154bc565b93506040601f198201121561581e57600080fd5b506158276153bf565b6020850135815260408501356003811061584057600080fd5b6020820152915060608401356001600160401b0381111561586057600080fd5b61586c86828701615411565b9150509250925092565b60005b83811015615891578181015183820152602001615879565b83811115610ba35750506000910152565b600081518084526158ba816020860160208601615876565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156159165782840389526159048483516158a2565b988501989350908401906001016158ec565b5091979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561599257888303603f19018552815180516001600160a01b0316845287015187840187905261597f878501826158ce565b958801959350509086019060010161594a565b509098975050505050505050565b81518152602080830151908201526040810161113f565b600080600080604085870312156159cd57600080fd5b84356001600160401b03808211156159e457600080fd5b6159f088838901615299565b90965094506020870135915080821115615a0957600080fd5b50615a16878288016154f9565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110615a5657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191615a7590840182615a38565b5092915050565b803561ffff8116811461269357600080fd5b600060608284031215615aa057600080fd5b615aa8615397565b90508135615ab581615337565b8152615ac360208301615a7c565b6020820152615ad460408301615a7c565b604082015292915050565b60008060808385031215615af257600080fd5b615afb83615778565b9150615b0a8460208501615a8e565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015615bb757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015615ba25783516001600160e01b0319168252928b019260019290920191908b0190615b78565b50978a01979550505091870191600101615b3b565b50919998505050505050505050565b600080600060408486031215615bdb57600080fd5b8335615be6816154bc565b925060208401356001600160401b03811115615c0157600080fd5b615c0d868287016154f9565b9497909650939450505050565b60006001600160401b03821115615c3357615c33615381565b5060051b60200190565b600060408284031215615c4f57600080fd5b615c576153bf565b9050615c6282615778565b81526020820135615c72816154bc565b602082015292915050565b600080600080600060a08688031215615c9557600080fd5b8535615ca0816154bc565b945060208681013594506040808801356001600160401b03811115615cc457600080fd5b8801601f81018a13615cd557600080fd5b8035615ce8615ce382615c1a565b6153e1565b81815260069190911b8201840190848101908c831115615d0757600080fd5b928501925b82841015615d2d57615d1e8d85615c3d565b82529284019290850190615d0c565b999c989b5098996060810135995060800135979650505050505050565b60208152600061399e60208301846158ce565b60006101008284031215612d6a57600080fd5b60008083601f840112615d8257600080fd5b5081356001600160401b03811115615d9957600080fd5b6020830191508360208260061b8501011115614f7557600080fd5b60008060008060008060008060006101a08a8c031215615dd357600080fd5b89356001600160401b0380821115615dea57600080fd5b615df68d838e016154f9565b909b50995060208c0135915080821115615e0f57600080fd5b615e1b8d838e016154f9565b9099509750879150615e308d60408e01615d5d565b96506101408c0135915080821115615e4757600080fd5b615e538d838e01615d70565b90965094506101608c0135915080821115615e6d57600080fd5b615e798d838e0161553a565b93506101808c0135915080821115615e9057600080fd5b50615e9d8c828d0161553a565b9150509295985092959850929598565b6000806000806000806101608789031215615ec757600080fd5b86356001600160401b0380821115615ede57600080fd5b615eea8a838b016154f9565b90985096506020890135915080821115615f0357600080fd5b615f0f8a838b016154f9565b9096509450849150615f248a60408b01615d5d565b935061014089013591508082111561562357600080fd5b60008060408385031215615f4e57600080fd5b8235615f5981615337565b91506020838101356001600160401b03811115615f7557600080fd5b8401601f81018613615f8657600080fd5b8035615f94615ce382615c1a565b81815260059190911b82018301908381019088831115615fb357600080fd5b928401925b82841015615fd157833582529284019290840190615fb8565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561576c57835163ffffffff1683529284019291840191600101615ffc565b6000806020838503121561603157600080fd5b82356001600160401b0381111561604757600080fd5b615312858286016154f9565b6001600160601b0381168114610f3757600080fd5b600082601f83011261607957600080fd5b81356020616089615ce383615c1a565b82815260069290921b840181019181810190868411156160a857600080fd5b8286015b848110156160f957604081890312156160c55760008081fd5b6160cd6153bf565b81356160d8816154bc565b8152818501356160e781616053565b818601528352918301916040016160ac565b509695505050505050565b600080600060a0848603121561611957600080fd5b6161238585615a8e565b9250606084013561613381616053565b915060808401356001600160401b0381111561614e57600080fd5b61586c86828701616068565b6000806040838503121561616d57600080fd5b8235616178816154bc565b946020939093013593505050565b600082601f83011261619757600080fd5b813560206161a7615ce383615c1a565b828152606092830285018201928282019190878511156161c657600080fd5b8387015b858110156161e9576161dc8982615a8e565b84529284019281016161ca565b5090979650505050505050565b600082601f83011261620757600080fd5b81356020616217615ce383615c1a565b82815260059290921b8401810191818101908684111561623657600080fd5b8286015b848110156160f957803561624d81616053565b835291830191830161623a565b600082601f83011261626b57600080fd5b8135602061627b615ce383615c1a565b82815260059290921b8401810191818101908684111561629a57600080fd5b8286015b848110156160f95780356001600160401b038111156162bd5760008081fd5b6162cb8986838b0101616068565b84525091830191830161629e565b600080600080600080600080610100898b0312156162f657600080fd5b6162ff896154d1565b975061630d60208a016154d1565b965061631b60408a016154d1565b955061632960608a016154d1565b94506080890135935060a08901356001600160401b038082111561634c57600080fd5b6163588c838d01616186565b945060c08b013591508082111561636e57600080fd5b61637a8c838d016161f6565b935060e08b013591508082111561639057600080fd5b5061639d8b828c0161625a565b9150509295985092959890939650565b6020810161113f8284615a38565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561643257616432616408565b5060010190565b60208152600061399e60208301846158a2565b60006020828403121561645e57600080fd5b815161399e816154bc565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156164c557600080fd5b8151801515811461399e57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600181811c9082168061653157607f821691505b60208210811415612d6a57634e487b7160e01b600052602260045260246000fd5b6000808335601e1984360301811261656957600080fd5b8301803591506001600160401b0382111561658357600080fd5b6020019150600581901b3603821315614f7557600080fd5b6000602082840312156165ad57600080fd5b815161399e81615337565b600082198211156165cb576165cb616408565b500190565b600080858511156165e057600080fd5b838611156165ed57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b8181101561665f578651805160ff1684528601518516868401529585019591830191600101616635565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561669157600080fd5b61399e8383615c3d565b6001600160e01b03198316815281516000906166be816004850160208701615876565b919091016004019392505050565b600082516166de818460208701615876565b9190910192915050565b6000828210156166fa576166fa616408565b500390565b60018060a01b038416815282602082015260606040820152600061672660608301846158a2565b95945050505050565b60006020828403121561674157600080fd5b815161399e816157a4565b60018060a01b038316815260406020820152600082516060604084015261677660a08401826158a2565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906167269083018486616797565b60018060a01b0385168152836020820152606060408201526000611dfb606083018486616797565b600082601f83011261681e57600080fd5b8151602061682e615ce383615c1a565b82815260059290921b8401810191818101908684111561684d57600080fd5b8286015b848110156160f957805161686481616053565b8352918301918301616851565b6000806040838503121561688457600080fd5b82516001600160401b038082111561689b57600080fd5b6168a78683870161680d565b935060208501519150808211156168bd57600080fd5b506168ca8582860161680d565b9150509250929050565b838152604060208201526000616726604083018486616797565b6000602080838503121561690157600080fd5b82516001600160401b0381111561691757600080fd5b8301601f8101851361692857600080fd5b8051616936615ce382615c1a565b81815260059190911b8201830190838101908783111561695557600080fd5b928401925b828410156110a957835161696d81615337565b8252928401929084019061695a565b634e487b7160e01b600052601260045260246000fd5b6000826169a1576169a161697c565b500690565b6001600160a01b03831681526040602082018190526000906154b4908301846158a2565b8281526040602082015260006154b460408301846158a2565b6000602082840312156169f557600080fd5b5051919050565b6001600160a01b03841681526101608101616a24602083018580358252602090810135910152565b616a3e606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b600060208284031215616a8d57600080fd5b815161399e81616053565b600060ff821660ff84168060ff03821115616ab557616ab5616408565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015616b2657865180516001600160a01b031684528601518516868401529585019591830191600101616af6565b50909a9950505050505050505050565b600061ffff80831681811415616b4e57616b4e616408565b6001019392505050565b600060208284031215616b6a57600080fd5b81516001600160e01b03198116811461399e57600080fd5b60006001600160601b0380831681851681830481118215151615616ba857616ba8616408565b02949350505050565b60006001600160601b0380841680616bcb57616bcb61697c565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220b3f6e57104aa407254db800eff5e936266a970205ddb8160136d9868881f0f7164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\xC0`@R`\xCF\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\xD3\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15b\0\0/W`\0\x80\xFD[P`@Qb\0p\x9D8\x03\x80b\0p\x9D\x839\x81\x01`@\x81\x90Rb\0\0R\x91b\0\x02\xC0V[`@\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\x85R`\x06\x81Rev0.0.1`\xD0\x1B\x90\x82\x01R\x91Q\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`\xA0\x81\x81R\x85Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x81\x87\x01\x81\x90R\x81\x88\x01\x95\x90\x95R``\x81\x01\x93\x90\x93R`\x80\x80\x84\x01\x92\x90\x92R0\x83\x82\x01\x81\x90R\x86Q\x80\x85\x03\x90\x92\x01\x82R`\xC0\x93\x84\x01\x90\x96R\x80Q\x94\x01\x93\x90\x93 \x90\x92R\x91\x90Ra\x01 R`\x01`\x01`\xA0\x1B\x03\x80\x85\x16a\x01@R\x80\x84\x16a\x01\x80R\x80\x83\x16a\x01`R\x81\x16a\x01\xA0R\x83\x83\x83\x83b\0\x01tb\0\x01\x93V[PPPPb\0\x01\x893b\0\x02U` \x1B` \x1CV[PPPPb\0\x03(V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x02\0W`@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\x02SW`\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[`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[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02\xBDW`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\xD7W`\0\x80\xFD[\x84Qb\0\x02\xE4\x81b\0\x02\xA7V[` \x86\x01Q\x90\x94Pb\0\x02\xF7\x81b\0\x02\xA7V[`@\x86\x01Q\x90\x93Pb\0\x03\n\x81b\0\x02\xA7V[``\x86\x01Q\x90\x92Pb\0\x03\x1D\x81b\0\x02\xA7V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qalmb\0\x040`\09`\0\x81\x81a\x087\x01R\x81\x81a\x16E\x01R\x81\x81a)\xE1\x01R\x81\x81a4\xB7\x01R\x81\x81a>P\x01RaG\x1E\x01R`\0\x81\x81a\x07L\x01R\x81\x81a)l\x01R\x81\x81a.z\x01R\x81\x81a4\x0E\x01R\x81\x81a=\xD0\x01R\x81\x81aB\xF3\x01RaF\x9D\x01R`\0\x81\x81a\x06\xFD\x01R\x81\x81a\x11\xDE\x01R\x81\x81a)\xAA\x01R\x81\x81a3\x8E\x01R\x81\x81a=R\x01R\x81\x81a?8\x01R\x81\x81a?\xAE\x01RaG\x9A\x01R`\0\x81\x81a\x061\x01R\x81\x81a2\xD6\x01Ra<\xA8\x01R`\0aI\x9D\x01R`\0aI\xEC\x01R`\0aI\xC7\x01R`\0aI \x01R`\0aIJ\x01R`\0aIt\x01Ralm`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x03\xCFW`\x005`\xE0\x1C\x80cf\xD9\xA9\xA0\x11a\x01\xFFW\x80c\xB5P\x8A\xA9\x11a\x01\x1AW\x80c\xD9,\xBB\x84\x11a\0\xADW\x80c\xF2\xFD\xE3\x8B\x11a\0|W\x80c\xF2\xFD\xE3\x8B\x14a\n$W\x80c\xFAv&\xD4\x14a\n7W\x80c\xFA\xBC\x1C\xBC\x14a\nDW\x80c\xFD9\x10Z\x14a\nWW`\0\x80\xFD[\x80c\xD9,\xBB\x84\x14a\t^<#\x14a\x06sW\x80c?r\x86\xF4\x14a\x06{W`\0\x80\xFD[\x80c)k\xB0d\x14a\x05\xDEW\x80c)\xD1\xE0\xC3\x14a\x05\xF1W\x80c*\xDE8\x80\x14a\x06\x04W\x80c,\xDD\x1E\x86\x14a\x06\x19W`\0\x80\xFD[\x80c\x14x\x85\x1F\x11a\x03gW\x80c$\x9A\x0CB\x11a\x036W\x80c$\x9A\x0CB\x14a\x05\x85W\x80c'\xE7\x92\x88\x14a\x05\xA5W\x80c(\xF6\x1B1\x14a\x05\xB8W\x80c)ST|\x14a\x05\xCBW`\0\x80\xFD[\x80c\x14x\x85\x1F\x14a\x04\xD4W\x80c\x1A\xB2WO\x14a\x05\x07W\x80c\x1E\xB8\x12\xDA\x14a\x05'W\x80c\x1E\xD7\x83\x1C\x14a\x05pW`\0\x80\xFD[\x80c\x0C\xF4\xB7g\x11a\x03\xA3W\x80c\x0C\xF4\xB7g\x14a\x04rW\x80c\x10\xD6z/\x14a\x04\x85W\x80c\x13T*N\x14a\x04\x98W\x80c\x13d9\xDD\x14a\x04\xC1W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x03\xD4W\x80c\x03\xFD4\x92\x14a\x03\xE9W\x80c\x04\xECcQ\x14a\x04\x1CW\x80c\x05C\x10\xE6\x14a\x04GW[`\0\x80\xFD[a\x03\xE7a\x03\xE26`\x04aR\xDDV[a\n\x93V[\0[a\x04\ta\x03\xF76`\x04aS\x1EV[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x04/a\x04*6`\x04aSIV[a\x0B\xA9V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x04\x13V[`\x9DTa\x04Z\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x04\x13V[a\x03\xE7a\x04\x806`\x04aT\x80V[a\r\x9FV[a\x03\xE7a\x04\x936`\x04aT\xDCV[a\x0E\x87V[a\x04\ta\x04\xA66`\x04aT\xDCV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x03\xE7a\x04\xCF6`\x04aS\x1EV[a\x0F:V[a\x04\xF7a\x04\xE26`\x04aS\x1EV[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x04\x13V[a\x05\x1Aa\x05\x156`\x04aU\x95V[a\x10wV[`@Qa\x04\x13\x91\x90aV\x81V[a\x05:a\x0556`\x04aW\tV[a\x10\xB4V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x04\x13V[a\x05xa\x11EV[`@Qa\x04\x13\x91\x90aW+V[a\x04\ta\x05\x936`\x04aW\x89V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xE7a\x05\xB36`\x04aW\xB9V[a\x11\xA7V[`\x9ETa\x04Z\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\xE7a\x05\xD96`\x04aW\xE9V[a\x11\xB5V[a\x04Za\x05\xEC6`\x04aS\x1EV[a\x11\xC5V[a\x03\xE7a\x05\xFF6`\x04aT\xDCV[a\x12QV[a\x06\x0Ca\x12bV[`@Qa\x04\x13\x91\x90aY#V[a\x03\xE7a\x06'6`\x04aT\xDCV[a\x13\xA4V[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x06fa\x06a6`\x04aT\xDCV[a\x13\xB5V[`@Qa\x04\x13\x91\x90aY\xA0V[a\x05xa\x144V[a\x05xa\x14\x94V[a\x03\xE7a\x06\x916`\x04aY\xB7V[a\x14\xF4V[a\x06\xA9a\x06\xA46`\x04aT\xDCV[a\x1A\x05V[`@Qa\x04\x13\x91\x90aZZV[a\x03\xE7a\x1AyV[a\x04\xF7a\x06\xCC6`\x04aW\x89V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x03\xE7a\x06\xEB6`\x04aZ\xDFV[a\x1BEV[`\x01Ta\x04\tV[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x04Za\x07-6`\x04aS\x1EV[a\x1B\xD7V[a\x07:a\x1C\x01V[`@Qa\x04\x13\x91\x90a[\x13V[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x03\xE7a\x07|6`\x04a[\xC6V[a\x1C\xE7V[a\x03\xE7a\x1D\xA7V[a\x03\xE7a\x07\x976`\x04a[\xC6V[a\x1DgV[a\x04\ta\x07\xAA6`\x04a\\}V[a\x1D\xBBV[a\x07\xB7a\x1E\x05V[`@Qa\x04\x13\x91\x90a]JV[a\x04/a\x07\xD26`\x04aS\x1EV[a\x1E\xD5V[`\0Ta\x04Z\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x04Za\x1E\xE0V[a\x07:a\x1E\xF9V[`\x96Ta\x08\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x04\x13V[a\x03\xE7a\x08-6`\x04a]\xB4V[a\x1F\xDFV[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x04\t\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x03\xE7a\x08\x8E6`\x04a^\xADV[a#\x17V[a\x07\xB7a$\x9BV[a\x04\xF7a%kV[a\x08\xB6a\x08\xB16`\x04a_;V[a&\x98V[`@Qa\x04\x13\x91\x90a_\xE0V[a\x03\xE7a\x08\xD16`\x04aW\x89V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x04\t\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x03\xE7a\t\x1C6`\x04a`\x1EV[a'QV[`\x9CTa\x04\tV[a\x03\xE7a\t76`\x04aa\x04V[a'\xB8V[a\x03\xE7a\tJ6`\x04aaZV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`\x99` R`@\x90 UV[a\x03\xE7a\tt6`\x04ab\xD9V[a'\xCBV[a\x05xa*\xCFV[a\t\xF0a\t\x8F6`\x04aW\x89V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x04\x13V[a\x03\xE7a\n26`\x04aT\xDCV[a+/V[`\xCFTa\x04\xF7\x90`\xFF\x16\x81V[a\x03\xE7a\nR6`\x04aS\x1EV[a+\xA5V[a\n\x86a\ne6`\x04aT\xDCV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x04\x13\x91\x90ac\xADV[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\n\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\x0B\xA3W`\0\x84\x84\x83\x81\x81\x10a\n\xE4Wa\n\xE4ac\xF2V[\x90P` \x02\x01` \x81\x01\x90a\n\xF9\x91\x90aT\xDCV[`\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\x0BDWa\x0BDaZ\"V[`\x02\x81\x11\x15a\x0BUWa\x0BUaZ\"V[\x90RP\x80Q\x90\x91P`\0a\x0Bh\x82a-\x01V[\x90P`\0a\x0B~\x82`\x01`\x01`\xC0\x1B\x03\x16a-pV[\x90Pa\x0B\x8B\x85\x85\x83a.=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xFE\x91\x90adLV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F.W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90adiV[a\x0F7\x81a/)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\x0F\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xAB\x91\x90ad\xB3V[a\x0F\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ad\xD5V[`\x01T\x81\x81\x16\x14a\x10@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\n\xBCV[`\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\x0E|V[a\x10\x9B`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[a\x10\xA9\x87\x87\x87\x87\x87\x87a0.V[\x97\x96PPPPPPPV[`@\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\x10\xF1Wa\x10\xF1ac\xF2V[`\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[```\xDC\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FW[PPPPP\x90P\x90V[a\x11\xB1\x82\x82a5EV[PPV[a\x11\xC0\x83\x83\x83a.=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11?\x91\x90adLV[a\x12Ya7\x05V[a\x0F7\x81a7dV[```\xE3\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x13\x84W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x12\xF7\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x13#\x90ae\x1DV[\x80\x15a\x13pW\x80`\x1F\x10a\x13EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x13pV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x13SW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x12\xD8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x12\x86V[PPPP\x90P\x90V[a\x13\xACa7\x05V[a\x0F7\x81a7\xCDV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x11?a\x14/\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\x14\x14\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 a86V[a8\x84V[```\xDE\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[```\xDD\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x15\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`\0a\x15e\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\x91Pa9\x14\x90PV[\x90P\x84\x83\x14a\x15\xD6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` ak\xD8\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0[\x83\x81\x10\x15a\x19\xFCW`\0\x85\x85\x83\x81\x81\x10a\x15\xF5Wa\x15\xF5ac\xF2V[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x16\x16Wa\x16\x16ac\xF2V[\x90P` \x02\x81\x01\x90a\x16(\x91\x90aeRV[`@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\x16\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xB8\x91\x90ae\x9BV[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x17TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R`\0\x80Q` ak\xD8\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\n\xBCV[`\0\x80[\x82\x81\x10\x15a\x19\x9BW`\0\x84\x84\x83\x81\x81\x10a\x17tWa\x17tac\xF2V[\x90P` \x02\x01` \x81\x01\x90a\x17\x89\x91\x90aT\xDCV[`\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\x17\xD4Wa\x17\xD4aZ\"V[`\x02\x81\x11\x15a\x17\xE5Wa\x17\xE5aZ\"V[\x90RP\x80Q\x90\x91P`\0a\x17\xF8\x82a-\x01V[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x18|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` ak\xD8\x839\x81Q\x91R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x19'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R`\0\x80Q` ak\xD8\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\n\xBCV[Pa\x19\x85\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x19>\x91\x90ae\xB8V[\x92a\x19K\x93\x92\x91\x90ae\xD0V[\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.<\x92PPPV[P\x90\x92Pa\x19\x94\x90P\x81ad\x1EV[\x90Pa\x17XV[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\x19\xF5\x90ad\x1EV[\x90Pa\x15\xD9V[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\x1A_Wa\x1A_aZ\"V[`\x02\x81\x11\x15a\x1ApWa\x1ApaZ\"V[\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\x1A\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xEA\x91\x90ad\xB3V[a\x1B\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ad\xD5V[`\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\x1BMa7\x05V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x1B\xCDW`@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\n\xBCV[a\x11\xC0\x83\x83a9\xA5V[`\x9C\x81\x81T\x81\x10a\x1B\xE7W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[```\xE1\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x1C\xCFW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x1C\x91W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x1C%V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1DgW`@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\n\xBCV[a\x11\xC0\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\x91RPa:R\x92PPPV[a\x1D\xAFa7\x05V[a\x1D\xB9`\0a>\xC4V[V[`\0a\x1D\xFB\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\x14\x14\x96\x95\x94\x93\x92\x91\x90ae\xFAV[\x96\x95PPPPPPV[```\xE0\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1EH\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1Et\x90ae\x1DV[\x80\x15a\x1E\xC1W\x80`\x1F\x10a\x1E\x96Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xC1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\xA4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E)V[`\0a\x11?\x82a-\x01V[`\0a\x1E\xF4`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[```\xE2\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x1F\xC7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x1F\x89W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x1F\x1DV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a \x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[\x83\x89\x14a \x8AW`@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\n\xBCV[`\0a \x963\x88a?\x16V[\x90Pa \xF63\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 \xEBWa \xDC`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90af\x7FV[\x81R` \x01\x90`\x01\x01\x90a \xBFV[PPPPP\x87a@GV[`\0a!=3\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\x92Pa0.\x91PPV[\x90P`\0[\x8B\x81\x10\x15a#\x08W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a!bWa!bac\xF2V[\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!\xCFWa!\xCFac\xF2V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\"\xF5Wa\"p\x8E\x8E\x84\x81\x81\x10a!\xF8Wa!\xF8ac\xF2V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\"\x1BWa\"\x1Bac\xF2V[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\":Wa\":ac\xF2V[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\"TWa\"Tac\xF2V[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\"j\x91\x90af\x7FV[\x86aA\xD4V[a\"\xF5\x89\x89\x84\x81\x81\x10a\"\x85Wa\"\x85ac\xF2V[\x90P`@\x02\x01` \x01` \x81\x01\x90a\"\x9D\x91\x90aT\xDCV[\x8F\x8F\x85\x90\x86`\x01a\"\xAE\x91\x90ae\xB8V[\x92a\"\xBB\x93\x92\x91\x90ae\xD0V[\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:R\x92PPPV[P\x80a#\0\x81ad\x1EV[\x91PPa!BV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a#?W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`\0a#K3\x85a?\x16V[\x90P`\0a#\x943\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\x92Pa0.\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a$\x8FW`\0\x8A\x8A\x83\x81\x81\x10a#\xB6Wa#\xB6ac\xF2V[\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#\xECWa#\xECac\xF2V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a$|W`@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\n\xBCV[P\x80a$\x87\x81ad\x1EV[\x91PPa#\x9AV[PPPPPPPPPPV[```\xDF\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta$\xDE\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta%\n\x90ae\x1DV[\x80\x15a%WW\x80`\x1F\x10a%,Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a%WV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a%:W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a$\xBFV[`\xCFT`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a%\x8DWP`\xCFTa\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a&\x93W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a&\x1B\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01af\x9BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra&5\x91af\xCCV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a&rW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a&wV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a&\x8F\x91\x90ad\xB3V[\x91PP[\x91\x90PV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xB5Wa&\xB5aS\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a&\xDEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a'IWa'\x10\x85\x85\x83\x81Q\x81\x10a'\x03Wa'\x03ac\xF2V[` \x02` \x01\x01QaD\xA9V[\x82\x82\x81Q\x81\x10a'\"Wa'\"ac\xF2V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a'A\x81ad\x1EV[\x91PPa&\xE4V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a'xW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[a\x11\xC03\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:R\x92PPPV[a'\xC0a7\x05V[a\x11\xC0\x83\x83\x83aE\xE5V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a'\xEBWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a(\x05WP0;\x15\x80\x15a(\x05WP`\0T`\xFF\x16`\x01\x14[a(hW`@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(\x8BW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a(\x9DWP\x81Q\x83Q\x14[a)\x07W`@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\n\xBCV[a)\x10\x89a>\xC4V[a)\x1A\x86\x86aG\xFCV[a)#\x88a7dV[a),\x87a7\xCDV[`\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*k\x85\x82\x81Q\x81\x10a**Wa**ac\xF2V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a*DWa*Dac\xF2V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a*^Wa*^ac\xF2V[` \x02` \x01\x01QaE\xE5V[\x80a*u\x81ad\x1EV[\x91PPa*\x0CV[P\x80\x15a*\xC4W`\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[```\xDB\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[a+7a7\x05V[`\x01`\x01`\xA0\x1B\x03\x81\x16a+\x9CW`@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\x0F7\x81a>\xC4V[`\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+\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a,\x1C\x91\x90adLV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a,LW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90adiV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a,\xCAW`@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[`\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\x0E|V[`\0\x81\x81R`\x98` R`@\x81 T\x80a-\x1EWP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a-7`\x01\x83af\xE8V[\x81T\x81\x10a-GWa-Gac\xF2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[P\x91\x90PV[```\0\x80a-~\x84aH\xE8V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x99Wa-\x99aS\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a-\xC3W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a-\xDBWPa\x01\0\x81\x10[\x15a.2W`\x01\x81\x1B\x93P\x85\x84\x16\x15a.\"W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a.\x04Wa.\x04ac\xF2V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a.+\x81ad\x1EV[\x90Pa-\xCAV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a.TWa.TaZ\"V[\x14a.^WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a.\xB3\x90\x88\x90\x86\x90\x88\x90`\x04\x01af\xFFV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a.\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xF6\x91\x90ag/V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a/\"Wa/\"\x85a/\x1D\x83`\x01`\x01`\xC0\x1B\x03\x16a-pV[a:RV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a/\xB7W`@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[`\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[a0R`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a0\x9A\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\x91Pa9\x14\x90PV[\x90P`\0a0\xA7\x88a-\x01V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1%W`@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\n\xBCV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a1\xDBW`@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\n\xBCV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a1\xF4\x89\x82a5EV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2$\x91\x90ad9V[`@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\x15a2^Wa2^aZ\"V[\x14a3wW`@\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\x15a2\xB9Wa2\xB9aZ\"V[\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}\x90a3\x0E\x90\x8D\x90\x89\x90`\x04\x01agLV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3(W`\0\x80\xFD[PZ\xF1\x15\x80\x15a3=`\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\x90a3\xC7\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01ag\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xE1W`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xF5W=`\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\x91Pa4K\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01ag\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a4jW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4\x92\x91\x90\x81\x01\x90ahqV[`@\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\x90a4\xEF\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01ah\xD4V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra56\x91\x90\x81\x01\x90ah\xEEV[\x84RPPP\x96\x95PPPPPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80a5\xEAW`\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 a6\x03`\x01\x84af\xE8V[\x81T\x81\x10a6\x13Wa6\x13ac\xF2V[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a6WW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\x0B\xA3V[\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[3a7\x0Ea\x1E\xE0V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1D\xB9W`@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[`\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\x11?a8CaI\x13V[\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\x80a8\xB4`\0\x80Q` al\x18\x839\x81Q\x91R\x86ai\x92V[\x90P[a8\xC0\x81aJ:V[\x90\x93P\x91P`\0\x80Q` al\x18\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a8\xFAW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` al\x18\x839\x81Q\x91R`\x01\x82\x08\x90Pa8\xB7V[`\0\x80a9 \x84aJ\xBCV[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a9\x9EW`@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\n\xBCV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a:\x86Wa:\x86aZ\"V[\x14a;\x05W`@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\n\xBCV[`\x96T`\0\x90a;\x19\x90\x85\x90`\xFF\x16a9\x14V[\x90P`\0a;&\x83a-\x01V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a;\xA4W`@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\n\xBCV[a;\xBB`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a=`\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=\x89\x90\x8A\x90\x8A\x90`\x04\x01ai\xA6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=\xB7W=`\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>\t\x90\x87\x90\x8A\x90`\x04\x01ai\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>#W`\0\x80\xFD[PZ\xF1\x15\x80\x15a>7W=`\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>\x89\x90\x87\x90\x8A\x90`\x04\x01ai\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a>\xB7W=`\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?\x81W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?\xA5\x91\x90ai\xE3V[\x90P\x80a\x11?W\x7F\0\0\0\0\0\0\0\0\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\x84a?\xE6\x87a\x13\xB5V[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a@\x04\x93\x92\x91\x90ai\xFCV[` `@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\x90a9\x9E\x91\x90ai\xE3V[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a@\xEDW`@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\n\xBCV[B\x81`@\x01Q\x10\x15aA\x82W`@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\n\xBCV[` \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\x0B\xA3\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91aA\xCD\x91\x88\x91\x88\x91\x88\x91\x90a\x1D\xBBV[\x83QaLIV[` \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\x15aBTW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` ak\xF8\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\n\xBCV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14aB\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[`@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\x15aCBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aCf\x91\x90aj{V[\x90PaCr\x81\x85aN\x03V[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11aD\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[aD\x0F\x88\x85aN'V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a*\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15aE;W`\x01aD\xCE\x82\x84af\xE8V[aD\xD8\x91\x90af\xE8V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10aE\x0BWaE\x0Bac\xF2V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11aE)WPPa\x11?V[\x80aE3\x81ad\x1EV[\x91PPaD\xBAV[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\n\xBCV[`\x96T`\xFF\x16`\xC0\x81\x10aFYW`@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\n\xBCV[aFd\x81`\x01aj\x98V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80aF\x83\x81\x86a9\xA5V[`@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\x90aF\xD6\x90\x84\x90\x88\x90\x88\x90`\x04\x01aj\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aF\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15aG\x04W=`\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\x15aGlW`\0\x80\xFD[PZ\xF1\x15\x80\x15aG\x80W=`\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\x15aG\xE8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xC4W=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15aH#WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[aH\xA5W`@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[`\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\x11\xB1\x82a/)V[`\0\x80[\x82\x15a\x11?WaH\xFD`\x01\x84af\xE8V[\x90\x92\x16\x91\x80aI\x0B\x81ak6V[\x91PPaH\xECV[`\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\x15aIlWP\x7F\0\0\0\0\0\0\0\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[\x15aI\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\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` al\x18\x839\x81Q\x91R`\x03`\0\x80Q` al\x18\x839\x81Q\x91R\x86`\0\x80Q` al\x18\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0aJ\xB0\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` al\x18\x839\x81Q\x91RaNAV[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15aKEW`@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\n\xBCV[\x81QaKSWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10aKiWaKiac\xF2V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15aL@W\x84\x81\x81Q\x81\x10aK\x97WaK\x97ac\xF2V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11aL,W`@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\n\xBCV[\x91\x81\x17\x91aL9\x81ad\x1EV[\x90PaK|V[P\x90\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aMcW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aL\x89\x90\x86\x90\x86\x90`\x04\x01ai\xCAV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aL\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aL\xCA\x91\x90akXV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x11\xC0W`@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\x16aMw\x83\x83aN\xF0V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11\xC0W`@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[` \x81\x01Q`\0\x90a'\x10\x90aN\x1D\x90a\xFF\xFF\x16\x85ak\x82V[a9\x9E\x91\x90ak\xB1V[`@\x81\x01Q`\0\x90a'\x10\x90aN\x1D\x90a\xFF\xFF\x16\x85ak\x82V[`\0\x80aNLaR]V[aNTaR{V[` \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\x15aN\x95WaN\x97V[\xFE[P\x82aN\xE5W`@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\n\xBCV[PQ\x95\x94PPPPPV[`\0\x80`\0aN\xFF\x85\x85aO\x0CV[\x91P\x91Pa'I\x81aO|V[`\0\x80\x82Q`A\x14\x15aOCW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaO7\x87\x82\x85\x85aQ7V[\x94P\x94PPPPaOuV[\x82Q`@\x14\x15aOmW` \x83\x01Q`@\x84\x01QaOb\x86\x83\x83aR$V[\x93P\x93PPPaOuV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aO\x90WaO\x90aZ\"V[\x14\x15aO\x99WPV[`\x01\x81`\x04\x81\x11\x15aO\xADWaO\xADaZ\"V[\x14\x15aO\xFBW`@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\x15aP\x0FWaP\x0FaZ\"V[\x14\x15aP]W`@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\x15aPqWaPqaZ\"V[\x14\x15aP\xCAW`@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\x15aP\xDEWaP\xDEaZ\"V[\x14\x15a\x0F7W`@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\x15aQnWP`\0\x90P`\x03aR\x1BV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aQ\x86WP\x84`\xFF\x16`\x1C\x14\x15[\x15aQ\x97WP`\0\x90P`\x04aR\x1BV[`@\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\x15aQ\xEBW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aR\x14W`\0`\x01\x92P\x92PPaR\x1BV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aRA`\xFF\x86\x90\x1C`\x1Bae\xB8V[\x90PaRO\x87\x82\x88\x85aQ7V[\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\x12aR\xABW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xC2W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aR\xF0W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aS\x06W`\0\x80\xFD[aS\x12\x85\x82\x86\x01aR\x99V[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aS0W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aS^W`\0\x80\xFD[\x835\x92P` \x84\x015aSp\x81aS7V[\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\x15aS\xB9WaS\xB9aS\x81V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aS\xB9WaS\xB9aS\x81V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aT\tWaT\taS\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aT\"W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aT;WaT;aS\x81V[aTN`\x1F\x82\x01`\x1F\x19\x16` \x01aS\xE1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15aTcW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aT\x92W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aT\xA8W`\0\x80\xFD[aT\xB4\x84\x82\x85\x01aT\x11V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[\x805a&\x93\x81aT\xBCV[`\0` \x82\x84\x03\x12\x15aT\xEEW`\0\x80\xFD[\x815a9\x9E\x81aT\xBCV[`\0\x80\x83`\x1F\x84\x01\x12aU\x0BW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aU\"W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aULW`\0\x80\xFD[aUTaS\x97V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aUlW`\0\x80\xFD[aUx\x84\x82\x85\x01aT\x11V[\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0\x80`\xA0\x87\x89\x03\x12\x15aU\xAEW`\0\x80\xFD[\x865aU\xB9\x81aT\xBCV[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aU\xDCW`\0\x80\xFD[aU\xE8\x8A\x83\x8B\x01aT\xF9V[\x90\x96P\x94P``\x89\x015\x91P\x80\x82\x11\x15aV\x01W`\0\x80\xFD[aV\r\x8A\x83\x8B\x01aT\x11V[\x93P`\x80\x89\x015\x91P\x80\x82\x11\x15aV#W`\0\x80\xFD[PaV0\x89\x82\x8A\x01aU:V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aVvW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aVQV[P\x94\x95\x94PPPPPV[` \x80\x82R\x82Q``\x83\x83\x01R\x80Q`\x80\x84\x01\x81\x90R`\0\x92\x91\x82\x01\x90\x83\x90`\xA0\x86\x01\x90[\x80\x83\x10\x15aV\xCCW\x83Qc\xFF\xFF\xFF\xFF\x16\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aV\xA6V[P\x83\x87\x01Q\x93P`\x1F\x19\x92P\x82\x86\x82\x03\x01`@\x87\x01RaV\xEC\x81\x85aV=V[\x93PPP`@\x85\x01Q\x81\x85\x84\x03\x01``\x86\x01Ra\x1D\xFB\x83\x82aV=V[`\0\x80`@\x83\x85\x03\x12\x15aW\x1CW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aWlW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aWGV[P\x90\x96\x95PPPPPPV[\x805`\xFF\x81\x16\x81\x14a&\x93W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW\x9BW`\0\x80\xFD[a9\x9E\x82aWxV[`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15aW\xCCW`\0\x80\xFD[\x825\x91P` \x83\x015aW\xDE\x81aW\xA4V[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x83\x85\x03`\x80\x81\x12\x15aW\xFFW`\0\x80\xFD[\x845aX\n\x81aT\xBCV[\x93P`@`\x1F\x19\x82\x01\x12\x15aX\x1EW`\0\x80\xFD[PaX'aS\xBFV[` \x85\x015\x81R`@\x85\x015`\x03\x81\x10aX@W`\0\x80\xFD[` \x82\x01R\x91P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aX`W`\0\x80\xFD[aXl\x86\x82\x87\x01aT\x11V[\x91PP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15aX\x91W\x81\x81\x01Q\x83\x82\x01R` \x01aXyV[\x83\x81\x11\x15a\x0B\xA3WPP`\0\x91\x01RV[`\0\x81Q\x80\x84RaX\xBA\x81` \x86\x01` \x86\x01aXvV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15aY\x16W\x82\x84\x03\x89RaY\x04\x84\x83QaX\xA2V[\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01aX\xECV[P\x91\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15aY\x92W\x88\x83\x03`?\x19\x01\x85R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90RaY\x7F\x87\x85\x01\x82aX\xCEV[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01aYJV[P\x90\x98\x97PPPPPPPPV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x11?V[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aY\xCDW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aY\xE4W`\0\x80\xFD[aY\xF0\x88\x83\x89\x01aR\x99V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aZ\tW`\0\x80\xFD[PaZ\x16\x87\x82\x88\x01aT\xF9V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aZVWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aZu\x90\x84\x01\x82aZ8V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14a&\x93W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aZ\xA0W`\0\x80\xFD[aZ\xA8aS\x97V[\x90P\x815aZ\xB5\x81aS7V[\x81RaZ\xC3` \x83\x01aZ|V[` \x82\x01RaZ\xD4`@\x83\x01aZ|V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aZ\xF2W`\0\x80\xFD[aZ\xFB\x83aWxV[\x91Pa[\n\x84` \x85\x01aZ\x8EV[\x90P\x92P\x92\x90PV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a[\xB7W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a[\xA2W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a[xV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a[;V[P\x91\x99\x98PPPPPPPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a[\xDBW`\0\x80\xFD[\x835a[\xE6\x81aT\xBCV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\x01W`\0\x80\xFD[a\\\r\x86\x82\x87\x01aT\xF9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\\3Wa\\3aS\x81V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a\\OW`\0\x80\xFD[a\\WaS\xBFV[\x90Pa\\b\x82aWxV[\x81R` \x82\x015a\\r\x81aT\xBCV[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\\\x95W`\0\x80\xFD[\x855a\\\xA0\x81aT\xBCV[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\xC4W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13a\\\xD5W`\0\x80\xFD[\x805a\\\xE8a\\\xE3\x82a\\\x1AV[aS\xE1V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15a]\x07W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15a]-Wa]\x1E\x8D\x85a\\=V[\x82R\x92\x84\x01\x92\x90\x85\x01\x90a]\x0CV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[` \x81R`\0a9\x9E` \x83\x01\x84aX\xCEV[`\0a\x01\0\x82\x84\x03\x12\x15a-jW`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a]\x82W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a]\x99W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01\xA0\x8A\x8C\x03\x12\x15a]\xD3W`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a]\xEAW`\0\x80\xFD[a]\xF6\x8D\x83\x8E\x01aT\xF9V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15a^\x0FW`\0\x80\xFD[a^\x1B\x8D\x83\x8E\x01aT\xF9V[\x90\x99P\x97P\x87\x91Pa^0\x8D`@\x8E\x01a]]V[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15a^GW`\0\x80\xFD[a^S\x8D\x83\x8E\x01a]pV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15a^mW`\0\x80\xFD[a^y\x8D\x83\x8E\x01aU:V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15a^\x90W`\0\x80\xFD[Pa^\x9D\x8C\x82\x8D\x01aU:V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15a^\xC7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a^\xDEW`\0\x80\xFD[a^\xEA\x8A\x83\x8B\x01aT\xF9V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a_\x03W`\0\x80\xFD[a_\x0F\x8A\x83\x8B\x01aT\xF9V[\x90\x96P\x94P\x84\x91Pa_$\x8A`@\x8B\x01a]]V[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aV#W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a_NW`\0\x80\xFD[\x825a_Y\x81aS7V[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a_uW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a_\x86W`\0\x80\xFD[\x805a_\x94a\\\xE3\x82a\\\x1AV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a_\xB3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a_\xD1W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a_\xB8V[\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\x15aWlW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a_\xFCV[`\0\x80` \x83\x85\x03\x12\x15a`1W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a`GW`\0\x80\xFD[aS\x12\x85\x82\x86\x01aT\xF9V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a`yW`\0\x80\xFD[\x815` a`\x89a\\\xE3\x83a\\\x1AV[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a`\xA8W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W`@\x81\x89\x03\x12\x15a`\xC5W`\0\x80\x81\xFD[a`\xCDaS\xBFV[\x815a`\xD8\x81aT\xBCV[\x81R\x81\x85\x015a`\xE7\x81a`SV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a`\xACV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aa\x19W`\0\x80\xFD[aa#\x85\x85aZ\x8EV[\x92P``\x84\x015aa3\x81a`SV[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aaNW`\0\x80\xFD[aXl\x86\x82\x87\x01a`hV[`\0\x80`@\x83\x85\x03\x12\x15aamW`\0\x80\xFD[\x825aax\x81aT\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x82`\x1F\x83\x01\x12aa\x97W`\0\x80\xFD[\x815` aa\xA7a\\\xE3\x83a\\\x1AV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aa\xC6W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aa\xE9Waa\xDC\x89\x82aZ\x8EV[\x84R\x92\x84\x01\x92\x81\x01aa\xCAV[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12ab\x07W`\0\x80\xFD[\x815` ab\x17a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ab6W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x805abM\x81a`SV[\x83R\x91\x83\x01\x91\x83\x01ab:V[`\0\x82`\x1F\x83\x01\x12abkW`\0\x80\xFD[\x815` ab{a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ab\x9AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15ab\xBDW`\0\x80\x81\xFD[ab\xCB\x89\x86\x83\x8B\x01\x01a`hV[\x84RP\x91\x83\x01\x91\x83\x01ab\x9EV[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15ab\xF6W`\0\x80\xFD[ab\xFF\x89aT\xD1V[\x97Pac\r` \x8A\x01aT\xD1V[\x96Pac\x1B`@\x8A\x01aT\xD1V[\x95Pac)``\x8A\x01aT\xD1V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15acLW`\0\x80\xFD[acX\x8C\x83\x8D\x01aa\x86V[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15acnW`\0\x80\xFD[acz\x8C\x83\x8D\x01aa\xF6V[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15ac\x90W`\0\x80\xFD[Pac\x9D\x8B\x82\x8C\x01abZV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x11?\x82\x84aZ8V[` \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\x15ad2Wad2ad\x08V[P`\x01\x01\x90V[` \x81R`\0a9\x9E` \x83\x01\x84aX\xA2V[`\0` \x82\x84\x03\x12\x15ad^W`\0\x80\xFD[\x81Qa9\x9E\x81aT\xBCV[` \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\x15ad\xC5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a9\x9EW`\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[`\x01\x81\x81\x1C\x90\x82\x16\x80ae1W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a-jWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aeiW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15ae\x83W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aOuW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15ae\xADW`\0\x80\xFD[\x81Qa9\x9E\x81aS7V[`\0\x82\x19\x82\x11\x15ae\xCBWae\xCBad\x08V[P\x01\x90V[`\0\x80\x85\x85\x11\x15ae\xE0W`\0\x80\xFD[\x83\x86\x11\x15ae\xEDW`\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\x15af_W\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01af5V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15af\x91W`\0\x80\xFD[a9\x9E\x83\x83a\\=V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90af\xBE\x81`\x04\x85\x01` \x87\x01aXvV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qaf\xDE\x81\x84` \x87\x01aXvV[\x91\x90\x91\x01\x92\x91PPV[`\0\x82\x82\x10\x15af\xFAWaf\xFAad\x08V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0ag&``\x83\x01\x84aX\xA2V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15agAW`\0\x80\xFD[\x81Qa9\x9E\x81aW\xA4V[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ragv`\xA0\x84\x01\x82aX\xA2V[\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\x90ag&\x90\x83\x01\x84\x86ag\x97V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x1D\xFB``\x83\x01\x84\x86ag\x97V[`\0\x82`\x1F\x83\x01\x12ah\x1EW`\0\x80\xFD[\x81Q` ah.a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ahMW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x80Qahd\x81a`SV[\x83R\x91\x83\x01\x91\x83\x01ahQV[`\0\x80`@\x83\x85\x03\x12\x15ah\x84W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15ah\x9BW`\0\x80\xFD[ah\xA7\x86\x83\x87\x01ah\rV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15ah\xBDW`\0\x80\xFD[Pah\xCA\x85\x82\x86\x01ah\rV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0ag&`@\x83\x01\x84\x86ag\x97V[`\0` \x80\x83\x85\x03\x12\x15ai\x01W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15ai\x17W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13ai(W`\0\x80\xFD[\x80Qai6a\\\xE3\x82a\\\x1AV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15aiUW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x10\xA9W\x83Qaim\x81aS7V[\x82R\x92\x84\x01\x92\x90\x84\x01\x90aiZV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82ai\xA1Wai\xA1ai|V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aT\xB4\x90\x83\x01\x84aX\xA2V[\x82\x81R`@` \x82\x01R`\0aT\xB4`@\x83\x01\x84aX\xA2V[`\0` \x82\x84\x03\x12\x15ai\xF5W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aj$` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aj>``\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[`\0` \x82\x84\x03\x12\x15aj\x8DW`\0\x80\xFD[\x81Qa9\x9E\x81a`SV[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15aj\xB5Waj\xB5ad\x08V[\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\x15ak&W\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\x01aj\xF6V[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15akNWakNad\x08V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15akjW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a9\x9EW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15ak\xA8Wak\xA8ad\x08V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80ak\xCBWak\xCBai|V[\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 \xB3\xF6\xE5q\x04\xAA@rT\xDB\x80\x0E\xFF^\x93bf\xA9p ]\xDB\x81`\x13m\x98h\x88\x1F\x0FqdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106103cf5760003560e01c806366d9a9a0116101ff578063b5508aa91161011a578063d92cbb84116100ad578063f2fde38b1161007c578063f2fde38b14610a24578063fa7626d414610a37578063fabc1cbc14610a44578063fd39105a14610a5757600080fd5b8063d92cbb841461093c578063dd8283f314610966578063e20c9f7114610979578063e65797ad1461098157600080fd5b8063ca0de882116100e9578063ca0de882146108e7578063ca4f2d971461090e578063d72d8dd614610921578063d75b4c881461092957600080fd5b8063b5508aa914610893578063ba414fa61461089b578063c391425e146108a3578063c4097d5e146108c357600080fd5b8063886f1195116101925780639b5d177b116101615780639b5d177b1461081f5780639e9923c2146108325780639feab85914610859578063a50857bf1461088057600080fd5b8063886f1195146107d75780638da5cb5b146107f0578063916a17c6146107f85780639aa1653d1461080057600080fd5b80638310fef6116101ce5780638310fef61461078957806384ca52131461079c57806385226c81146107af578063871ef049146107c457600080fd5b806366d9a9a01461073257806368304835146107475780636e3b17db1461076e578063715018a61461078157600080fd5b8063296bb064116102ef5780635140a548116102825780635b0b829f116102515780635b0b829f146106dd5780635c975abb146106f05780635df45946146106f85780636347c9001461071f57600080fd5b80635140a548146106835780635865c60c14610696578063595c6a67146106b65780635ac86ab7146106be57600080fd5b80633998fdd3116102be5780633998fdd31461062c5780633c2a7f4c146106535780633e5e3c23146106735780633f7286f41461067b57600080fd5b8063296bb064146105de57806329d1e0c3146105f15780632ade3880146106045780632cdd1e861461061957600080fd5b80631478851f11610367578063249a0c4211610336578063249a0c421461058557806327e79288146105a557806328f61b31146105b85780632953547c146105cb57600080fd5b80631478851f146104d45780631ab2574f146105075780631eb812da146105275780631ed7831c1461057057600080fd5b80630cf4b767116103a35780630cf4b7671461047257806310d67a2f1461048557806313542a4e14610498578063136439dd146104c157600080fd5b8062cf2ab5146103d457806303fd3492146103e957806304ec63511461041c578063054310e614610447575b600080fd5b6103e76103e23660046152dd565b610a93565b005b6104096103f736600461531e565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b61042f61042a366004615349565b610ba9565b6040516001600160c01b039091168152602001610413565b609d5461045a906001600160a01b031681565b6040516001600160a01b039091168152602001610413565b6103e7610480366004615480565b610d9f565b6103e76104933660046154dc565b610e87565b6104096104a63660046154dc565b6001600160a01b031660009081526099602052604090205490565b6103e76104cf36600461531e565b610f3a565b6104f76104e236600461531e565b609a6020526000908152604090205460ff1681565b6040519015158152602001610413565b61051a610515366004615595565b611077565b6040516104139190615681565b61053a610535366004615709565b6110b4565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610413565b610578611145565b604051610413919061572b565b610409610593366004615789565b609b6020526000908152604090205481565b6103e76105b33660046157b9565b6111a7565b609e5461045a906001600160a01b031681565b6103e76105d93660046157e9565b6111b5565b61045a6105ec36600461531e565b6111c5565b6103e76105ff3660046154dc565b611251565b61060c611262565b6040516104139190615923565b6103e76106273660046154dc565b6113a4565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6106666106613660046154dc565b6113b5565b60405161041391906159a0565b610578611434565b610578611494565b6103e76106913660046159b7565b6114f4565b6106a96106a43660046154dc565b611a05565b6040516104139190615a5a565b6103e7611a79565b6104f76106cc366004615789565b6001805460ff9092161b9081161490565b6103e76106eb366004615adf565b611b45565b600154610409565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b61045a61072d36600461531e565b611bd7565b61073a611c01565b6040516104139190615b13565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6103e761077c366004615bc6565b611ce7565b6103e7611da7565b6103e7610797366004615bc6565b611d67565b6104096107aa366004615c7d565b611dbb565b6107b7611e05565b6040516104139190615d4a565b61042f6107d236600461531e565b611ed5565b60005461045a906201000090046001600160a01b031681565b61045a611ee0565b61073a611ef9565b60965461080d9060ff1681565b60405160ff9091168152602001610413565b6103e761082d366004615db4565b611fdf565b61045a7f000000000000000000000000000000000000000000000000000000000000000081565b6104097f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6103e761088e366004615ead565b612317565b6107b761249b565b6104f761256b565b6108b66108b1366004615f3b565b612698565b6040516104139190615fe0565b6103e76108d1366004615789565b6096805460ff191660ff92909216919091179055565b6104097f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6103e761091c36600461601e565b612751565b609c54610409565b6103e7610937366004616104565b6127b8565b6103e761094a36600461615a565b6001600160a01b03909116600090815260996020526040902055565b6103e76109743660046162d9565b6127cb565b610578612acf565b6109f061098f366004615789565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610413565b6103e7610a323660046154dc565b612b2f565b60cf546104f79060ff1681565b6103e7610a5236600461531e565b612ba5565b610a86610a653660046154dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b60405161041391906163ad565b60015460029060049081161415610ac55760405162461bcd60e51b8152600401610abc906163bb565b60405180910390fd5b60005b82811015610ba3576000848483818110610ae457610ae46163f2565b9050602002016020810190610af991906154dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610b4457610b44615a22565b6002811115610b5557610b55615a22565b90525080519091506000610b6882612d01565b90506000610b7e826001600160c01b0316612d70565b9050610b8b858583612e3c565b50505050508080610b9b9061641e565b915050610ac8565b50505050565b6000838152609860205260408120805482919084908110610bcc57610bcc6163f2565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610cc65760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610abc565b602081015163ffffffff161580610cec5750806020015163ffffffff168463ffffffff16105b610d935760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610abc565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610dc857610dc8615a22565b14610e3b5760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610abc565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610e7c908490616439565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efe919061644c565b6001600160a01b0316336001600160a01b031614610f2e5760405162461bcd60e51b8152600401610abc90616469565b610f3781612f29565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906164b3565b610fc75760405162461bcd60e51b8152600401610abc906164d5565b600154818116146110405760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610e7c565b61109b60405180606001604052806060815260200160608152602001606081525090565b6110a987878787878761302e565b979650505050505050565b604080516060810182526000808252602082018190529181019190915260008381526098602052604090208054839081106110f1576110f16163f2565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b606060dc80548060200260200160405190810160405280929190818152602001828054801561119d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161117f575b5050505050905090565b6111b18282613545565b5050565b6111c0838383612e3c565b505050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f919061644c565b611259613705565b610f3781613764565b606060e3805480602002602001604051908101604052809291908181526020016000905b8282101561139b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156113845783829060005260206000200180546112f79061651d565b80601f01602080910402602001604051908101604052809291908181526020018280546113239061651d565b80156113705780601f1061134557610100808354040283529160200191611370565b820191906000526020600020905b81548152906001019060200180831161135357829003601f168201915b5050505050815260200190600101906112d8565b505050508152505081526020019060010190611286565b50505050905090565b6113ac613705565b610f37816137cd565b604080518082019091526000808252602082015261113f61142f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016114149291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120613836565b613884565b606060de80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b606060dd80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b6001546002906004908116141561151d5760405162461bcd60e51b8152600401610abc906163bb565b600061156584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506139149050565b90508483146115d65760405162461bcd60e51b81526020600482015260436024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610abc565b60005b838110156119fc5760008585838181106115f5576115f56163f2565b919091013560f81c91503690506000898985818110611616576116166163f2565b90506020028101906116289190616552565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b8919061659b565b63ffffffff1681146117545760405162461bcd60e51b81526020600482015260656024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610abc565b6000805b8281101561199b576000848483818110611774576117746163f2565b905060200201602081019061178991906154dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156117d4576117d4615a22565b60028111156117e5576117e5615a22565b905250805190915060006117f882612d01565b905060016001600160c01b03821660ff8b161c81161461187c5760405162461bcd60e51b815260206004820152604460248201819052600080516020616bd8833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610abc565b856001600160a01b0316846001600160a01b0316116119275760405162461bcd60e51b81526020600482015260676024820152600080516020616bd883398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610abc565b5061198583838f8f8d908e600161193e91906165b8565b9261194b939291906165d0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e3c92505050565b5090925061199490508161641e565b9050611758565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806119f59061641e565b90506115d9565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff166002811115611a5f57611a5f615a22565b6002811115611a7057611a70615a22565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea91906164b3565b611b065760405162461bcd60e51b8152600401610abc906164d5565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611b4d613705565b609654829060ff90811690821610611bcd5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610abc565b6111c083836139a5565b609c8181548110611be757600080fd5b6000918252602090912001546001600160a01b0316905081565b606060e1805480602002602001604051908101604052809291908181526020016000905b8282101561139b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ccf57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611c915790505b50505050508152505081526020019060010190611c25565b609e546001600160a01b03163314611d675760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610abc565b6111c08383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b611daf613705565b611db96000613ec4565b565b6000611dfb7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001611414969594939291906165fa565b9695505050505050565b606060e0805480602002602001604051908101604052809291908181526020016000905b8282101561139b578382906000526020600020018054611e489061651d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e749061651d565b8015611ec15780601f10611e9657610100808354040283529160200191611ec1565b820191906000526020600020905b815481529060010190602001808311611ea457829003601f168201915b505050505081526020019060010190611e29565b600061113f82612d01565b6000611ef46064546001600160a01b031690565b905090565b606060e2805480602002602001604051908101604052809291908181526020016000905b8282101561139b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fc757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611f895790505b50505050508152505081526020019060010190611f1d565b6001805460009190811614156120075760405162461bcd60e51b8152600401610abc906163bb565b83891461208a5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610abc565b60006120963388613f16565b90506120f633828888808060200260200160405190810160405280939291908181526020016000905b828210156120eb576120dc6040830286013681900381019061667f565b815260200190600101906120bf565b505050505087614047565b600061213d33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061302e915050565b905060005b8b811015612308576000609760008f8f85818110612162576121626163f2565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b909104909316918101919091528451805191935090849081106121cf576121cf6163f2565b602002602001015163ffffffff1611156122f5576122708e8e848181106121f8576121f86163f2565b9050013560f81c60f81b60f81c8460400151848151811061221b5761221b6163f2565b6020026020010151338660200151868151811061223a5761223a6163f2565b60200260200101518d8d88818110612254576122546163f2565b90506040020180360381019061226a919061667f565b866141d4565b6122f5898984818110612285576122856163f2565b905060400201602001602081019061229d91906154dc565b8f8f85908660016122ae91906165b8565b926122bb939291906165d0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b50806123008161641e565b915050612142565b50505050505050505050505050565b60018054600091908116141561233f5760405162461bcd60e51b8152600401610abc906163bb565b600061234b3385613f16565b9050600061239433838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061302e915050565b51905060005b8881101561248f5760008a8a838181106123b6576123b66163f2565b919091013560f81c600081815260976020526040902054855191935063ffffffff1691508490849081106123ec576123ec6163f2565b602002602001015163ffffffff16111561247c5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610abc565b50806124878161641e565b91505061239a565b50505050505050505050565b606060df805480602002602001604051908101604052809291908181526020016000905b8282101561139b5783829060005260206000200180546124de9061651d565b80601f016020809104026020016040519081016040528092919081815260200182805461250a9061651d565b80156125575780601f1061252c57610100808354040283529160200191612557565b820191906000526020600020905b81548152906001019060200180831161253a57829003601f168201915b5050505050815260200190600101906124bf565b60cf54600090610100900460ff161561258d575060cf54610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126935760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161261b917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161669b565b60408051601f1981840301815290829052612635916166cc565b6000604051808303816000865af19150503d8060008114612672576040519150601f19603f3d011682016040523d82523d6000602084013e612677565b606091505b509150508080602001905181019061268f91906164b3565b9150505b919050565b6060600082516001600160401b038111156126b5576126b5615381565b6040519080825280602002602001820160405280156126de578160200160208202803683370190505b50905060005b83518110156127495761271085858381518110612703576127036163f2565b60200260200101516144a9565b828281518110612722576127226163f2565b63ffffffff90921660209283029190910190910152806127418161641e565b9150506126e4565b509392505050565b60018054600290811614156127785760405162461bcd60e51b8152600401610abc906163bb565b6111c03384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a5292505050565b6127c0613705565b6111c08383836145e5565b600054610100900460ff16158080156127eb5750600054600160ff909116105b806128055750303b158015612805575060005460ff166001145b6128685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff19166001179055801561288b576000805461ff0019166101001790555b8251845114801561289d575081518351145b6129075760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610abc565b61291089613ec4565b61291a86866147fc565b61292388613764565b61292c876137cd565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b8451811015612a7d57612a6b858281518110612a2a57612a2a6163f2565b6020026020010151858381518110612a4457612a446163f2565b6020026020010151858481518110612a5e57612a5e6163f2565b60200260200101516145e5565b80612a758161641e565b915050612a0c565b508015612ac4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b606060db80548060200260200160405190810160405280929190818152602001828054801561119d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161117f575050505050905090565b612b37613705565b6001600160a01b038116612b9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610f3781613ec4565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1c919061644c565b6001600160a01b0316336001600160a01b031614612c4c5760405162461bcd60e51b8152600401610abc90616469565b600154198119600154191614612cca5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610e7c565b60008181526098602052604081205480612d1e5750600092915050565b6000838152609860205260409020612d376001836166e8565b81548110612d4757612d476163f2565b600091825260209091200154600160401b90046001600160c01b03169392505050565b50919050565b6060600080612d7e846148e8565b61ffff166001600160401b03811115612d9957612d99615381565b6040519080825280601f01601f191660200182016040528015612dc3576020820181803683370190505b5090506000805b825182108015612ddb575061010081105b15612e32576001811b935085841615612e22578060f81b838381518110612e0457612e046163f2565b60200101906001600160f81b031916908160001a9053508160010191505b612e2b8161641e565b9050612dca565b5090949350505050565b600182602001516002811115612e5457612e54615a22565b14612e5e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe90612eb3908890869088906004016166ff565b6020604051808303816000875af1158015612ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef6919061672f565b90506001600160c01b03811615612f2257612f2285612f1d836001600160c01b0316612d70565b613a52565b5050505050565b6001600160a01b038116612fb75760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61305260405180606001604052806060815260200160608152602001606081525090565b600061309a86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506139149050565b905060006130a788612d01565b90506001600160c01b0382166131255760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610abc565b8082166001600160c01b0316156131db5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610abc565b6001600160c01b03818116908316176131f48982613545565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132249190616439565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561325e5761325e615a22565b14613377576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff1916908360028111156132b9576132b9615a22565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d9061330e908d90899060040161674c565b600060405180830381600087803b15801561332857600080fd5b505af115801561333c573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb27952906133c7908d908c908c906004016167c0565b600060405180830381600087803b1580156133e157600080fd5b505af11580156133f5573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506325504777915061344b908d908d908d908d906004016167e5565b6000604051808303816000875af115801561346a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134929190810190616871565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906134ef908c908c908c906004016168d4565b6000604051808303816000875af115801561350e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261353691908101906168ee565b84525050509695505050505050565b600082815260986020526040902054806135ea576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206136036001846166e8565b81548110613613576136136163f2565b600091825260209091200180549091504363ffffffff908116911614156136575780546001600160401b0316600160401b6001600160c01b03851602178155610ba3565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b3361370e611ee0565b6001600160a01b031614611db95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b600061113f613843614913565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806138b4600080516020616c1883398151915286616992565b90505b6138c081614a3a565b9093509150600080516020616c188339815191528283098314156138fa576040805180820190915290815260208101919091529392505050565b600080516020616c188339815191526001820890506138b7565b60008061392084614abc565b9050808360ff166001901b1161399e5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610abc565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115613a8657613a86615a22565b14613b055760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610abc565b609654600090613b1990859060ff16613914565b90506000613b2683612d01565b90506001600160c01b038216613ba45760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610abc565b613bbb6001600160c01b0383811690831681161490565b613c535760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610abc565b6001600160c01b0382811619821616613c6c8482613545565b6001600160c01b038116613d3b5760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015613cec57600080fd5b505af1158015613d00573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590613d89908a908a906004016169a6565b600060405180830381600087803b158015613da357600080fd5b505af1158015613db7573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150613e099087908a906004016169ca565b600060405180830381600087803b158015613e2357600080fd5b505af1158015613e37573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150613e899087908a906004016169ca565b600060405180830381600087803b158015613ea357600080fd5b505af1158015613eb7573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015613f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fa591906169e3565b90508061113f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484613fe6876113b5565b6040518463ffffffff1660e01b8152600401614004939291906169fc565b6020604051808303816000875af1158015614023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399e91906169e3565b6020808201516000908152609a909152604090205460ff16156140ed5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610abc565b42816040015110156141825760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610abc565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610ba3926001600160a01b03909216916141cd9188918891889190611dbb565b8351614c49565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156142545760405162461bcd60e51b81526020600482015260356024820152600080516020616bf883398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610abc565b8760ff16846000015160ff16146142d15760405162461bcd60e51b81526020600482015260476024820152600080516020616bf883398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610abc565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015614342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143669190616a7b565b90506143728185614e03565b6001600160601b0316866001600160601b0316116144055760405162461bcd60e51b81526020600482015260566024820152600080516020616bf883398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610abc565b61440f8885614e27565b6001600160601b0316816001600160601b031610612ac45760405162461bcd60e51b815260206004820152605c6024820152600080516020616bf883398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610abc565b600081815260986020526040812054815b8181101561453b5760016144ce82846166e8565b6144d891906166e8565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061450b5761450b6163f2565b60009182526020909120015463ffffffff161161452957505061113f565b806145338161641e565b9150506144ba565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610abc565b60965460ff1660c081106146595760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610abc565b614664816001616a98565b6096805460ff191660ff929092169190911790558061468381866139a5565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a77906146d690849088908890600401616abd565b600060405180830381600087803b1580156146f057600080fd5b505af1158015614704573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561476c57600080fd5b505af1158015614780573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156147e857600080fd5b505af1158015612ac4573d6000803e3d6000fd5b6000546201000090046001600160a01b031615801561482357506001600160a01b03821615155b6148a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26111b182612f29565b6000805b821561113f576148fd6001846166e8565b909216918061490b81616b36565b9150506148ec565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561496c57507f000000000000000000000000000000000000000000000000000000000000000046145b1561499657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020616c188339815191526003600080516020616c1883398151915286600080516020616c18833981519152888909090890506000614ab0827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020616c18833981519152614e41565b91959194509092505050565b600061010082511115614b455760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610abc565b8151614b5357506000919050565b60008083600081518110614b6957614b696163f2565b0160200151600160f89190911c81901b92505b8451811015614c4057848181518110614b9757614b976163f2565b0160200151600160f89190911c1b9150828211614c2c5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610abc565b91811791614c398161641e565b9050614b7c565b50909392505050565b6001600160a01b0383163b15614d6357604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90614c8990869086906004016169ca565b602060405180830381865afa158015614ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cca9190616b58565b6001600160e01b031916146111c05760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b0316614d778383614ef0565b6001600160a01b0316146111c05760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b602081015160009061271090614e1d9061ffff1685616b82565b61399e9190616bb1565b604081015160009061271090614e1d9061ffff1685616b82565b600080614e4c61525d565b614e5461527b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015614e9557614e97565bfe5b5082614ee55760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610abc565b505195945050505050565b6000806000614eff8585614f0c565b9150915061274981614f7c565b600080825160411415614f435760208301516040840151606085015160001a614f3787828585615137565b94509450505050614f75565b825160401415614f6d5760208301516040840151614f62868383615224565b935093505050614f75565b506000905060025b9250929050565b6000816004811115614f9057614f90615a22565b1415614f995750565b6001816004811115614fad57614fad615a22565b1415614ffb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b600281600481111561500f5761500f615a22565b141561505d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561507157615071615a22565b14156150ca5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b60048160048111156150de576150de615a22565b1415610f375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561516e575060009050600361521b565b8460ff16601b1415801561518657508460ff16601c14155b15615197575060009050600461521b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156151eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166152145760006001925092505061521b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161524160ff86901c601b6165b8565b905061524f87828885615137565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126152ab57600080fd5b5081356001600160401b038111156152c257600080fd5b6020830191508360208260051b8501011115614f7557600080fd5b600080602083850312156152f057600080fd5b82356001600160401b0381111561530657600080fd5b61531285828601615299565b90969095509350505050565b60006020828403121561533057600080fd5b5035919050565b63ffffffff81168114610f3757600080fd5b60008060006060848603121561535e57600080fd5b83359250602084013561537081615337565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156153b9576153b9615381565b60405290565b604080519081016001600160401b03811182821017156153b9576153b9615381565b604051601f8201601f191681016001600160401b038111828210171561540957615409615381565b604052919050565b600082601f83011261542257600080fd5b81356001600160401b0381111561543b5761543b615381565b61544e601f8201601f19166020016153e1565b81815284602083860101111561546357600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561549257600080fd5b81356001600160401b038111156154a857600080fd5b6154b484828501615411565b949350505050565b6001600160a01b0381168114610f3757600080fd5b8035612693816154bc565b6000602082840312156154ee57600080fd5b813561399e816154bc565b60008083601f84011261550b57600080fd5b5081356001600160401b0381111561552257600080fd5b602083019150836020828501011115614f7557600080fd5b60006060828403121561554c57600080fd5b615554615397565b905081356001600160401b0381111561556c57600080fd5b61557884828501615411565b825250602082013560208201526040820135604082015292915050565b60008060008060008060a087890312156155ae57600080fd5b86356155b9816154bc565b95506020870135945060408701356001600160401b03808211156155dc57600080fd5b6155e88a838b016154f9565b9096509450606089013591508082111561560157600080fd5b61560d8a838b01615411565b9350608089013591508082111561562357600080fd5b5061563089828a0161553a565b9150509295509295509295565b600081518084526020808501945080840160005b838110156156765781516001600160601b031687529582019590820190600101615651565b509495945050505050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b808310156156cc57835163ffffffff1682529284019260019290920191908401906156a6565b50838701519350601f199250828682030160408701526156ec818561563d565b93505050604085015181858403016060860152611dfb838261563d565b6000806040838503121561571c57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561576c5783516001600160a01b031683529284019291840191600101615747565b50909695505050505050565b803560ff8116811461269357600080fd5b60006020828403121561579b57600080fd5b61399e82615778565b6001600160c01b0381168114610f3757600080fd5b600080604083850312156157cc57600080fd5b8235915060208301356157de816157a4565b809150509250929050565b600080600083850360808112156157ff57600080fd5b843561580a816154bc565b93506040601f198201121561581e57600080fd5b506158276153bf565b6020850135815260408501356003811061584057600080fd5b6020820152915060608401356001600160401b0381111561586057600080fd5b61586c86828701615411565b9150509250925092565b60005b83811015615891578181015183820152602001615879565b83811115610ba35750506000910152565b600081518084526158ba816020860160208601615876565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156159165782840389526159048483516158a2565b988501989350908401906001016158ec565b5091979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561599257888303603f19018552815180516001600160a01b0316845287015187840187905261597f878501826158ce565b958801959350509086019060010161594a565b509098975050505050505050565b81518152602080830151908201526040810161113f565b600080600080604085870312156159cd57600080fd5b84356001600160401b03808211156159e457600080fd5b6159f088838901615299565b90965094506020870135915080821115615a0957600080fd5b50615a16878288016154f9565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110615a5657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191615a7590840182615a38565b5092915050565b803561ffff8116811461269357600080fd5b600060608284031215615aa057600080fd5b615aa8615397565b90508135615ab581615337565b8152615ac360208301615a7c565b6020820152615ad460408301615a7c565b604082015292915050565b60008060808385031215615af257600080fd5b615afb83615778565b9150615b0a8460208501615a8e565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015615bb757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015615ba25783516001600160e01b0319168252928b019260019290920191908b0190615b78565b50978a01979550505091870191600101615b3b565b50919998505050505050505050565b600080600060408486031215615bdb57600080fd5b8335615be6816154bc565b925060208401356001600160401b03811115615c0157600080fd5b615c0d868287016154f9565b9497909650939450505050565b60006001600160401b03821115615c3357615c33615381565b5060051b60200190565b600060408284031215615c4f57600080fd5b615c576153bf565b9050615c6282615778565b81526020820135615c72816154bc565b602082015292915050565b600080600080600060a08688031215615c9557600080fd5b8535615ca0816154bc565b945060208681013594506040808801356001600160401b03811115615cc457600080fd5b8801601f81018a13615cd557600080fd5b8035615ce8615ce382615c1a565b6153e1565b81815260069190911b8201840190848101908c831115615d0757600080fd5b928501925b82841015615d2d57615d1e8d85615c3d565b82529284019290850190615d0c565b999c989b5098996060810135995060800135979650505050505050565b60208152600061399e60208301846158ce565b60006101008284031215612d6a57600080fd5b60008083601f840112615d8257600080fd5b5081356001600160401b03811115615d9957600080fd5b6020830191508360208260061b8501011115614f7557600080fd5b60008060008060008060008060006101a08a8c031215615dd357600080fd5b89356001600160401b0380821115615dea57600080fd5b615df68d838e016154f9565b909b50995060208c0135915080821115615e0f57600080fd5b615e1b8d838e016154f9565b9099509750879150615e308d60408e01615d5d565b96506101408c0135915080821115615e4757600080fd5b615e538d838e01615d70565b90965094506101608c0135915080821115615e6d57600080fd5b615e798d838e0161553a565b93506101808c0135915080821115615e9057600080fd5b50615e9d8c828d0161553a565b9150509295985092959850929598565b6000806000806000806101608789031215615ec757600080fd5b86356001600160401b0380821115615ede57600080fd5b615eea8a838b016154f9565b90985096506020890135915080821115615f0357600080fd5b615f0f8a838b016154f9565b9096509450849150615f248a60408b01615d5d565b935061014089013591508082111561562357600080fd5b60008060408385031215615f4e57600080fd5b8235615f5981615337565b91506020838101356001600160401b03811115615f7557600080fd5b8401601f81018613615f8657600080fd5b8035615f94615ce382615c1a565b81815260059190911b82018301908381019088831115615fb357600080fd5b928401925b82841015615fd157833582529284019290840190615fb8565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561576c57835163ffffffff1683529284019291840191600101615ffc565b6000806020838503121561603157600080fd5b82356001600160401b0381111561604757600080fd5b615312858286016154f9565b6001600160601b0381168114610f3757600080fd5b600082601f83011261607957600080fd5b81356020616089615ce383615c1a565b82815260069290921b840181019181810190868411156160a857600080fd5b8286015b848110156160f957604081890312156160c55760008081fd5b6160cd6153bf565b81356160d8816154bc565b8152818501356160e781616053565b818601528352918301916040016160ac565b509695505050505050565b600080600060a0848603121561611957600080fd5b6161238585615a8e565b9250606084013561613381616053565b915060808401356001600160401b0381111561614e57600080fd5b61586c86828701616068565b6000806040838503121561616d57600080fd5b8235616178816154bc565b946020939093013593505050565b600082601f83011261619757600080fd5b813560206161a7615ce383615c1a565b828152606092830285018201928282019190878511156161c657600080fd5b8387015b858110156161e9576161dc8982615a8e565b84529284019281016161ca565b5090979650505050505050565b600082601f83011261620757600080fd5b81356020616217615ce383615c1a565b82815260059290921b8401810191818101908684111561623657600080fd5b8286015b848110156160f957803561624d81616053565b835291830191830161623a565b600082601f83011261626b57600080fd5b8135602061627b615ce383615c1a565b82815260059290921b8401810191818101908684111561629a57600080fd5b8286015b848110156160f95780356001600160401b038111156162bd5760008081fd5b6162cb8986838b0101616068565b84525091830191830161629e565b600080600080600080600080610100898b0312156162f657600080fd5b6162ff896154d1565b975061630d60208a016154d1565b965061631b60408a016154d1565b955061632960608a016154d1565b94506080890135935060a08901356001600160401b038082111561634c57600080fd5b6163588c838d01616186565b945060c08b013591508082111561636e57600080fd5b61637a8c838d016161f6565b935060e08b013591508082111561639057600080fd5b5061639d8b828c0161625a565b9150509295985092959890939650565b6020810161113f8284615a38565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561643257616432616408565b5060010190565b60208152600061399e60208301846158a2565b60006020828403121561645e57600080fd5b815161399e816154bc565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156164c557600080fd5b8151801515811461399e57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600181811c9082168061653157607f821691505b60208210811415612d6a57634e487b7160e01b600052602260045260246000fd5b6000808335601e1984360301811261656957600080fd5b8301803591506001600160401b0382111561658357600080fd5b6020019150600581901b3603821315614f7557600080fd5b6000602082840312156165ad57600080fd5b815161399e81615337565b600082198211156165cb576165cb616408565b500190565b600080858511156165e057600080fd5b838611156165ed57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b8181101561665f578651805160ff1684528601518516868401529585019591830191600101616635565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561669157600080fd5b61399e8383615c3d565b6001600160e01b03198316815281516000906166be816004850160208701615876565b919091016004019392505050565b600082516166de818460208701615876565b9190910192915050565b6000828210156166fa576166fa616408565b500390565b60018060a01b038416815282602082015260606040820152600061672660608301846158a2565b95945050505050565b60006020828403121561674157600080fd5b815161399e816157a4565b60018060a01b038316815260406020820152600082516060604084015261677660a08401826158a2565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906167269083018486616797565b60018060a01b0385168152836020820152606060408201526000611dfb606083018486616797565b600082601f83011261681e57600080fd5b8151602061682e615ce383615c1a565b82815260059290921b8401810191818101908684111561684d57600080fd5b8286015b848110156160f957805161686481616053565b8352918301918301616851565b6000806040838503121561688457600080fd5b82516001600160401b038082111561689b57600080fd5b6168a78683870161680d565b935060208501519150808211156168bd57600080fd5b506168ca8582860161680d565b9150509250929050565b838152604060208201526000616726604083018486616797565b6000602080838503121561690157600080fd5b82516001600160401b0381111561691757600080fd5b8301601f8101851361692857600080fd5b8051616936615ce382615c1a565b81815260059190911b8201830190838101908783111561695557600080fd5b928401925b828410156110a957835161696d81615337565b8252928401929084019061695a565b634e487b7160e01b600052601260045260246000fd5b6000826169a1576169a161697c565b500690565b6001600160a01b03831681526040602082018190526000906154b4908301846158a2565b8281526040602082015260006154b460408301846158a2565b6000602082840312156169f557600080fd5b5051919050565b6001600160a01b03841681526101608101616a24602083018580358252602090810135910152565b616a3e606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b600060208284031215616a8d57600080fd5b815161399e81616053565b600060ff821660ff84168060ff03821115616ab557616ab5616408565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015616b2657865180516001600160a01b031684528601518516868401529585019591830191600101616af6565b50909a9950505050505050505050565b600061ffff80831681811415616b4e57616b4e616408565b6001019392505050565b600060208284031215616b6a57600080fd5b81516001600160e01b03198116811461399e57600080fd5b60006001600160601b0380831681851681830481118215151615616ba857616ba8616408565b02949350505050565b60006001600160601b0380841680616bcb57616bcb61697c565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220b3f6e57104aa407254db800eff5e936266a970205ddb8160136d9868881f0f7164736f6c634300080c0033 + /// ``` + #[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\x03\xCFW`\x005`\xE0\x1C\x80cf\xD9\xA9\xA0\x11a\x01\xFFW\x80c\xB5P\x8A\xA9\x11a\x01\x1AW\x80c\xD9,\xBB\x84\x11a\0\xADW\x80c\xF2\xFD\xE3\x8B\x11a\0|W\x80c\xF2\xFD\xE3\x8B\x14a\n$W\x80c\xFAv&\xD4\x14a\n7W\x80c\xFA\xBC\x1C\xBC\x14a\nDW\x80c\xFD9\x10Z\x14a\nWW`\0\x80\xFD[\x80c\xD9,\xBB\x84\x14a\t^<#\x14a\x06sW\x80c?r\x86\xF4\x14a\x06{W`\0\x80\xFD[\x80c)k\xB0d\x14a\x05\xDEW\x80c)\xD1\xE0\xC3\x14a\x05\xF1W\x80c*\xDE8\x80\x14a\x06\x04W\x80c,\xDD\x1E\x86\x14a\x06\x19W`\0\x80\xFD[\x80c\x14x\x85\x1F\x11a\x03gW\x80c$\x9A\x0CB\x11a\x036W\x80c$\x9A\x0CB\x14a\x05\x85W\x80c'\xE7\x92\x88\x14a\x05\xA5W\x80c(\xF6\x1B1\x14a\x05\xB8W\x80c)ST|\x14a\x05\xCBW`\0\x80\xFD[\x80c\x14x\x85\x1F\x14a\x04\xD4W\x80c\x1A\xB2WO\x14a\x05\x07W\x80c\x1E\xB8\x12\xDA\x14a\x05'W\x80c\x1E\xD7\x83\x1C\x14a\x05pW`\0\x80\xFD[\x80c\x0C\xF4\xB7g\x11a\x03\xA3W\x80c\x0C\xF4\xB7g\x14a\x04rW\x80c\x10\xD6z/\x14a\x04\x85W\x80c\x13T*N\x14a\x04\x98W\x80c\x13d9\xDD\x14a\x04\xC1W`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x03\xD4W\x80c\x03\xFD4\x92\x14a\x03\xE9W\x80c\x04\xECcQ\x14a\x04\x1CW\x80c\x05C\x10\xE6\x14a\x04GW[`\0\x80\xFD[a\x03\xE7a\x03\xE26`\x04aR\xDDV[a\n\x93V[\0[a\x04\ta\x03\xF76`\x04aS\x1EV[`\0\x90\x81R`\x98` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x04/a\x04*6`\x04aSIV[a\x0B\xA9V[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x04\x13V[`\x9DTa\x04Z\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x04\x13V[a\x03\xE7a\x04\x806`\x04aT\x80V[a\r\x9FV[a\x03\xE7a\x04\x936`\x04aT\xDCV[a\x0E\x87V[a\x04\ta\x04\xA66`\x04aT\xDCV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 T\x90V[a\x03\xE7a\x04\xCF6`\x04aS\x1EV[a\x0F:V[a\x04\xF7a\x04\xE26`\x04aS\x1EV[`\x9A` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x04\x13V[a\x05\x1Aa\x05\x156`\x04aU\x95V[a\x10wV[`@Qa\x04\x13\x91\x90aV\x81V[a\x05:a\x0556`\x04aW\tV[a\x10\xB4V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x04\x13V[a\x05xa\x11EV[`@Qa\x04\x13\x91\x90aW+V[a\x04\ta\x05\x936`\x04aW\x89V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xE7a\x05\xB36`\x04aW\xB9V[a\x11\xA7V[`\x9ETa\x04Z\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03\xE7a\x05\xD96`\x04aW\xE9V[a\x11\xB5V[a\x04Za\x05\xEC6`\x04aS\x1EV[a\x11\xC5V[a\x03\xE7a\x05\xFF6`\x04aT\xDCV[a\x12QV[a\x06\x0Ca\x12bV[`@Qa\x04\x13\x91\x90aY#V[a\x03\xE7a\x06'6`\x04aT\xDCV[a\x13\xA4V[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x06fa\x06a6`\x04aT\xDCV[a\x13\xB5V[`@Qa\x04\x13\x91\x90aY\xA0V[a\x05xa\x144V[a\x05xa\x14\x94V[a\x03\xE7a\x06\x916`\x04aY\xB7V[a\x14\xF4V[a\x06\xA9a\x06\xA46`\x04aT\xDCV[a\x1A\x05V[`@Qa\x04\x13\x91\x90aZZV[a\x03\xE7a\x1AyV[a\x04\xF7a\x06\xCC6`\x04aW\x89V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[a\x03\xE7a\x06\xEB6`\x04aZ\xDFV[a\x1BEV[`\x01Ta\x04\tV[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x04Za\x07-6`\x04aS\x1EV[a\x1B\xD7V[a\x07:a\x1C\x01V[`@Qa\x04\x13\x91\x90a[\x13V[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x03\xE7a\x07|6`\x04a[\xC6V[a\x1C\xE7V[a\x03\xE7a\x1D\xA7V[a\x03\xE7a\x07\x976`\x04a[\xC6V[a\x1DgV[a\x04\ta\x07\xAA6`\x04a\\}V[a\x1D\xBBV[a\x07\xB7a\x1E\x05V[`@Qa\x04\x13\x91\x90a]JV[a\x04/a\x07\xD26`\x04aS\x1EV[a\x1E\xD5V[`\0Ta\x04Z\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x04Za\x1E\xE0V[a\x07:a\x1E\xF9V[`\x96Ta\x08\r\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x04\x13V[a\x03\xE7a\x08-6`\x04a]\xB4V[a\x1F\xDFV[a\x04Z\x7F\0\0\0\0\0\0\0\0\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\x04\t\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x03\xE7a\x08\x8E6`\x04a^\xADV[a#\x17V[a\x07\xB7a$\x9BV[a\x04\xF7a%kV[a\x08\xB6a\x08\xB16`\x04a_;V[a&\x98V[`@Qa\x04\x13\x91\x90a_\xE0V[a\x03\xE7a\x08\xD16`\x04aW\x89V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x04\t\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x81V[a\x03\xE7a\t\x1C6`\x04a`\x1EV[a'QV[`\x9CTa\x04\tV[a\x03\xE7a\t76`\x04aa\x04V[a'\xB8V[a\x03\xE7a\tJ6`\x04aaZV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`\x99` R`@\x90 UV[a\x03\xE7a\tt6`\x04ab\xD9V[a'\xCBV[a\x05xa*\xCFV[a\t\xF0a\t\x8F6`\x04aW\x89V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\xFF\x94\x90\x94\x16\x84R`\x97\x82R\x92\x82\x90 \x82Q\x93\x84\x01\x83RTc\xFF\xFF\xFF\xFF\x81\x16\x84Ra\xFF\xFF`\x01` \x1B\x82\x04\x81\x16\x92\x85\x01\x92\x90\x92R`\x01`0\x1B\x90\x04\x16\x90\x82\x01R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x04\x13V[a\x03\xE7a\n26`\x04aT\xDCV[a+/V[`\xCFTa\x04\xF7\x90`\xFF\x16\x81V[a\x03\xE7a\nR6`\x04aS\x1EV[a+\xA5V[a\n\x86a\ne6`\x04aT\xDCV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16\x90V[`@Qa\x04\x13\x91\x90ac\xADV[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\n\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`@Q\x80\x91\x03\x90\xFD[`\0[\x82\x81\x10\x15a\x0B\xA3W`\0\x84\x84\x83\x81\x81\x10a\n\xE4Wa\n\xE4ac\xF2V[\x90P` \x02\x01` \x81\x01\x90a\n\xF9\x91\x90aT\xDCV[`\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\x0BDWa\x0BDaZ\"V[`\x02\x81\x11\x15a\x0BUWa\x0BUaZ\"V[\x90RP\x80Q\x90\x91P`\0a\x0Bh\x82a-\x01V[\x90P`\0a\x0B~\x82`\x01`\x01`\xC0\x1B\x03\x16a-pV[\x90Pa\x0B\x8B\x85\x85\x83a.=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xFE\x91\x90adLV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F.W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90adiV[a\x0F7\x81a/)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\x0F\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xAB\x91\x90ad\xB3V[a\x0F\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ad\xD5V[`\x01T\x81\x81\x16\x14a\x10@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\n\xBCV[`\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\x0E|V[a\x10\x9B`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[a\x10\xA9\x87\x87\x87\x87\x87\x87a0.V[\x97\x96PPPPPPPV[`@\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\x10\xF1Wa\x10\xF1ac\xF2V[`\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[```\xDC\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FW[PPPPP\x90P\x90V[a\x11\xB1\x82\x82a5EV[PPV[a\x11\xC0\x83\x83\x83a.=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11?\x91\x90adLV[a\x12Ya7\x05V[a\x0F7\x81a7dV[```\xE3\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x13\x84W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x12\xF7\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x13#\x90ae\x1DV[\x80\x15a\x13pW\x80`\x1F\x10a\x13EWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x13pV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x13SW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x12\xD8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x12\x86V[PPPP\x90P\x90V[a\x13\xACa7\x05V[a\x0F7\x81a7\xCDV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x11?a\x14/\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\x14\x14\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 a86V[a8\x84V[```\xDE\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[```\xDD\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x15\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`\0a\x15e\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\x91Pa9\x14\x90PV[\x90P\x84\x83\x14a\x15\xD6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` ak\xD8\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0[\x83\x81\x10\x15a\x19\xFCW`\0\x85\x85\x83\x81\x81\x10a\x15\xF5Wa\x15\xF5ac\xF2V[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x16\x16Wa\x16\x16ac\xF2V[\x90P` \x02\x81\x01\x90a\x16(\x91\x90aeRV[`@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\x16\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xB8\x91\x90ae\x9BV[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x17TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R`\0\x80Q` ak\xD8\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\n\xBCV[`\0\x80[\x82\x81\x10\x15a\x19\x9BW`\0\x84\x84\x83\x81\x81\x10a\x17tWa\x17tac\xF2V[\x90P` \x02\x01` \x81\x01\x90a\x17\x89\x91\x90aT\xDCV[`\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\x17\xD4Wa\x17\xD4aZ\"V[`\x02\x81\x11\x15a\x17\xE5Wa\x17\xE5aZ\"V[\x90RP\x80Q\x90\x91P`\0a\x17\xF8\x82a-\x01V[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x18|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` ak\xD8\x839\x81Q\x91R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x19'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R`\0\x80Q` ak\xD8\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\n\xBCV[Pa\x19\x85\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x19>\x91\x90ae\xB8V[\x92a\x19K\x93\x92\x91\x90ae\xD0V[\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.<\x92PPPV[P\x90\x92Pa\x19\x94\x90P\x81ad\x1EV[\x90Pa\x17XV[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\x19\xF5\x90ad\x1EV[\x90Pa\x15\xD9V[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\x1A_Wa\x1A_aZ\"V[`\x02\x81\x11\x15a\x1ApWa\x1ApaZ\"V[\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\x1A\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xEA\x91\x90ad\xB3V[a\x1B\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ad\xD5V[`\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\x1BMa7\x05V[`\x96T\x82\x90`\xFF\x90\x81\x16\x90\x82\x16\x10a\x1B\xCDW`@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\n\xBCV[a\x11\xC0\x83\x83a9\xA5V[`\x9C\x81\x81T\x81\x10a\x1B\xE7W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[```\xE1\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x1C\xCFW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x1C\x91W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x1C%V[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1DgW`@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\n\xBCV[a\x11\xC0\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\x91RPa:R\x92PPPV[a\x1D\xAFa7\x05V[a\x1D\xB9`\0a>\xC4V[V[`\0a\x1D\xFB\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\x14\x14\x96\x95\x94\x93\x92\x91\x90ae\xFAV[\x96\x95PPPPPPV[```\xE0\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1EH\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1Et\x90ae\x1DV[\x80\x15a\x1E\xC1W\x80`\x1F\x10a\x1E\x96Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xC1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\xA4W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E)V[`\0a\x11?\x82a-\x01V[`\0a\x1E\xF4`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[```\xE2\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x1F\xC7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x1F\x89W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x1F\x1DV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a \x07W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[\x83\x89\x14a \x8AW`@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\n\xBCV[`\0a \x963\x88a?\x16V[\x90Pa \xF63\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 \xEBWa \xDC`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90af\x7FV[\x81R` \x01\x90`\x01\x01\x90a \xBFV[PPPPP\x87a@GV[`\0a!=3\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\x92Pa0.\x91PPV[\x90P`\0[\x8B\x81\x10\x15a#\x08W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a!bWa!bac\xF2V[\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!\xCFWa!\xCFac\xF2V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\"\xF5Wa\"p\x8E\x8E\x84\x81\x81\x10a!\xF8Wa!\xF8ac\xF2V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\"\x1BWa\"\x1Bac\xF2V[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\":Wa\":ac\xF2V[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\"TWa\"Tac\xF2V[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\"j\x91\x90af\x7FV[\x86aA\xD4V[a\"\xF5\x89\x89\x84\x81\x81\x10a\"\x85Wa\"\x85ac\xF2V[\x90P`@\x02\x01` \x01` \x81\x01\x90a\"\x9D\x91\x90aT\xDCV[\x8F\x8F\x85\x90\x86`\x01a\"\xAE\x91\x90ae\xB8V[\x92a\"\xBB\x93\x92\x91\x90ae\xD0V[\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:R\x92PPPV[P\x80a#\0\x81ad\x1EV[\x91PPa!BV[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a#?W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[`\0a#K3\x85a?\x16V[\x90P`\0a#\x943\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\x92Pa0.\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a$\x8FW`\0\x8A\x8A\x83\x81\x81\x10a#\xB6Wa#\xB6ac\xF2V[\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#\xECWa#\xECac\xF2V[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a$|W`@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\n\xBCV[P\x80a$\x87\x81ad\x1EV[\x91PPa#\x9AV[PPPPPPPPPPV[```\xDF\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x13\x9BW\x83\x82\x90`\0R` `\0 \x01\x80Ta$\xDE\x90ae\x1DV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta%\n\x90ae\x1DV[\x80\x15a%WW\x80`\x1F\x10a%,Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a%WV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a%:W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a$\xBFV[`\xCFT`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a%\x8DWP`\xCFTa\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a&\x93W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a&\x1B\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01af\x9BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra&5\x91af\xCCV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a&rW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a&wV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a&\x8F\x91\x90ad\xB3V[\x91PP[\x91\x90PV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xB5Wa&\xB5aS\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a&\xDEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a'IWa'\x10\x85\x85\x83\x81Q\x81\x10a'\x03Wa'\x03ac\xF2V[` \x02` \x01\x01QaD\xA9V[\x82\x82\x81Q\x81\x10a'\"Wa'\"ac\xF2V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a'A\x81ad\x1EV[\x91PPa&\xE4V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a'xW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90ac\xBBV[a\x11\xC03\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:R\x92PPPV[a'\xC0a7\x05V[a\x11\xC0\x83\x83\x83aE\xE5V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a'\xEBWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a(\x05WP0;\x15\x80\x15a(\x05WP`\0T`\xFF\x16`\x01\x14[a(hW`@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(\x8BW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a(\x9DWP\x81Q\x83Q\x14[a)\x07W`@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\n\xBCV[a)\x10\x89a>\xC4V[a)\x1A\x86\x86aG\xFCV[a)#\x88a7dV[a),\x87a7\xCDV[`\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*k\x85\x82\x81Q\x81\x10a**Wa**ac\xF2V[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a*DWa*Dac\xF2V[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a*^Wa*^ac\xF2V[` \x02` \x01\x01QaE\xE5V[\x80a*u\x81ad\x1EV[\x91PPa*\x0CV[P\x80\x15a*\xC4W`\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[```\xDB\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x11\x9DW` \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\x11\x7FWPPPPP\x90P\x90V[a+7a7\x05V[`\x01`\x01`\xA0\x1B\x03\x81\x16a+\x9CW`@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\x0F7\x81a>\xC4V[`\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+\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a,\x1C\x91\x90adLV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a,LW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90adiV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a,\xCAW`@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[`\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\x0E|V[`\0\x81\x81R`\x98` R`@\x81 T\x80a-\x1EWP`\0\x92\x91PPV[`\0\x83\x81R`\x98` R`@\x90 a-7`\x01\x83af\xE8V[\x81T\x81\x10a-GWa-Gac\xF2V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01`\xC0\x1B\x03\x16\x93\x92PPPV[P\x91\x90PV[```\0\x80a-~\x84aH\xE8V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x99Wa-\x99aS\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a-\xC3W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a-\xDBWPa\x01\0\x81\x10[\x15a.2W`\x01\x81\x1B\x93P\x85\x84\x16\x15a.\"W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a.\x04Wa.\x04ac\xF2V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a.+\x81ad\x1EV[\x90Pa-\xCAV[P\x90\x94\x93PPPPV[`\x01\x82` \x01Q`\x02\x81\x11\x15a.TWa.TaZ\"V[\x14a.^WPPPV[\x81Q`@Qc3V\x7F\x7F`\xE1\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\x90cf\xAC\xFE\xFE\x90a.\xB3\x90\x88\x90\x86\x90\x88\x90`\x04\x01af\xFFV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a.\xD2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\xF6\x91\x90ag/V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a/\"Wa/\"\x85a/\x1D\x83`\x01`\x01`\xC0\x1B\x03\x16a-pV[a:RV[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a/\xB7W`@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[`\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[a0R`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a0\x9A\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\x91Pa9\x14\x90PV[\x90P`\0a0\xA7\x88a-\x01V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a1%W`@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\n\xBCV[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a1\xDBW`@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\n\xBCV[`\x01`\x01`\xC0\x1B\x03\x81\x81\x16\x90\x83\x16\x17a1\xF4\x89\x82a5EV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa2$\x91\x90ad9V[`@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\x15a2^Wa2^aZ\"V[\x14a3wW`@\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\x15a2\xB9Wa2\xB9aZ\"V[\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}\x90a3\x0E\x90\x8D\x90\x89\x90`\x04\x01agLV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3(W`\0\x80\xFD[PZ\xF1\x15\x80\x15a3=`\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\x90a3\xC7\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01ag\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a3\xE1W`\0\x80\xFD[PZ\xF1\x15\x80\x15a3\xF5W=`\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\x91Pa4K\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01ag\xE5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a4jW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra4\x92\x91\x90\x81\x01\x90ahqV[`@\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\x90a4\xEF\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01ah\xD4V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a5\x0EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra56\x91\x90\x81\x01\x90ah\xEEV[\x84RPPP\x96\x95PPPPPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80a5\xEAW`\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 a6\x03`\x01\x84af\xE8V[\x81T\x81\x10a6\x13Wa6\x13ac\xF2V[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a6WW\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\x0B\xA3V[\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[3a7\x0Ea\x1E\xE0V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1D\xB9W`@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[`\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\x11?a8CaI\x13V[\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\x80a8\xB4`\0\x80Q` al\x18\x839\x81Q\x91R\x86ai\x92V[\x90P[a8\xC0\x81aJ:V[\x90\x93P\x91P`\0\x80Q` al\x18\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a8\xFAW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` al\x18\x839\x81Q\x91R`\x01\x82\x08\x90Pa8\xB7V[`\0\x80a9 \x84aJ\xBCV[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a9\x9EW`@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\n\xBCV[\x93\x92PPPV[`\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[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a:\x86Wa:\x86aZ\"V[\x14a;\x05W`@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\n\xBCV[`\x96T`\0\x90a;\x19\x90\x85\x90`\xFF\x16a9\x14V[\x90P`\0a;&\x83a-\x01V[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a;\xA4W`@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\n\xBCV[a;\xBB`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a=`\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=\x89\x90\x8A\x90\x8A\x90`\x04\x01ai\xA6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=\xB7W=`\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>\t\x90\x87\x90\x8A\x90`\x04\x01ai\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>#W`\0\x80\xFD[PZ\xF1\x15\x80\x15a>7W=`\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>\x89\x90\x87\x90\x8A\x90`\x04\x01ai\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>\xA3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a>\xB7W=`\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?\x81W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?\xA5\x91\x90ai\xE3V[\x90P\x80a\x11?W\x7F\0\0\0\0\0\0\0\0\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\x84a?\xE6\x87a\x13\xB5V[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a@\x04\x93\x92\x91\x90ai\xFCV[` `@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\x90a9\x9E\x91\x90ai\xE3V[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a@\xEDW`@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\n\xBCV[B\x81`@\x01Q\x10\x15aA\x82W`@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\n\xBCV[` \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\x0B\xA3\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91aA\xCD\x91\x88\x91\x88\x91\x88\x91\x90a\x1D\xBBV[\x83QaLIV[` \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\x15aBTW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` ak\xF8\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\n\xBCV[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14aB\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[`@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\x15aCBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aCf\x91\x90aj{V[\x90PaCr\x81\x85aN\x03V[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11aD\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[aD\x0F\x88\x85aN'V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a*\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` ak\xF8\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\n\xBCV[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15aE;W`\x01aD\xCE\x82\x84af\xE8V[aD\xD8\x91\x90af\xE8V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10aE\x0BWaE\x0Bac\xF2V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11aE)WPPa\x11?V[\x80aE3\x81ad\x1EV[\x91PPaD\xBAV[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\n\xBCV[`\x96T`\xFF\x16`\xC0\x81\x10aFYW`@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\n\xBCV[aFd\x81`\x01aj\x98V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80aF\x83\x81\x86a9\xA5V[`@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\x90aF\xD6\x90\x84\x90\x88\x90\x88\x90`\x04\x01aj\xBDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aF\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15aG\x04W=`\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\x15aGlW`\0\x80\xFD[PZ\xF1\x15\x80\x15aG\x80W=`\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\x15aG\xE8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xC4W=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15aH#WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[aH\xA5W`@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[`\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\x11\xB1\x82a/)V[`\0\x80[\x82\x15a\x11?WaH\xFD`\x01\x84af\xE8V[\x90\x92\x16\x91\x80aI\x0B\x81ak6V[\x91PPaH\xECV[`\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\x15aIlWP\x7F\0\0\0\0\0\0\0\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[\x15aI\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\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` al\x18\x839\x81Q\x91R`\x03`\0\x80Q` al\x18\x839\x81Q\x91R\x86`\0\x80Q` al\x18\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0aJ\xB0\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` al\x18\x839\x81Q\x91RaNAV[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15aKEW`@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\n\xBCV[\x81QaKSWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10aKiWaKiac\xF2V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15aL@W\x84\x81\x81Q\x81\x10aK\x97WaK\x97ac\xF2V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11aL,W`@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\n\xBCV[\x91\x81\x17\x91aL9\x81ad\x1EV[\x90PaK|V[P\x90\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aMcW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aL\x89\x90\x86\x90\x86\x90`\x04\x01ai\xCAV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aL\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aL\xCA\x91\x90akXV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x11\xC0W`@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\x16aMw\x83\x83aN\xF0V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11\xC0W`@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[` \x81\x01Q`\0\x90a'\x10\x90aN\x1D\x90a\xFF\xFF\x16\x85ak\x82V[a9\x9E\x91\x90ak\xB1V[`@\x81\x01Q`\0\x90a'\x10\x90aN\x1D\x90a\xFF\xFF\x16\x85ak\x82V[`\0\x80aNLaR]V[aNTaR{V[` \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\x15aN\x95WaN\x97V[\xFE[P\x82aN\xE5W`@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\n\xBCV[PQ\x95\x94PPPPPV[`\0\x80`\0aN\xFF\x85\x85aO\x0CV[\x91P\x91Pa'I\x81aO|V[`\0\x80\x82Q`A\x14\x15aOCW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaO7\x87\x82\x85\x85aQ7V[\x94P\x94PPPPaOuV[\x82Q`@\x14\x15aOmW` \x83\x01Q`@\x84\x01QaOb\x86\x83\x83aR$V[\x93P\x93PPPaOuV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aO\x90WaO\x90aZ\"V[\x14\x15aO\x99WPV[`\x01\x81`\x04\x81\x11\x15aO\xADWaO\xADaZ\"V[\x14\x15aO\xFBW`@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\x15aP\x0FWaP\x0FaZ\"V[\x14\x15aP]W`@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\x15aPqWaPqaZ\"V[\x14\x15aP\xCAW`@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\x15aP\xDEWaP\xDEaZ\"V[\x14\x15a\x0F7W`@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\x15aQnWP`\0\x90P`\x03aR\x1BV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aQ\x86WP\x84`\xFF\x16`\x1C\x14\x15[\x15aQ\x97WP`\0\x90P`\x04aR\x1BV[`@\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\x15aQ\xEBW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aR\x14W`\0`\x01\x92P\x92PPaR\x1BV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aRA`\xFF\x86\x90\x1C`\x1Bae\xB8V[\x90PaRO\x87\x82\x88\x85aQ7V[\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\x12aR\xABW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xC2W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aR\xF0W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aS\x06W`\0\x80\xFD[aS\x12\x85\x82\x86\x01aR\x99V[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aS0W`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aS^W`\0\x80\xFD[\x835\x92P` \x84\x015aSp\x81aS7V[\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\x15aS\xB9WaS\xB9aS\x81V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aS\xB9WaS\xB9aS\x81V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aT\tWaT\taS\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aT\"W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aT;WaT;aS\x81V[aTN`\x1F\x82\x01`\x1F\x19\x16` \x01aS\xE1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15aTcW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aT\x92W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aT\xA8W`\0\x80\xFD[aT\xB4\x84\x82\x85\x01aT\x11V[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[\x805a&\x93\x81aT\xBCV[`\0` \x82\x84\x03\x12\x15aT\xEEW`\0\x80\xFD[\x815a9\x9E\x81aT\xBCV[`\0\x80\x83`\x1F\x84\x01\x12aU\x0BW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aU\"W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aULW`\0\x80\xFD[aUTaS\x97V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aUlW`\0\x80\xFD[aUx\x84\x82\x85\x01aT\x11V[\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0\x80`\xA0\x87\x89\x03\x12\x15aU\xAEW`\0\x80\xFD[\x865aU\xB9\x81aT\xBCV[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aU\xDCW`\0\x80\xFD[aU\xE8\x8A\x83\x8B\x01aT\xF9V[\x90\x96P\x94P``\x89\x015\x91P\x80\x82\x11\x15aV\x01W`\0\x80\xFD[aV\r\x8A\x83\x8B\x01aT\x11V[\x93P`\x80\x89\x015\x91P\x80\x82\x11\x15aV#W`\0\x80\xFD[PaV0\x89\x82\x8A\x01aU:V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aVvW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aVQV[P\x94\x95\x94PPPPPV[` \x80\x82R\x82Q``\x83\x83\x01R\x80Q`\x80\x84\x01\x81\x90R`\0\x92\x91\x82\x01\x90\x83\x90`\xA0\x86\x01\x90[\x80\x83\x10\x15aV\xCCW\x83Qc\xFF\xFF\xFF\xFF\x16\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aV\xA6V[P\x83\x87\x01Q\x93P`\x1F\x19\x92P\x82\x86\x82\x03\x01`@\x87\x01RaV\xEC\x81\x85aV=V[\x93PPP`@\x85\x01Q\x81\x85\x84\x03\x01``\x86\x01Ra\x1D\xFB\x83\x82aV=V[`\0\x80`@\x83\x85\x03\x12\x15aW\x1CW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aWlW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aWGV[P\x90\x96\x95PPPPPPV[\x805`\xFF\x81\x16\x81\x14a&\x93W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aW\x9BW`\0\x80\xFD[a9\x9E\x82aWxV[`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15aW\xCCW`\0\x80\xFD[\x825\x91P` \x83\x015aW\xDE\x81aW\xA4V[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x83\x85\x03`\x80\x81\x12\x15aW\xFFW`\0\x80\xFD[\x845aX\n\x81aT\xBCV[\x93P`@`\x1F\x19\x82\x01\x12\x15aX\x1EW`\0\x80\xFD[PaX'aS\xBFV[` \x85\x015\x81R`@\x85\x015`\x03\x81\x10aX@W`\0\x80\xFD[` \x82\x01R\x91P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aX`W`\0\x80\xFD[aXl\x86\x82\x87\x01aT\x11V[\x91PP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15aX\x91W\x81\x81\x01Q\x83\x82\x01R` \x01aXyV[\x83\x81\x11\x15a\x0B\xA3WPP`\0\x91\x01RV[`\0\x81Q\x80\x84RaX\xBA\x81` \x86\x01` \x86\x01aXvV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15aY\x16W\x82\x84\x03\x89RaY\x04\x84\x83QaX\xA2V[\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01aX\xECV[P\x91\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15aY\x92W\x88\x83\x03`?\x19\x01\x85R\x81Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90RaY\x7F\x87\x85\x01\x82aX\xCEV[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01aYJV[P\x90\x98\x97PPPPPPPPV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x11?V[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aY\xCDW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aY\xE4W`\0\x80\xFD[aY\xF0\x88\x83\x89\x01aR\x99V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aZ\tW`\0\x80\xFD[PaZ\x16\x87\x82\x88\x01aT\xF9V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aZVWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aZu\x90\x84\x01\x82aZ8V[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14a&\x93W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aZ\xA0W`\0\x80\xFD[aZ\xA8aS\x97V[\x90P\x815aZ\xB5\x81aS7V[\x81RaZ\xC3` \x83\x01aZ|V[` \x82\x01RaZ\xD4`@\x83\x01aZ|V[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aZ\xF2W`\0\x80\xFD[aZ\xFB\x83aWxV[\x91Pa[\n\x84` \x85\x01aZ\x8EV[\x90P\x92P\x92\x90PV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a[\xB7W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a[\xA2W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a[xV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a[;V[P\x91\x99\x98PPPPPPPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a[\xDBW`\0\x80\xFD[\x835a[\xE6\x81aT\xBCV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\x01W`\0\x80\xFD[a\\\r\x86\x82\x87\x01aT\xF9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\\3Wa\\3aS\x81V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a\\OW`\0\x80\xFD[a\\WaS\xBFV[\x90Pa\\b\x82aWxV[\x81R` \x82\x015a\\r\x81aT\xBCV[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\\\x95W`\0\x80\xFD[\x855a\\\xA0\x81aT\xBCV[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\xC4W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13a\\\xD5W`\0\x80\xFD[\x805a\\\xE8a\\\xE3\x82a\\\x1AV[aS\xE1V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15a]\x07W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15a]-Wa]\x1E\x8D\x85a\\=V[\x82R\x92\x84\x01\x92\x90\x85\x01\x90a]\x0CV[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[` \x81R`\0a9\x9E` \x83\x01\x84aX\xCEV[`\0a\x01\0\x82\x84\x03\x12\x15a-jW`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a]\x82W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a]\x99W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aOuW`\0\x80\xFD[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01\xA0\x8A\x8C\x03\x12\x15a]\xD3W`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a]\xEAW`\0\x80\xFD[a]\xF6\x8D\x83\x8E\x01aT\xF9V[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15a^\x0FW`\0\x80\xFD[a^\x1B\x8D\x83\x8E\x01aT\xF9V[\x90\x99P\x97P\x87\x91Pa^0\x8D`@\x8E\x01a]]V[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15a^GW`\0\x80\xFD[a^S\x8D\x83\x8E\x01a]pV[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15a^mW`\0\x80\xFD[a^y\x8D\x83\x8E\x01aU:V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15a^\x90W`\0\x80\xFD[Pa^\x9D\x8C\x82\x8D\x01aU:V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15a^\xC7W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a^\xDEW`\0\x80\xFD[a^\xEA\x8A\x83\x8B\x01aT\xF9V[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a_\x03W`\0\x80\xFD[a_\x0F\x8A\x83\x8B\x01aT\xF9V[\x90\x96P\x94P\x84\x91Pa_$\x8A`@\x8B\x01a]]V[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aV#W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a_NW`\0\x80\xFD[\x825a_Y\x81aS7V[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a_uW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a_\x86W`\0\x80\xFD[\x805a_\x94a\\\xE3\x82a\\\x1AV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a_\xB3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a_\xD1W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a_\xB8V[\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\x15aWlW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a_\xFCV[`\0\x80` \x83\x85\x03\x12\x15a`1W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a`GW`\0\x80\xFD[aS\x12\x85\x82\x86\x01aT\xF9V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a`yW`\0\x80\xFD[\x815` a`\x89a\\\xE3\x83a\\\x1AV[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a`\xA8W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W`@\x81\x89\x03\x12\x15a`\xC5W`\0\x80\x81\xFD[a`\xCDaS\xBFV[\x815a`\xD8\x81aT\xBCV[\x81R\x81\x85\x015a`\xE7\x81a`SV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a`\xACV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aa\x19W`\0\x80\xFD[aa#\x85\x85aZ\x8EV[\x92P``\x84\x015aa3\x81a`SV[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aaNW`\0\x80\xFD[aXl\x86\x82\x87\x01a`hV[`\0\x80`@\x83\x85\x03\x12\x15aamW`\0\x80\xFD[\x825aax\x81aT\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x82`\x1F\x83\x01\x12aa\x97W`\0\x80\xFD[\x815` aa\xA7a\\\xE3\x83a\\\x1AV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aa\xC6W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aa\xE9Waa\xDC\x89\x82aZ\x8EV[\x84R\x92\x84\x01\x92\x81\x01aa\xCAV[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12ab\x07W`\0\x80\xFD[\x815` ab\x17a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ab6W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x805abM\x81a`SV[\x83R\x91\x83\x01\x91\x83\x01ab:V[`\0\x82`\x1F\x83\x01\x12abkW`\0\x80\xFD[\x815` ab{a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ab\x9AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15ab\xBDW`\0\x80\x81\xFD[ab\xCB\x89\x86\x83\x8B\x01\x01a`hV[\x84RP\x91\x83\x01\x91\x83\x01ab\x9EV[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15ab\xF6W`\0\x80\xFD[ab\xFF\x89aT\xD1V[\x97Pac\r` \x8A\x01aT\xD1V[\x96Pac\x1B`@\x8A\x01aT\xD1V[\x95Pac)``\x8A\x01aT\xD1V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15acLW`\0\x80\xFD[acX\x8C\x83\x8D\x01aa\x86V[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15acnW`\0\x80\xFD[acz\x8C\x83\x8D\x01aa\xF6V[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15ac\x90W`\0\x80\xFD[Pac\x9D\x8B\x82\x8C\x01abZV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x11?\x82\x84aZ8V[` \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\x15ad2Wad2ad\x08V[P`\x01\x01\x90V[` \x81R`\0a9\x9E` \x83\x01\x84aX\xA2V[`\0` \x82\x84\x03\x12\x15ad^W`\0\x80\xFD[\x81Qa9\x9E\x81aT\xBCV[` \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\x15ad\xC5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a9\x9EW`\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[`\x01\x81\x81\x1C\x90\x82\x16\x80ae1W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a-jWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aeiW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15ae\x83W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aOuW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15ae\xADW`\0\x80\xFD[\x81Qa9\x9E\x81aS7V[`\0\x82\x19\x82\x11\x15ae\xCBWae\xCBad\x08V[P\x01\x90V[`\0\x80\x85\x85\x11\x15ae\xE0W`\0\x80\xFD[\x83\x86\x11\x15ae\xEDW`\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\x15af_W\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01af5V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15af\x91W`\0\x80\xFD[a9\x9E\x83\x83a\\=V[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90af\xBE\x81`\x04\x85\x01` \x87\x01aXvV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qaf\xDE\x81\x84` \x87\x01aXvV[\x91\x90\x91\x01\x92\x91PPV[`\0\x82\x82\x10\x15af\xFAWaf\xFAad\x08V[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0ag&``\x83\x01\x84aX\xA2V[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15agAW`\0\x80\xFD[\x81Qa9\x9E\x81aW\xA4V[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ragv`\xA0\x84\x01\x82aX\xA2V[\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\x90ag&\x90\x83\x01\x84\x86ag\x97V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x1D\xFB``\x83\x01\x84\x86ag\x97V[`\0\x82`\x1F\x83\x01\x12ah\x1EW`\0\x80\xFD[\x81Q` ah.a\\\xE3\x83a\\\x1AV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15ahMW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a`\xF9W\x80Qahd\x81a`SV[\x83R\x91\x83\x01\x91\x83\x01ahQV[`\0\x80`@\x83\x85\x03\x12\x15ah\x84W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15ah\x9BW`\0\x80\xFD[ah\xA7\x86\x83\x87\x01ah\rV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15ah\xBDW`\0\x80\xFD[Pah\xCA\x85\x82\x86\x01ah\rV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0ag&`@\x83\x01\x84\x86ag\x97V[`\0` \x80\x83\x85\x03\x12\x15ai\x01W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15ai\x17W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13ai(W`\0\x80\xFD[\x80Qai6a\\\xE3\x82a\\\x1AV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15aiUW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x10\xA9W\x83Qaim\x81aS7V[\x82R\x92\x84\x01\x92\x90\x84\x01\x90aiZV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82ai\xA1Wai\xA1ai|V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aT\xB4\x90\x83\x01\x84aX\xA2V[\x82\x81R`@` \x82\x01R`\0aT\xB4`@\x83\x01\x84aX\xA2V[`\0` \x82\x84\x03\x12\x15ai\xF5W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01aj$` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[aj>``\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[`\0` \x82\x84\x03\x12\x15aj\x8DW`\0\x80\xFD[\x81Qa9\x9E\x81a`SV[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15aj\xB5Waj\xB5ad\x08V[\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\x15ak&W\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\x01aj\xF6V[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15akNWakNad\x08V[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15akjW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a9\x9EW`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15ak\xA8Wak\xA8ad\x08V[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80ak\xCBWak\xCBai|V[\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 \xB3\xF6\xE5q\x04\xAA@rT\xDB\x80\x0E\xFF^\x93bf\xA9p ]\xDB\x81`\x13m\x98h\x88\x1F\x0FqdsolcC\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> 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, clippy::pub_underscore_fields)] + #[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 `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PUBKEY_REGISTRATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `_deregisterOperatorExternal(address,bytes)` and selector `0x8310fef6`. + ```solidity + function _deregisterOperatorExternal(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _deregisterOperatorExternalCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`_deregisterOperatorExternal(address,bytes)`](_deregisterOperatorExternalCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _deregisterOperatorExternalReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<_deregisterOperatorExternalCall> for UnderlyingRustTuple<'_> { + fn from(value: _deregisterOperatorExternalCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _deregisterOperatorExternalCall { + 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<_deregisterOperatorExternalReturn> for UnderlyingRustTuple<'_> { + fn from(value: _deregisterOperatorExternalReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _deregisterOperatorExternalReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for _deregisterOperatorExternalCall { + 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 = _deregisterOperatorExternalReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "_deregisterOperatorExternal(address,bytes)"; + const SELECTOR: [u8; 4] = [131u8, 16u8, 254u8, 246u8]; + #[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 `_registerOperatorExternal(address,bytes32,bytes,string,(bytes,bytes32,uint256))` and selector `0x1ab2574f`. + ```solidity + function _registerOperatorExternal(address operator, bytes32 operatorId, bytes memory quorumNumbers, string memory socket, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external returns (RegistryCoordinator.RegisterResults memory results); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _registerOperatorExternalCall { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub socket: alloy::sol_types::private::String, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`_registerOperatorExternal(address,bytes32,bytes,string,(bytes,bytes32,uint256))`](_registerOperatorExternalCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _registerOperatorExternalReturn { + pub results: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + alloy::sol_types::sol_data::String, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::String, + ::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<_registerOperatorExternalCall> for UnderlyingRustTuple<'_> { + fn from(value: _registerOperatorExternalCall) -> Self { + ( + value.operator, + value.operatorId, + value.quorumNumbers, + value.socket, + value.operatorSignature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _registerOperatorExternalCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + quorumNumbers: tuple.2, + socket: tuple.3, + operatorSignature: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (RegistryCoordinator::RegisterResults,); + #[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<_registerOperatorExternalReturn> for UnderlyingRustTuple<'_> { + fn from(value: _registerOperatorExternalReturn) -> Self { + (value.results,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _registerOperatorExternalReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { results: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for _registerOperatorExternalCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::String, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = _registerOperatorExternalReturn; + type ReturnTuple<'a> = (RegistryCoordinator::RegisterResults,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "_registerOperatorExternal(address,bytes32,bytes,string,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [26u8, 178u8, 87u8, 79u8]; + #[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, + ), + ::tokenize( + &self.socket, + ), + ::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 `_updateOperatorBitmapExternal(bytes32,uint192)` and selector `0x27e79288`. + ```solidity + function _updateOperatorBitmapExternal(bytes32 operatorId, uint192 quorumBitmap) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _updateOperatorBitmapExternalCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumBitmap: alloy::sol_types::private::primitives::aliases::U192, + } + ///Container type for the return parameters of the [`_updateOperatorBitmapExternal(bytes32,uint192)`](_updateOperatorBitmapExternalCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _updateOperatorBitmapExternalReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<192>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + 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<_updateOperatorBitmapExternalCall> for UnderlyingRustTuple<'_> { + fn from(value: _updateOperatorBitmapExternalCall) -> Self { + (value.operatorId, value.quorumBitmap) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _updateOperatorBitmapExternalCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumBitmap: 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<_updateOperatorBitmapExternalReturn> for UnderlyingRustTuple<'_> { + fn from(value: _updateOperatorBitmapExternalReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _updateOperatorBitmapExternalReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for _updateOperatorBitmapExternalCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<192>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = _updateOperatorBitmapExternalReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "_updateOperatorBitmapExternal(bytes32,uint192)"; + const SELECTOR: [u8; 4] = [39u8, 231u8, 146u8, 136u8]; + #[inline] + fn new<'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.quorumBitmap), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `_updateOperatorExternal(address,(bytes32,uint8),bytes)` and selector `0x2953547c`. + ```solidity + function _updateOperatorExternal(address operator, IRegistryCoordinator.OperatorInfo memory operatorInfo, bytes memory quorumsToUpdate) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _updateOperatorExternalCall { + pub operator: alloy::sol_types::private::Address, + pub operatorInfo: + ::RustType, + pub quorumsToUpdate: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`_updateOperatorExternal(address,(bytes32,uint8),bytes)`](_updateOperatorExternalCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct _updateOperatorExternalReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + IRegistryCoordinator::OperatorInfo, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + 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<_updateOperatorExternalCall> for UnderlyingRustTuple<'_> { + fn from(value: _updateOperatorExternalCall) -> Self { + (value.operator, value.operatorInfo, value.quorumsToUpdate) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _updateOperatorExternalCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorInfo: tuple.1, + quorumsToUpdate: 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<_updateOperatorExternalReturn> for UnderlyingRustTuple<'_> { + fn from(value: _updateOperatorExternalReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for _updateOperatorExternalReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for _updateOperatorExternalCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + IRegistryCoordinator::OperatorInfo, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = _updateOperatorExternalReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "_updateOperatorExternal(address,(bytes32,uint8),bytes)"; + const SELECTOR: [u8; 4] = [41u8, 83u8, 84u8, 124u8]; + #[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.operatorInfo, + ), + ::tokenize( + &self.quorumsToUpdate, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateOperatorChurnApprovalDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `ejector()` and selector `0x28f61b31`. + ```solidity + function ejector() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectorCall {} + ///Container type for the return parameters of the [`ejector()`](ejectorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `getCurrentQuorumBitmap(bytes32)` and selector `0x871ef049`. + ```solidity + function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromIdReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSetParamsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorStatusReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isChurnApproverSaltUsedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `numRegistries()` and selector `0xd72d8dd6`. + ```solidity + function numRegistries() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesCall {} + ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountCall {} + ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorWithChurnReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registriesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerCall {} + ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setChurnApproverReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setEjector(address)` and selector `0x2cdd1e86`. + ```solidity + function setEjector(address _ejector) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setEjectorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setOperatorId(address,bytes32)` and selector `0xd92cbb84`. + ```solidity + function setOperatorId(address operator, bytes32 operatorId) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setOperatorIdCall { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`setOperatorId(address,bytes32)`](setOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setOperatorIdReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setOperatorIdCall) -> Self { + (value.operator, value.operatorId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: 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: setOperatorIdReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setOperatorIdCall { + 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 = setOperatorIdReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setOperatorId(address,bytes32)"; + const SELECTOR: [u8; 4] = [217u8, 44u8, 187u8, 132u8]; + #[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), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setOperatorSetParamsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setQuorumCount(uint8)` and selector `0xc4097d5e`. + ```solidity + function setQuorumCount(uint8 count) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setQuorumCountCall { + pub count: u8, + } + ///Container type for the return parameters of the [`setQuorumCount(uint8)`](setQuorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setQuorumCountReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setQuorumCountCall) -> Self { + (value.count,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setQuorumCountCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { count: 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: setQuorumCountReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setQuorumCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setQuorumCountCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setQuorumCountReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setQuorumCount(uint8)"; + const SELECTOR: [u8; 4] = [196u8, 9u8, 125u8, 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.count, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateSocketReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`RegistryCoordinatorHarness`](self) function calls. + pub enum RegistryCoordinatorHarnessCalls { + IS_TEST(IS_TESTCall), + OPERATOR_CHURN_APPROVAL_TYPEHASH(OPERATOR_CHURN_APPROVAL_TYPEHASHCall), + PUBKEY_REGISTRATION_TYPEHASH(PUBKEY_REGISTRATION_TYPEHASHCall), + _deregisterOperatorExternal(_deregisterOperatorExternalCall), + _registerOperatorExternal(_registerOperatorExternalCall), + _updateOperatorBitmapExternal(_updateOperatorBitmapExternalCall), + _updateOperatorExternal(_updateOperatorExternalCall), + blsApkRegistry(blsApkRegistryCall), + calculateOperatorChurnApprovalDigestHash(calculateOperatorChurnApprovalDigestHashCall), + churnApprover(churnApproverCall), + createQuorum(createQuorumCall), + deregisterOperator(deregisterOperatorCall), + ejectOperator(ejectOperatorCall), + ejector(ejectorCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + 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), + 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), + setEjector(setEjectorCall), + setOperatorId(setOperatorIdCall), + setOperatorSetParams(setOperatorSetParamsCall), + setPauserRegistry(setPauserRegistryCall), + setQuorumCount(setQuorumCountCall), + stakeRegistry(stakeRegistryCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + transferOwnership(transferOwnershipCall), + unpause(unpauseCall), + updateOperators(updateOperatorsCall), + updateOperatorsForQuorum(updateOperatorsForQuorumCall), + updateSocket(updateSocketCall), + } + #[automatically_derived] + impl RegistryCoordinatorHarnessCalls { + /// 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], + [16u8, 214u8, 122u8, 47u8], + [19u8, 84u8, 42u8, 78u8], + [19u8, 100u8, 57u8, 221u8], + [20u8, 120u8, 133u8, 31u8], + [26u8, 178u8, 87u8, 79u8], + [30u8, 184u8, 18u8, 218u8], + [30u8, 215u8, 131u8, 28u8], + [36u8, 154u8, 12u8, 66u8], + [39u8, 231u8, 146u8, 136u8], + [40u8, 246u8, 27u8, 49u8], + [41u8, 83u8, 84u8, 124u8], + [41u8, 107u8, 176u8, 100u8], + [41u8, 209u8, 224u8, 195u8], + [42u8, 222u8, 56u8, 128u8], + [44u8, 221u8, 30u8, 134u8], + [57u8, 152u8, 253u8, 211u8], + [60u8, 42u8, 127u8, 76u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [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], + [102u8, 217u8, 169u8, 160u8], + [104u8, 48u8, 72u8, 53u8], + [110u8, 59u8, 23u8, 219u8], + [113u8, 80u8, 24u8, 166u8], + [131u8, 16u8, 254u8, 246u8], + [132u8, 202u8, 82u8, 19u8], + [133u8, 34u8, 108u8, 129u8], + [135u8, 30u8, 240u8, 73u8], + [136u8, 111u8, 17u8, 149u8], + [141u8, 165u8, 203u8, 91u8], + [145u8, 106u8, 23u8, 198u8], + [154u8, 161u8, 101u8, 61u8], + [155u8, 93u8, 23u8, 123u8], + [158u8, 153u8, 35u8, 194u8], + [159u8, 234u8, 184u8, 89u8], + [165u8, 8u8, 87u8, 191u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [195u8, 145u8, 66u8, 94u8], + [196u8, 9u8, 125u8, 94u8], + [202u8, 13u8, 232u8, 130u8], + [202u8, 79u8, 45u8, 151u8], + [215u8, 45u8, 141u8, 214u8], + [215u8, 91u8, 76u8, 136u8], + [217u8, 44u8, 187u8, 132u8], + [221u8, 130u8, 131u8, 243u8], + [226u8, 12u8, 159u8, 113u8], + [230u8, 87u8, 151u8, 173u8], + [242u8, 253u8, 227u8, 139u8], + [250u8, 118u8, 38u8, 212u8], + [250u8, 188u8, 28u8, 188u8], + [253u8, 57u8, 16u8, 90u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for RegistryCoordinatorHarnessCalls { + const NAME: &'static str = "RegistryCoordinatorHarnessCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 64usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(_) => { + ::SELECTOR + } + Self::PUBKEY_REGISTRATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::_deregisterOperatorExternal(_) => { + <_deregisterOperatorExternalCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::_registerOperatorExternal(_) => { + <_registerOperatorExternalCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::_updateOperatorBitmapExternal(_) => { + <_updateOperatorBitmapExternalCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::_updateOperatorExternal(_) => { + <_updateOperatorExternalCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::calculateOperatorChurnApprovalDigestHash(_) => { + ::SELECTOR + } + Self::churnApprover(_) => { + ::SELECTOR + } + Self::createQuorum(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::ejectOperator(_) => { + ::SELECTOR + } + Self::ejector(_) => ::SELECTOR, + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::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::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::setEjector(_) => { + ::SELECTOR + } + Self::setOperatorId(_) => { + ::SELECTOR + } + Self::setOperatorSetParams(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::setQuorumCount(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => { + ::SELECTOR + } + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => { + ::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< + RegistryCoordinatorHarnessCalls, + >] = &[ + { + fn updateOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::updateOperators) + } + updateOperators + }, + { + fn getQuorumBitmapHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::getQuorumBitmapHistoryLength, + ) + } + getQuorumBitmapHistoryLength + }, + { + fn getQuorumBitmapAtBlockNumberByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::getQuorumBitmapAtBlockNumberByIndex, + ) + } + getQuorumBitmapAtBlockNumberByIndex + }, + { + fn churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::churnApprover) + } + churnApprover + }, + { + fn updateSocket( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::updateSocket) + } + updateSocket + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::getOperatorId) + } + getOperatorId + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::pause) + } + pause + }, + { + fn isChurnApproverSaltUsed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::isChurnApproverSaltUsed) + } + isChurnApproverSaltUsed + }, + { + fn _registerOperatorExternal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + <_registerOperatorExternalCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::_registerOperatorExternal) + } + _registerOperatorExternal + }, + { + fn getQuorumBitmapUpdateByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::getQuorumBitmapUpdateByIndex, + ) + } + getQuorumBitmapUpdateByIndex + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::excludeSenders) + } + excludeSenders + }, + { + fn quorumUpdateBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::quorumUpdateBlockNumber) + } + quorumUpdateBlockNumber + }, + { + fn _updateOperatorBitmapExternal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + <_updateOperatorBitmapExternalCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::_updateOperatorBitmapExternal, + ) + } + _updateOperatorBitmapExternal + }, + { + fn ejector( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::ejector) + } + ejector + }, + { + fn _updateOperatorExternal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + <_updateOperatorExternalCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::_updateOperatorExternal) + } + _updateOperatorExternal + }, + { + fn getOperatorFromId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::getOperatorFromId) + } + getOperatorFromId + }, + { + fn setChurnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::setChurnApprover) + } + setChurnApprover + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn setEjector( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::setEjector) + } + setEjector + }, + { + fn serviceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::serviceManager) + } + serviceManager + }, + { + fn pubkeyRegistrationMessageHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::pubkeyRegistrationMessageHash, + ) + } + pubkeyRegistrationMessageHash + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::targetContracts) + } + targetContracts + }, + { + fn updateOperatorsForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::updateOperatorsForQuorum) + } + updateOperatorsForQuorum + }, + { + fn getOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::getOperator) + } + getOperator + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::paused_0) + } + paused_0 + }, + { + fn setOperatorSetParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::setOperatorSetParams) + } + setOperatorSetParams + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::paused_1) + } + paused_1 + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn registries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::registries) + } + registries + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn ejectOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::ejectOperator) + } + ejectOperator + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn _deregisterOperatorExternal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + <_deregisterOperatorExternalCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::_deregisterOperatorExternal, + ) + } + _deregisterOperatorExternal + }, + { + fn calculateOperatorChurnApprovalDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::calculateOperatorChurnApprovalDigestHash, + ) + } + calculateOperatorChurnApprovalDigestHash + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn getCurrentQuorumBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::getCurrentQuorumBitmap) + } + getCurrentQuorumBitmap + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::owner) + } + owner + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::targetSelectors) + } + targetSelectors + }, + { + fn quorumCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::quorumCount) + } + quorumCount + }, + { + fn registerOperatorWithChurn( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::registerOperatorWithChurn) + } + registerOperatorWithChurn + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::indexRegistry) + } + indexRegistry + }, + { + fn PUBKEY_REGISTRATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::PUBKEY_REGISTRATION_TYPEHASH, + ) + } + PUBKEY_REGISTRATION_TYPEHASH + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::registerOperator) + } + registerOperator + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::failed) + } + failed + }, + { + fn getQuorumBitmapIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::getQuorumBitmapIndicesAtBlockNumber, + ) + } + getQuorumBitmapIndicesAtBlockNumber + }, + { + fn setQuorumCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::setQuorumCount) + } + setQuorumCount + }, + { + fn OPERATOR_CHURN_APPROVAL_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorHarnessCalls::OPERATOR_CHURN_APPROVAL_TYPEHASH, + ) + } + OPERATOR_CHURN_APPROVAL_TYPEHASH + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn numRegistries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::numRegistries) + } + numRegistries + }, + { + fn createQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::createQuorum) + } + createQuorum + }, + { + fn setOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::setOperatorId) + } + setOperatorId + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::initialize) + } + initialize + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::excludeContracts) + } + excludeContracts + }, + { + fn getOperatorSetParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::getOperatorSetParams) + } + getOperatorSetParams + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::transferOwnership) + } + transferOwnership + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::IS_TEST) + } + IS_TEST + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorHarnessCalls::unpause) + } + unpause + }, + { + fn getOperatorStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorHarnessCalls::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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::PUBKEY_REGISTRATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::_deregisterOperatorExternal(inner) => { + <_deregisterOperatorExternalCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::_registerOperatorExternal(inner) => { + <_registerOperatorExternalCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::_updateOperatorBitmapExternal(inner) => { + <_updateOperatorBitmapExternalCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::_updateOperatorExternal(inner) => { + <_updateOperatorExternalCall as alloy_sol_types::SolCall>::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::ejector(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::failed(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::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::setEjector(inner) => { + ::abi_encoded_size(inner) + } + Self::setOperatorId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setOperatorSetParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setQuorumCount(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSenders(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::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::PUBKEY_REGISTRATION_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::_deregisterOperatorExternal(inner) => { + <_deregisterOperatorExternalCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, + out, + ) + } + Self::_registerOperatorExternal(inner) => { + <_registerOperatorExternalCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, + out, + ) + } + Self::_updateOperatorBitmapExternal(inner) => { + <_updateOperatorBitmapExternalCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, + out, + ) + } + Self::_updateOperatorExternal(inner) => { + <_updateOperatorExternalCall as alloy_sol_types::SolCall>::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::ejector(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::failed(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::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::setEjector(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setOperatorId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setOperatorSetParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setQuorumCount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSenders(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 [`RegistryCoordinatorHarness`](self) events. + pub enum RegistryCoordinatorHarnessEvents { + ChurnApproverUpdated(ChurnApproverUpdated), + EjectorUpdated(EjectorUpdated), + Initialized(Initialized), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorSetParamsUpdated(OperatorSetParamsUpdated), + OperatorSocketUpdate(OperatorSocketUpdate), + OwnershipTransferred(OwnershipTransferred), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + QuorumBlockNumberUpdated(QuorumBlockNumberUpdated), + Unpaused(Unpaused), + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl RegistryCoordinatorHarnessEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 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, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 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, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 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, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 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, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 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, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 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, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 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, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 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, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 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, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for RegistryCoordinatorHarnessEvents { + const NAME: &'static str = "RegistryCoordinatorHarnessEvents"; + const COUNT: usize = 34usize; + 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) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 RegistryCoordinatorHarnessEvents { + 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), + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(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) + } + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`RegistryCoordinatorHarness`](self) contract instance. + + See the [wrapper's documentation](`RegistryCoordinatorHarnessInstance`) 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, + ) -> RegistryCoordinatorHarnessInstance { + RegistryCoordinatorHarnessInstance::::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< + Output = alloy_contract::Result>, + > { + RegistryCoordinatorHarnessInstance::::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 { + RegistryCoordinatorHarnessInstance::::deploy_builder( + provider, + _serviceManager, + _stakeRegistry, + _blsApkRegistry, + _indexRegistry, + ) + } + /**A [`RegistryCoordinatorHarness`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`RegistryCoordinatorHarness`](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 RegistryCoordinatorHarnessInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for RegistryCoordinatorHarnessInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("RegistryCoordinatorHarnessInstance") + .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, + > RegistryCoordinatorHarnessInstance + { + /**Creates a new wrapper around an on-chain [`RegistryCoordinatorHarness`](self) contract instance. + + See the [wrapper's documentation](`RegistryCoordinatorHarnessInstance`) 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 RegistryCoordinatorHarnessInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> RegistryCoordinatorHarnessInstance { + RegistryCoordinatorHarnessInstance { + 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, + > RegistryCoordinatorHarnessInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`_deregisterOperatorExternal`] function. + pub fn _deregisterOperatorExternal( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&_deregisterOperatorExternalCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`_registerOperatorExternal`] function. + pub fn _registerOperatorExternal( + &self, + operator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + socket: alloy::sol_types::private::String, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&_registerOperatorExternalCall { + operator, + operatorId, + quorumNumbers, + socket, + operatorSignature, + }) + } + ///Creates a new call builder for the [`_updateOperatorBitmapExternal`] function. + pub fn _updateOperatorBitmapExternal( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumBitmap: alloy::sol_types::private::primitives::aliases::U192, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&_updateOperatorBitmapExternalCall { + operatorId, + quorumBitmap, + }) + } + ///Creates a new call builder for the [`_updateOperatorExternal`] function. + pub fn _updateOperatorExternal( + &self, + operator: alloy::sol_types::private::Address, + operatorInfo: ::RustType, + quorumsToUpdate: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&_updateOperatorExternalCall { + operator, + operatorInfo, + quorumsToUpdate, + }) + } + ///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 [`ejector`] function. + pub fn ejector(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectorCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///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 [`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 [`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 [`setOperatorId`] function. + pub fn setOperatorId( + &self, + operator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setOperatorIdCall { + operator, + operatorId, + }) + } + ///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 [`setQuorumCount`] function. + pub fn setQuorumCount( + &self, + count: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setQuorumCountCall { count }) + } + ///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 [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///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, + > RegistryCoordinatorHarnessInstance + { + /// 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::() + } + ///Creates a new event filter for the [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/registrycoordinatormock.rs b/crates/utils/src/middleware/registrycoordinatormock.rs new file mode 100644 index 00000000..e390b81c --- /dev/null +++ b/crates/utils/src/middleware/registrycoordinatormock.rs @@ -0,0 +1,6764 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style +)] +pub mod IRegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorSetParam { + pub maxOperatorCount: u32, + pub kickBIPsOfOperatorStake: u16, + pub kickBIPsOfTotalStake: u16, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 RegistryCoordinatorMock { + 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 blsApkRegistry() external view returns (address); + function deregisterOperator(bytes memory quorumNumbers, bytes memory) external; + function ejectOperator(address operator, bytes memory quorumNumbers) external; + function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); + function getFromTaskNumberForOperator(address operator) external view returns (uint32); + 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 numRegistries() external view returns (uint256); + function operatorIdToQuorumBitmap(bytes32 pubkeyHash) 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 registerOperator(bytes memory quorumNumbers, bytes memory) external; + 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": "deregisterOperator", + "inputs": [ + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "", + "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": "getCurrentQuorumBitmap", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getFromTaskNumberForOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "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": "numRegistries", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorIdToQuorumBitmap", + "inputs": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "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": "registerOperator", + "inputs": [ + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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::pub_underscore_fields, + clippy::style +)] +pub mod RegistryCoordinatorMock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610ae2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80636e3b17db116100c3578063ae124d401161007c578063ae124d40146102ec578063c391425e1461030f578063d72d8dd614610332578063d80b407014610339578063e65797ad14610347578063fd39105a146103aa57600080fd5b80636e3b17db146102bc578063733095011461015d578063871ef049146102cf5780638da5cb5b1461029f5780639aa1653d146102dd5780639e9923c21461029f57600080fd5b80633c2a7f4c116101155780633c2a7f4c1461023e5780635865c60c1461026c5780635df459461461029f5780636347c9001461021857806367e098e1146102a6578063683048351461029f57600080fd5b806303fd34921461015d57806304ec63511461018457806313542a4e146101b35780631eb812da146101c1578063249a0c421461020a578063296bb06414610218575b600080fd5b61017161016b366004610636565b50600090565b6040519081526020015b60405180910390f35b61019b610192366004610663565b60009392505050565b6040516001600160c01b03909116815260200161017b565b61017161016b3660046106af565b6101d46101cf3660046106d1565b6103c5565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b03169082015260600161017b565b61017161016b3660046106f3565b61022661016b366004610636565b6040516001600160a01b03909116815260200161017b565b61025161024c3660046106af565b6103e9565b6040805182518152602092830151928101929092520161017b565b61029261027a3660046106af565b50604080518082019091526000808252602082015290565b60405161017b9190610738565b6000610226565b6102ba6102b43660046107a3565b50505050565b005b6102ba6102ca36600461080f565b505050565b61019b61016b366004610636565b6040516000815260200161017b565b6102fa61016b3660046106af565b60405163ffffffff909116815260200161017b565b61032561031d3660046108a9565b606092915050565b60405161017b9190610962565b6000610171565b6102ba6102ca3660046109ac565b6103766103553660046106f3565b50604080516060810182526000808252602082018190529181019190915290565b60408051825163ffffffff16815260208084015161ffff90811691830191909152928201519092169082015260600161017b565b6103b861016b3660046106af565b60405161017b9190610a5c565b60408051606081018252600080825260208201819052918101919091525b92915050565b6040805180820190915260008082526020820152604080516001600160a01b03841660208201526103e3910160405160208183030381529060405280519060200120610435565b919050565b604080518082019091526000808252602082015260008080610465600080516020610a8d83398151915286610a6a565b90505b610471816104c5565b9093509150600080516020610a8d8339815191528283098314156104ab576040805180820190915290815260208101919091529392505050565b600080516020610a8d833981519152600182089050610468565b60008080600080516020610a8d8339815191526003600080516020610a8d83398151915286600080516020610a8d83398151915288890909089050600061053b827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020610a8d833981519152610547565b91959194509092505050565b6000806105526105fa565b61055a610618565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561059b5761059d565bfe5b50826105ef5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c757265000000000000604482015260640160405180910390fd5b505195945050505050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60006020828403121561064857600080fd5b5035919050565b803563ffffffff8116811461043057600080fd5b60008060006060848603121561067857600080fd5b833592506106886020850161064f565b9150604084013590509250925092565b80356001600160a01b038116811461043057600080fd5b6000602082840312156106c157600080fd5b6106ca82610698565b9392505050565b600080604083850312156106e457600080fd5b50508035926020909101359150565b60006020828403121561070557600080fd5b813560ff811681146106ca57600080fd5b6003811061073457634e487b7160e01b600052602160045260246000fd5b9052565b81518152602080830151604083019161075390840182610716565b5092915050565b60008083601f84011261076c57600080fd5b50813567ffffffffffffffff81111561078457600080fd5b60208301915083602082850101111561079c57600080fd5b9250929050565b600080600080604085870312156107b957600080fd5b843567ffffffffffffffff808211156107d157600080fd5b6107dd8883890161075a565b909650945060208701359150808211156107f657600080fd5b506108038782880161075a565b95989497509550505050565b60008060006040848603121561082457600080fd5b61082d84610698565b9250602084013567ffffffffffffffff81111561084957600080fd5b6108558682870161075a565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156108a1576108a1610862565b604052919050565b600080604083850312156108bc57600080fd5b6108c58361064f565b915060208084013567ffffffffffffffff808211156108e357600080fd5b818601915086601f8301126108f757600080fd5b81358181111561090957610909610862565b8060051b915061091a848301610878565b818152918301840191848101908984111561093457600080fd5b938501935b8385101561095257843582529385019390850190610939565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156109a057835163ffffffff168352928401929184019160010161097e565b50909695505050505050565b6000806000604084860312156109c157600080fd5b833567ffffffffffffffff808211156109d957600080fd5b818601915086601f8301126109ed57600080fd5b8135602082821115610a0157610a01610862565b610a13601f8301601f19168201610878565b8281528982848701011115610a2757600080fd5b82828601838301376000928101820192909252909550860135915080821115610a4f57600080fd5b506108558682870161075a565b602081016103e38284610716565b600082610a8757634e487b7160e01b600052601260045260246000fd5b50069056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220a74e8ba0d83ba176702d495fe06af6edfaba3b9155b07094bed77cc1735976ed64736f6c634300080c0033 + /// ``` + #[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\n\xE2\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01XW`\x005`\xE0\x1C\x80cn;\x17\xDB\x11a\0\xC3W\x80c\xAE\x12M@\x11a\0|W\x80c\xAE\x12M@\x14a\x02\xECW\x80c\xC3\x91B^\x14a\x03\x0FW\x80c\xD7-\x8D\xD6\x14a\x032W\x80c\xD8\x0B@p\x14a\x039W\x80c\xE6W\x97\xAD\x14a\x03GW\x80c\xFD9\x10Z\x14a\x03\xAAW`\0\x80\xFD[\x80cn;\x17\xDB\x14a\x02\xBCW\x80cs0\x95\x01\x14a\x01]W\x80c\x87\x1E\xF0I\x14a\x02\xCFW\x80c\x8D\xA5\xCB[\x14a\x02\x9FW\x80c\x9A\xA1e=\x14a\x02\xDDW\x80c\x9E\x99#\xC2\x14a\x02\x9FW`\0\x80\xFD[\x80c<*\x7FL\x11a\x01\x15W\x80c<*\x7FL\x14a\x02>W\x80cXe\xC6\x0C\x14a\x02lW\x80c]\xF4YF\x14a\x02\x9FW\x80ccG\xC9\0\x14a\x02\x18W\x80cg\xE0\x98\xE1\x14a\x02\xA6W\x80ch0H5\x14a\x02\x9FW`\0\x80\xFD[\x80c\x03\xFD4\x92\x14a\x01]W\x80c\x04\xECcQ\x14a\x01\x84W\x80c\x13T*N\x14a\x01\xB3W\x80c\x1E\xB8\x12\xDA\x14a\x01\xC1W\x80c$\x9A\x0CB\x14a\x02\nW\x80c)k\xB0d\x14a\x02\x18W[`\0\x80\xFD[a\x01qa\x01k6`\x04a\x066V[P`\0\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x9Ba\x01\x926`\x04a\x06cV[`\0\x93\x92PPPV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x01{V[a\x01qa\x01k6`\x04a\x06\xAFV[a\x01\xD4a\x01\xCF6`\x04a\x06\xD1V[a\x03\xC5V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x01{V[a\x01qa\x01k6`\x04a\x06\xF3V[a\x02&a\x01k6`\x04a\x066V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01{V[a\x02Qa\x02L6`\x04a\x06\xAFV[a\x03\xE9V[`@\x80Q\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92R\x01a\x01{V[a\x02\x92a\x02z6`\x04a\x06\xAFV[P`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Qa\x01{\x91\x90a\x078V[`\0a\x02&V[a\x02\xBAa\x02\xB46`\x04a\x07\xA3V[PPPPV[\0[a\x02\xBAa\x02\xCA6`\x04a\x08\x0FV[PPPV[a\x01\x9Ba\x01k6`\x04a\x066V[`@Q`\0\x81R` \x01a\x01{V[a\x02\xFAa\x01k6`\x04a\x06\xAFV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01{V[a\x03%a\x03\x1D6`\x04a\x08\xA9V[``\x92\x91PPV[`@Qa\x01{\x91\x90a\tbV[`\0a\x01qV[a\x02\xBAa\x02\xCA6`\x04a\t\xACV[a\x03va\x03U6`\x04a\x06\xF3V[P`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x01{V[a\x03\xB8a\x01k6`\x04a\x06\xAFV[`@Qa\x01{\x91\x90a\n\\V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R[\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16` \x82\x01Ra\x03\xE3\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x045V[\x91\x90PV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a\x04e`\0\x80Q` a\n\x8D\x839\x81Q\x91R\x86a\njV[\x90P[a\x04q\x81a\x04\xC5V[\x90\x93P\x91P`\0\x80Q` a\n\x8D\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a\x04\xABW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a\n\x8D\x839\x81Q\x91R`\x01\x82\x08\x90Pa\x04hV[`\0\x80\x80`\0\x80Q` a\n\x8D\x839\x81Q\x91R`\x03`\0\x80Q` a\n\x8D\x839\x81Q\x91R\x86`\0\x80Q` a\n\x8D\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a\x05;\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\n\x8D\x839\x81Q\x91Ra\x05GV[\x91\x95\x91\x94P\x90\x92PPPV[`\0\x80a\x05Ra\x05\xFAV[a\x05Za\x06\x18V[` \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\x05\x9BWa\x05\x9DV[\xFE[P\x82a\x05\xEFW`@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\x01`@Q\x80\x91\x03\x90\xFD[PQ\x95\x94PPPPPV[`@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` \x82\x84\x03\x12\x15a\x06HW`\0\x80\xFD[P5\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x040W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x06xW`\0\x80\xFD[\x835\x92Pa\x06\x88` \x85\x01a\x06OV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x040W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x06\xC1W`\0\x80\xFD[a\x06\xCA\x82a\x06\x98V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06\xE4W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x07\x05W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x06\xCAW`\0\x80\xFD[`\x03\x81\x10a\x074WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91a\x07S\x90\x84\x01\x82a\x07\x16V[P\x92\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12a\x07lW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x84W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x07\x9CW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x07\xB9W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xD1W`\0\x80\xFD[a\x07\xDD\x88\x83\x89\x01a\x07ZV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x07\xF6W`\0\x80\xFD[Pa\x08\x03\x87\x82\x88\x01a\x07ZV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x08$W`\0\x80\xFD[a\x08-\x84a\x06\x98V[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08IW`\0\x80\xFD[a\x08U\x86\x82\x87\x01a\x07ZV[\x94\x97\x90\x96P\x93\x94PPPPV[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\x08\xA1Wa\x08\xA1a\x08bV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xBCW`\0\x80\xFD[a\x08\xC5\x83a\x06OV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xE3W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x08\xF7W`\0\x80\xFD[\x815\x81\x81\x11\x15a\t\tWa\t\ta\x08bV[\x80`\x05\x1B\x91Pa\t\x1A\x84\x83\x01a\x08xV[\x81\x81R\x91\x83\x01\x84\x01\x91\x84\x81\x01\x90\x89\x84\x11\x15a\t4W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a\tRW\x845\x82R\x93\x85\x01\x93\x90\x85\x01\x90a\t9V[\x80\x96PPPPPPP\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\t\xA0W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\t~V[P\x90\x96\x95PPPPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\t\xC1W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\t\xD9W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\t\xEDW`\0\x80\xFD[\x815` \x82\x82\x11\x15a\n\x01Wa\n\x01a\x08bV[a\n\x13`\x1F\x83\x01`\x1F\x19\x16\x82\x01a\x08xV[\x82\x81R\x89\x82\x84\x87\x01\x01\x11\x15a\n'W`\0\x80\xFD[\x82\x82\x86\x01\x83\x83\x017`\0\x92\x81\x01\x82\x01\x92\x90\x92R\x90\x95P\x86\x015\x91P\x80\x82\x11\x15a\nOW`\0\x80\xFD[Pa\x08U\x86\x82\x87\x01a\x07ZV[` \x81\x01a\x03\xE3\x82\x84a\x07\x16V[`\0\x82a\n\x87WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \xA7N\x8B\xA0\xD8;\xA1vp-I_\xE0j\xF6\xED\xFA\xBA;\x91U\xB0p\x94\xBE\xD7|\xC1sYv\xEDdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101585760003560e01c80636e3b17db116100c3578063ae124d401161007c578063ae124d40146102ec578063c391425e1461030f578063d72d8dd614610332578063d80b407014610339578063e65797ad14610347578063fd39105a146103aa57600080fd5b80636e3b17db146102bc578063733095011461015d578063871ef049146102cf5780638da5cb5b1461029f5780639aa1653d146102dd5780639e9923c21461029f57600080fd5b80633c2a7f4c116101155780633c2a7f4c1461023e5780635865c60c1461026c5780635df459461461029f5780636347c9001461021857806367e098e1146102a6578063683048351461029f57600080fd5b806303fd34921461015d57806304ec63511461018457806313542a4e146101b35780631eb812da146101c1578063249a0c421461020a578063296bb06414610218575b600080fd5b61017161016b366004610636565b50600090565b6040519081526020015b60405180910390f35b61019b610192366004610663565b60009392505050565b6040516001600160c01b03909116815260200161017b565b61017161016b3660046106af565b6101d46101cf3660046106d1565b6103c5565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b03169082015260600161017b565b61017161016b3660046106f3565b61022661016b366004610636565b6040516001600160a01b03909116815260200161017b565b61025161024c3660046106af565b6103e9565b6040805182518152602092830151928101929092520161017b565b61029261027a3660046106af565b50604080518082019091526000808252602082015290565b60405161017b9190610738565b6000610226565b6102ba6102b43660046107a3565b50505050565b005b6102ba6102ca36600461080f565b505050565b61019b61016b366004610636565b6040516000815260200161017b565b6102fa61016b3660046106af565b60405163ffffffff909116815260200161017b565b61032561031d3660046108a9565b606092915050565b60405161017b9190610962565b6000610171565b6102ba6102ca3660046109ac565b6103766103553660046106f3565b50604080516060810182526000808252602082018190529181019190915290565b60408051825163ffffffff16815260208084015161ffff90811691830191909152928201519092169082015260600161017b565b6103b861016b3660046106af565b60405161017b9190610a5c565b60408051606081018252600080825260208201819052918101919091525b92915050565b6040805180820190915260008082526020820152604080516001600160a01b03841660208201526103e3910160405160208183030381529060405280519060200120610435565b919050565b604080518082019091526000808252602082015260008080610465600080516020610a8d83398151915286610a6a565b90505b610471816104c5565b9093509150600080516020610a8d8339815191528283098314156104ab576040805180820190915290815260208101919091529392505050565b600080516020610a8d833981519152600182089050610468565b60008080600080516020610a8d8339815191526003600080516020610a8d83398151915286600080516020610a8d83398151915288890909089050600061053b827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020610a8d833981519152610547565b91959194509092505050565b6000806105526105fa565b61055a610618565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561059b5761059d565bfe5b50826105ef5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c757265000000000000604482015260640160405180910390fd5b505195945050505050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60006020828403121561064857600080fd5b5035919050565b803563ffffffff8116811461043057600080fd5b60008060006060848603121561067857600080fd5b833592506106886020850161064f565b9150604084013590509250925092565b80356001600160a01b038116811461043057600080fd5b6000602082840312156106c157600080fd5b6106ca82610698565b9392505050565b600080604083850312156106e457600080fd5b50508035926020909101359150565b60006020828403121561070557600080fd5b813560ff811681146106ca57600080fd5b6003811061073457634e487b7160e01b600052602160045260246000fd5b9052565b81518152602080830151604083019161075390840182610716565b5092915050565b60008083601f84011261076c57600080fd5b50813567ffffffffffffffff81111561078457600080fd5b60208301915083602082850101111561079c57600080fd5b9250929050565b600080600080604085870312156107b957600080fd5b843567ffffffffffffffff808211156107d157600080fd5b6107dd8883890161075a565b909650945060208701359150808211156107f657600080fd5b506108038782880161075a565b95989497509550505050565b60008060006040848603121561082457600080fd5b61082d84610698565b9250602084013567ffffffffffffffff81111561084957600080fd5b6108558682870161075a565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156108a1576108a1610862565b604052919050565b600080604083850312156108bc57600080fd5b6108c58361064f565b915060208084013567ffffffffffffffff808211156108e357600080fd5b818601915086601f8301126108f757600080fd5b81358181111561090957610909610862565b8060051b915061091a848301610878565b818152918301840191848101908984111561093457600080fd5b938501935b8385101561095257843582529385019390850190610939565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156109a057835163ffffffff168352928401929184019160010161097e565b50909695505050505050565b6000806000604084860312156109c157600080fd5b833567ffffffffffffffff808211156109d957600080fd5b818601915086601f8301126109ed57600080fd5b8135602082821115610a0157610a01610862565b610a13601f8301601f19168201610878565b8281528982848701011115610a2757600080fd5b82828601838301376000928101820192909252909550860135915080821115610a4f57600080fd5b506108558682870161075a565b602081016103e38284610716565b600082610a8757634e487b7160e01b600052601260045260246000fd5b50069056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220a74e8ba0d83ba176702d495fe06af6edfaba3b9155b07094bed77cc1735976ed64736f6c634300080c0033 + /// ``` + #[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\x01XW`\x005`\xE0\x1C\x80cn;\x17\xDB\x11a\0\xC3W\x80c\xAE\x12M@\x11a\0|W\x80c\xAE\x12M@\x14a\x02\xECW\x80c\xC3\x91B^\x14a\x03\x0FW\x80c\xD7-\x8D\xD6\x14a\x032W\x80c\xD8\x0B@p\x14a\x039W\x80c\xE6W\x97\xAD\x14a\x03GW\x80c\xFD9\x10Z\x14a\x03\xAAW`\0\x80\xFD[\x80cn;\x17\xDB\x14a\x02\xBCW\x80cs0\x95\x01\x14a\x01]W\x80c\x87\x1E\xF0I\x14a\x02\xCFW\x80c\x8D\xA5\xCB[\x14a\x02\x9FW\x80c\x9A\xA1e=\x14a\x02\xDDW\x80c\x9E\x99#\xC2\x14a\x02\x9FW`\0\x80\xFD[\x80c<*\x7FL\x11a\x01\x15W\x80c<*\x7FL\x14a\x02>W\x80cXe\xC6\x0C\x14a\x02lW\x80c]\xF4YF\x14a\x02\x9FW\x80ccG\xC9\0\x14a\x02\x18W\x80cg\xE0\x98\xE1\x14a\x02\xA6W\x80ch0H5\x14a\x02\x9FW`\0\x80\xFD[\x80c\x03\xFD4\x92\x14a\x01]W\x80c\x04\xECcQ\x14a\x01\x84W\x80c\x13T*N\x14a\x01\xB3W\x80c\x1E\xB8\x12\xDA\x14a\x01\xC1W\x80c$\x9A\x0CB\x14a\x02\nW\x80c)k\xB0d\x14a\x02\x18W[`\0\x80\xFD[a\x01qa\x01k6`\x04a\x066V[P`\0\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x9Ba\x01\x926`\x04a\x06cV[`\0\x93\x92PPPV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x01{V[a\x01qa\x01k6`\x04a\x06\xAFV[a\x01\xD4a\x01\xCF6`\x04a\x06\xD1V[a\x03\xC5V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Q`\x01`\x01`\xC0\x1B\x03\x16\x90\x82\x01R``\x01a\x01{V[a\x01qa\x01k6`\x04a\x06\xF3V[a\x02&a\x01k6`\x04a\x066V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01{V[a\x02Qa\x02L6`\x04a\x06\xAFV[a\x03\xE9V[`@\x80Q\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92R\x01a\x01{V[a\x02\x92a\x02z6`\x04a\x06\xAFV[P`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Qa\x01{\x91\x90a\x078V[`\0a\x02&V[a\x02\xBAa\x02\xB46`\x04a\x07\xA3V[PPPPV[\0[a\x02\xBAa\x02\xCA6`\x04a\x08\x0FV[PPPV[a\x01\x9Ba\x01k6`\x04a\x066V[`@Q`\0\x81R` \x01a\x01{V[a\x02\xFAa\x01k6`\x04a\x06\xAFV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01{V[a\x03%a\x03\x1D6`\x04a\x08\xA9V[``\x92\x91PPV[`@Qa\x01{\x91\x90a\tbV[`\0a\x01qV[a\x02\xBAa\x02\xCA6`\x04a\t\xACV[a\x03va\x03U6`\x04a\x06\xF3V[P`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x80\x84\x01Qa\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x01{V[a\x03\xB8a\x01k6`\x04a\x06\xAFV[`@Qa\x01{\x91\x90a\n\\V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R[\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16` \x82\x01Ra\x03\xE3\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x045V[\x91\x90PV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a\x04e`\0\x80Q` a\n\x8D\x839\x81Q\x91R\x86a\njV[\x90P[a\x04q\x81a\x04\xC5V[\x90\x93P\x91P`\0\x80Q` a\n\x8D\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a\x04\xABW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a\n\x8D\x839\x81Q\x91R`\x01\x82\x08\x90Pa\x04hV[`\0\x80\x80`\0\x80Q` a\n\x8D\x839\x81Q\x91R`\x03`\0\x80Q` a\n\x8D\x839\x81Q\x91R\x86`\0\x80Q` a\n\x8D\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a\x05;\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\n\x8D\x839\x81Q\x91Ra\x05GV[\x91\x95\x91\x94P\x90\x92PPPV[`\0\x80a\x05Ra\x05\xFAV[a\x05Za\x06\x18V[` \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\x05\x9BWa\x05\x9DV[\xFE[P\x82a\x05\xEFW`@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\x01`@Q\x80\x91\x03\x90\xFD[PQ\x95\x94PPPPPV[`@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` \x82\x84\x03\x12\x15a\x06HW`\0\x80\xFD[P5\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x040W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x06xW`\0\x80\xFD[\x835\x92Pa\x06\x88` \x85\x01a\x06OV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x040W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x06\xC1W`\0\x80\xFD[a\x06\xCA\x82a\x06\x98V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06\xE4W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x07\x05W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x06\xCAW`\0\x80\xFD[`\x03\x81\x10a\x074WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91a\x07S\x90\x84\x01\x82a\x07\x16V[P\x92\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12a\x07lW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x84W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x07\x9CW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x07\xB9W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xD1W`\0\x80\xFD[a\x07\xDD\x88\x83\x89\x01a\x07ZV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x07\xF6W`\0\x80\xFD[Pa\x08\x03\x87\x82\x88\x01a\x07ZV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x08$W`\0\x80\xFD[a\x08-\x84a\x06\x98V[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08IW`\0\x80\xFD[a\x08U\x86\x82\x87\x01a\x07ZV[\x94\x97\x90\x96P\x93\x94PPPPV[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\x08\xA1Wa\x08\xA1a\x08bV[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xBCW`\0\x80\xFD[a\x08\xC5\x83a\x06OV[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xE3W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x08\xF7W`\0\x80\xFD[\x815\x81\x81\x11\x15a\t\tWa\t\ta\x08bV[\x80`\x05\x1B\x91Pa\t\x1A\x84\x83\x01a\x08xV[\x81\x81R\x91\x83\x01\x84\x01\x91\x84\x81\x01\x90\x89\x84\x11\x15a\t4W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a\tRW\x845\x82R\x93\x85\x01\x93\x90\x85\x01\x90a\t9V[\x80\x96PPPPPPP\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\t\xA0W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\t~V[P\x90\x96\x95PPPPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\t\xC1W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\t\xD9W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\t\xEDW`\0\x80\xFD[\x815` \x82\x82\x11\x15a\n\x01Wa\n\x01a\x08bV[a\n\x13`\x1F\x83\x01`\x1F\x19\x16\x82\x01a\x08xV[\x82\x81R\x89\x82\x84\x87\x01\x01\x11\x15a\n'W`\0\x80\xFD[\x82\x82\x86\x01\x83\x83\x017`\0\x92\x81\x01\x82\x01\x92\x90\x92R\x90\x95P\x86\x015\x91P\x80\x82\x11\x15a\nOW`\0\x80\xFD[Pa\x08U\x86\x82\x87\x01a\x07ZV[` \x81\x01a\x03\xE3\x82\x84a\x07\x16V[`\0\x82a\n\x87WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \xA7N\x8B\xA0\xD8;\xA1vp-I_\xE0j\xF6\xED\xFA\xBA;\x91U\xB0p\x94\xBE\xD7|\xC1sYv\xEDdsolcC\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `deregisterOperator(bytes,bytes)` and selector `0x67e098e1`. + ```solidity + function deregisterOperator(bytes memory quorumNumbers, bytes memory) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub _1: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(bytes,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + 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, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumbers: 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: 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, + 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,bytes)"; + const SELECTOR: [u8; 4] = [103u8, 224u8, 152u8, 225u8]; + #[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._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 `ejectOperator(address,bytes)` and selector `0x6e3b17db`. + ```solidity + function ejectOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `getFromTaskNumberForOperator(address)` and selector `0xae124d40`. + ```solidity + function getFromTaskNumberForOperator(address operator) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getFromTaskNumberForOperatorCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getFromTaskNumberForOperator(address)`](getFromTaskNumberForOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getFromTaskNumberForOperatorReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getFromTaskNumberForOperatorCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFromTaskNumberForOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: 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: getFromTaskNumberForOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFromTaskNumberForOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getFromTaskNumberForOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getFromTaskNumberForOperatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getFromTaskNumberForOperator(address)"; + const SELECTOR: [u8; 4] = [174u8, 18u8, 77u8, 64u8]; + #[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 `getOperator(address)` and selector `0x5865c60c`. + ```solidity + function getOperator(address operator) external view returns (IRegistryCoordinator.OperatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromIdReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSetParamsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorStatusReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesCall {} + ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `operatorIdToQuorumBitmap(bytes32)` and selector `0x73309501`. + ```solidity + function operatorIdToQuorumBitmap(bytes32 pubkeyHash) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorIdToQuorumBitmapCall { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`operatorIdToQuorumBitmap(bytes32)`](operatorIdToQuorumBitmapCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorIdToQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: operatorIdToQuorumBitmapCall) -> Self { + (value.pubkeyHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorIdToQuorumBitmapCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: 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: operatorIdToQuorumBitmapReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorIdToQuorumBitmapReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorIdToQuorumBitmapCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorIdToQuorumBitmapReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorIdToQuorumBitmap(bytes32)"; + const SELECTOR: [u8; 4] = [115u8, 48u8, 149u8, 1u8]; + #[inline] + fn new<'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 `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountCall {} + ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `registerOperator(bytes,bytes)` and selector `0xd80b4070`. + ```solidity + function registerOperator(bytes memory quorumNumbers, bytes memory) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub _1: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(bytes,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + 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.quorumNumbers, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumbers: 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: 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::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(bytes,bytes)"; + const SELECTOR: [u8; 4] = [216u8, 11u8, 64u8, 112u8]; + #[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._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 `registries(uint256)` and selector `0x6347c900`. + ```solidity + function registries(uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registriesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 [`RegistryCoordinatorMock`](self) function calls. + pub enum RegistryCoordinatorMockCalls { + blsApkRegistry(blsApkRegistryCall), + deregisterOperator(deregisterOperatorCall), + ejectOperator(ejectOperatorCall), + getCurrentQuorumBitmap(getCurrentQuorumBitmapCall), + getFromTaskNumberForOperator(getFromTaskNumberForOperatorCall), + getOperator(getOperatorCall), + getOperatorFromId(getOperatorFromIdCall), + getOperatorId(getOperatorIdCall), + getOperatorSetParams(getOperatorSetParamsCall), + getOperatorStatus(getOperatorStatusCall), + getQuorumBitmapAtBlockNumberByIndex(getQuorumBitmapAtBlockNumberByIndexCall), + getQuorumBitmapHistoryLength(getQuorumBitmapHistoryLengthCall), + getQuorumBitmapIndicesAtBlockNumber(getQuorumBitmapIndicesAtBlockNumberCall), + getQuorumBitmapUpdateByIndex(getQuorumBitmapUpdateByIndexCall), + indexRegistry(indexRegistryCall), + numRegistries(numRegistriesCall), + operatorIdToQuorumBitmap(operatorIdToQuorumBitmapCall), + owner(ownerCall), + pubkeyRegistrationMessageHash(pubkeyRegistrationMessageHashCall), + quorumCount(quorumCountCall), + quorumUpdateBlockNumber(quorumUpdateBlockNumberCall), + registerOperator(registerOperatorCall), + registries(registriesCall), + stakeRegistry(stakeRegistryCall), + } + #[automatically_derived] + impl RegistryCoordinatorMockCalls { + /// 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], + [103u8, 224u8, 152u8, 225u8], + [104u8, 48u8, 72u8, 53u8], + [110u8, 59u8, 23u8, 219u8], + [115u8, 48u8, 149u8, 1u8], + [135u8, 30u8, 240u8, 73u8], + [141u8, 165u8, 203u8, 91u8], + [154u8, 161u8, 101u8, 61u8], + [158u8, 153u8, 35u8, 194u8], + [174u8, 18u8, 77u8, 64u8], + [195u8, 145u8, 66u8, 94u8], + [215u8, 45u8, 141u8, 214u8], + [216u8, 11u8, 64u8, 112u8], + [230u8, 87u8, 151u8, 173u8], + [253u8, 57u8, 16u8, 90u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for RegistryCoordinatorMockCalls { + const NAME: &'static str = "RegistryCoordinatorMockCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 24usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::ejectOperator(_) => ::SELECTOR, + Self::getCurrentQuorumBitmap(_) => { + ::SELECTOR + } + Self::getFromTaskNumberForOperator(_) => { + ::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::operatorIdToQuorumBitmap(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::pubkeyRegistrationMessageHash(_) => { + ::SELECTOR + } + Self::quorumCount(_) => ::SELECTOR, + Self::quorumUpdateBlockNumber(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::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( + RegistryCoordinatorMockCalls::getQuorumBitmapHistoryLength, + ) + } + getQuorumBitmapHistoryLength + }, + { + fn getQuorumBitmapAtBlockNumberByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorMockCalls::getQuorumBitmapAtBlockNumberByIndex, + ) + } + getQuorumBitmapAtBlockNumberByIndex + }, + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::getOperatorId) + } + getOperatorId + }, + { + fn getQuorumBitmapUpdateByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorMockCalls::getQuorumBitmapUpdateByIndex, + ) + } + getQuorumBitmapUpdateByIndex + }, + { + fn quorumUpdateBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::quorumUpdateBlockNumber) + } + quorumUpdateBlockNumber + }, + { + fn getOperatorFromId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::getOperatorFromId) + } + getOperatorFromId + }, + { + fn pubkeyRegistrationMessageHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorMockCalls::pubkeyRegistrationMessageHash, + ) + } + pubkeyRegistrationMessageHash + }, + { + fn getOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::getOperator) + } + getOperator + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn registries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorMockCalls::registries) + } + registries + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn ejectOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::ejectOperator) + } + ejectOperator + }, + { + fn operatorIdToQuorumBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::operatorIdToQuorumBitmap) + } + operatorIdToQuorumBitmap + }, + { + fn getCurrentQuorumBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::getCurrentQuorumBitmap) + } + getCurrentQuorumBitmap + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorMockCalls::owner) + } + owner + }, + { + fn quorumCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::quorumCount) + } + quorumCount + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::indexRegistry) + } + indexRegistry + }, + { + fn getFromTaskNumberForOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorMockCalls::getFromTaskNumberForOperator, + ) + } + getFromTaskNumberForOperator + }, + { + fn getQuorumBitmapIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorMockCalls::getQuorumBitmapIndicesAtBlockNumber, + ) + } + getQuorumBitmapIndicesAtBlockNumber + }, + { + fn numRegistries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::numRegistries) + } + numRegistries + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::registerOperator) + } + registerOperator + }, + { + fn getOperatorSetParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::getOperatorSetParams) + } + getOperatorSetParams + }, + { + fn getOperatorStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorMockCalls::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::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentQuorumBitmap(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getFromTaskNumberForOperator(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::operatorIdToQuorumBitmap(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::registerOperator(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::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejectOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentQuorumBitmap(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getFromTaskNumberForOperator(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::operatorIdToQuorumBitmap(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::registerOperator(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 [`RegistryCoordinatorMock`](self) events. + pub enum RegistryCoordinatorMockEvents { + ChurnApproverUpdated(ChurnApproverUpdated), + EjectorUpdated(EjectorUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorSetParamsUpdated(OperatorSetParamsUpdated), + QuorumBlockNumberUpdated(QuorumBlockNumberUpdated), + } + #[automatically_derived] + impl RegistryCoordinatorMockEvents { + /// 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 RegistryCoordinatorMockEvents { + const NAME: &'static str = "RegistryCoordinatorMockEvents"; + 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 RegistryCoordinatorMockEvents { + 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 [`RegistryCoordinatorMock`](self) contract instance. + + See the [wrapper's documentation](`RegistryCoordinatorMockInstance`) 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, + ) -> RegistryCoordinatorMockInstance { + RegistryCoordinatorMockInstance::::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>, + > { + RegistryCoordinatorMockInstance::::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 { + RegistryCoordinatorMockInstance::::deploy_builder(provider) + } + /**A [`RegistryCoordinatorMock`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`RegistryCoordinatorMock`](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 RegistryCoordinatorMockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for RegistryCoordinatorMockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("RegistryCoordinatorMockInstance") + .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, + > RegistryCoordinatorMockInstance + { + /**Creates a new wrapper around an on-chain [`RegistryCoordinatorMock`](self) contract instance. + + See the [wrapper's documentation](`RegistryCoordinatorMockInstance`) 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 RegistryCoordinatorMockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> RegistryCoordinatorMockInstance { + RegistryCoordinatorMockInstance { + 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, + > RegistryCoordinatorMockInstance + { + /// 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 [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + quorumNumbers: alloy::sol_types::private::Bytes, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { quorumNumbers, _1 }) + } + ///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 [`getFromTaskNumberForOperator`] function. + pub fn getFromTaskNumberForOperator( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getFromTaskNumberForOperatorCall { operator }) + } + ///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 [`operatorIdToQuorumBitmap`] function. + pub fn operatorIdToQuorumBitmap( + &self, + pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorIdToQuorumBitmapCall { pubkeyHash }) + } + ///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 [`registerOperator`] function. + pub fn registerOperator( + &self, + quorumNumbers: alloy::sol_types::private::Bytes, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { quorumNumbers, _1 }) + } + ///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, + > RegistryCoordinatorMockInstance + { + /// 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/middleware/registrycoordinatorstorage.rs b/crates/utils/src/middleware/registrycoordinatorstorage.rs new file mode 100644 index 00000000..7779527f --- /dev/null +++ b/crates/utils/src/middleware/registrycoordinatorstorage.rs @@ -0,0 +1,7025 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style +)] +pub mod IRegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorSetParam { + pub maxOperatorCount: u32, + pub kickBIPsOfOperatorStake: u16, + pub kickBIPsOfTotalStake: u16, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 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 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": "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": "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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PUBKEY_REGISTRATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `ejector()` and selector `0x28f61b31`. + ```solidity + function ejector() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectorCall {} + ///Container type for the return parameters of the [`ejector()`](ejectorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ejectorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorFromIdReturn { + pub operator: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorSetParamsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorStatusReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isChurnApproverSaltUsedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `numRegistries()` and selector `0xd72d8dd6`. + ```solidity + function numRegistries() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesCall {} + ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct numRegistriesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountCall {} + ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumCountReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registriesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerCall {} + ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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), + 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), + 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], + [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], + [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 = 26usize; + #[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::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::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 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 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::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::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::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::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 [`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 [`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/middleware/safecastupgradeable.rs similarity index 94% rename from crates/utils/src/safecastupgradeable.rs rename to crates/utils/src/middleware/safecastupgradeable.rs index 351ca766..66231568 100644 --- a/crates/utils/src/safecastupgradeable.rs +++ b/crates/utils/src/middleware/safecastupgradeable.rs @@ -9,29 +9,34 @@ interface SafeCastUpgradeable {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod SafeCastUpgradeable { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a493000db9d2fbfb61c0ec00f58a2ec5748780ff166099f8c227ff4959f426d764736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b9ee3466f80cc8312a2a28cdc7f24fcc5775de3562fb5c2f372bf8e92738db4364736f6c634300080c0033 /// ``` #[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", + 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 \xB9\xEE4f\xF8\x0C\xC81**(\xCD\xC7\xF2O\xCCWu\xDE5b\xFB\\/7+\xF8\xE9'8\xDBCdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a493000db9d2fbfb61c0ec00f58a2ec5748780ff166099f8c227ff4959f426d764736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b9ee3466f80cc8312a2a28cdc7f24fcc5775de3562fb5c2f372bf8e92738db4364736f6c634300080c0033 /// ``` #[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", + 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 \xB9\xEE4f\xF8\x0C\xC81**(\xCD\xC7\xF2O\xCCWu\xDE5b\xFB\\/7+\xF8\xE9'8\xDBCdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`SafeCastUpgradeable`](self) contract instance. diff --git a/crates/utils/src/safeerc20.rs b/crates/utils/src/middleware/safeerc20.rs similarity index 93% rename from crates/utils/src/safeerc20.rs rename to crates/utils/src/middleware/safeerc20.rs index 082e6549..1c3d2826 100644 --- a/crates/utils/src/safeerc20.rs +++ b/crates/utils/src/middleware/safeerc20.rs @@ -9,29 +9,34 @@ interface SafeERC20 {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod SafeERC20 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122049d94ff5a46e62e2f9bd04916090407b188d7d40badf72cea2e8a0afcfd68ed064736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220935b8d19c93557985501bd5afd942948df8894b66822c18f5b5e5b39900923bc64736f6c634300080c0033 /// ``` #[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", + 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 \x93[\x8D\x19\xC95W\x98U\x01\xBDZ\xFD\x94)H\xDF\x88\x94\xB6h\"\xC1\x8F[^[9\x90\t#\xBCdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122049d94ff5a46e62e2f9bd04916090407b188d7d40badf72cea2e8a0afcfd68ed064736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220935b8d19c93557985501bd5afd942948df8894b66822c18f5b5e5b39900923bc64736f6c634300080c0033 /// ``` #[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", + 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 \x93[\x8D\x19\xC95W\x98U\x01\xBDZ\xFD\x94)H\xDF\x88\x94\xB6h\"\xC1\x8F[^[9\x90\t#\xBCdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`SafeERC20`](self) contract instance. diff --git a/crates/utils/src/servicemanagerbasestorage.rs b/crates/utils/src/middleware/servicemanagerbase.rs similarity index 63% rename from crates/utils/src/servicemanagerbasestorage.rs rename to crates/utils/src/middleware/servicemanagerbase.rs index 4c53c813..4c1c8d5e 100644 --- a/crates/utils/src/servicemanagerbasestorage.rs +++ b/crates/utils/src/middleware/servicemanagerbase.rs @@ -1,634 +1,36 @@ ///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)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -962,20 +364,6 @@ pub mod ISignatureUtils { 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; @@ -984,20 +372,17 @@ library ISignatureUtils { } } -interface ServiceManagerBaseStorage { +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 transferOwnership(address newOwner) external; function updateAVSMetadataURI(string memory _metadataURI) external; } @@ -1019,58 +404,6 @@ interface ServiceManagerBaseStorage { ], "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", @@ -1171,19 +504,6 @@ interface ServiceManagerBaseStorage { "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "rewardsInitiator", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "transferOwnership", @@ -1241,30 +561,16 @@ interface ServiceManagerBaseStorage { } ], "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 { +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod ServiceManagerBase { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. @@ -1291,13 +597,23 @@ pub mod ServiceManagerBaseStorage { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1379,134 +695,42 @@ pub mod ServiceManagerBaseStorage { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + pub previousOwner: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newRewardsInitiator: alloy::sol_types::private::Address, + pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] - impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { - type DataTuple<'a> = ( + 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, ); - 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: &'static str = "OwnershipTransferred(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, + 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)] @@ -1516,8 +740,8 @@ pub mod ServiceManagerBaseStorage { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - prevRewardsInitiator: data.0, - newRewardsInitiator: data.1, + previousOwner: topics.1, + newOwner: topics.2, } } #[inline] @@ -1535,18 +759,15 @@ pub mod ServiceManagerBaseStorage { } #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { - ( - ::tokenize( - &self.prevRewardsInitiator, - ), - ::tokenize( - &self.newRewardsInitiator, - ), - ) + () } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(),) + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) } #[inline] fn encode_topics_raw( @@ -1557,11 +778,17 @@ pub mod ServiceManagerBaseStorage { 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 RewardsInitiatorUpdated { + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -1570,9 +797,9 @@ pub mod ServiceManagerBaseStorage { } } #[automatically_derived] - impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData { + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData { + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } @@ -1581,16 +808,21 @@ pub mod ServiceManagerBaseStorage { ```solidity function avsDirectory() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsDirectoryCall {} ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct avsDirectoryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1682,140 +914,25 @@ pub mod ServiceManagerBaseStorage { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorFromAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1915,18 +1032,23 @@ pub mod ServiceManagerBaseStorage { ```solidity function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorRestakedStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2029,16 +1151,21 @@ pub mod ServiceManagerBaseStorage { ```solidity function getRestakeableStrategies() external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesCall {} ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2137,16 +1264,21 @@ pub mod ServiceManagerBaseStorage { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2242,7 +1374,7 @@ pub mod ServiceManagerBaseStorage { ```solidity function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSCall { pub operator: alloy::sol_types::private::Address, @@ -2250,10 +1382,15 @@ pub mod ServiceManagerBaseStorage { ::RustType, } ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2369,14 +1506,19 @@ pub mod ServiceManagerBaseStorage { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2468,125 +1610,25 @@ pub mod ServiceManagerBaseStorage { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2686,16 +1728,21 @@ pub mod ServiceManagerBaseStorage { ```solidity function updateAVSMetadataURI(string memory _metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2793,22 +1840,20 @@ pub mod ServiceManagerBaseStorage { } } }; - ///Container for all the [`ServiceManagerBaseStorage`](self) function calls. - pub enum ServiceManagerBaseStorageCalls { + ///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), transferOwnership(transferOwnershipCall), updateAVSMetadataURI(updateAVSMetadataURICall), } #[automatically_derived] - impl ServiceManagerBaseStorageCalls { + impl ServiceManagerBaseCalls { /// All the selectors of this enum. /// /// Note that the selectors might not be in the same order as the variants. @@ -2825,22 +1870,17 @@ pub mod ServiceManagerBaseStorage { [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"; + impl alloy_sol_types::SolInterface for ServiceManagerBaseCalls { + const NAME: &'static str = "ServiceManagerBaseCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 11usize; + const COUNT: usize = 9usize; #[inline] fn selector(&self) -> [u8; 4] { match self { Self::avsDirectory(_) => ::SELECTOR, - Self::createAVSRewardsSubmission(_) => { - ::SELECTOR - } Self::deregisterOperatorFromAVS(_) => { ::SELECTOR } @@ -2857,9 +1897,6 @@ pub mod ServiceManagerBaseStorage { Self::renounceOwnership(_) => { ::SELECTOR } - Self::rewardsInitiator(_) => { - ::SELECTOR - } Self::transferOwnership(_) => { ::SELECTOR } @@ -2886,22 +1923,18 @@ pub mod ServiceManagerBaseStorage { static DECODE_SHIMS: &[fn( &[u8], bool, - ) -> alloy_sol_types::Result< - ServiceManagerBaseStorageCalls, - >] = &[ + ) + -> alloy_sol_types::Result] = &[ { fn getOperatorRestakedStrategies( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map( - ServiceManagerBaseStorageCalls::getOperatorRestakedStrategies, - ) + .map(ServiceManagerBaseCalls::getOperatorRestakedStrategies) } getOperatorRestakedStrategies }, @@ -2909,12 +1942,11 @@ pub mod ServiceManagerBaseStorage { fn avsDirectory( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseStorageCalls::avsDirectory) + .map(ServiceManagerBaseCalls::avsDirectory) } avsDirectory }, @@ -2922,12 +1954,11 @@ pub mod ServiceManagerBaseStorage { fn renounceOwnership( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseStorageCalls::renounceOwnership) + .map(ServiceManagerBaseCalls::renounceOwnership) } renounceOwnership }, @@ -2935,10 +1966,9 @@ pub mod ServiceManagerBaseStorage { fn owner( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw(data, validate) - .map(ServiceManagerBaseStorageCalls::owner) + .map(ServiceManagerBaseCalls::owner) } owner }, @@ -2946,12 +1976,11 @@ pub mod ServiceManagerBaseStorage { fn registerOperatorToAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseStorageCalls::registerOperatorToAVS) + .map(ServiceManagerBaseCalls::registerOperatorToAVS) } registerOperatorToAVS }, @@ -2959,12 +1988,11 @@ pub mod ServiceManagerBaseStorage { fn deregisterOperatorFromAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseStorageCalls::deregisterOperatorFromAVS) + .map(ServiceManagerBaseCalls::deregisterOperatorFromAVS) } deregisterOperatorFromAVS }, @@ -2972,12 +2000,11 @@ pub mod ServiceManagerBaseStorage { fn updateAVSMetadataURI( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseStorageCalls::updateAVSMetadataURI) + .map(ServiceManagerBaseCalls::updateAVSMetadataURI) } updateAVSMetadataURI }, @@ -2985,12 +2012,11 @@ pub mod ServiceManagerBaseStorage { fn getRestakeableStrategies( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseStorageCalls::getRestakeableStrategies) + .map(ServiceManagerBaseCalls::getRestakeableStrategies) } getRestakeableStrategies }, @@ -2998,44 +2024,14 @@ pub mod ServiceManagerBaseStorage { fn transferOwnership( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result - { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseStorageCalls::transferOwnership) + .map(ServiceManagerBaseCalls::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( @@ -3053,11 +2049,6 @@ pub mod ServiceManagerBaseStorage { inner, ) } - Self::createAVSRewardsSubmission(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::deregisterOperatorFromAVS(inner) => { ::abi_encoded_size( inner, @@ -3086,11 +2077,6 @@ pub mod ServiceManagerBaseStorage { inner, ) } - Self::rewardsInitiator(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::transferOwnership(inner) => { ::abi_encoded_size( inner, @@ -3109,11 +2095,6 @@ pub mod ServiceManagerBaseStorage { Self::avsDirectory(inner) => { ::abi_encode_raw(inner, out) } - Self::createAVSRewardsSubmission(inner) => { - ::abi_encode_raw( - inner, out, - ) - } Self::deregisterOperatorFromAVS(inner) => { ::abi_encode_raw( inner, out, @@ -3140,9 +2121,6 @@ pub mod ServiceManagerBaseStorage { Self::renounceOwnership(inner) => { ::abi_encode_raw(inner, out) } - Self::rewardsInitiator(inner) => { - ::abi_encode_raw(inner, out) - } Self::transferOwnership(inner) => { ::abi_encode_raw(inner, out) } @@ -3154,14 +2132,13 @@ pub mod ServiceManagerBaseStorage { } } } - ///Container for all the [`ServiceManagerBaseStorage`](self) events. - pub enum ServiceManagerBaseStorageEvents { + ///Container for all the [`ServiceManagerBase`](self) events. + pub enum ServiceManagerBaseEvents { Initialized(Initialized), OwnershipTransferred(OwnershipTransferred), - RewardsInitiatorUpdated(RewardsInitiatorUpdated), } #[automatically_derived] - impl ServiceManagerBaseStorageEvents { + impl ServiceManagerBaseEvents { /// All the selectors of this enum. /// /// Note that the selectors might not be in the same order as the variants. @@ -3179,17 +2156,12 @@ pub mod ServiceManagerBaseStorage { 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; + impl alloy_sol_types::SolEventInterface for ServiceManagerBaseEvents { + const NAME: &'static str = "ServiceManagerBaseEvents"; + const COUNT: usize = 2usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -3208,12 +2180,6 @@ pub mod ServiceManagerBaseStorage { ) .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( @@ -3227,7 +2193,7 @@ pub mod ServiceManagerBaseStorage { } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for ServiceManagerBaseStorageEvents { + impl alloy_sol_types::private::IntoLogData for ServiceManagerBaseEvents { fn to_log_data(&self) -> alloy_sol_types::private::LogData { match self { Self::Initialized(inner) => { @@ -3236,9 +2202,6 @@ pub mod ServiceManagerBaseStorage { 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 { @@ -3249,16 +2212,13 @@ pub mod ServiceManagerBaseStorage { 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. + /**Creates a new wrapper around an on-chain [`ServiceManagerBase`](self) contract instance. - See the [wrapper's documentation](`ServiceManagerBaseStorageInstance`) for more details.*/ + See the [wrapper's documentation](`ServiceManagerBaseInstance`) for more details.*/ #[inline] pub const fn new< T: alloy_contract::private::Transport + ::core::clone::Clone, @@ -3267,8 +2227,8 @@ pub mod ServiceManagerBaseStorage { >( address: alloy_sol_types::private::Address, provider: P, - ) -> ServiceManagerBaseStorageInstance { - ServiceManagerBaseStorageInstance::::new(address, provider) + ) -> ServiceManagerBaseInstance { + ServiceManagerBaseInstance::::new(address, provider) } /**Deploys this contract using the given `provider` and constructor arguments, if any. @@ -3282,10 +2242,9 @@ pub mod ServiceManagerBaseStorage { N: alloy_contract::private::Network, >( provider: P, - ) -> impl ::core::future::Future< - Output = alloy_contract::Result>, - > { - ServiceManagerBaseStorageInstance::::deploy(provider) + ) -> impl ::core::future::Future>> + { + ServiceManagerBaseInstance::::deploy(provider) } /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` and constructor arguments, if any. @@ -3300,12 +2259,12 @@ pub mod ServiceManagerBaseStorage { >( provider: P, ) -> alloy_contract::RawCallBuilder { - ServiceManagerBaseStorageInstance::::deploy_builder(provider) + ServiceManagerBaseInstance::::deploy_builder(provider) } - /**A [`ServiceManagerBaseStorage`](self) instance. + /**A [`ServiceManagerBase`](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 + [`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!) @@ -3314,16 +2273,16 @@ pub mod ServiceManagerBaseStorage { See the [module-level documentation](self) for all the available methods.*/ #[derive(Clone)] - pub struct ServiceManagerBaseStorageInstance { + 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 ServiceManagerBaseStorageInstance { + impl ::core::fmt::Debug for ServiceManagerBaseInstance { #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple("ServiceManagerBaseStorageInstance") + f.debug_tuple("ServiceManagerBaseInstance") .field(&self.address) .finish() } @@ -3334,11 +2293,11 @@ pub mod ServiceManagerBaseStorage { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ServiceManagerBaseStorageInstance + > ServiceManagerBaseInstance { - /**Creates a new wrapper around an on-chain [`ServiceManagerBaseStorage`](self) contract instance. + /**Creates a new wrapper around an on-chain [`ServiceManagerBase`](self) contract instance. - See the [wrapper's documentation](`ServiceManagerBaseStorageInstance`) for more details.*/ + See the [wrapper's documentation](`ServiceManagerBaseInstance`) for more details.*/ #[inline] pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { Self { @@ -3355,7 +2314,7 @@ pub mod ServiceManagerBaseStorage { #[inline] pub async fn deploy( provider: P, - ) -> alloy_contract::Result> { + ) -> 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)) @@ -3393,11 +2352,11 @@ pub mod ServiceManagerBaseStorage { &self.provider } } - impl ServiceManagerBaseStorageInstance { + impl ServiceManagerBaseInstance { /// Clones the provider and returns a new instance with the cloned provider. #[inline] - pub fn with_cloned_provider(self) -> ServiceManagerBaseStorageInstance { - ServiceManagerBaseStorageInstance { + pub fn with_cloned_provider(self) -> ServiceManagerBaseInstance { + ServiceManagerBaseInstance { address: self.address, provider: ::core::clone::Clone::clone(&self.provider), _network_transport: ::core::marker::PhantomData, @@ -3410,7 +2369,7 @@ pub mod ServiceManagerBaseStorage { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ServiceManagerBaseStorageInstance + > ServiceManagerBaseInstance { /// Creates a new call builder using this contract instance's provider and address. /// @@ -3426,15 +2385,6 @@ pub mod ServiceManagerBaseStorage { 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, @@ -3476,12 +2426,6 @@ pub mod ServiceManagerBaseStorage { ) -> 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, @@ -3503,7 +2447,7 @@ pub mod ServiceManagerBaseStorage { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ServiceManagerBaseStorageInstance + > ServiceManagerBaseInstance { /// Creates a new event filter using this contract instance's provider and address. /// @@ -3524,11 +2468,5 @@ pub mod ServiceManagerBaseStorage { ) -> 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/servicemanagerbase.rs b/crates/utils/src/middleware/servicemanagermock.rs similarity index 61% rename from crates/utils/src/servicemanagerbase.rs rename to crates/utils/src/middleware/servicemanagermock.rs index 406f9e34..7ba0c460 100644 --- a/crates/utils/src/servicemanagerbase.rs +++ b/crates/utils/src/middleware/servicemanagermock.rs @@ -1,634 +1,36 @@ ///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)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -962,20 +364,6 @@ pub mod ISignatureUtils { 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; @@ -984,21 +372,20 @@ library ISignatureUtils { } } -interface ServiceManagerBase { +interface ServiceManagerMock { event Initialized(uint8 version); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); - event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + + constructor(address _avsDirectory, address _registryCoordinator, address _stakeRegistry); 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 initialize(address initialOwner) external; 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; } @@ -1007,6 +394,27 @@ interface ServiceManagerBase { ...which was generated by the following JSON ABI: ```json [ + { + "type": "constructor", + "inputs": [ + { + "name": "_avsDirectory", + "type": "address", + "internalType": "contract IAVSDirectory" + }, + { + "name": "_registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "_stakeRegistry", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "avsDirectory", @@ -1020,58 +428,6 @@ interface ServiceManagerBase { ], "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", @@ -1117,6 +473,19 @@ interface ServiceManagerBase { ], "stateMutability": "view" }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "initialOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "owner", @@ -1172,32 +541,6 @@ interface ServiceManagerBase { "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", @@ -1255,63 +598,59 @@ interface ServiceManagerBase { } ], "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 { +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod ServiceManagerMock { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x + ///0x60e06040523480156200001157600080fd5b50604051620016e0380380620016e0833981016040819052620000349162000141565b6001600160a01b0380841660c052808316608052811660a0528282826200005a62000066565b50505050505062000195565b600054610100900460ff1615620000d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013e57600080fd5b50565b6000806000606084860312156200015757600080fd5b8351620001648162000128565b6020850151909350620001778162000128565b60408501519092506200018a8162000128565b809150509250925092565b60805160a05160c0516114ba620002266000396000818160ce015281816106d4015281816107a80152610827015260008181610382015281816104de0152818161057501528181610a3701528181610bbb0152610c5a0152600081816101ad0152818161023c015281816102bc015281816106770152818161074c015281816109750152610b1601526114ba6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c0033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"", + b"`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x16\xE08\x03\x80b\0\x16\xE0\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01AV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\xC0R\x80\x83\x16`\x80R\x81\x16`\xA0R\x82\x82\x82b\0\0Zb\0\0fV[PPPPPPb\0\x01\x95V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD3W`@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\x01WW`\0\x80\xFD[\x83Qb\0\x01d\x81b\0\x01(V[` \x85\x01Q\x90\x93Pb\0\x01w\x81b\0\x01(V[`@\x85\x01Q\x90\x92Pb\0\x01\x8A\x81b\0\x01(V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Qa\x14\xBAb\0\x02&`\09`\0\x81\x81`\xCE\x01R\x81\x81a\x06\xD4\x01R\x81\x81a\x07\xA8\x01Ra\x08'\x01R`\0\x81\x81a\x03\x82\x01R\x81\x81a\x04\xDE\x01R\x81\x81a\x05u\x01R\x81\x81a\n7\x01R\x81\x81a\x0B\xBB\x01Ra\x0CZ\x01R`\0\x81\x81a\x01\xAD\x01R\x81\x81a\x02<\x01R\x81\x81a\x02\xBC\x01R\x81\x81a\x06w\x01R\x81\x81a\x07L\x01R\x81\x81a\tu\x01Ra\x0B\x16\x01Ra\x14\xBA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x + ///0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a364f4da11610066578063a364f4da14610134578063a98fb35514610147578063c4d66de81461015a578063e481af9d1461016d578063f2fde38b1461017557600080fd5b806333cfb7b7146100a35780636b3aa72e146100cc578063715018a6146101065780638da5cb5b146101105780639926ee7d14610121575b600080fd5b6100b66100b1366004610fd2565b610188565b6040516100c39190610ff6565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100c3565b61010e610658565b005b6033546001600160a01b03166100ee565b61010e61012f3660046110f8565b61066c565b61010e610142366004610fd2565b610741565b61010e6101553660046111a3565b610808565b61010e610168366004610fd2565b61085c565b6100b661096f565b61010e610183366004610fd2565b610d39565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021891906111f4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a7919061120d565b90506001600160c01b038116158061034157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190611236565b60ff16155b1561035d57505060408051600081526020810190915292915050565b6000610371826001600160c01b0316610db2565b90506000805b8251811015610447577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106103c1576103c1611259565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042991906111f4565b6104339083611285565b91508061043f8161129d565b915050610377565b5060008167ffffffffffffffff81111561046357610463611043565b60405190808252806020026020018201604052801561048c578160200160208202803683370190505b5090506000805b845181101561064b5760008582815181106104b0576104b0611259565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054991906111f4565b905060005b81811015610635576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e791906112b8565b600001518686815181106105fd576105fd611259565b6001600160a01b03909216602092830291909101909101528461061f8161129d565b955050808061062d9061129d565b91505061054e565b50505080806106439061129d565b915050610493565b5090979650505050505050565b610660610e75565b61066a6000610ecf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106bd5760405162461bcd60e51b81526004016106b490611328565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061070b90859085906004016113ed565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107895760405162461bcd60e51b81526004016106b490611328565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b5050505050565b610810610e75565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906107d3908490600401611438565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b4565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b61092582610f21565b801561096b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190611236565b60ff16905080610a1357505060408051600081526020810190915290565b6000805b82811015610ac857604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906111f4565b610ab49083611285565b915080610ac08161129d565b915050610a17565b5060008167ffffffffffffffff811115610ae457610ae4611043565b604051908082528060200260200182016040528015610b0d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190611236565b60ff16811015610d2f57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906111f4565b905060005b81811015610d1a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc91906112b8565b60000151858581518110610ce257610ce2611259565b6001600160a01b039092166020928302919091019091015283610d048161129d565b9450508080610d129061129d565b915050610c33565b50508080610d279061129d565b915050610b14565b5090949350505050565b610d41610e75565b6001600160a01b038116610da65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b610daf81610ecf565b50565b6060600080610dc084610f8c565b61ffff1667ffffffffffffffff811115610ddc57610ddc611043565b6040519080825280601f01601f191660200182016040528015610e06576020820181803683370190505b5090506000805b825182108015610e1e575061010081105b15610d2f576001811b935085841615610e65578060f81b838381518110610e4757610e47611259565b60200101906001600160f81b031916908160001a9053508160010191505b610e6e8161129d565b9050610e0d565b6033546001600160a01b0316331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610da65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106b4565b6000805b8215610fb757610fa160018461144b565b9092169180610faf81611462565b915050610f90565b92915050565b6001600160a01b0381168114610daf57600080fd5b600060208284031215610fe457600080fd5b8135610fef81610fbd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110375783516001600160a01b031683529284019291840191600101611012565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561107c5761107c611043565b60405290565b600067ffffffffffffffff8084111561109d5761109d611043565b604051601f8501601f19908116603f011681019082821181831017156110c5576110c5611043565b816040528093508581528686860111156110de57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561110b57600080fd5b823561111681610fbd565b9150602083013567ffffffffffffffff8082111561113357600080fd5b908401906060828703121561114757600080fd5b61114f611059565b82358281111561115e57600080fd5b83019150601f8201871361117157600080fd5b61118087833560208501611082565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111b557600080fd5b813567ffffffffffffffff8111156111cc57600080fd5b8201601f810184136111dd57600080fd5b6111ec84823560208401611082565b949350505050565b60006020828403121561120657600080fd5b5051919050565b60006020828403121561121f57600080fd5b81516001600160c01b0381168114610fef57600080fd5b60006020828403121561124857600080fd5b815160ff81168114610fef57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112985761129861126f565b500190565b60006000198214156112b1576112b161126f565b5060010190565b6000604082840312156112ca57600080fd5b6040516040810181811067ffffffffffffffff821117156112ed576112ed611043565b60405282516112fb81610fbd565b815260208301516bffffffffffffffffffffffff8116811461131c57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113c6576020818501810151868301820152016113aa565b818111156113d8576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261141760a08401826113a0565b90506020840151606084015260408401516080840152809150509392505050565b602081526000610fef60208301846113a0565b60008282101561145d5761145d61126f565b500390565b600061ffff8083168181141561147a5761147a61126f565b600101939250505056fea26469706673582212209707e541d6ded2bc33d2d9e3c211145474ee61ebec1fd9ea3326e487a925096164736f6c634300080c0033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"", + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\xA3d\xF4\xDA\x11a\0fW\x80c\xA3d\xF4\xDA\x14a\x014W\x80c\xA9\x8F\xB3U\x14a\x01GW\x80c\xC4\xD6m\xE8\x14a\x01ZW\x80c\xE4\x81\xAF\x9D\x14a\x01mW\x80c\xF2\xFD\xE3\x8B\x14a\x01uW`\0\x80\xFD[\x80c3\xCF\xB7\xB7\x14a\0\xA3W\x80ck:\xA7.\x14a\0\xCCW\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x10W\x80c\x99&\xEE}\x14a\x01!W[`\0\x80\xFD[a\0\xB6a\0\xB16`\x04a\x0F\xD2V[a\x01\x88V[`@Qa\0\xC3\x91\x90a\x0F\xF6V[`@Q\x80\x91\x03\x90\xF3[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xC3V[a\x01\x0Ea\x06XV[\0[`3T`\x01`\x01`\xA0\x1B\x03\x16a\0\xEEV[a\x01\x0Ea\x01/6`\x04a\x10\xF8V[a\x06lV[a\x01\x0Ea\x01B6`\x04a\x0F\xD2V[a\x07AV[a\x01\x0Ea\x01U6`\x04a\x11\xA3V[a\x08\x08V[a\x01\x0Ea\x01h6`\x04a\x0F\xD2V[a\x08\\V[a\0\xB6a\toV[a\x01\x0Ea\x01\x836`\x04a\x0F\xD2V[a\r9V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\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\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x11\xF4V[`@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\x02\x83W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA7\x91\x90a\x12\rV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x03AWP\x7F\0\0\0\0\0\0\0\0\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\x03\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03<\x91\x90a\x126V[`\xFF\x16\x15[\x15a\x03]WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x03q\x82`\x01`\x01`\xC0\x1B\x03\x16a\r\xB2V[\x90P`\0\x80[\x82Q\x81\x10\x15a\x04GW\x7F\0\0\0\0\0\0\0\0\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\x03\xC1Wa\x03\xC1a\x12YV[\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\x04\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04)\x91\x90a\x11\xF4V[a\x043\x90\x83a\x12\x85V[\x91P\x80a\x04?\x81a\x12\x9DV[\x91PPa\x03wV[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04cWa\x04ca\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\x06KW`\0\x85\x82\x81Q\x81\x10a\x04\xB0Wa\x04\xB0a\x12YV[\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\x05%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05I\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\x065W`@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\x05\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE7\x91\x90a\x12\xB8V[`\0\x01Q\x86\x86\x81Q\x81\x10a\x05\xFDWa\x05\xFDa\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\x06\x1F\x81a\x12\x9DV[\x95PP\x80\x80a\x06-\x90a\x12\x9DV[\x91PPa\x05NV[PPP\x80\x80a\x06C\x90a\x12\x9DV[\x91PPa\x04\x93V[P\x90\x97\x96PPPPPPPV[a\x06`a\x0EuV[a\x06j`\0a\x0E\xCFV[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\x06\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@Q\x80\x91\x03\x90\xFD[`@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\x90c\x99&\xEE}\x90a\x07\x0B\x90\x85\x90\x85\x90`\x04\x01a\x13\xEDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07%W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x079W=`\0\x80>=`\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\x07\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xB4\x90a\x13(V[`@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\x07\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\x01W=`\0\x80>=`\0\xFD[PPPPPV[a\x08\x10a\x0EuV[`@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\x07\xD3\x90\x84\x90`\x04\x01a\x148V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08|WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08\x96WP0;\x15\x80\x15a\x08\x96WP`\0T`\xFF\x16`\x01\x14[a\x08\xF9W`@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\xB4V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\x1CW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t%\x82a\x0F!V[\x80\x15a\tkW`\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[PPV[```\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\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\t\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF5\x91\x90a\x126V[`\xFF\x16\x90P\x80a\n\x13WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\n\xC8W`@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\n\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAA\x91\x90a\x11\xF4V[a\n\xB4\x90\x83a\x12\x85V[\x91P\x80a\n\xC0\x81a\x12\x9DV[\x91PPa\n\x17V[P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xE4Wa\n\xE4a\x10CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\rW\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\x0BrW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x96\x91\x90a\x126V[`\xFF\x16\x81\x10\x15a\r/W`@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\x0C\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C.\x91\x90a\x11\xF4V[\x90P`\0[\x81\x81\x10\x15a\r\x1AW`@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\x0C\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCC\x91\x90a\x12\xB8V[`\0\x01Q\x85\x85\x81Q\x81\x10a\x0C\xE2Wa\x0C\xE2a\x12YV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\r\x04\x81a\x12\x9DV[\x94PP\x80\x80a\r\x12\x90a\x12\x9DV[\x91PPa\x0C3V[PP\x80\x80a\r'\x90a\x12\x9DV[\x91PPa\x0B\x14V[P\x90\x94\x93PPPPV[a\rAa\x0EuV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA6W`@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\xB4V[a\r\xAF\x81a\x0E\xCFV[PV[```\0\x80a\r\xC0\x84a\x0F\x8CV[a\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDCWa\r\xDCa\x10CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x0E\x1EWPa\x01\0\x81\x10[\x15a\r/W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x0EeW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x0EGWa\x0EGa\x12YV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x0En\x81a\x12\x9DV[\x90Pa\x0E\rV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06jW`@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\xB4V[`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\r\xA6W`@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\x06\xB4V[`\0\x80[\x82\x15a\x0F\xB7Wa\x0F\xA1`\x01\x84a\x14KV[\x90\x92\x16\x91\x80a\x0F\xAF\x81a\x14bV[\x91PPa\x0F\x90V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\r\xAFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xE4W`\0\x80\xFD[\x815a\x0F\xEF\x81a\x0F\xBDV[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x107W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10\x12V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10|Wa\x10|a\x10CV[`@R\x90V[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x10\x9DWa\x10\x9Da\x10CV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x10\xC5Wa\x10\xC5a\x10CV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\xDEW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x0BW`\0\x80\xFD[\x825a\x11\x16\x81a\x0F\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x113W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x11GW`\0\x80\xFD[a\x11Oa\x10YV[\x825\x82\x81\x11\x15a\x11^W`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a\x11qW`\0\x80\xFD[a\x11\x80\x87\x835` \x85\x01a\x10\x82V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\xB5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xCCW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x11\xDDW`\0\x80\xFD[a\x11\xEC\x84\x825` \x84\x01a\x10\x82V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x12\x06W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\x1FW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12HW`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x0F\xEFW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x12\x98Wa\x12\x98a\x12oV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a\x12\xB1Wa\x12\xB1a\x12oV[P`\x01\x01\x90V[`\0`@\x82\x84\x03\x12\x15a\x12\xCAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x12\xEDWa\x12\xEDa\x10CV[`@R\x82Qa\x12\xFB\x81a\x0F\xBDV[\x81R` \x83\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x1CW`\0\x80\xFD[` \x82\x01R\x93\x92PPPV[` \x80\x82R`R\x90\x82\x01R\x7FServiceManagerBase.onlyRegistryC`@\x82\x01R\x7Foordinator: caller is not the re``\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x13\xC6W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x13\xAAV[\x81\x81\x11\x15a\x13\xD8W`\0` \x83\x87\x01\x01R[P`\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\x14\x17`\xA0\x84\x01\x82a\x13\xA0V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[` \x81R`\0a\x0F\xEF` \x83\x01\x84a\x13\xA0V[`\0\x82\x82\x10\x15a\x14]Wa\x14]a\x12oV[P\x03\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a\x14zWa\x14za\x12oV[`\x01\x01\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x97\x07\xE5A\xD6\xDE\xD2\xBC3\xD2\xD9\xE3\xC2\x11\x14Tt\xEEa\xEB\xEC\x1F\xD9\xEA3&\xE4\x87\xA9%\tadsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1382,145 +721,53 @@ pub mod ServiceManagerBase { } } #[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 { + impl From<&Initialized> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`. + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. ```solidity - event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] - pub struct RewardsInitiatorUpdated { + pub struct OwnershipTransferred { #[allow(missing_docs)] - pub prevRewardsInitiator: alloy::sol_types::private::Address, + pub previousOwner: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newRewardsInitiator: alloy::sol_types::private::Address, + pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] - impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { - type DataTuple<'a> = ( + 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, ); - 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: &'static str = "OwnershipTransferred(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, + 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)] @@ -1530,8 +777,8 @@ pub mod ServiceManagerBase { data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - prevRewardsInitiator: data.0, - newRewardsInitiator: data.1, + previousOwner: topics.1, + newOwner: topics.2, } } #[inline] @@ -1549,18 +796,15 @@ pub mod ServiceManagerBase { } #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { - ( - ::tokenize( - &self.prevRewardsInitiator, - ), - ::tokenize( - &self.newRewardsInitiator, - ), - ) + () } #[inline] fn topics(&self) -> ::RustType { - (Self::SIGNATURE_HASH.into(),) + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) } #[inline] fn encode_topics_raw( @@ -1571,11 +815,17 @@ pub mod ServiceManagerBase { 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 RewardsInitiatorUpdated { + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { fn to_log_data(&self) -> alloy_sol_types::private::LogData { From::from(self) } @@ -1584,63 +834,39 @@ pub mod ServiceManagerBase { } } #[automatically_derived] - impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData { + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { #[inline] - fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData { + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { alloy_sol_types::SolEvent::encode_log_data(this) } } }; - /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + /**Constructor`. ```solidity - function avsDirectory() external view returns (address); + constructor(address _avsDirectory, address _registryCoordinator, address _stakeRegistry); ```*/ - #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct avsDirectoryReturn { - pub _0: alloy::sol_types::private::Address, + pub struct constructorCall { + pub _avsDirectory: alloy::sol_types::private::Address, + pub _registryCoordinator: alloy::sol_types::private::Address, + pub _stakeRegistry: 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,); + 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,); + 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) { @@ -1652,28 +878,35 @@ pub mod ServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: avsDirectoryReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._avsDirectory, + value._registryCoordinator, + value._stakeRegistry, + ) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for avsDirectoryReturn { + impl ::core::convert::From> for constructorCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self { + _avsDirectory: tuple.0, + _registryCoordinator: tuple.1, + _stakeRegistry: tuple.2, + } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for avsDirectoryCall { - type Parameters<'a> = (); + 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>; - 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, @@ -1682,48 +915,46 @@ pub mod ServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () - } - #[inline] - fn abi_decode_returns( - data: &[u8], - validate: bool, - ) -> alloy_sol_types::Result { - as alloy_sol_types::SolType>::abi_decode_sequence( - data, validate, + ( + ::tokenize( + &self._avsDirectory, + ), + ::tokenize( + &self._registryCoordinator, + ), + ::tokenize( + &self._stakeRegistry, + ), ) - .map(Into::into) } } }; - /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`. + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. ```solidity - function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + function avsDirectory() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct createAVSRewardsSubmissionReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] - type UnderlyingSolTuple<'a> = - (alloy::sol_types::sol_data::Array,); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Vec< - ::RustType, - >, - ); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1735,26 +966,24 @@ pub mod ServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: createAVSRewardsSubmissionCall) -> Self { - (value.rewardsSubmissions,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryCall) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for createAVSRewardsSubmissionCall { + impl ::core::convert::From> for avsDirectoryCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - rewardsSubmissions: tuple.0, - } + Self {} } } } { #[doc(hidden)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { @@ -1766,30 +995,28 @@ pub mod ServiceManagerBase { } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: createAVSRewardsSubmissionReturn) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for createAVSRewardsSubmissionReturn { + impl ::core::convert::From> for avsDirectoryReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self {} + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall { - type Parameters<'a> = - (alloy::sol_types::sol_data::Array,); + impl alloy_sol_types::SolCall for avsDirectoryCall { + type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = createAVSRewardsSubmissionReturn; - type ReturnTuple<'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 = - "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; - const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8]; + const SIGNATURE: &'static str = "avsDirectory()"; + const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1798,11 +1025,7 @@ pub mod ServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( as alloy_sol_types::SolType>::tokenize( - &self.rewardsSubmissions, - ),) + () } #[inline] fn abi_decode_returns( @@ -1820,16 +1043,21 @@ pub mod ServiceManagerBase { ```solidity function deregisterOperatorFromAVS(address operator) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct deregisterOperatorFromAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1929,18 +1157,23 @@ pub mod ServiceManagerBase { ```solidity function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorRestakedStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2043,16 +1276,21 @@ pub mod ServiceManagerBase { ```solidity function getRestakeableStrategies() external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesCall {} ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2123,8 +1361,120 @@ pub mod ServiceManagerBase { 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]; + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, @@ -2133,7 +1483,11 @@ pub mod ServiceManagerBase { } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + ::tokenize( + &self.initialOwner, + ), + ) } #[inline] fn abi_decode_returns( @@ -2151,16 +1505,21 @@ pub mod ServiceManagerBase { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2256,7 +1615,7 @@ pub mod ServiceManagerBase { ```solidity function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSCall { pub operator: alloy::sol_types::private::Address, @@ -2264,10 +1623,15 @@ pub mod ServiceManagerBase { ::RustType, } ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct registerOperatorToAVSReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2383,14 +1747,19 @@ pub mod ServiceManagerBase { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2482,236 +1851,25 @@ pub mod ServiceManagerBase { } } }; - /**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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2811,16 +1969,21 @@ pub mod ServiceManagerBase { ```solidity function updateAVSMetadataURI(string memory _metadataURI) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateAVSMetadataURIReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2918,23 +2081,21 @@ pub mod ServiceManagerBase { } } }; - ///Container for all the [`ServiceManagerBase`](self) function calls. - pub enum ServiceManagerBaseCalls { + ///Container for all the [`ServiceManagerMock`](self) function calls. + pub enum ServiceManagerMockCalls { avsDirectory(avsDirectoryCall), - createAVSRewardsSubmission(createAVSRewardsSubmissionCall), deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), getRestakeableStrategies(getRestakeableStrategiesCall), + initialize(initializeCall), owner(ownerCall), registerOperatorToAVS(registerOperatorToAVSCall), renounceOwnership(renounceOwnershipCall), - rewardsInitiator(rewardsInitiatorCall), - setRewardsInitiator(setRewardsInitiatorCall), transferOwnership(transferOwnershipCall), updateAVSMetadataURI(updateAVSMetadataURICall), } #[automatically_derived] - impl ServiceManagerBaseCalls { + impl ServiceManagerMockCalls { /// All the selectors of this enum. /// /// Note that the selectors might not be in the same order as the variants. @@ -2943,31 +2104,26 @@ pub mod ServiceManagerBase { /// 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], + [196u8, 214u8, 109u8, 232u8], [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"; + impl alloy_sol_types::SolInterface for ServiceManagerMockCalls { + const NAME: &'static str = "ServiceManagerMockCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 12usize; + const COUNT: usize = 10usize; #[inline] fn selector(&self) -> [u8; 4] { match self { Self::avsDirectory(_) => ::SELECTOR, - Self::createAVSRewardsSubmission(_) => { - ::SELECTOR - } Self::deregisterOperatorFromAVS(_) => { ::SELECTOR } @@ -2977,6 +2133,7 @@ pub mod ServiceManagerBase { Self::getRestakeableStrategies(_) => { ::SELECTOR } + Self::initialize(_) => ::SELECTOR, Self::owner(_) => ::SELECTOR, Self::registerOperatorToAVS(_) => { ::SELECTOR @@ -2984,12 +2141,6 @@ pub mod ServiceManagerBase { Self::renounceOwnership(_) => { ::SELECTOR } - Self::rewardsInitiator(_) => { - ::SELECTOR - } - Self::setRewardsInitiator(_) => { - ::SELECTOR - } Self::transferOwnership(_) => { ::SELECTOR } @@ -3017,41 +2168,29 @@ pub mod ServiceManagerBase { &[u8], bool, ) - -> alloy_sol_types::Result] = &[ + -> alloy_sol_types::Result] = &[ { fn getOperatorRestakedStrategies( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseCalls::getOperatorRestakedStrategies) + .map(ServiceManagerMockCalls::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 { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseCalls::avsDirectory) + .map(ServiceManagerMockCalls::avsDirectory) } avsDirectory }, @@ -3059,11 +2198,11 @@ pub mod ServiceManagerBase { fn renounceOwnership( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseCalls::renounceOwnership) + .map(ServiceManagerMockCalls::renounceOwnership) } renounceOwnership }, @@ -3071,9 +2210,9 @@ pub mod ServiceManagerBase { fn owner( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw(data, validate) - .map(ServiceManagerBaseCalls::owner) + .map(ServiceManagerMockCalls::owner) } owner }, @@ -3081,11 +2220,11 @@ pub mod ServiceManagerBase { fn registerOperatorToAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseCalls::registerOperatorToAVS) + .map(ServiceManagerMockCalls::registerOperatorToAVS) } registerOperatorToAVS }, @@ -3093,11 +2232,11 @@ pub mod ServiceManagerBase { fn deregisterOperatorFromAVS( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseCalls::deregisterOperatorFromAVS) + .map(ServiceManagerMockCalls::deregisterOperatorFromAVS) } deregisterOperatorFromAVS }, @@ -3105,23 +2244,33 @@ pub mod ServiceManagerBase { fn updateAVSMetadataURI( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseCalls::updateAVSMetadataURI) + .map(ServiceManagerMockCalls::updateAVSMetadataURI) } updateAVSMetadataURI }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ServiceManagerMockCalls::initialize) + } + initialize + }, { fn getRestakeableStrategies( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseCalls::getRestakeableStrategies) + .map(ServiceManagerMockCalls::getRestakeableStrategies) } getRestakeableStrategies }, @@ -3129,39 +2278,14 @@ pub mod ServiceManagerBase { fn transferOwnership( data: &[u8], validate: bool, - ) -> alloy_sol_types::Result { + ) -> alloy_sol_types::Result { ::abi_decode_raw( data, validate, ) - .map(ServiceManagerBaseCalls::transferOwnership) + .map(ServiceManagerMockCalls::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( @@ -3179,11 +2303,6 @@ pub mod ServiceManagerBase { inner, ) } - Self::createAVSRewardsSubmission(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::deregisterOperatorFromAVS(inner) => { ::abi_encoded_size( inner, @@ -3199,6 +2318,9 @@ pub mod ServiceManagerBase { inner, ) } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } Self::owner(inner) => { ::abi_encoded_size(inner) } @@ -3212,16 +2334,6 @@ pub mod ServiceManagerBase { inner, ) } - Self::rewardsInitiator(inner) => { - ::abi_encoded_size( - inner, - ) - } - Self::setRewardsInitiator(inner) => { - ::abi_encoded_size( - inner, - ) - } Self::transferOwnership(inner) => { ::abi_encoded_size( inner, @@ -3240,11 +2352,6 @@ pub mod ServiceManagerBase { Self::avsDirectory(inner) => { ::abi_encode_raw(inner, out) } - Self::createAVSRewardsSubmission(inner) => { - ::abi_encode_raw( - inner, out, - ) - } Self::deregisterOperatorFromAVS(inner) => { ::abi_encode_raw( inner, out, @@ -3260,6 +2367,9 @@ pub mod ServiceManagerBase { inner, out, ) } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } Self::owner(inner) => { ::abi_encode_raw(inner, out) } @@ -3271,14 +2381,6 @@ pub mod ServiceManagerBase { 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) } @@ -3290,14 +2392,13 @@ pub mod ServiceManagerBase { } } } - ///Container for all the [`ServiceManagerBase`](self) events. - pub enum ServiceManagerBaseEvents { + ///Container for all the [`ServiceManagerMock`](self) events. + pub enum ServiceManagerMockEvents { Initialized(Initialized), OwnershipTransferred(OwnershipTransferred), - RewardsInitiatorUpdated(RewardsInitiatorUpdated), } #[automatically_derived] - impl ServiceManagerBaseEvents { + impl ServiceManagerMockEvents { /// All the selectors of this enum. /// /// Note that the selectors might not be in the same order as the variants. @@ -3315,17 +2416,12 @@ pub mod ServiceManagerBase { 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; + impl alloy_sol_types::SolEventInterface for ServiceManagerMockEvents { + const NAME: &'static str = "ServiceManagerMockEvents"; + const COUNT: usize = 2usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -3344,12 +2440,6 @@ pub mod ServiceManagerBase { ) .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( @@ -3363,7 +2453,7 @@ pub mod ServiceManagerBase { } } #[automatically_derived] - impl alloy_sol_types::private::IntoLogData for ServiceManagerBaseEvents { + impl alloy_sol_types::private::IntoLogData for ServiceManagerMockEvents { fn to_log_data(&self) -> alloy_sol_types::private::LogData { match self { Self::Initialized(inner) => { @@ -3372,9 +2462,6 @@ pub mod ServiceManagerBase { 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 { @@ -3385,16 +2472,13 @@ pub mod ServiceManagerBase { 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. + /**Creates a new wrapper around an on-chain [`ServiceManagerMock`](self) contract instance. - See the [wrapper's documentation](`ServiceManagerBaseInstance`) for more details.*/ + See the [wrapper's documentation](`ServiceManagerMockInstance`) for more details.*/ #[inline] pub const fn new< T: alloy_contract::private::Transport + ::core::clone::Clone, @@ -3403,8 +2487,8 @@ pub mod ServiceManagerBase { >( address: alloy_sol_types::private::Address, provider: P, - ) -> ServiceManagerBaseInstance { - ServiceManagerBaseInstance::::new(address, provider) + ) -> ServiceManagerMockInstance { + ServiceManagerMockInstance::::new(address, provider) } /**Deploys this contract using the given `provider` and constructor arguments, if any. @@ -3418,9 +2502,17 @@ pub mod ServiceManagerBase { N: alloy_contract::private::Network, >( provider: P, - ) -> impl ::core::future::Future>> + _avsDirectory: alloy::sol_types::private::Address, + _registryCoordinator: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> { - ServiceManagerBaseInstance::::deploy(provider) + ServiceManagerMockInstance::::deploy( + provider, + _avsDirectory, + _registryCoordinator, + _stakeRegistry, + ) } /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` and constructor arguments, if any. @@ -3434,13 +2526,21 @@ pub mod ServiceManagerBase { N: alloy_contract::private::Network, >( provider: P, + _avsDirectory: alloy::sol_types::private::Address, + _registryCoordinator: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, ) -> alloy_contract::RawCallBuilder { - ServiceManagerBaseInstance::::deploy_builder(provider) + ServiceManagerMockInstance::::deploy_builder( + provider, + _avsDirectory, + _registryCoordinator, + _stakeRegistry, + ) } - /**A [`ServiceManagerBase`](self) instance. + /**A [`ServiceManagerMock`](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 + [`ServiceManagerMock`](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!) @@ -3449,16 +2549,16 @@ pub mod ServiceManagerBase { See the [module-level documentation](self) for all the available methods.*/ #[derive(Clone)] - pub struct ServiceManagerBaseInstance { + pub struct ServiceManagerMockInstance { address: alloy_sol_types::private::Address, provider: P, _network_transport: ::core::marker::PhantomData<(N, T)>, } #[automatically_derived] - impl ::core::fmt::Debug for ServiceManagerBaseInstance { + impl ::core::fmt::Debug for ServiceManagerMockInstance { #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple("ServiceManagerBaseInstance") + f.debug_tuple("ServiceManagerMockInstance") .field(&self.address) .finish() } @@ -3469,11 +2569,11 @@ pub mod ServiceManagerBase { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ServiceManagerBaseInstance + > ServiceManagerMockInstance { - /**Creates a new wrapper around an on-chain [`ServiceManagerBase`](self) contract instance. + /**Creates a new wrapper around an on-chain [`ServiceManagerMock`](self) contract instance. - See the [wrapper's documentation](`ServiceManagerBaseInstance`) for more details.*/ + See the [wrapper's documentation](`ServiceManagerMockInstance`) for more details.*/ #[inline] pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { Self { @@ -3490,8 +2590,16 @@ pub mod ServiceManagerBase { #[inline] pub async fn deploy( provider: P, - ) -> alloy_contract::Result> { - let call_builder = Self::deploy_builder(provider); + _avsDirectory: alloy::sol_types::private::Address, + _registryCoordinator: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _avsDirectory, + _registryCoordinator, + _stakeRegistry, + ); let contract_address = call_builder.deploy().await?; Ok(Self::new(contract_address, call_builder.provider)) } @@ -3501,10 +2609,24 @@ pub mod ServiceManagerBase { 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 { + pub fn deploy_builder( + provider: P, + _avsDirectory: alloy::sol_types::private::Address, + _registryCoordinator: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { alloy_contract::RawCallBuilder::new_raw_deploy( provider, - ::core::clone::Clone::clone(&BYTECODE), + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _avsDirectory, + _registryCoordinator, + _stakeRegistry, + })[..], + ] + .concat() + .into(), ) } /// Returns a reference to the address. @@ -3528,11 +2650,11 @@ pub mod ServiceManagerBase { &self.provider } } - impl ServiceManagerBaseInstance { + impl ServiceManagerMockInstance { /// Clones the provider and returns a new instance with the cloned provider. #[inline] - pub fn with_cloned_provider(self) -> ServiceManagerBaseInstance { - ServiceManagerBaseInstance { + pub fn with_cloned_provider(self) -> ServiceManagerMockInstance { + ServiceManagerMockInstance { address: self.address, provider: ::core::clone::Clone::clone(&self.provider), _network_transport: ::core::marker::PhantomData, @@ -3545,7 +2667,7 @@ pub mod ServiceManagerBase { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ServiceManagerBaseInstance + > ServiceManagerMockInstance { /// Creates a new call builder using this contract instance's provider and address. /// @@ -3561,15 +2683,6 @@ pub mod ServiceManagerBase { 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, @@ -3590,6 +2703,13 @@ pub mod ServiceManagerBase { ) -> 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 {}) @@ -3611,21 +2731,6 @@ pub mod ServiceManagerBase { ) -> 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, @@ -3647,7 +2752,7 @@ pub mod ServiceManagerBase { T: alloy_contract::private::Transport + ::core::clone::Clone, P: alloy_contract::private::Provider, N: alloy_contract::private::Network, - > ServiceManagerBaseInstance + > ServiceManagerMockInstance { /// Creates a new event filter using this contract instance's provider and address. /// @@ -3668,11 +2773,5 @@ pub mod ServiceManagerBase { ) -> 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/middleware/servicemanagerrouter.rs similarity index 96% rename from crates/utils/src/servicemanagerrouter.rs rename to crates/utils/src/middleware/servicemanagerrouter.rs index 3a6cbb04..700b602c 100644 --- a/crates/utils/src/servicemanagerrouter.rs +++ b/crates/utils/src/middleware/servicemanagerrouter.rs @@ -70,44 +70,54 @@ interface ServiceManagerRouter { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod ServiceManagerRouter { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b50610453806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610342565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead8160008151811061020457610204610407565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b81811115610311576000828501525b509190910192915050565b634e487b7160e01b600052604160045260246000fd5b805161033d81610226565b919050565b6000602080838503121561035557600080fd5b825167ffffffffffffffff8082111561036d57600080fd5b818501915085601f83011261038157600080fd5b8151818111156103935761039361031c565b8060051b604051601f19603f830116810181811085821117156103b8576103b861031c565b6040529182528482019250838101850191888311156103d657600080fd5b938501935b828510156103fb576103ec85610332565b845293850193928501926103db565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122018c491ec65df7d21fd74a964940c0eae275f20c32209c1f4e5ba7e615ccbb73d64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50610453806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610342565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead8160008151811061020457610204610407565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b81811115610311576000828501525b509190910192915050565b634e487b7160e01b600052604160045260246000fd5b805161033d81610226565b919050565b6000602080838503121561035557600080fd5b825167ffffffffffffffff8082111561036d57600080fd5b818501915085601f83011261038157600080fd5b8151818111156103935761039361031c565b8060051b604051601f19603f830116810181811085821117156103b8576103b861031c565b6040529182528482019250838101850191888311156103d657600080fd5b938501935b828510156103fb576103ec85610332565b845293850193928501926103db565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122041378d806334f7530673a305e93f3091976e5d91d10397123735c33607712aa064736f6c634300080c0033 /// ``` #[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", + 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 A7\x8D\x80c4\xF7S\x06s\xA3\x05\xE9?0\x91\x97n]\x91\xD1\x03\x97\x1275\xC36\x07q*\xA0dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610342565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead8160008151811061020457610204610407565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b81811115610311576000828501525b509190910192915050565b634e487b7160e01b600052604160045260246000fd5b805161033d81610226565b919050565b6000602080838503121561035557600080fd5b825167ffffffffffffffff8082111561036d57600080fd5b818501915085601f83011261038157600080fd5b8151818111156103935761039361031c565b8060051b604051601f19603f830116810181811085821117156103b8576103b861031c565b6040529182528482019250838101850191888311156103d657600080fd5b938501935b828510156103fb576103ec85610332565b845293850193928501926103db565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122018c491ec65df7d21fd74a964940c0eae275f20c32209c1f4e5ba7e615ccbb73d64736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610342565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead8160008151811061020457610204610407565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b81811115610311576000828501525b509190910192915050565b634e487b7160e01b600052604160045260246000fd5b805161033d81610226565b919050565b6000602080838503121561035557600080fd5b825167ffffffffffffffff8082111561036d57600080fd5b818501915085601f83011261038157600080fd5b8151818111156103935761039361031c565b8060051b604051601f19603f830116810181811085821117156103b8576103b861031c565b6040529182528482019250838101850191888311156103d657600080fd5b938501935b828510156103fb576103ec85610332565b845293850193928501926103db565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122041378d806334f7530673a305e93f3091976e5d91d10397123735c33607712aa064736f6c634300080c0033 /// ``` #[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", + 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 A7\x8D\x80c4\xF7S\x06s\xA3\x05\xE9?0\x91\x97n]\x91\xD1\x03\x97\x1275\xC36\x07q*\xA0dsolcC\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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FAILED_CALL_ADDRESSReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -203,19 +213,24 @@ pub mod ServiceManagerRouter { ```solidity function getOperatorRestakedStrategies(address serviceManager, address operator) external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getOperatorRestakedStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -333,18 +348,23 @@ pub mod ServiceManagerRouter { ```solidity function getRestakeableStrategies(address serviceManager) external view returns (address[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getRestakeableStrategiesReturn { pub _0: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/servicemanagerrouterdeploy.rs b/crates/utils/src/middleware/servicemanagerrouterdeploy.rs new file mode 100644 index 00000000..6a37f6a3 --- /dev/null +++ b/crates/utils/src/middleware/servicemanagerrouterdeploy.rs @@ -0,0 +1,578 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ServiceManagerRouterDeploy { + 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::pub_underscore_fields, + clippy::style +)] +pub mod ServiceManagerRouterDeploy { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600b805462ff00ff19166201000117905534801561002157600080fd5b5061063e806100316000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b61004361006c565b005b600b546100589062010000900460ff1681565b604051901515815260200160405180910390f35b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156100ca57600080fd5b505af11580156100de573d6000803e3d6000fd5b5050505060006040516100f090610188565b604051809103906000f08015801561010c573d6000803e3d6000fd5b5090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561016d57600080fd5b505af1158015610181573d6000803e3d6000fd5b5050505050565b610473806101968339019056fe608060405234801561001057600080fd5b50610453806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610342565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead8160008151811061020457610204610407565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b81811115610311576000828501525b509190910192915050565b634e487b7160e01b600052604160045260246000fd5b805161033d81610226565b919050565b6000602080838503121561035557600080fd5b825167ffffffffffffffff8082111561036d57600080fd5b818501915085601f83011261038157600080fd5b8151818111156103935761039361031c565b8060051b604051601f19603f830116810181811085821117156103b8576103b861031c565b6040529182528482019250838101850191888311156103d657600080fd5b938501935b828510156103fb576103ec85610332565b845293850193928501926103db565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122041378d806334f7530673a305e93f3091976e5d91d10397123735c33607712aa064736f6c634300080c0033a2646970667358221220fa0d4ce90fc0aa8592a57fdf38c344953b244597ffba86e36d577740a7d175e164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0B\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa\x06>\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\xC0@b&\x14a\0;W\x80c\xF8\xCC\xBFG\x14a\0EW[`\0\x80\xFD[a\0Ca\0lV[\0[`\x0BTa\0X\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\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\0\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\0\xDEW=`\0\x80>=`\0\xFD[PPPP`\0`@Qa\0\xF0\x90a\x01\x88V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x01\x0CW=`\0\x80>=`\0\xFD[P\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\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\x01mW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x81W=`\0\x80>=`\0\xFD[PPPPPV[a\x04s\x80a\x01\x96\x839\x01\x90V\xFE`\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 A7\x8D\x80c4\xF7S\x06s\xA3\x05\xE9?0\x91\x97n]\x91\xD1\x03\x97\x1275\xC36\x07q*\xA0dsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 \xFA\rL\xE9\x0F\xC0\xAA\x85\x92\xA5\x7F\xDF8\xC3D\x95;$E\x97\xFF\xBA\x86\xE3mWw@\xA7\xD1u\xE1dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b61004361006c565b005b600b546100589062010000900460ff1681565b604051901515815260200160405180910390f35b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156100ca57600080fd5b505af11580156100de573d6000803e3d6000fd5b5050505060006040516100f090610188565b604051809103906000f08015801561010c573d6000803e3d6000fd5b5090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561016d57600080fd5b505af1158015610181573d6000803e3d6000fd5b5050505050565b610473806101968339019056fe608060405234801561001057600080fd5b50610453806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610342565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead8160008151811061020457610204610407565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b81811115610311576000828501525b509190910192915050565b634e487b7160e01b600052604160045260246000fd5b805161033d81610226565b919050565b6000602080838503121561035557600080fd5b825167ffffffffffffffff8082111561036d57600080fd5b818501915085601f83011261038157600080fd5b8151818111156103935761039361031c565b8060051b604051601f19603f830116810181811085821117156103b8576103b861031c565b6040529182528482019250838101850191888311156103d657600080fd5b938501935b828510156103fb576103ec85610332565b845293850193928501926103db565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122041378d806334f7530673a305e93f3091976e5d91d10397123735c33607712aa064736f6c634300080c0033a2646970667358221220fa0d4ce90fc0aa8592a57fdf38c344953b244597ffba86e36d577740a7d175e164736f6c634300080c0033 + /// ``` + #[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\x006W`\x005`\xE0\x1C\x80c\xC0@b&\x14a\0;W\x80c\xF8\xCC\xBFG\x14a\0EW[`\0\x80\xFD[a\0Ca\0lV[\0[`\x0BTa\0X\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\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\0\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\0\xDEW=`\0\x80>=`\0\xFD[PPPP`\0`@Qa\0\xF0\x90a\x01\x88V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x01\x0CW=`\0\x80>=`\0\xFD[P\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\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\x01mW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x81W=`\0\x80>=`\0\xFD[PPPPPV[a\x04s\x80a\x01\x96\x839\x01\x90V\xFE`\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 A7\x8D\x80c4\xF7S\x06s\xA3\x05\xE9?0\x91\x97n]\x91\xD1\x03\x97\x1275\xC36\x07q*\xA0dsolcC\0\x08\x0C\x003\xA2dipfsX\"\x12 \xFA\rL\xE9\x0F\xC0\xAA\x85\x92\xA5\x7F\xDF8\xC3D\x95;$E\x97\xFF\xBA\x86\xE3mWw@\xA7\xD1u\xE1dsolcC\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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 [`ServiceManagerRouterDeploy`](self) function calls. + pub enum ServiceManagerRouterDeployCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + } + #[automatically_derived] + impl ServiceManagerRouterDeployCalls { + /// 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 ServiceManagerRouterDeployCalls { + const NAME: &'static str = "ServiceManagerRouterDeployCalls"; + 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< + ServiceManagerRouterDeployCalls, + >] = &[ + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ServiceManagerRouterDeployCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ServiceManagerRouterDeployCalls::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 [`ServiceManagerRouterDeploy`](self) contract instance. + + See the [wrapper's documentation](`ServiceManagerRouterDeployInstance`) 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, + ) -> ServiceManagerRouterDeployInstance { + ServiceManagerRouterDeployInstance::::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>, + > { + ServiceManagerRouterDeployInstance::::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 { + ServiceManagerRouterDeployInstance::::deploy_builder(provider) + } + /**A [`ServiceManagerRouterDeploy`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ServiceManagerRouterDeploy`](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 ServiceManagerRouterDeployInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ServiceManagerRouterDeployInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ServiceManagerRouterDeployInstance") + .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, + > ServiceManagerRouterDeployInstance + { + /**Creates a new wrapper around an on-chain [`ServiceManagerRouterDeploy`](self) contract instance. + + See the [wrapper's documentation](`ServiceManagerRouterDeployInstance`) 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 ServiceManagerRouterDeployInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ServiceManagerRouterDeployInstance { + ServiceManagerRouterDeployInstance { + 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, + > ServiceManagerRouterDeployInstance + { + /// 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, + > ServiceManagerRouterDeployInstance + { + /// 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/middleware/signaturecheckerupgradeable.rs similarity index 94% rename from crates/utils/src/signaturecheckerupgradeable.rs rename to crates/utils/src/middleware/signaturecheckerupgradeable.rs index 0c932e36..ebf9552a 100644 --- a/crates/utils/src/signaturecheckerupgradeable.rs +++ b/crates/utils/src/middleware/signaturecheckerupgradeable.rs @@ -9,29 +9,34 @@ interface SignatureCheckerUpgradeable {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod SignatureCheckerUpgradeable { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203648a75f514f014b69fbc17103a045ba9cf08ad84d5ce2c179e199b13570112f64736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091153dd8d1c79d3e26c2c72f4a96afe52d5e3a205f3e5fcdf9e92177f528a04764736f6c634300080c0033 /// ``` #[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", + 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 \x91\x15=\xD8\xD1\xC7\x9D>&\xC2\xC7/J\x96\xAF\xE5-^: _>_\xCD\xF9\xE9!w\xF5(\xA0GdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203648a75f514f014b69fbc17103a045ba9cf08ad84d5ce2c179e199b13570112f64736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091153dd8d1c79d3e26c2c72f4a96afe52d5e3a205f3e5fcdf9e92177f528a04764736f6c634300080c0033 /// ``` #[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", + 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 \x91\x15=\xD8\xD1\xC7\x9D>&\xC2\xC7/J\x96\xAF\xE5-^: _>_\xCD\xF9\xE9!w\xF5(\xA0GdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`SignatureCheckerUpgradeable`](self) contract instance. diff --git a/crates/utils/src/middleware/signaturecompaction.rs b/crates/utils/src/middleware/signaturecompaction.rs new file mode 100644 index 00000000..5d4bcc10 --- /dev/null +++ b/crates/utils/src/middleware/signaturecompaction.rs @@ -0,0 +1,226 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface SignatureCompaction {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod SignatureCompaction { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b535def88a5961898160303ddef166573efe12e6e1dddd1588625dedd483bd864736f6c634300080c0033 + /// ``` + #[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 \x0BS]\xEF\x88\xA5\x96\x18\x98\x16\x03\x03\xDD\xEF\x16es\xEF\xE1.n\x1D\xDD\xD1X\x86%\xDE\xDDH;\xD8dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b535def88a5961898160303ddef166573efe12e6e1dddd1588625dedd483bd864736f6c634300080c0033 + /// ``` + #[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 \x0BS]\xEF\x88\xA5\x96\x18\x98\x16\x03\x03\xDD\xEF\x16es\xEF\xE1.n\x1D\xDD\xD1X\x86%\xDE\xDDH;\xD8dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SignatureCompaction`](self) contract instance. + + See the [wrapper's documentation](`SignatureCompactionInstance`) 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, + ) -> SignatureCompactionInstance { + SignatureCompactionInstance::::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>> + { + SignatureCompactionInstance::::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 { + SignatureCompactionInstance::::deploy_builder(provider) + } + /**A [`SignatureCompaction`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`SignatureCompaction`](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 SignatureCompactionInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SignatureCompactionInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SignatureCompactionInstance") + .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, + > SignatureCompactionInstance + { + /**Creates a new wrapper around an on-chain [`SignatureCompaction`](self) contract instance. + + See the [wrapper's documentation](`SignatureCompactionInstance`) 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 SignatureCompactionInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SignatureCompactionInstance { + SignatureCompactionInstance { + 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, + > SignatureCompactionInstance + { + /// 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, + > SignatureCompactionInstance + { + /// 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/middleware/slasher.rs b/crates/utils/src/middleware/slasher.rs new file mode 100644 index 00000000..291e15b4 --- /dev/null +++ b/crates/utils/src/middleware/slasher.rs @@ -0,0 +1,8255 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library ISlasher { + struct MiddlewareDetails { uint32 registrationMayBeginAtBlock; uint32 contractCanSlashOperatorUntilBlock; uint32 latestUpdateBlock; } + struct MiddlewareTimes { uint32 stalestUpdateBlock; uint32 latestServeUntilBlock; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod ISlasher { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct MiddlewareDetails { uint32 registrationMayBeginAtBlock; uint32 contractCanSlashOperatorUntilBlock; uint32 latestUpdateBlock; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MiddlewareDetails { + pub registrationMayBeginAtBlock: u32, + pub contractCanSlashOperatorUntilBlock: u32, + pub latestUpdateBlock: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, 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: MiddlewareDetails) -> Self { + ( + value.registrationMayBeginAtBlock, + value.contractCanSlashOperatorUntilBlock, + value.latestUpdateBlock, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MiddlewareDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registrationMayBeginAtBlock: tuple.0, + contractCanSlashOperatorUntilBlock: tuple.1, + latestUpdateBlock: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for MiddlewareDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for MiddlewareDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.registrationMayBeginAtBlock, + ), + as alloy_sol_types::SolType>::tokenize( + &self.contractCanSlashOperatorUntilBlock, + ), + as alloy_sol_types::SolType>::tokenize( + &self.latestUpdateBlock, + ), + ) + } + #[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 MiddlewareDetails { + 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 MiddlewareDetails { + const NAME: &'static str = "MiddlewareDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "MiddlewareDetails(uint32 registrationMayBeginAtBlock,uint32 contractCanSlashOperatorUntilBlock,uint32 latestUpdateBlock)", + ) + } + #[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.registrationMayBeginAtBlock, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.contractCanSlashOperatorUntilBlock, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.latestUpdateBlock, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for MiddlewareDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.registrationMayBeginAtBlock, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.contractCanSlashOperatorUntilBlock, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.latestUpdateBlock, + ) + } + #[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.registrationMayBeginAtBlock, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.contractCanSlashOperatorUntilBlock, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.latestUpdateBlock, + 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 MiddlewareTimes { uint32 stalestUpdateBlock; uint32 latestServeUntilBlock; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MiddlewareTimes { + pub stalestUpdateBlock: u32, + pub latestServeUntilBlock: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)) + } + } + }; + 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) + } + /**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, + } + } + /// 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) + } + } + /// 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) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library ISlasher { + struct MiddlewareDetails { + uint32 registrationMayBeginAtBlock; + uint32 contractCanSlashOperatorUntilBlock; + uint32 latestUpdateBlock; + } + struct MiddlewareTimes { + uint32 stalestUpdateBlock; + uint32 latestServeUntilBlock; + } +} + +interface Slasher { + event FrozenStatusReset(address indexed previouslySlashedAddress); + event Initialized(uint8 version); + 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 OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event SlashingAbilityRevoked(address indexed operator, address indexed contractAddress, uint32 contractCanSlashOperatorUntilBlock); + event Unpaused(address indexed account, uint256 newPausedStatus); + + constructor(address, address); + + function canSlash(address, address) external view returns (bool); + function canWithdraw(address, uint32, uint256) external returns (bool); + function contractCanSlashOperatorUntilBlock(address, address) external view returns (uint32); + function delegation() external view returns (address); + function freezeOperator(address) external; + function getCorrectValueForInsertAfter(address, uint32) external view returns (uint256); + function getMiddlewareTimesIndexServeUntilBlock(address, uint32) external view returns (uint32); + function getMiddlewareTimesIndexStalestUpdateBlock(address, uint32) external view returns (uint32); + function initialize(address, address, uint256) external; + function isFrozen(address) external view returns (bool); + function latestUpdateBlock(address, address) external view returns (uint32); + function middlewareTimesLength(address) external view returns (uint256); + function operatorToMiddlewareTimes(address, uint256) external view returns (ISlasher.MiddlewareTimes memory); + function operatorWhitelistedContractsLinkedListEntry(address, address) external view returns (bool, uint256, uint256); + function operatorWhitelistedContractsLinkedListSize(address) external view returns (uint256); + function optIntoSlashing(address) external; + 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 recordFirstStakeUpdate(address, uint32) external; + function recordLastStakeUpdateAndRevokeSlashingAbility(address, uint32) external; + function recordStakeUpdate(address, uint32, uint32, uint256) external; + function renounceOwnership() external; + function resetFrozenStatus(address[] memory) external; + function setPauserRegistry(address newPauserRegistry) external; + function strategyManager() external view returns (address); + function transferOwnership(address newOwner) external; + function unpause(uint256 newPausedStatus) external; + function whitelistedContractDetails(address, address) external view returns (ISlasher.MiddlewareDetails memory); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategyManager" + }, + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "canSlash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "canWithdraw", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "contractCanSlashOperatorUntilBlock", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "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": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCorrectValueForInsertAfter", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMiddlewareTimesIndexServeUntilBlock", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMiddlewareTimesIndexStalestUpdateBlock", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isFrozen", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "latestUpdateBlock", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "middlewareTimesLength", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorToMiddlewareTimes", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "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": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "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": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "optIntoSlashing", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "recordFirstStakeUpdate", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recordLastStakeUpdateAndRevokeSlashingAbility", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recordStakeUpdate", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resetFrozenStatus", + "inputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "whitelistedContractDetails", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ISlasher.MiddlewareDetails", + "components": [ + { + "name": "registrationMayBeginAtBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "contractCanSlashOperatorUntilBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "latestUpdateBlock", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "FrozenStatusReset", + "inputs": [ + { + "name": "previouslySlashedAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "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": "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": "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 + }, + { + "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::pub_underscore_fields, + clippy::style +)] +pub mod Slasher { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c0033 + /// ``` + #[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\x0E\xFE8\x03\x80a\x0E\xFE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0NV[PPa\0\x88V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0KW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0aW`\0\x80\xFD[\x82Qa\0l\x81a\x006V[` \x84\x01Q\x90\x92Pa\0}\x81a\x006V[\x80\x91PP\x92P\x92\x90PV[a\x0Eg\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122060075ab6111f1767fc01e47c182a0ede22a5738eef8c7ea23516cac4557974ac64736f6c634300080c0033 + /// ``` + #[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\xF0W`\x005`\xE0\x1C\x80c|\xF7+\xBA\x11a\x01\x0FW\x80c\xD9\x81(\xC0\x11a\0\xA2W\x80c\xE9!\xD4\xFA\x11a\0qW\x80c\xE9!\xD4\xFA\x14a\x03\xC6W\x80c\xF2\xFD\xE3\x8B\x14a\x04LW\x80c\xF7;u\x19\x14a\x02\xA9W\x80c\xFA\xBC\x1C\xBC\x14a\x04_W`\0\x80\xFD[\x80c\xD9\x81(\xC0\x14a\x040W\x80c\xDA\x16\xE2\x9B\x14a\x03\"W\x80c\xDF\\\xF7#\x14a\x02\xBAW\x80c\xE5\x83\x986\x14a\x04>W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xDEW\x80c\x8D\xA5\xCB[\x14a\x03\xB5W\x80c\xA4\x9D\xB72\x14a\x03\xC6W\x80c\xC7G\x07[\x14a\x03\xDAW\x80c\xD7\xB7\xFA\x13\x14a\x03\xEEW`\0\x80\xFD[\x80c|\xF7+\xBA\x14a\x03FW\x80c\x81\x05\xE0C\x14a\x03TW\x80c\x85_\xCCJ\x14a\x03kW\x80c\x88o\x11\x95\x14a\x03\xA2W`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x01\x87W\x80co\x0C/t\x11a\x01VW\x80co\x0C/t\x14a\x03\"W\x80cqP\x18\xA6\x14a\x030W\x80cr>Y\xC7\x14a\x038W\x80crY\xA4\\\x14a\x02BW`\0\x80\xFD[\x80c9\xB7\x0E8\x14a\x02\xBAW\x80cY\\jg\x14a\x02\xD5W\x80cZ\xC8j\xB7\x14a\x02\xDDW\x80c\\\x97Z\xBB\x14a\x03\x10W`\0\x80\xFD[\x80c\x17\x94\xBB<\x11a\x01\xC3W\x80c\x17\x94\xBB<\x14a\x02/W\x80c\x18t\xE5\xAE\x14a\x02BW\x80c(&p\xFC\x14a\x02rW\x80c8\xC8\xEEd\x14a\x02\xA9W`\0\x80\xFD[\x80c\x0F\xFA\xBB\xCE\x14a\x01\xF5W\x80c\x10\xD6z/\x14a\x02\tW\x80c\x13d9\xDD\x14a\x02\x1CW\x80c\x17]2\x05\x14a\x01\xF5W[`\0\x80\xFD[a\x02\x07a\x02\x036`\x04a\x0B%V[PPV[\0[a\x02\x07a\x02\x176`\x04a\x0BZV[a\x04rV[a\x02\x07a\x02*6`\x04a\x0B~V[a\x05+V[a\x02\x07a\x02=6`\x04a\x0B\x97V[PPPV[a\x02Xa\x02P6`\x04a\x0B%V[`\0\x92\x91PPV[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x85a\x02\x806`\x04a\x0B\xD8V[a\x06jV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\x02iV[a\x02\x07a\x02\xB76`\x04a\x0BZV[PV[`\0[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02iV[a\x02\x07a\x06\x85V[a\x03\0a\x02\xEB6`\x04a\x0C\x04V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02iV[`fT[`@Q\x90\x81R` \x01a\x02iV[a\x02Xa\x02P6`\x04a\x0C'V[a\x02\x07a\x07LV[a\x03\x14a\x02P6`\x04a\x0B%V[a\x02\x07a\x02\x036`\x04a\x0C`V[a\x03\0a\x03b6`\x04a\x0C\xD5V[`\0\x93\x92PPPV[a\x03\x85a\x03y6`\x04a\x0C'V[`\0\x80`\0\x92P\x92P\x92V[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x02iV[`eTa\x02\xBD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xBDV[a\x03\x14a\x03\xD46`\x04a\x0BZV[P`\0\x90V[a\x02\x07a\x03\xE86`\x04a\r\x13V[PPPPV[a\x04\x01a\x03\xFC6`\x04a\x0C'V[a\x07`V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x02iV[a\x03\0a\x02P6`\x04a\x0C'V[a\x03\0a\x03\xD46`\x04a\x0BZV[a\x02\x07a\x04Z6`\x04a\x0BZV[a\x07\x82V[a\x02\x07a\x04m6`\x04a\x0B~V[a\x07\xF8V[`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\x04\xC5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE9\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\"W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`@Q\x80\x91\x03\x90\xFD[a\x02\xB7\x81a\tTV[`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\x05sW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x97\x91\x90a\r\xC7V[a\x05\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`fT\x81\x81\x16\x14a\x06,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\x05\x19V[`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[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`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\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xF1\x91\x90a\r\xC7V[a\x07\rW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r\xE9V[`\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\x07Ta\nKV[a\x07^`\0a\n\xA5V[V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x06\x7FV[a\x07\x8Aa\nKV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xEFW`@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\x05\x19V[a\x02\xB7\x81a\n\xA5V[`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\x08KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08o\x91\x90a\r`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x19\x90a\r}V[`fT\x19\x81\x19`fT\x19\x16\x14a\t\x1DW`@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\x05\x19V[`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\x06_V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xE2W`@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\x05\x19V[`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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07^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\x05\x19V[`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\x81\x16\x81\x14a\x02\xB7W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B8W`\0\x80\xFD[\x825a\x0BC\x81a\n\xF7V[\x91Pa\x0BQ` \x84\x01a\x0B\x0CV[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0BlW`\0\x80\xFD[\x815a\x0Bw\x81a\n\xF7V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x90W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xACW`\0\x80\xFD[\x835a\x0B\xB7\x81a\n\xF7V[\x92P` \x84\x015a\x0B\xC7\x81a\n\xF7V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xEBW`\0\x80\xFD[\x825a\x0B\xF6\x81a\n\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x0C\x16W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x0BwW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[\x825a\x0CE\x81a\n\xF7V[\x91P` \x83\x015a\x0CU\x81a\n\xF7V[\x80\x91PP\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x0CsW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x8BW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0C\x9FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0C\xAEW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0C\xC3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xEAW`\0\x80\xFD[\x835a\x0C\xF5\x81a\n\xF7V[\x92Pa\r\x03` \x85\x01a\x0B\x0CV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\r)W`\0\x80\xFD[\x845a\r4\x81a\n\xF7V[\x93Pa\rB` \x86\x01a\x0B\x0CV[\x92Pa\rP`@\x86\x01a\x0B\x0CV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0` \x82\x84\x03\x12\x15a\rrW`\0\x80\xFD[\x81Qa\x0Bw\x81a\n\xF7V[` \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\r\xD9W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0BwW`\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 `\x07Z\xB6\x11\x1F\x17g\xFC\x01\xE4|\x18*\x0E\xDE\"\xA5s\x8E\xEF\x8C~\xA25\x16\xCA\xC4Uyt\xACdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `FrozenStatusReset(address)` and selector `0xd4cef0af27800d466fcacd85779857378b85cb61569005ff1464fa6e5ced69d8`. + ```solidity + event FrozenStatusReset(address indexed previouslySlashedAddress); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `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::pub_underscore_fields, + 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::pub_underscore_fields, + 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) + } + } + }; + /**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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub _0: alloy::sol_types::private::Address, + pub _1: 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: 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._0, + ), + ::tokenize( + &self._1, + ), + ) + } + } + }; + /**Function with signature `canSlash(address,address)` and selector `0xd98128c0`. + ```solidity + function canSlash(address, address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canSlashCall { + pub _0: alloy::sol_types::private::Address, + pub _1: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canSlashReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canSlashCall { + 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: 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._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 `canWithdraw(address,uint32,uint256)` and selector `0x8105e043`. + ```solidity + function canWithdraw(address, uint32, uint256) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWithdrawCall { + pub _0: alloy::sol_types::private::Address, + pub _1: u32, + pub _2: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWithdrawReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canWithdrawCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + as alloy_sol_types::SolType>::tokenize( + &self._2, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, address) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct contractCanSlashOperatorUntilBlockCall { + pub _0: alloy::sol_types::private::Address, + pub _1: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct contractCanSlashOperatorUntilBlockReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractCanSlashOperatorUntilBlockCall { + 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: 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._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 `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct freezeOperatorCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct freezeOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for freezeOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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 `getCorrectValueForInsertAfter(address,uint32)` and selector `0x723e59c7`. + ```solidity + function getCorrectValueForInsertAfter(address, uint32) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCorrectValueForInsertAfterCall { + pub _0: alloy::sol_types::private::Address, + pub _1: u32, + } + ///Container type for the return parameters of the [`getCorrectValueForInsertAfter(address,uint32)`](getCorrectValueForInsertAfterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCorrectValueForInsertAfterReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCorrectValueForInsertAfterCall { + 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: 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._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 `getMiddlewareTimesIndexServeUntilBlock(address,uint32)` and selector `0x7259a45c`. + ```solidity + function getMiddlewareTimesIndexServeUntilBlock(address, uint32) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexServeUntilBlockCall { + pub _0: alloy::sol_types::private::Address, + pub _1: u32, + } + ///Container type for the return parameters of the [`getMiddlewareTimesIndexServeUntilBlock(address,uint32)`](getMiddlewareTimesIndexServeUntilBlockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexServeUntilBlockReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMiddlewareTimesIndexServeUntilBlockCall { + 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: 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._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 `getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)` and selector `0x1874e5ae`. + ```solidity + function getMiddlewareTimesIndexStalestUpdateBlock(address, uint32) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexStalestUpdateBlockCall { + pub _0: alloy::sol_types::private::Address, + pub _1: u32, + } + ///Container type for the return parameters of the [`getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)`](getMiddlewareTimesIndexStalestUpdateBlockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexStalestUpdateBlockReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getMiddlewareTimesIndexStalestUpdateBlockCall + { + 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: 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._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 `initialize(address,address,uint256)` and selector `0x1794bb3c`. + ```solidity + function initialize(address, address, uint256) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + pub _2: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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._0, + ), + ::tokenize( + &self._1, + ), + as alloy_sol_types::SolType>::tokenize( + &self._2, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isFrozenCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isFrozenReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isFrozenCall { + 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: 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._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 `latestUpdateBlock(address,address)` and selector `0xda16e29b`. + ```solidity + function latestUpdateBlock(address, address) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestUpdateBlockCall { + pub _0: alloy::sol_types::private::Address, + pub _1: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestUpdateBlockReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for latestUpdateBlockCall { + 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: 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._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 `middlewareTimesLength(address)` and selector `0xa49db732`. + ```solidity + function middlewareTimesLength(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct middlewareTimesLengthCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct middlewareTimesLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for middlewareTimesLengthCall { + 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: 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._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 `operatorToMiddlewareTimes(address,uint256)` and selector `0x282670fc`. + ```solidity + function operatorToMiddlewareTimes(address, uint256) external view returns (ISlasher.MiddlewareTimes memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorToMiddlewareTimesCall { + pub _0: alloy::sol_types::private::Address, + pub _1: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorToMiddlewareTimesReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToMiddlewareTimesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ISlasher::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> = (ISlasher::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._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 `operatorWhitelistedContractsLinkedListEntry(address,address)` and selector `0x855fcc4a`. + ```solidity + function operatorWhitelistedContractsLinkedListEntry(address, address) external view returns (bool, uint256, uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorWhitelistedContractsLinkedListEntryCall { + pub _0: alloy::sol_types::private::Address, + pub _1: 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for operatorWhitelistedContractsLinkedListEntryCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: 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._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 `operatorWhitelistedContractsLinkedListSize(address)` and selector `0xe921d4fa`. + ```solidity + function operatorWhitelistedContractsLinkedListSize(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorWhitelistedContractsLinkedListSizeCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorWhitelistedContractsLinkedListSizeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for operatorWhitelistedContractsLinkedListSizeCall + { + 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: 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._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 `optIntoSlashing(address)` and selector `0xf73b7519`. + ```solidity + function optIntoSlashing(address) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct optIntoSlashingCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct optIntoSlashingReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for optIntoSlashingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `recordFirstStakeUpdate(address,uint32)` and selector `0x175d3205`. + ```solidity + function recordFirstStakeUpdate(address, uint32) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordFirstStakeUpdateCall { + pub _0: alloy::sol_types::private::Address, + pub _1: u32, + } + ///Container type for the return parameters of the [`recordFirstStakeUpdate(address,uint32)`](recordFirstStakeUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordFirstStakeUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordFirstStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: 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: 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._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 `recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)` and selector `0x0ffabbce`. + ```solidity + function recordLastStakeUpdateAndRevokeSlashingAbility(address, uint32) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordLastStakeUpdateAndRevokeSlashingAbilityCall { + pub _0: alloy::sol_types::private::Address, + pub _1: u32, + } + ///Container type for the return parameters of the [`recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)`](recordLastStakeUpdateAndRevokeSlashingAbilityCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordLastStakeUpdateAndRevokeSlashingAbilityReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for recordLastStakeUpdateAndRevokeSlashingAbilityCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: 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: 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._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 `recordStakeUpdate(address,uint32,uint32,uint256)` and selector `0xc747075b`. + ```solidity + function recordStakeUpdate(address, uint32, uint32, uint256) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordStakeUpdateCall { + pub _0: alloy::sol_types::private::Address, + pub _1: u32, + pub _2: u32, + pub _3: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordStakeUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2, value._3) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + _3: 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._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + as alloy_sol_types::SolType>::tokenize( + &self._2, + ), + as alloy_sol_types::SolType>::tokenize( + &self._3, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `resetFrozenStatus(address[])` and selector `0x7cf72bba`. + ```solidity + function resetFrozenStatus(address[] memory) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetFrozenStatusCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct resetFrozenStatusReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetFrozenStatusCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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 `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `strategyManager()` and selector `0x39b70e38`. + ```solidity + function strategyManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `whitelistedContractDetails(address,address)` and selector `0xd7b7fa13`. + ```solidity + function whitelistedContractDetails(address, address) external view returns (ISlasher.MiddlewareDetails memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct whitelistedContractDetailsCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`whitelistedContractDetails(address,address)`](whitelistedContractDetailsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct whitelistedContractDetailsReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: whitelistedContractDetailsCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for whitelistedContractDetailsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ISlasher::MiddlewareDetails,); + #[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: whitelistedContractDetailsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for whitelistedContractDetailsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for whitelistedContractDetailsCall { + 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 = whitelistedContractDetailsReturn; + type ReturnTuple<'a> = (ISlasher::MiddlewareDetails,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "whitelistedContractDetails(address,address)"; + const SELECTOR: [u8; 4] = [215u8, 183u8, 250u8, 19u8]; + #[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) + } + } + }; + ///Container for all the [`Slasher`](self) function calls. + pub enum SlasherCalls { + canSlash(canSlashCall), + canWithdraw(canWithdrawCall), + contractCanSlashOperatorUntilBlock(contractCanSlashOperatorUntilBlockCall), + delegation(delegationCall), + freezeOperator(freezeOperatorCall), + getCorrectValueForInsertAfter(getCorrectValueForInsertAfterCall), + getMiddlewareTimesIndexServeUntilBlock(getMiddlewareTimesIndexServeUntilBlockCall), + getMiddlewareTimesIndexStalestUpdateBlock(getMiddlewareTimesIndexStalestUpdateBlockCall), + initialize(initializeCall), + isFrozen(isFrozenCall), + latestUpdateBlock(latestUpdateBlockCall), + middlewareTimesLength(middlewareTimesLengthCall), + operatorToMiddlewareTimes(operatorToMiddlewareTimesCall), + operatorWhitelistedContractsLinkedListEntry( + operatorWhitelistedContractsLinkedListEntryCall, + ), + operatorWhitelistedContractsLinkedListSize(operatorWhitelistedContractsLinkedListSizeCall), + optIntoSlashing(optIntoSlashingCall), + owner(ownerCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + recordFirstStakeUpdate(recordFirstStakeUpdateCall), + recordLastStakeUpdateAndRevokeSlashingAbility( + recordLastStakeUpdateAndRevokeSlashingAbilityCall, + ), + recordStakeUpdate(recordStakeUpdateCall), + renounceOwnership(renounceOwnershipCall), + resetFrozenStatus(resetFrozenStatusCall), + setPauserRegistry(setPauserRegistryCall), + strategyManager(strategyManagerCall), + transferOwnership(transferOwnershipCall), + unpause(unpauseCall), + whitelistedContractDetails(whitelistedContractDetailsCall), + } + #[automatically_derived] + impl SlasherCalls { + /// 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], + [16u8, 214u8, 122u8, 47u8], + [19u8, 100u8, 57u8, 221u8], + [23u8, 93u8, 50u8, 5u8], + [23u8, 148u8, 187u8, 60u8], + [24u8, 116u8, 229u8, 174u8], + [40u8, 38u8, 112u8, 252u8], + [56u8, 200u8, 238u8, 100u8], + [57u8, 183u8, 14u8, 56u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [111u8, 12u8, 47u8, 116u8], + [113u8, 80u8, 24u8, 166u8], + [114u8, 62u8, 89u8, 199u8], + [114u8, 89u8, 164u8, 92u8], + [124u8, 247u8, 43u8, 186u8], + [129u8, 5u8, 224u8, 67u8], + [133u8, 95u8, 204u8, 74u8], + [136u8, 111u8, 17u8, 149u8], + [141u8, 165u8, 203u8, 91u8], + [164u8, 157u8, 183u8, 50u8], + [199u8, 71u8, 7u8, 91u8], + [215u8, 183u8, 250u8, 19u8], + [217u8, 129u8, 40u8, 192u8], + [218u8, 22u8, 226u8, 155u8], + [223u8, 92u8, 247u8, 35u8], + [229u8, 131u8, 152u8, 54u8], + [233u8, 33u8, 212u8, 250u8], + [242u8, 253u8, 227u8, 139u8], + [247u8, 59u8, 117u8, 25u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for SlasherCalls { + const NAME: &'static str = "SlasherCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 32usize; + #[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::initialize(_) => { + ::SELECTOR + } + Self::isFrozen(_) => ::SELECTOR, + Self::latestUpdateBlock(_) => { + ::SELECTOR + } + Self::middlewareTimesLength(_) => { + ::SELECTOR + } + Self::operatorToMiddlewareTimes(_) => { + ::SELECTOR + } + Self::operatorWhitelistedContractsLinkedListEntry(_) => { + ::SELECTOR + } + Self::operatorWhitelistedContractsLinkedListSize(_) => { + ::SELECTOR + } + Self::optIntoSlashing(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::recordFirstStakeUpdate(_) => { + ::SELECTOR + } + Self::recordLastStakeUpdateAndRevokeSlashingAbility(_) => { + ::SELECTOR + } + Self::recordStakeUpdate(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::resetFrozenStatus(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::strategyManager(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + Self::whitelistedContractDetails(_) => { + ::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( + SlasherCalls::recordLastStakeUpdateAndRevokeSlashingAbility, + ) + } + recordLastStakeUpdateAndRevokeSlashingAbility + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::pause) + } + pause + }, + { + fn recordFirstStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::recordFirstStakeUpdate) + } + recordFirstStakeUpdate + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::initialize) + } + initialize + }, + { + fn getMiddlewareTimesIndexStalestUpdateBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SlasherCalls::getMiddlewareTimesIndexStalestUpdateBlock) + } + getMiddlewareTimesIndexStalestUpdateBlock + }, + { + fn operatorToMiddlewareTimes( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::operatorToMiddlewareTimes) + } + operatorToMiddlewareTimes + }, + { + fn freezeOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::freezeOperator) + } + freezeOperator + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::strategyManager) + } + strategyManager + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::paused_1) + } + paused_1 + }, + { + fn contractCanSlashOperatorUntilBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SlasherCalls::contractCanSlashOperatorUntilBlock) + } + contractCanSlashOperatorUntilBlock + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn getCorrectValueForInsertAfter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SlasherCalls::getCorrectValueForInsertAfter) + } + getCorrectValueForInsertAfter + }, + { + fn getMiddlewareTimesIndexServeUntilBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SlasherCalls::getMiddlewareTimesIndexServeUntilBlock) + } + getMiddlewareTimesIndexServeUntilBlock + }, + { + fn resetFrozenStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::resetFrozenStatus) + } + resetFrozenStatus + }, + { + fn canWithdraw( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::canWithdraw) + } + canWithdraw + }, + { + fn operatorWhitelistedContractsLinkedListEntry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + SlasherCalls::operatorWhitelistedContractsLinkedListEntry, + ) + } + operatorWhitelistedContractsLinkedListEntry + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn owner(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::owner) + } + owner + }, + { + fn middlewareTimesLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::middlewareTimesLength) + } + middlewareTimesLength + }, + { + fn recordStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::recordStakeUpdate) + } + recordStakeUpdate + }, + { + fn whitelistedContractDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SlasherCalls::whitelistedContractDetails) + } + whitelistedContractDetails + }, + { + fn canSlash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::canSlash) + } + canSlash + }, + { + fn latestUpdateBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::latestUpdateBlock) + } + latestUpdateBlock + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::delegation) + } + delegation + }, + { + fn isFrozen( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::isFrozen) + } + isFrozen + }, + { + fn operatorWhitelistedContractsLinkedListSize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + SlasherCalls::operatorWhitelistedContractsLinkedListSize, + ) + } + operatorWhitelistedContractsLinkedListSize + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::transferOwnership) + } + transferOwnership + }, + { + fn optIntoSlashing( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(SlasherCalls::optIntoSlashing) + } + optIntoSlashing + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(SlasherCalls::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::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::initialize(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::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::recordFirstStakeUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recordLastStakeUpdateAndRevokeSlashingAbility(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recordStakeUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::resetFrozenStatus(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::whitelistedContractDetails(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::initialize(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::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::recordFirstStakeUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recordLastStakeUpdateAndRevokeSlashingAbility(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recordStakeUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::resetFrozenStatus(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::whitelistedContractDetails(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`Slasher`](self) events. + pub enum SlasherEvents { + FrozenStatusReset(FrozenStatusReset), + Initialized(Initialized), + MiddlewareTimesAdded(MiddlewareTimesAdded), + OperatorFrozen(OperatorFrozen), + OptedIntoSlashing(OptedIntoSlashing), + OwnershipTransferred(OwnershipTransferred), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + SlashingAbilityRevoked(SlashingAbilityRevoked), + Unpaused(Unpaused), + } + #[automatically_derived] + impl SlasherEvents { + /// 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, + ], + [ + 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, + ], + [ + 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, + ], + [ + 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, + ], + [ + 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, + ], + [ + 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, + ], + [ + 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 SlasherEvents { + const NAME: &'static str = "SlasherEvents"; + 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::FrozenStatusReset) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + 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::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::SlashingAbilityRevoked) + } + 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 SlasherEvents { + 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::Initialized(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::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::SlashingAbilityRevoked(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::FrozenStatusReset(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Initialized(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::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::SlashingAbilityRevoked(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 [`Slasher`](self) contract instance. + + See the [wrapper's documentation](`SlasherInstance`) 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, + ) -> SlasherInstance { + SlasherInstance::::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, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + SlasherInstance::::deploy(provider, _0, _1) + } + /**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, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + SlasherInstance::::deploy_builder(provider, _0, _1) + } + /**A [`Slasher`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Slasher`](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 SlasherInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SlasherInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SlasherInstance") + .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, + > SlasherInstance + { + /**Creates a new wrapper around an on-chain [`Slasher`](self) contract instance. + + See the [wrapper's documentation](`SlasherInstance`) 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, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _0, _1); + 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, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { _0, _1 })[..], + ] + .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 SlasherInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SlasherInstance { + SlasherInstance { + 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, + > SlasherInstance + { + /// 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, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&canSlashCall { _0, _1 }) + } + ///Creates a new call builder for the [`canWithdraw`] function. + pub fn canWithdraw( + &self, + _0: alloy::sol_types::private::Address, + _1: u32, + _2: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&canWithdrawCall { _0, _1, _2 }) + } + ///Creates a new call builder for the [`contractCanSlashOperatorUntilBlock`] function. + pub fn contractCanSlashOperatorUntilBlock( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&contractCanSlashOperatorUntilBlockCall { _0, _1 }) + } + ///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, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&freezeOperatorCall { _0 }) + } + ///Creates a new call builder for the [`getCorrectValueForInsertAfter`] function. + pub fn getCorrectValueForInsertAfter( + &self, + _0: alloy::sol_types::private::Address, + _1: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCorrectValueForInsertAfterCall { _0, _1 }) + } + ///Creates a new call builder for the [`getMiddlewareTimesIndexServeUntilBlock`] function. + pub fn getMiddlewareTimesIndexServeUntilBlock( + &self, + _0: alloy::sol_types::private::Address, + _1: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getMiddlewareTimesIndexServeUntilBlockCall { _0, _1 }) + } + ///Creates a new call builder for the [`getMiddlewareTimesIndexStalestUpdateBlock`] function. + pub fn getMiddlewareTimesIndexStalestUpdateBlock( + &self, + _0: alloy::sol_types::private::Address, + _1: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getMiddlewareTimesIndexStalestUpdateBlockCall { _0, _1 }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + _2: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { _0, _1, _2 }) + } + ///Creates a new call builder for the [`isFrozen`] function. + pub fn isFrozen( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isFrozenCall { _0 }) + } + ///Creates a new call builder for the [`latestUpdateBlock`] function. + pub fn latestUpdateBlock( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&latestUpdateBlockCall { _0, _1 }) + } + ///Creates a new call builder for the [`middlewareTimesLength`] function. + pub fn middlewareTimesLength( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&middlewareTimesLengthCall { _0 }) + } + ///Creates a new call builder for the [`operatorToMiddlewareTimes`] function. + pub fn operatorToMiddlewareTimes( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorToMiddlewareTimesCall { _0, _1 }) + } + ///Creates a new call builder for the [`operatorWhitelistedContractsLinkedListEntry`] function. + pub fn operatorWhitelistedContractsLinkedListEntry( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&operatorWhitelistedContractsLinkedListEntryCall { _0, _1 }) + } + ///Creates a new call builder for the [`operatorWhitelistedContractsLinkedListSize`] function. + pub fn operatorWhitelistedContractsLinkedListSize( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&operatorWhitelistedContractsLinkedListSizeCall { _0 }) + } + ///Creates a new call builder for the [`optIntoSlashing`] function. + pub fn optIntoSlashing( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&optIntoSlashingCall { _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 [`recordFirstStakeUpdate`] function. + pub fn recordFirstStakeUpdate( + &self, + _0: alloy::sol_types::private::Address, + _1: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&recordFirstStakeUpdateCall { _0, _1 }) + } + ///Creates a new call builder for the [`recordLastStakeUpdateAndRevokeSlashingAbility`] function. + pub fn recordLastStakeUpdateAndRevokeSlashingAbility( + &self, + _0: alloy::sol_types::private::Address, + _1: u32, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + recordLastStakeUpdateAndRevokeSlashingAbilityCall, + N, + > { + self.call_builder(&recordLastStakeUpdateAndRevokeSlashingAbilityCall { _0, _1 }) + } + ///Creates a new call builder for the [`recordStakeUpdate`] function. + pub fn recordStakeUpdate( + &self, + _0: alloy::sol_types::private::Address, + _1: u32, + _2: u32, + _3: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&recordStakeUpdateCall { _0, _1, _2, _3 }) + } + ///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 [`resetFrozenStatus`] function. + pub fn resetFrozenStatus( + &self, + _0: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&resetFrozenStatusCall { _0 }) + } + ///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 [`strategyManager`] function. + pub fn strategyManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyManagerCall {}) + } + ///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 [`whitelistedContractDetails`] function. + pub fn whitelistedContractDetails( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&whitelistedContractDetailsCall { _0, _1 }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SlasherInstance + { + /// 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 [`Initialized`] event. + pub fn Initialized_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 [`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 [`SlashingAbilityRevoked`] event. + pub fn SlashingAbilityRevoked_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/middleware/sort.rs b/crates/utils/src/middleware/sort.rs new file mode 100644 index 00000000..6f8ca819 --- /dev/null +++ b/crates/utils/src/middleware/sort.rs @@ -0,0 +1,221 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Sort {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Sort { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d897ca88d40c1a3b65c7266ebc2f4506cd30f6176aeb1faf5944113b3d85a85b64736f6c634300080c0033 + /// ``` + #[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 \xD8\x97\xCA\x88\xD4\x0C\x1A;e\xC7&n\xBC/E\x06\xCD0\xF6\x17j\xEB\x1F\xAFYD\x11;=\x85\xA8[dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d897ca88d40c1a3b65c7266ebc2f4506cd30f6176aeb1faf5944113b3d85a85b64736f6c634300080c0033 + /// ``` + #[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 \xD8\x97\xCA\x88\xD4\x0C\x1A;e\xC7&n\xBC/E\x06\xCD0\xF6\x17j\xEB\x1F\xAFYD\x11;=\x85\xA8[dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Sort`](self) contract instance. + + See the [wrapper's documentation](`SortInstance`) 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, + ) -> SortInstance { + SortInstance::::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>> { + SortInstance::::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 { + SortInstance::::deploy_builder(provider) + } + /**A [`Sort`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Sort`](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 SortInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SortInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SortInstance").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, + > SortInstance + { + /**Creates a new wrapper around an on-chain [`Sort`](self) contract instance. + + See the [wrapper's documentation](`SortInstance`) 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 SortInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SortInstance { + SortInstance { + 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, + > SortInstance + { + /// 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, + > SortInstance + { + /// 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/middleware/stakeregistry.rs b/crates/utils/src/middleware/stakeregistry.rs new file mode 100644 index 00000000..0286c395 --- /dev/null +++ b/crates/utils/src/middleware/stakeregistry.rs @@ -0,0 +1,8057 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style +)] +pub mod StakeRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014c70732d3158fe130cdb5a2d819a732d72da424c0223c808ae97682e4399e0c64736f6c634300080c0033 + /// ``` + #[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\09X8\x03\x80b\09X\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`\xA0Qa8Ob\0\x01\t`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x062\x01R\x81\x81a\to\x01R\x81\x81a\x0C\xE6\x01R\x81\x81a\x11\x11\x01R\x81\x81a\x17\x03\x01R\x81\x81a\x18\x05\x01R\x81\x81a\x19)\x01Ra\x1C\xE7\x01R`\0\x81\x81a\x05)\x01Ra\x1E\xA8\x01Ra8O`\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,'V[`\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,BV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a,lV[a\x02Ta\x02O6`\x04a,\xA6V[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a-!V[a\x060V[\0[a\x02\x94a\x02\x8F6`\x04a-\xE2V[a\taV[`@Qa\x02\x17\x92\x91\x90a.\x81V[a\x02\xB5a\x02\xB06`\x04a.\xA6V[a\x0C,V[`@Qa\x02\x17\x91\x90a.\xD2V[a\x02\ra\x02\xD06`\x04a,'V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a.\xA6V[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a.\xA6V[a\x0C\xCBV[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a/\xDBV[a\x0C\xE4V[a\x03]a\x03X6`\x04a-\xE2V[a\x11\x04V[`@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`\x04a0\x97V[a\x12^V[`@Qa\x02\x17\x91\x90a0\xE9V[a\x03\x9Ca\x03\xFC6`\x04a,BV[a\x15(V[a\x04\x14a\x04\x0F6`\x04a1'V[a\x15`V[`@Qa\x02\x17\x91\x90a1ZV[a\x044a\x04/6`\x04a,BV[a\x15\xF8V[`@\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,BV[a\x16rV[a\x02\x7Fa\x04\x826`\x04a1\xA6V[a\x17\x01V[a\x02\x7Fa\x04\x956`\x04a1\xD0V[a\x17\xFAV[a\x02Ta\x04\xA86`\x04a,'V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a2\x9CV[a\x19'V[a\x02Ta\x04\xE46`\x04a2\xE9V[a\x1A\x1BV[a\x02Ta\x04\xF76`\x04a,'V[a\x1A\x99V[a\x05\x0Fa\x05\n6`\x04a3%V[a\x1A\xECV[`@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`\x04a3aV[a\x1B\x01V[a\x04\x14a\x05l6`\x04a.\xA6V[a\x1B\x96V[a\x02Ta\x05\x7F6`\x04a3%V[a\x1C{V[a\x02\x7Fa\x05\x926`\x04a3\xA3V[a\x1C\xDCV[`\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[`\xFF\x82\x16`\0\x90\x81R`\x01` R`@\x81 T\x83\x90a\x06\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[`@Q\x80\x91\x03\x90\xFD[`\0a\x06&\x85\x85a\x1EGV[P\x95\x94PPPPPV[\x7F\0\0\0\0\0\0\0\0\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\x06\x8EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xB2\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x84a\x06\xFE\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x83\x80a\x07\x90W`@\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\x01a\x06\x11V[\x82\x81\x14a\x08\x05W`@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\x11V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\tVW\x85\x85\x82\x81\x81\x10a\x083Wa\x083a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\x08H\x91\x90a5\0V[\x82\x89\x89\x84\x81\x81\x10a\x08[Wa\x08[a4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08rWa\x08ra4\xEAV[\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\x08\xDBWa\x08\xDBa4\xEAV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF2Wa\x08\xF2a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\x19Wa\t\x19a4\xEAV[\x90P` \x02\x01` \x81\x01\x90a\t.\x91\x90a5\0V[`@Qa\t<\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a\tN\x81a51V[\x91PPa\x08\x19V[PPPPPPPPPV[``\x803`\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\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xC6Wa\t\xC6a/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x0CWa\n\x0Ca/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\x1EW`\0\x87\x87\x83\x81\x81\x10a\nWWa\nWa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\n\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\n\xEC\x83\x8Da\x1EGV[\x91P\x91P\x80a\x0B\x89W`@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\x11V[`\0a\x0B\x96\x8C\x85\x85a EV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0B\xABWa\x0B\xABa4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0B\xD5\x84\x82a\"\xC5V[\x86\x86\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a4\xEAV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x16\x90a51V[\x91PPa\n;V[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\x0C\xBEW`\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\x0CeV[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0C\xD8\x84\x84a\x1B\x96V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\rBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rf\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\r\xB2\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\r\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[\x81Q\x80a\x0ECW`@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\x11V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x10\xFBW\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\x0E\xA2Wa\x0E\xA2a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0E\xBAWa\x0E\xBAa4\xEAV[`\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\x0F\x18Wa\x0F\x18a4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F0Wa\x0F0a4\xEAV[`\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\x0Fp\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x0F\x80Wa\x0F\x80a4\xEAV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x0F\x9DWa\x0F\x9Da4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB5Wa\x0F\xB5a4\xEAV[`\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\x10\x08Wa\x10\x08a5\xD5V[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\x100\x90`\x01\x90a5\xBEV[\x81T\x81\x10a\x10@Wa\x10@a4\xEAV[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\x10qWa\x10qa4\xEAV[` \x02` \x01\x01Q\x81T\x81\x10a\x10\x89Wa\x10\x89a4\xEAV[\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\x10\xC7Wa\x10\xC7a5\xD5V[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x10\xF3\x81a51V[\x91PPa\x0EbV[PPPPPPPV[`\x003`\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\x11NW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0\x80[\x83\x81\x10\x15a\x06&W`\0\x85\x85\x83\x81\x81\x10a\x11nWa\x11na4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x11\xFEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FStakeRegistry.updateOperatorStak`D\x82\x01R\x7Fe: quorum does not exist\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0\x80a\x12\x0B\x83\x8Ba\x1EGV[\x91P\x91P\x80a\x12-W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x12:\x8A\x85\x85a EV[\x90Pa\x12F\x84\x82a\"\xC5V[PPPPP\x80\x80a\x12V\x90a51V[\x91PPa\x11RV[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12zWa\x12za/JV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\x1DW`\0\x85\x85\x83\x81\x81\x10a\x12\xC5Wa\x12\xC5a4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x13dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum does not`d\x82\x01Re\x08\x19^\x1A\\\xDD`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x13\x8DWa\x13\x8Da4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x149W`@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\x11V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x15\x07W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x14}\x84\x86a5\xBEV[a\x14\x87\x91\x90a5\xBEV[\x81T\x81\x10a\x14\x97Wa\x14\x97a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x14\xF5W`\x01a\x14\xBA\x82\x84a5\xBEV[a\x14\xC4\x91\x90a5\xBEV[\x85\x85\x81Q\x81\x10a\x14\xD6Wa\x14\xD6a4\xEAV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x15\x07V[\x80a\x14\xFF\x81a51V[\x91PPa\x14NV[PPP\x80\x80a\x15\x15\x90a51V[\x91PPa\x12\xA9V[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x15DW`\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\x15\xA5Wa\x15\xA5a4\xEAV[`\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\x160Wa\x160a4\xEAV[`\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\x16\xAFWa\x16\xAFa4\xEAV[`\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[\x7F\0\0\0\0\0\0\0\0\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\x17_W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x83\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x17\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x17\xCF\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x17\xEBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$?V[PPPV[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\x18BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\0[\x81\x81\x10\x15a\x19!W`\0\x83\x83\x83\x81\x81\x10a\x18aWa\x18aa4\xEAV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x18\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[`\0a\x18\xFF\x86\x83`\0a EV[\x90Pa\x19\x0B\x82\x82a\"\xC5V[PPP\x80\x80a\x19\x19\x90a51V[\x91PPa\x18EV[PPPPV[\x7F\0\0\0\0\0\0\0\0\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\x19\x85W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xA9\x91\x90a4QV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x19\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4nV[\x81a\x19\xF5\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a4\0V[a\x17\xF5\x83\x83a$\xA8V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1ABWa\x1ABa4\xEAV[`\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\x0C\xD8\x81\x85a(\xEBV[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A\xBA\x91a5\xBEV[\x81T\x81\x10a\x1A\xCAWa\x1A\xCAa4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x1A\xF9\x84\x84\x84a*eV[\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\x1B2Wa\x1B2a4\xEAV[`\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\x1B\x89\x81\x86a(\xEBV[`@\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\x1B\xEFW\x91Pa\x0C\xC5\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\x16`\x01\x84a5\xBEV[\x81T\x81\x10a\x1C&Wa\x1C&a4\xEAV[`\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\x0C\xC5\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1C\xA2\x85\x85\x85a*eV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C\xB8Wa\x1C\xB8a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D$W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x11\x90a5LV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1D\xA2W`@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\x11V[a\x1D\xAC\x83\x82a$\xA8V[a\x1D\xB6\x83\x83a$?V[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[`\0\x80`\0\x80a\x1Ef\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\x1E\xDB\x92\x8C\x92\x01a5\xEBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F \x91\x90\x81\x01\x90a6JV[\x90P`\0[\x83\x81\x10\x15a \x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x1FQWa\x1FQa4\xEAV[`\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\x1F\x9FWa\x1F\x9Fa4\xEAV[` \x02` \x01\x01Q\x11\x15a\x1F\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x1F\xD6Wa\x1F\xD6a4\xEAV[` \x02` \x01\x01Qa\x1F\xE8\x91\x90a6\xDAV[a\x1F\xF2\x91\x90a6\xF9V[a\x1F\xFC\x90\x86a7\x1BV[\x94P[\x80a \t\x81a51V[\x91PPa\x1F%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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a!\tW`\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\"kV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a!0`\x01\x84a5\xBEV[\x81T\x81\x10a!@Wa!@a4\xEAV[`\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!yW`\0\x93PPPPa\x15!V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a!\xB3W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\"iV[\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\"\xBB\x82\x85a+\xCBV[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\"\xE9\x90\x84a5\xBEV[\x81T\x81\x10a\"\xF9Wa\"\xF9a4\xEAV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a#(WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0C\xC5\x90PV[\x80T`\0\x90a#G\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xE3V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\x84W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua$6V[\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%\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%0\x83\x83a7FV[\x11\x15a%\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\0[\x82\x81\x10\x15a(\xE4W`\0[a%\xB8\x82\x84a7FV[\x81\x10\x15a&\x99W\x84\x82\x81Q\x81\x10a%\xD1Wa%\xD1a4\xEAV[` \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&\x10Wa&\x10a4\xEAV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a&\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a7\xFA\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x11V[\x80a&\x91\x81a51V[\x91PPa%\xAEV[P`\0\x84\x82\x81Q\x81\x10a&\xAEWa&\xAEa4\xEAV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a7\xFA\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\x11V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'YWa'Ya4\xEAV[` \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'\xBEWa'\xBEa4\xEAV[` \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(5Wa(5a4\xEAV[` \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(\x92Wa(\x92a4\xEAV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a4\xEAV[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a,lV[`@Q\x80\x91\x03\x90\xA2\x80a(\xDC\x81a51V[\x91PPa%\xA3V[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\x90W`@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\x11V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)\xB6WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*aW`@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\x11V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\x06W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*\xB9`\x01\x84a5\xBEV[\x81T\x81\x10a*\xC9Wa*\xC9a4\xEAV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xF4Wa*\xEB`\x01\x82a5\xBEV[\x92PPPa\x15!V[\x80a*\xFE\x81a7^V[\x91PPa*\x84V[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\x11V[`\0a\x15!`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a7uV[`\0\x80\x82\x12\x15a,\x07Wa+\xF6\x82a7\xB4V[a,\0\x90\x84a7\xD1V[\x90Pa\x0C\xC5V[a,\0\x82\x84a7\x1BV[\x805`\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a,9W`\0\x80\xFD[a\x15!\x82a,\x11V[`\0\x80`@\x83\x85\x03\x12\x15a,UW`\0\x80\xFD[a,^\x83a,\x11V[\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,\xA3W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xB9W`\0\x80\xFD[a,\xC2\x83a,\x11V[\x91P` \x83\x015a,\xD2\x81a,\x8EV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a,\xEFW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x06W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-9W`\0\x80\xFD[a-B\x86a,\x11V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a-^W`\0\x80\xFD[a-j\x89\x83\x8A\x01a,\xDDV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a-\x83W`\0\x80\xFD[Pa-\x90\x88\x82\x89\x01a,\xDDV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a-\xB3W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xCAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a >W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a-\xF8W`\0\x80\xFD[\x845a.\x03\x81a,\x8EV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.%W`\0\x80\xFD[a.1\x87\x82\x88\x01a-\xA1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a.vW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.QV[P\x94\x95\x94PPPPPV[`@\x81R`\0a.\x94`@\x83\x01\x85a.=V[\x82\x81\x03` \x84\x01Ra$6\x81\x85a.=V[`\0\x80`@\x83\x85\x03\x12\x15a.\xB9W`\0\x80\xFD[\x825\x91Pa.\xC9` \x84\x01a,\x11V[\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/>Wa/+\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.\xEEV[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/\x82Wa/\x82a/JV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB0Wa/\xB0a/JV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xD1Wa/\xD1a/JV[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a/\xEEW`\0\x80\xFD[a/\xF7\x83a,\x11V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x13W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0$W`\0\x80\xFD[\x805a07a02\x82a/\xB8V[a/\x88V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0VW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a0tW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a0[V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\"W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xACW`\0\x80\xFD[a0\xB5\x84a0\x83V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xD0W`\0\x80\xFD[a0\xDC\x86\x82\x87\x01a-\xA1V[\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/>W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x05V[`\0\x80`\0``\x84\x86\x03\x12\x15a1 = (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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentTotalStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestStakeUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeHistoryReturn { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minimumStakeForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyStrategyParamsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setMinimumStakeForQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategiesPerQuorumReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/stakeregistryharness.rs b/crates/utils/src/middleware/stakeregistryharness.rs new file mode 100644 index 00000000..d4afb466 --- /dev/null +++ b/crates/utils/src/middleware/stakeregistryharness.rs @@ -0,0 +1,8847 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StakeRegistryHarness { + 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 applyDelta(uint96 value, int256 delta) external pure returns (uint96); + function calculateDelta(uint96 prev, uint96 cur) external pure returns (int256); + 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 recordOperatorStakeUpdate(bytes32 operatorId, uint8 quorumNumber, uint96 newStake) external returns (int256); + function recordTotalStakeUpdate(uint8 quorumNumber, int256 stakeDelta) 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": "applyDelta", + "inputs": [ + { + "name": "value", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "delta", + "type": "int256", + "internalType": "int256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "calculateDelta", + "inputs": [ + { + "name": "prev", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "cur", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [ + { + "name": "", + "type": "int256", + "internalType": "int256" + } + ], + "stateMutability": "pure" + }, + { + "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": "recordOperatorStakeUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "newStake", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [ + { + "name": "", + "type": "int256", + "internalType": "int256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recordTotalStakeUpdate", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "stakeDelta", + "type": "int256", + "internalType": "int256" + } + ], + "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::pub_underscore_fields, + clippy::style +)] +pub mod StakeRegistryHarness { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60c06040523480156200001157600080fd5b5060405162003a6a38038062003a6a833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161396162000109600039600081816103b9015281816106b9015281816109f601528181610d6d01528181611198015281816117ab015281816118a8015281816119cc0152611d8e01526000818161058e01526120c901526139616000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806381c0750211610125578063c8294c56116100ad578063f2be94ae1161007c578063f2be94ae146105b0578063f509551a146105c3578063f851e198146105d6578063fa28c627146105e9578063ff694a77146105fc57600080fd5b8063c8294c561461053b578063d5eccc051461054e578063dd9846b914610561578063df5cf7231461058957600080fd5b8063b6904b78116100f4578063b6904b78146104c6578063bc9a40c3146104d9578063bd29b8cd146104ec578063c46778a5146104ff578063c601527d1461052857600080fd5b806381c07502146104335780639f3ccf6514610453578063ac6bfb0314610466578063adc804da1461048657600080fd5b80634bd26e09116101a857806366acfefe1161017757806366acfefe146103895780636d14a987146103b457806374454c6d146103f35780637c172347146104065780637f4298221461042057600080fd5b80634bd26e09146103245780635401ed27146103545780635e5a6775146103675780635f1f2d771461037657600080fd5b806320b66298116101e457806320b66298146102ad57806325504777146102c05780632cd95940146102e15780633ca5a5f51461030157600080fd5b80630390a4d5146102165780630491b41c1461022b57806308732461146102615780631f9b74e014610282575b600080fd5b610229610224366004612cce565b61060f565b005b61024e610239366004612cf8565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61027461026f366004612cce565b61061e565b604051610258929190612d13565b610295610290366004612d4d565b610667565b6040516001600160601b039091168152602001610258565b6102296102bb366004612dc8565b6106b7565b6102d36102ce366004612e89565b6109e8565b604051610258929190612f28565b6102f46102ef366004612f4d565b610cb3565b6040516102589190612f79565b61024e61030f366004612cf8565b60ff1660009081526003602052604090205490565b61024e610332366004612f4d565b600091825260026020908152604080842060ff93909316845291905290205490565b610295610362366004612f4d565b610d52565b61024e670de0b6b3a764000081565b610229610384366004613082565b610d6b565b61039c610397366004612e89565b61118b565b6040516001600160c01b039091168152602001610258565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610258565b61024e610401366004613141565b6112e5565b61040e602081565b60405160ff9091168152602001610258565b61029561042e36600461317d565b6112fc565b6104466104413660046131ad565b611308565b60405161025891906131ff565b6103db610461366004612cce565b6115d0565b61047961047436600461323d565b611608565b6040516102589190613270565b610499610494366004612cce565b6116a0565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610258565b6104796104d4366004612cce565b61171a565b6102296104e73660046132a5565b6117a9565b6102296104fa3660046132cf565b61189d565b61029561050d366004612cf8565b6000602081905290815260409020546001600160601b031681565b61022961053636600461339b565b6119ca565b6102956105493660046133e8565b611abe565b61029561055c366004612cf8565b611b3c565b61057461056f366004613424565b611b8f565b60405163ffffffff9091168152602001610258565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6102956105be366004613457565b611b9c565b61024e6105d1366004613499565b611c31565b6104796105e4366004612f4d565b611c3d565b6102956105f7366004613424565b611d22565b61022961060a3660046134b5565b611d83565b6106198282611eee565b505050565b6003602052816000526040600020818154811061063a57600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff821660009081526001602052604081205483906106a15760405162461bcd60e51b815260040161069890613512565b60405180910390fd5b60006106ad8585612068565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190613563565b6001600160a01b0316336001600160a01b0316146107695760405162461bcd60e51b815260040161069890613580565b846107858160ff16600090815260016020526040902054151590565b6107a15760405162461bcd60e51b815260040161069890613512565b8380610817576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610698565b82811461088c5760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610698565b60ff87166000908152600360205260408120905b828110156109dd578585828181106108ba576108ba6135fc565b90506020020160208101906108cf9190613612565b828989848181106108e2576108e26135fc565b90506020020135815481106108f9576108f96135fc565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a85818110610962576109626135fc565b9050602002013581548110610979576109796135fc565b6000918252602090912001546001600160a01b03168888858181106109a0576109a06135fc565b90506020020160208101906109b59190613612565b6040516109c3929190612d13565b60405180910390a2806109d581613643565b9150506108a0565b505050505050505050565b606080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a335760405162461bcd60e51b81526004016106989061365e565b6000836001600160401b03811115610a4d57610a4d612ff1565b604051908082528060200260200182016040528015610a76578160200160208202803683370190505b5090506000846001600160401b03811115610a9357610a93612ff1565b604051908082528060200260200182016040528015610abc578160200160208202803683370190505b50905060005b85811015610ca5576000878783818110610ade57610ade6135fc565b919091013560f81c60008181526001602052604090205490925015159050610b665760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610698565b600080610b73838d612068565b9150915080610c105760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610698565b6000610c1d8c8585612266565b905082878681518110610c3257610c326135fc565b60200260200101906001600160601b031690816001600160601b031681525050610c5c8482611eee565b868681518110610c6e57610c6e6135fc565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c9d90613643565b915050610ac2565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d45576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610cec565b5050505090505b92915050565b600080610d5f8484611c3d565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ded9190613563565b6001600160a01b0316336001600160a01b031614610e1d5760405162461bcd60e51b815260040161069890613580565b81610e398160ff16600090815260016020526040902054151590565b610e555760405162461bcd60e51b815260040161069890613512565b815180610eca5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610698565b60ff841660009081526003602090815260408083206004909252822090915b83811015611182578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610f2957610f296135fc565b602002602001015181548110610f4157610f416135fc565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f9f57610f9f6135fc565b602002602001015181548110610fb757610fb76135fc565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ff7906001906136d0565b81548110611007576110076135fc565b9060005260206000200183878381518110611024576110246135fc565b60200260200101518154811061103c5761103c6135fc565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b918290041602179055825483908061108f5761108f6136e7565b600082815260208120820160001990810191909155019055815482906110b7906001906136d0565b815481106110c7576110c76135fc565b9060005260206000200160009054906101000a90046001600160a01b0316828783815181106110f8576110f86135fc565b602002602001015181548110611110576111106135fc565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061114e5761114e6136e7565b600082815260209020810160001990810180546001600160a01b03191690550190558061117a81613643565b915050610ee9565b50505050505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d55760405162461bcd60e51b81526004016106989061365e565b6000805b838110156106ad5760008585838181106111f5576111f56135fc565b919091013560f81c600081815260016020526040902054909250151590506112855760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610698565b600080611292838b612068565b91509150806112b45760009150600160ff84161b6001600160c01b0386161794505b60006112c18a8585612266565b90506112cd8482611eee565b505050505080806112dd90613643565b9150506111d9565b60006112f2848484612266565b90505b9392505050565b60006112f583836124e6565b60606000826001600160401b0381111561132457611324612ff1565b60405190808252806020026020018201604052801561134d578160200160208202803683370190505b50905060005b838110156115c757600085858381811061136f5761136f6135fc565b919091013560f81c6000818152600160205260409020549092501515905061140e5760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610698565b60ff81166000908152600160205260408120805463ffffffff8a169290611437576114376135fc565b60009182526020909120015463ffffffff1611156114e35760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610698565b60ff8116600090815260016020526040812054905b818110156115b15760ff8316600090815260016020819052604090912063ffffffff8b169161152784866136d0565b61153191906136d0565b81548110611541576115416135fc565b60009182526020909120015463ffffffff161161159f57600161156482846136d0565b61156e91906136d0565b858581518110611580576115806135fc565b602002602001019063ffffffff16908163ffffffff16815250506115b1565b806115a981613643565b9150506114f8565b50505080806115bf90613643565b915050611353565b50949350505050565b600460205281600052604060002081815481106115ec57600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff8816835290529190912080548390811061164d5761164d6135fc565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106116d8576116d86135fc565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff861682526001905291909120805483908110611757576117576135fc565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182b9190613563565b6001600160a01b0316336001600160a01b03161461185b5760405162461bcd60e51b815260040161069890613580565b816118778160ff16600090815260016020526040902054151590565b6118935760405162461bcd60e51b815260040161069890613512565b6106198383612514565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118e55760405162461bcd60e51b81526004016106989061365e565b60005b818110156119c4576000838383818110611904576119046135fc565b919091013560f81c600081815260016020526040902054909250151590506119945760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610698565b60006119a286836000612266565b90506119ae8282611eee565b50505080806119bc90613643565b9150506118e8565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613563565b6001600160a01b0316336001600160a01b031614611a7c5760405162461bcd60e51b815260040161069890613580565b81611a988160ff16600090815260016020526040902054151590565b611ab45760405162461bcd60e51b815260040161069890613512565b610619838361257d565b60ff83166000908152600160205260408120805482919084908110611ae557611ae56135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610d5f81856129c0565b60ff81166000908152600160208190526040822080549091611b5d916136d0565b81548110611b6d57611b6d6135fc565b600091825260209091200154600160401b90046001600160601b031692915050565b60006112f2848484612b3a565b600082815260026020908152604080832060ff881684529091528120805482919084908110611bcd57611bcd6135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611c2481866129c0565b6040015195945050505050565b60006112f58383612ca0565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611c96579150610d4c9050565b600085815260026020908152604080832060ff881684529091529020611cbd6001846136d0565b81548110611ccd57611ccd6135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610d4c915050565b600083815260026020908152604080832060ff861684529091528120611d49858585612b3a565b63ffffffff1681548110611d5f57611d5f6135fc565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dcb5760405162461bcd60e51b81526004016106989061365e565b60ff831660009081526001602052604090205415611e495760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610698565b611e53838261257d565b611e5d8383612514565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff821660009081526001602081905260408220805491839190611f1290846136d0565b81548110611f2257611f226135fc565b9060005260206000200190508360001415611f515754600160401b90046001600160601b03169150610d4c9050565b8054600090611f7090600160401b90046001600160601b0316866124e6565b82549091504363ffffffff90811691161415611fad578154600160401b600160a01b031916600160401b6001600160601b0383160217825561205f565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6000806000806120878660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926120fc928c92016136fd565b600060405180830381865afa158015612119573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612141919081019061375c565b905060005b838110156122325760ff89166000908152600360205260409020805482908110612172576121726135fc565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b03169082015283519094508390839081106121c0576121c06135fc565b6020026020010151111561222057670de0b6b3a764000083602001516001600160601b03168383815181106121f7576121f76135fc565b602002602001015161220991906137ec565b612213919061380b565b61221d908661382d565b94505b8061222a81613643565b915050612146565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061232a57600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561248c565b600086815260026020908152604080832060ff8916845290915281206123516001846136d0565b81548110612361576123616135fc565b600091825260209091200180546001600160601b03600160401b90910481169450909150851683141561239a57600093505050506112f5565b80544363ffffffff908116911614156123d4578054600160401b600160a01b031916600160401b6001600160601b0387160217815561248a565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26124dc8285612ca0565b9695505050505050565b60008082121561250a576124f982613858565b6125039084613875565b9050610d4c565b612503828461382d565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116125e25760405162461bcd60e51b8152602060048201526038602482015260008051602061390c83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610698565b805160ff831660009081526003602090815260409091205490612605838361389d565b11156126755760405162461bcd60e51b8152602060048201526045602482015260008051602061390c83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610698565b60005b828110156129b95760005b61268d828461389d565b81101561276e578482815181106126a6576126a66135fc565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106126e5576126e56135fc565b6000918252602090912001546001600160a01b0316141561275c5760405162461bcd60e51b815260206004820152603d602482015260008051602061390c83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610698565b8061276681613643565b915050612683565b506000848281518110612783576127836135fc565b6020026020010151602001516001600160601b0316116128085760405162461bcd60e51b8152602060048201526046602482015260008051602061390c83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610698565b60ff85166000908152600360205260409020845185908390811061282e5761282e6135fc565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff8716825260049052604090208451859083908110612893576128936135fc565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061290a5761290a6135fc565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612967576129676135fc565b602002602001015160000151868481518110612985576129856135fc565b60200260200101516020015160405161299f929190612d13565b60405180910390a2806129b181613643565b915050612678565b5050505050565b816000015163ffffffff168163ffffffff161015612a655760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610698565b602082015163ffffffff161580612a8b5750816020015163ffffffff168163ffffffff16105b612b365760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610698565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612bdb57600086815260026020908152604080832060ff89168452909152902063ffffffff851690612b8e6001846136d0565b81548110612b9e57612b9e6135fc565b60009182526020909120015463ffffffff1611612bc957612bc06001826136d0565b925050506112f5565b80612bd3816138b5565b915050612b59565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610698565b60006112f56001600160601b038085169084166138cc565b803560ff81168114612cc957600080fd5b919050565b60008060408385031215612ce157600080fd5b612cea83612cb8565b946020939093013593505050565b600060208284031215612d0a57600080fd5b6112f582612cb8565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612d4a57600080fd5b50565b60008060408385031215612d6057600080fd5b612d6983612cb8565b91506020830135612d7981612d35565b809150509250929050565b60008083601f840112612d9657600080fd5b5081356001600160401b03811115612dad57600080fd5b6020830191508360208260051b850101111561225f57600080fd5b600080600080600060608688031215612de057600080fd5b612de986612cb8565b945060208601356001600160401b0380821115612e0557600080fd5b612e1189838a01612d84565b90965094506040880135915080821115612e2a57600080fd5b50612e3788828901612d84565b969995985093965092949392505050565b60008083601f840112612e5a57600080fd5b5081356001600160401b03811115612e7157600080fd5b60208301915083602082850101111561225f57600080fd5b60008060008060608587031215612e9f57600080fd5b8435612eaa81612d35565b93506020850135925060408501356001600160401b03811115612ecc57600080fd5b612ed887828801612e48565b95989497509550505050565b600081518084526020808501945080840160005b83811015612f1d5781516001600160601b031687529582019590820190600101612ef8565b509495945050505050565b604081526000612f3b6040830185612ee4565b828103602084015261205f8185612ee4565b60008060408385031215612f6057600080fd5b82359150612f7060208401612cb8565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612fe557612fd283855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612f95565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561302957613029612ff1565b60405290565b604051601f8201601f191681016001600160401b038111828210171561305757613057612ff1565b604052919050565b60006001600160401b0382111561307857613078612ff1565b5060051b60200190565b6000806040838503121561309557600080fd5b61309e83612cb8565b91506020808401356001600160401b038111156130ba57600080fd5b8401601f810186136130cb57600080fd5b80356130de6130d98261305f565b61302f565b81815260059190911b820183019083810190888311156130fd57600080fd5b928401925b8284101561311b57833582529284019290840190613102565b80955050505050509250929050565b80356001600160601b0381168114612cc957600080fd5b60008060006060848603121561315657600080fd5b8335925061316660208501612cb8565b91506131746040850161312a565b90509250925092565b6000806040838503121561319057600080fd5b612cea8361312a565b803563ffffffff81168114612cc957600080fd5b6000806000604084860312156131c257600080fd5b6131cb84613199565b925060208401356001600160401b038111156131e657600080fd5b6131f286828701612e48565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612fe557835163ffffffff168352928401929184019160010161321b565b60008060006060848603121561325257600080fd5b61325b84612cb8565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610d4c565b600080604083850312156132b857600080fd5b6132c183612cb8565b9150612f706020840161312a565b6000806000604084860312156132e457600080fd5b8335925060208401356001600160401b038111156131e657600080fd5b600082601f83011261331257600080fd5b813560206133226130d98361305f565b82815260069290921b8401810191818101908684111561334157600080fd5b8286015b84811015613390576040818903121561335e5760008081fd5b613366613007565b813561337181612d35565b815261337e82860161312a565b81860152835291830191604001613345565b509695505050505050565b600080604083850312156133ae57600080fd5b6133b783612cb8565b915060208301356001600160401b038111156133d257600080fd5b6133de85828601613301565b9150509250929050565b6000806000606084860312156133fd57600080fd5b61340684612cb8565b925061341460208501613199565b9150604084013590509250925092565b60008060006060848603121561343957600080fd5b8335925061344960208501612cb8565b915061317460408501613199565b6000806000806080858703121561346d57600080fd5b61347685612cb8565b935061348460208601613199565b93969395505050506040820135916060013590565b600080604083850312156134ac57600080fd5b6132c18361312a565b6000806000606084860312156134ca57600080fd5b6134d384612cb8565b92506134e16020850161312a565b915060408401356001600160401b038111156134fc57600080fd5b61350886828701613301565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561357557600080fd5b81516112f581612d35565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561362457600080fd5b6112f58261312a565b634e487b7160e01b600052601160045260246000fd5b60006000198214156136575761365761362d565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156136e2576136e261362d565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561374e578554851683526001958601959284019201613730565b509098975050505050505050565b6000602080838503121561376f57600080fd5b82516001600160401b0381111561378557600080fd5b8301601f8101851361379657600080fd5b80516137a46130d98261305f565b81815260059190911b820183019083810190878311156137c357600080fd5b928401925b828410156137e1578351825292840192908401906137c8565b979650505050505050565b60008160001904831182151516156138065761380661362d565b500290565b60008261382857634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561384f5761384f61362d565b01949350505050565b6000600160ff1b82141561386e5761386e61362d565b5060000390565b60006001600160601b03838116908316818110156138955761389561362d565b039392505050565b600082198211156138b0576138b061362d565b500190565b6000816138c4576138c461362d565b506000190190565b60008083128015600160ff1b8501841216156138ea576138ea61362d565b6001600160ff1b03840183138116156139055761390561362d565b5050039056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220d1c160b66d71a1a431473146b286303b69b5167369c9475b6da7380e18c6b56f64736f6c634300080c0033 + /// ``` + #[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:j8\x03\x80b\0:j\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`\xA0Qa9ab\0\x01\t`\09`\0\x81\x81a\x03\xB9\x01R\x81\x81a\x06\xB9\x01R\x81\x81a\t\xF6\x01R\x81\x81a\rm\x01R\x81\x81a\x11\x98\x01R\x81\x81a\x17\xAB\x01R\x81\x81a\x18\xA8\x01R\x81\x81a\x19\xCC\x01Ra\x1D\x8E\x01R`\0\x81\x81a\x05\x8E\x01Ra \xC9\x01Ra9a`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x11W`\x005`\xE0\x1C\x80c\x81\xC0u\x02\x11a\x01%W\x80c\xC8)LV\x11a\0\xADW\x80c\xF2\xBE\x94\xAE\x11a\0|W\x80c\xF2\xBE\x94\xAE\x14a\x05\xB0W\x80c\xF5\tU\x1A\x14a\x05\xC3W\x80c\xF8Q\xE1\x98\x14a\x05\xD6W\x80c\xFA(\xC6'\x14a\x05\xE9W\x80c\xFFiJw\x14a\x05\xFCW`\0\x80\xFD[\x80c\xC8)LV\x14a\x05;W\x80c\xD5\xEC\xCC\x05\x14a\x05NW\x80c\xDD\x98F\xB9\x14a\x05aW\x80c\xDF\\\xF7#\x14a\x05\x89W`\0\x80\xFD[\x80c\xB6\x90Kx\x11a\0\xF4W\x80c\xB6\x90Kx\x14a\x04\xC6W\x80c\xBC\x9A@\xC3\x14a\x04\xD9W\x80c\xBD)\xB8\xCD\x14a\x04\xECW\x80c\xC4gx\xA5\x14a\x04\xFFW\x80c\xC6\x01R}\x14a\x05(W`\0\x80\xFD[\x80c\x81\xC0u\x02\x14a\x043W\x80c\x9F<\xCFe\x14a\x04SW\x80c\xACk\xFB\x03\x14a\x04fW\x80c\xAD\xC8\x04\xDA\x14a\x04\x86W`\0\x80\xFD[\x80cK\xD2n\t\x11a\x01\xA8W\x80cf\xAC\xFE\xFE\x11a\x01wW\x80cf\xAC\xFE\xFE\x14a\x03\x89W\x80cm\x14\xA9\x87\x14a\x03\xB4W\x80ctELm\x14a\x03\xF3W\x80c|\x17#G\x14a\x04\x06W\x80c\x7FB\x98\"\x14a\x04 W`\0\x80\xFD[\x80cK\xD2n\t\x14a\x03$W\x80cT\x01\xED'\x14a\x03TW\x80c^Zgu\x14a\x03gW\x80c_\x1F-w\x14a\x03vW`\0\x80\xFD[\x80c \xB6b\x98\x11a\x01\xE4W\x80c \xB6b\x98\x14a\x02\xADW\x80c%PGw\x14a\x02\xC0W\x80c,\xD9Y@\x14a\x02\xE1W\x80c<\xA5\xA5\xF5\x14a\x03\x01W`\0\x80\xFD[\x80c\x03\x90\xA4\xD5\x14a\x02\x16W\x80c\x04\x91\xB4\x1C\x14a\x02+W\x80c\x08s$a\x14a\x02aW\x80c\x1F\x9Bt\xE0\x14a\x02\x82W[`\0\x80\xFD[a\x02)a\x02$6`\x04a,\xCEV[a\x06\x0FV[\0[a\x02Na\x0296`\x04a,\xF8V[`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02ta\x02o6`\x04a,\xCEV[a\x06\x1EV[`@Qa\x02X\x92\x91\x90a-\x13V[a\x02\x95a\x02\x906`\x04a-MV[a\x06gV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02XV[a\x02)a\x02\xBB6`\x04a-\xC8V[a\x06\xB7V[a\x02\xD3a\x02\xCE6`\x04a.\x89V[a\t\xE8V[`@Qa\x02X\x92\x91\x90a/(V[a\x02\xF4a\x02\xEF6`\x04a/MV[a\x0C\xB3V[`@Qa\x02X\x91\x90a/yV[a\x02Na\x03\x0F6`\x04a,\xF8V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02Na\x0326`\x04a/MV[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02\x95a\x03b6`\x04a/MV[a\rRV[a\x02Ng\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02)a\x03\x846`\x04a0\x82V[a\rkV[a\x03\x9Ca\x03\x976`\x04a.\x89V[a\x11\x8BV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02XV[a\x03\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\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02XV[a\x02Na\x04\x016`\x04a1AV[a\x12\xE5V[a\x04\x0E` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02XV[a\x02\x95a\x04.6`\x04a1}V[a\x12\xFCV[a\x04Fa\x04A6`\x04a1\xADV[a\x13\x08V[`@Qa\x02X\x91\x90a1\xFFV[a\x03\xDBa\x04a6`\x04a,\xCEV[a\x15\xD0V[a\x04ya\x04t6`\x04a2=V[a\x16\x08V[`@Qa\x02X\x91\x90a2pV[a\x04\x99a\x04\x946`\x04a,\xCEV[a\x16\xA0V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02XV[a\x04ya\x04\xD46`\x04a,\xCEV[a\x17\x1AV[a\x02)a\x04\xE76`\x04a2\xA5V[a\x17\xA9V[a\x02)a\x04\xFA6`\x04a2\xCFV[a\x18\x9DV[a\x02\x95a\x05\r6`\x04a,\xF8V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02)a\x0566`\x04a3\x9BV[a\x19\xCAV[a\x02\x95a\x05I6`\x04a3\xE8V[a\x1A\xBEV[a\x02\x95a\x05\\6`\x04a,\xF8V[a\x1B=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x079\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07iW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x84a\x07\x85\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[\x83\x80a\x08\x17W`@\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\x01a\x06\x98V[\x82\x81\x14a\x08\x8CW`@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\x98V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\t\xDDW\x85\x85\x82\x81\x81\x10a\x08\xBAWa\x08\xBAa5\xFCV[\x90P` \x02\x01` \x81\x01\x90a\x08\xCF\x91\x90a6\x12V[\x82\x89\x89\x84\x81\x81\x10a\x08\xE2Wa\x08\xE2a5\xFCV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF9Wa\x08\xF9a5\xFCV[\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\tbWa\tba5\xFCV[\x90P` \x02\x015\x81T\x81\x10a\tyWa\tya5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\xA0Wa\t\xA0a5\xFCV[\x90P` \x02\x01` \x81\x01\x90a\t\xB5\x91\x90a6\x12V[`@Qa\t\xC3\x92\x91\x90a-\x13V[`@Q\x80\x91\x03\x90\xA2\x80a\t\xD5\x81a6CV[\x91PPa\x08\xA0V[PPPPPPPPPV[``\x803`\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\n3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\nMWa\nMa/\xF1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\nvW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x93Wa\n\x93a/\xF1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xBCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\xA5W`\0\x87\x87\x83\x81\x81\x10a\n\xDEWa\n\xDEa5\xFCV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x0BfW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x98V[`\0\x80a\x0Bs\x83\x8Da hV[\x91P\x91P\x80a\x0C\x10W`@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\x98V[`\0a\x0C\x1D\x8C\x85\x85a\"fV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0C2Wa\x0C2a5\xFCV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0C\\\x84\x82a\x1E\xEEV[\x86\x86\x81Q\x81\x10a\x0CnWa\x0Cna5\xFCV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x9D\x90a6CV[\x91PPa\n\xC2V[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\rEW`\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\x0C\xECV[PPPP\x90P[\x92\x91PPV[`\0\x80a\r_\x84\x84a\x1C=V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\r\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xED\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0E\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x0E9\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x0EUW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[\x81Q\x80a\x0E\xCAW`@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\x98V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x11\x82W\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\x0F)Wa\x0F)a5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x0FAWa\x0FAa5\xFCV[`\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\x0F\x9FWa\x0F\x9Fa5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB7Wa\x0F\xB7a5\xFCV[`\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\x0F\xF7\x90`\x01\x90a6\xD0V[\x81T\x81\x10a\x10\x07Wa\x10\x07a5\xFCV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x10$Wa\x10$a5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x10=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18+\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18[W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x18w\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x18\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[a\x06\x19\x83\x83a%\x14V[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\x18\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\0[\x81\x81\x10\x15a\x19\xC4W`\0\x83\x83\x83\x81\x81\x10a\x19\x04Wa\x19\x04a5\xFCV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x19\x94W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[`\0a\x19\xA2\x86\x83`\0a\"fV[\x90Pa\x19\xAE\x82\x82a\x1E\xEEV[PPP\x80\x80a\x19\xBC\x90a6CV[\x91PPa\x18\xE8V[PPPPV[\x7F\0\0\0\0\0\0\0\0\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(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AL\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x1A\x98\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[a\x06\x19\x83\x83a%}V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\xE5Wa\x1A\xE5a5\xFCV[`\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\r_\x81\x85a)\xC0V[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1B]\x91a6\xD0V[\x81T\x81\x10a\x1BmWa\x1Bma5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x12\xF2\x84\x84\x84a+:V[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1B\xCDWa\x1B\xCDa5\xFCV[`\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\x1C$\x81\x86a)\xC0V[`@\x01Q\x95\x94PPPPPV[`\0a\x12\xF5\x83\x83a,\xA0V[`@\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\x1C\x96W\x91Pa\rL\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\xBD`\x01\x84a6\xD0V[\x81T\x81\x10a\x1C\xCDWa\x1C\xCDa5\xFCV[`\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\rL\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1DI\x85\x85\x85a+:V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1D_Wa\x1D_a5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1EIW`@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\x98V[a\x1ES\x83\x82a%}V[a\x1E]\x83\x83a%\x14V[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\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\x1F\x12\x90\x84a6\xD0V[\x81T\x81\x10a\x1F\"Wa\x1F\"a5\xFCV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a\x1FQWT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\rL\x90PV[\x80T`\0\x90a\x1Fp\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a$\xE6V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1F\xADW\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua _V[\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[`\0\x80`\0\x80a \x87\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 \xFC\x92\x8C\x92\x01a6\xFDV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a!\x19W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra!A\x91\x90\x81\x01\x90a7\\V[\x90P`\0[\x83\x81\x10\x15a\"2W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a!rWa!ra5\xFCV[`\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!\xC0Wa!\xC0a5\xFCV[` \x02` \x01\x01Q\x11\x15a\" Wg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a!\xF7Wa!\xF7a5\xFCV[` \x02` \x01\x01Qa\"\t\x91\x90a7\xECV[a\"\x13\x91\x90a8\x0BV[a\"\x1D\x90\x86a8-V[\x94P[\x80a\"*\x81a6CV[\x91PPa!FV[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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a#*W`\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$\x8CV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a#Q`\x01\x84a6\xD0V[\x81T\x81\x10a#aWa#aa5\xFCV[`\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#\x9AW`\0\x93PPPPa\x12\xF5V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\xD4W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua$\x8AV[\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$\xDC\x82\x85a,\xA0V[\x96\x95PPPPPPV[`\0\x80\x82\x12\x15a%\nWa$\xF9\x82a8XV[a%\x03\x90\x84a8uV[\x90Pa\rLV[a%\x03\x82\x84a8-V[`\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%\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a9\x0C\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a&\x05\x83\x83a8\x9DV[\x11\x15a&uW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a9\x0C\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\x98V[`\0[\x82\x81\x10\x15a)\xB9W`\0[a&\x8D\x82\x84a8\x9DV[\x81\x10\x15a'nW\x84\x82\x81Q\x81\x10a&\xA6Wa&\xA6a5\xFCV[` \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&\xE5Wa&\xE5a5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a'\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a9\x0C\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[\x80a'f\x81a6CV[\x91PPa&\x83V[P`\0\x84\x82\x81Q\x81\x10a'\x83Wa'\x83a5\xFCV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a(\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a9\x0C\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\x98V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a(.Wa(.a5\xFCV[` \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(\x93Wa(\x93a5\xFCV[` \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)\nWa)\na5\xFCV[` \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)gWa)ga5\xFCV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a)\x85Wa)\x85a5\xFCV[` \x02` \x01\x01Q` \x01Q`@Qa)\x9F\x92\x91\x90a-\x13V[`@Q\x80\x91\x03\x90\xA2\x80a)\xB1\x81a6CV[\x91PPa&xV[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a*eW`@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\x98V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a*\x8BWP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a+6W`@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\x98V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\xDBW`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a+\x8E`\x01\x84a6\xD0V[\x81T\x81\x10a+\x9EWa+\x9Ea5\xFCV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a+\xC9Wa+\xC0`\x01\x82a6\xD0V[\x92PPPa\x12\xF5V[\x80a+\xD3\x81a8\xB5V[\x91PPa+YV[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\x98V[`\0a\x12\xF5`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a8\xCCV[\x805`\xFF\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xE1W`\0\x80\xFD[a,\xEA\x83a,\xB8V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a-\nW`\0\x80\xFD[a\x12\xF5\x82a,\xB8V[`\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-JW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a-`W`\0\x80\xFD[a-i\x83a,\xB8V[\x91P` \x83\x015a-y\x81a-5V[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a-\x96W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xADW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"_W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-\xE0W`\0\x80\xFD[a-\xE9\x86a,\xB8V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\x05W`\0\x80\xFD[a.\x11\x89\x83\x8A\x01a-\x84V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a.*W`\0\x80\xFD[Pa.7\x88\x82\x89\x01a-\x84V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a.ZW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"_W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a.\x9FW`\0\x80\xFD[\x845a.\xAA\x81a-5V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xCCW`\0\x80\xFD[a.\xD8\x87\x82\x88\x01a.HV[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a/\x1DW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.\xF8V[P\x94\x95\x94PPPPPV[`@\x81R`\0a/;`@\x83\x01\x85a.\xE4V[\x82\x81\x03` \x84\x01Ra _\x81\x85a.\xE4V[`\0\x80`@\x83\x85\x03\x12\x15a/`W`\0\x80\xFD[\x825\x91Pa/p` \x84\x01a,\xB8V[\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/\xE5Wa/\xD2\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/\x95V[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\x15a0)Wa0)a/\xF1V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a0WWa0Wa/\xF1V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0xWa0xa/\xF1V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\x95W`\0\x80\xFD[a0\x9E\x83a,\xB8V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xBAW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0\xCBW`\0\x80\xFD[\x805a0\xDEa0\xD9\x82a0_V[a0/V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0\xFDW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a1\x1BW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a1\x02V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a1VW`\0\x80\xFD[\x835\x92Pa1f` \x85\x01a,\xB8V[\x91Pa1t`@\x85\x01a1*V[\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a1\x90W`\0\x80\xFD[a,\xEA\x83a1*V[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a1\xC2W`\0\x80\xFD[a1\xCB\x84a1\x99V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE6W`\0\x80\xFD[a1\xF2\x86\x82\x87\x01a.HV[\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/\xE5W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a2\x1BV[`\0\x80`\0``\x84\x86\x03\x12\x15a2RW`\0\x80\xFD[a2[\x84a,\xB8V[\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\rLV[`\0\x80`@\x83\x85\x03\x12\x15a2\xB8W`\0\x80\xFD[a2\xC1\x83a,\xB8V[\x91Pa/p` \x84\x01a1*V[`\0\x80`\0`@\x84\x86\x03\x12\x15a2\xE4W`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a3\x12W`\0\x80\xFD[\x815` a3\"a0\xD9\x83a0_V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a3AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a3\x90W`@\x81\x89\x03\x12\x15a3^W`\0\x80\x81\xFD[a3fa0\x07V[\x815a3q\x81a-5V[\x81Ra3~\x82\x86\x01a1*V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a3EV[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a3\xAEW`\0\x80\xFD[a3\xB7\x83a,\xB8V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xD2W`\0\x80\xFD[a3\xDE\x85\x82\x86\x01a3\x01V[\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a3\xFDW`\0\x80\xFD[a4\x06\x84a,\xB8V[\x92Pa4\x14` \x85\x01a1\x99V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a49W`\0\x80\xFD[\x835\x92Pa4I` \x85\x01a,\xB8V[\x91Pa1t`@\x85\x01a1\x99V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a4mW`\0\x80\xFD[a4v\x85a,\xB8V[\x93Pa4\x84` \x86\x01a1\x99V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a4\xACW`\0\x80\xFD[a2\xC1\x83a1*V[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xCAW`\0\x80\xFD[a4\xD3\x84a,\xB8V[\x92Pa4\xE1` \x85\x01a1*V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xFCW`\0\x80\xFD[a5\x08\x86\x82\x87\x01a3\x01V[\x91PP\x92P\x92P\x92V[` \x80\x82R`1\x90\x82\x01R\x7FStakeRegistry.quorumExists: quor`@\x82\x01Rp\x1D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`z\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a5uW`\0\x80\xFD[\x81Qa\x12\xF5\x81a-5V[` \x80\x82R`V\x90\x82\x01R\x7FStakeRegistry.onlyCoordinatorOwn`@\x82\x01R\x7Fer: caller is not the owner of t``\x82\x01Ru42\x9092\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`Q\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a6$W`\0\x80\xFD[a\x12\xF5\x82a1*V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a6WWa6Wa6-V[P`\x01\x01\x90V[` \x80\x82R`L\x90\x82\x01R\x7FStakeRegistry.onlyRegistryCoordi`@\x82\x01R\x7Fnator: caller is not the Registr``\x82\x01Rk<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`\xA1\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x82\x10\x15a6\xE2Wa6\xE2a6-V[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\x15a7NW\x85T\x85\x16\x83R`\x01\x95\x86\x01\x95\x92\x84\x01\x92\x01a70V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a7oW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7\x85W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a7\x96W`\0\x80\xFD[\x80Qa7\xA4a0\xD9\x82a0_V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a7\xC3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a7\xE1W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a7\xC8V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a8\x06Wa8\x06a6-V[P\x02\x90V[`\0\x82a8(WcNH{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\x15a8OWa8Oa6-V[\x01\x94\x93PPPPV[`\0`\x01`\xFF\x1B\x82\x14\x15a8nWa8na6-V[P`\0\x03\x90V[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a8\x95Wa8\x95a6-V[\x03\x93\x92PPPV[`\0\x82\x19\x82\x11\x15a8\xB0Wa8\xB0a6-V[P\x01\x90V[`\0\x81a8\xC4Wa8\xC4a6-V[P`\0\x19\x01\x90V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a8\xEAWa8\xEAa6-V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a9\x05Wa9\x05a6-V[PP\x03\x90V\xFEStakeRegistry._addStrategyParams\xA2dipfsX\"\x12 \xD1\xC1`\xB6mq\xA1\xA41G1F\xB2\x860;i\xB5\x16si\xC9G[m\xA78\x0E\x18\xC6\xB5odsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106102115760003560e01c806381c0750211610125578063c8294c56116100ad578063f2be94ae1161007c578063f2be94ae146105b0578063f509551a146105c3578063f851e198146105d6578063fa28c627146105e9578063ff694a77146105fc57600080fd5b8063c8294c561461053b578063d5eccc051461054e578063dd9846b914610561578063df5cf7231461058957600080fd5b8063b6904b78116100f4578063b6904b78146104c6578063bc9a40c3146104d9578063bd29b8cd146104ec578063c46778a5146104ff578063c601527d1461052857600080fd5b806381c07502146104335780639f3ccf6514610453578063ac6bfb0314610466578063adc804da1461048657600080fd5b80634bd26e09116101a857806366acfefe1161017757806366acfefe146103895780636d14a987146103b457806374454c6d146103f35780637c172347146104065780637f4298221461042057600080fd5b80634bd26e09146103245780635401ed27146103545780635e5a6775146103675780635f1f2d771461037657600080fd5b806320b66298116101e457806320b66298146102ad57806325504777146102c05780632cd95940146102e15780633ca5a5f51461030157600080fd5b80630390a4d5146102165780630491b41c1461022b57806308732461146102615780631f9b74e014610282575b600080fd5b610229610224366004612cce565b61060f565b005b61024e610239366004612cf8565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61027461026f366004612cce565b61061e565b604051610258929190612d13565b610295610290366004612d4d565b610667565b6040516001600160601b039091168152602001610258565b6102296102bb366004612dc8565b6106b7565b6102d36102ce366004612e89565b6109e8565b604051610258929190612f28565b6102f46102ef366004612f4d565b610cb3565b6040516102589190612f79565b61024e61030f366004612cf8565b60ff1660009081526003602052604090205490565b61024e610332366004612f4d565b600091825260026020908152604080842060ff93909316845291905290205490565b610295610362366004612f4d565b610d52565b61024e670de0b6b3a764000081565b610229610384366004613082565b610d6b565b61039c610397366004612e89565b61118b565b6040516001600160c01b039091168152602001610258565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610258565b61024e610401366004613141565b6112e5565b61040e602081565b60405160ff9091168152602001610258565b61029561042e36600461317d565b6112fc565b6104466104413660046131ad565b611308565b60405161025891906131ff565b6103db610461366004612cce565b6115d0565b61047961047436600461323d565b611608565b6040516102589190613270565b610499610494366004612cce565b6116a0565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610258565b6104796104d4366004612cce565b61171a565b6102296104e73660046132a5565b6117a9565b6102296104fa3660046132cf565b61189d565b61029561050d366004612cf8565b6000602081905290815260409020546001600160601b031681565b61022961053636600461339b565b6119ca565b6102956105493660046133e8565b611abe565b61029561055c366004612cf8565b611b3c565b61057461056f366004613424565b611b8f565b60405163ffffffff9091168152602001610258565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6102956105be366004613457565b611b9c565b61024e6105d1366004613499565b611c31565b6104796105e4366004612f4d565b611c3d565b6102956105f7366004613424565b611d22565b61022961060a3660046134b5565b611d83565b6106198282611eee565b505050565b6003602052816000526040600020818154811061063a57600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff821660009081526001602052604081205483906106a15760405162461bcd60e51b815260040161069890613512565b60405180910390fd5b60006106ad8585612068565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190613563565b6001600160a01b0316336001600160a01b0316146107695760405162461bcd60e51b815260040161069890613580565b846107858160ff16600090815260016020526040902054151590565b6107a15760405162461bcd60e51b815260040161069890613512565b8380610817576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610698565b82811461088c5760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610698565b60ff87166000908152600360205260408120905b828110156109dd578585828181106108ba576108ba6135fc565b90506020020160208101906108cf9190613612565b828989848181106108e2576108e26135fc565b90506020020135815481106108f9576108f96135fc565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a85818110610962576109626135fc565b9050602002013581548110610979576109796135fc565b6000918252602090912001546001600160a01b03168888858181106109a0576109a06135fc565b90506020020160208101906109b59190613612565b6040516109c3929190612d13565b60405180910390a2806109d581613643565b9150506108a0565b505050505050505050565b606080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a335760405162461bcd60e51b81526004016106989061365e565b6000836001600160401b03811115610a4d57610a4d612ff1565b604051908082528060200260200182016040528015610a76578160200160208202803683370190505b5090506000846001600160401b03811115610a9357610a93612ff1565b604051908082528060200260200182016040528015610abc578160200160208202803683370190505b50905060005b85811015610ca5576000878783818110610ade57610ade6135fc565b919091013560f81c60008181526001602052604090205490925015159050610b665760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610698565b600080610b73838d612068565b9150915080610c105760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610698565b6000610c1d8c8585612266565b905082878681518110610c3257610c326135fc565b60200260200101906001600160601b031690816001600160601b031681525050610c5c8482611eee565b868681518110610c6e57610c6e6135fc565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c9d90613643565b915050610ac2565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d45576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610cec565b5050505090505b92915050565b600080610d5f8484611c3d565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ded9190613563565b6001600160a01b0316336001600160a01b031614610e1d5760405162461bcd60e51b815260040161069890613580565b81610e398160ff16600090815260016020526040902054151590565b610e555760405162461bcd60e51b815260040161069890613512565b815180610eca5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610698565b60ff841660009081526003602090815260408083206004909252822090915b83811015611182578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610f2957610f296135fc565b602002602001015181548110610f4157610f416135fc565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f9f57610f9f6135fc565b602002602001015181548110610fb757610fb76135fc565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ff7906001906136d0565b81548110611007576110076135fc565b9060005260206000200183878381518110611024576110246135fc565b60200260200101518154811061103c5761103c6135fc565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b918290041602179055825483908061108f5761108f6136e7565b600082815260208120820160001990810191909155019055815482906110b7906001906136d0565b815481106110c7576110c76135fc565b9060005260206000200160009054906101000a90046001600160a01b0316828783815181106110f8576110f86135fc565b602002602001015181548110611110576111106135fc565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061114e5761114e6136e7565b600082815260209020810160001990810180546001600160a01b03191690550190558061117a81613643565b915050610ee9565b50505050505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d55760405162461bcd60e51b81526004016106989061365e565b6000805b838110156106ad5760008585838181106111f5576111f56135fc565b919091013560f81c600081815260016020526040902054909250151590506112855760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610698565b600080611292838b612068565b91509150806112b45760009150600160ff84161b6001600160c01b0386161794505b60006112c18a8585612266565b90506112cd8482611eee565b505050505080806112dd90613643565b9150506111d9565b60006112f2848484612266565b90505b9392505050565b60006112f583836124e6565b60606000826001600160401b0381111561132457611324612ff1565b60405190808252806020026020018201604052801561134d578160200160208202803683370190505b50905060005b838110156115c757600085858381811061136f5761136f6135fc565b919091013560f81c6000818152600160205260409020549092501515905061140e5760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610698565b60ff81166000908152600160205260408120805463ffffffff8a169290611437576114376135fc565b60009182526020909120015463ffffffff1611156114e35760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610698565b60ff8116600090815260016020526040812054905b818110156115b15760ff8316600090815260016020819052604090912063ffffffff8b169161152784866136d0565b61153191906136d0565b81548110611541576115416135fc565b60009182526020909120015463ffffffff161161159f57600161156482846136d0565b61156e91906136d0565b858581518110611580576115806135fc565b602002602001019063ffffffff16908163ffffffff16815250506115b1565b806115a981613643565b9150506114f8565b50505080806115bf90613643565b915050611353565b50949350505050565b600460205281600052604060002081815481106115ec57600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff8816835290529190912080548390811061164d5761164d6135fc565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106116d8576116d86135fc565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff861682526001905291909120805483908110611757576117576135fc565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182b9190613563565b6001600160a01b0316336001600160a01b03161461185b5760405162461bcd60e51b815260040161069890613580565b816118778160ff16600090815260016020526040902054151590565b6118935760405162461bcd60e51b815260040161069890613512565b6106198383612514565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118e55760405162461bcd60e51b81526004016106989061365e565b60005b818110156119c4576000838383818110611904576119046135fc565b919091013560f81c600081815260016020526040902054909250151590506119945760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610698565b60006119a286836000612266565b90506119ae8282611eee565b50505080806119bc90613643565b9150506118e8565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613563565b6001600160a01b0316336001600160a01b031614611a7c5760405162461bcd60e51b815260040161069890613580565b81611a988160ff16600090815260016020526040902054151590565b611ab45760405162461bcd60e51b815260040161069890613512565b610619838361257d565b60ff83166000908152600160205260408120805482919084908110611ae557611ae56135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610d5f81856129c0565b60ff81166000908152600160208190526040822080549091611b5d916136d0565b81548110611b6d57611b6d6135fc565b600091825260209091200154600160401b90046001600160601b031692915050565b60006112f2848484612b3a565b600082815260026020908152604080832060ff881684529091528120805482919084908110611bcd57611bcd6135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611c2481866129c0565b6040015195945050505050565b60006112f58383612ca0565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611c96579150610d4c9050565b600085815260026020908152604080832060ff881684529091529020611cbd6001846136d0565b81548110611ccd57611ccd6135fc565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610d4c915050565b600083815260026020908152604080832060ff861684529091528120611d49858585612b3a565b63ffffffff1681548110611d5f57611d5f6135fc565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dcb5760405162461bcd60e51b81526004016106989061365e565b60ff831660009081526001602052604090205415611e495760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610698565b611e53838261257d565b611e5d8383612514565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff821660009081526001602081905260408220805491839190611f1290846136d0565b81548110611f2257611f226135fc565b9060005260206000200190508360001415611f515754600160401b90046001600160601b03169150610d4c9050565b8054600090611f7090600160401b90046001600160601b0316866124e6565b82549091504363ffffffff90811691161415611fad578154600160401b600160a01b031916600160401b6001600160601b0383160217825561205f565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6000806000806120878660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926120fc928c92016136fd565b600060405180830381865afa158015612119573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612141919081019061375c565b905060005b838110156122325760ff89166000908152600360205260409020805482908110612172576121726135fc565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b03169082015283519094508390839081106121c0576121c06135fc565b6020026020010151111561222057670de0b6b3a764000083602001516001600160601b03168383815181106121f7576121f76135fc565b602002602001015161220991906137ec565b612213919061380b565b61221d908661382d565b94505b8061222a81613643565b915050612146565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061232a57600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561248c565b600086815260026020908152604080832060ff8916845290915281206123516001846136d0565b81548110612361576123616135fc565b600091825260209091200180546001600160601b03600160401b90910481169450909150851683141561239a57600093505050506112f5565b80544363ffffffff908116911614156123d4578054600160401b600160a01b031916600160401b6001600160601b0387160217815561248a565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26124dc8285612ca0565b9695505050505050565b60008082121561250a576124f982613858565b6125039084613875565b9050610d4c565b612503828461382d565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116125e25760405162461bcd60e51b8152602060048201526038602482015260008051602061390c83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610698565b805160ff831660009081526003602090815260409091205490612605838361389d565b11156126755760405162461bcd60e51b8152602060048201526045602482015260008051602061390c83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610698565b60005b828110156129b95760005b61268d828461389d565b81101561276e578482815181106126a6576126a66135fc565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106126e5576126e56135fc565b6000918252602090912001546001600160a01b0316141561275c5760405162461bcd60e51b815260206004820152603d602482015260008051602061390c83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610698565b8061276681613643565b915050612683565b506000848281518110612783576127836135fc565b6020026020010151602001516001600160601b0316116128085760405162461bcd60e51b8152602060048201526046602482015260008051602061390c83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610698565b60ff85166000908152600360205260409020845185908390811061282e5761282e6135fc565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff8716825260049052604090208451859083908110612893576128936135fc565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061290a5761290a6135fc565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612967576129676135fc565b602002602001015160000151868481518110612985576129856135fc565b60200260200101516020015160405161299f929190612d13565b60405180910390a2806129b181613643565b915050612678565b5050505050565b816000015163ffffffff168163ffffffff161015612a655760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610698565b602082015163ffffffff161580612a8b5750816020015163ffffffff168163ffffffff16105b612b365760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610698565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612bdb57600086815260026020908152604080832060ff89168452909152902063ffffffff851690612b8e6001846136d0565b81548110612b9e57612b9e6135fc565b60009182526020909120015463ffffffff1611612bc957612bc06001826136d0565b925050506112f5565b80612bd3816138b5565b915050612b59565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610698565b60006112f56001600160601b038085169084166138cc565b803560ff81168114612cc957600080fd5b919050565b60008060408385031215612ce157600080fd5b612cea83612cb8565b946020939093013593505050565b600060208284031215612d0a57600080fd5b6112f582612cb8565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612d4a57600080fd5b50565b60008060408385031215612d6057600080fd5b612d6983612cb8565b91506020830135612d7981612d35565b809150509250929050565b60008083601f840112612d9657600080fd5b5081356001600160401b03811115612dad57600080fd5b6020830191508360208260051b850101111561225f57600080fd5b600080600080600060608688031215612de057600080fd5b612de986612cb8565b945060208601356001600160401b0380821115612e0557600080fd5b612e1189838a01612d84565b90965094506040880135915080821115612e2a57600080fd5b50612e3788828901612d84565b969995985093965092949392505050565b60008083601f840112612e5a57600080fd5b5081356001600160401b03811115612e7157600080fd5b60208301915083602082850101111561225f57600080fd5b60008060008060608587031215612e9f57600080fd5b8435612eaa81612d35565b93506020850135925060408501356001600160401b03811115612ecc57600080fd5b612ed887828801612e48565b95989497509550505050565b600081518084526020808501945080840160005b83811015612f1d5781516001600160601b031687529582019590820190600101612ef8565b509495945050505050565b604081526000612f3b6040830185612ee4565b828103602084015261205f8185612ee4565b60008060408385031215612f6057600080fd5b82359150612f7060208401612cb8565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612fe557612fd283855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612f95565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561302957613029612ff1565b60405290565b604051601f8201601f191681016001600160401b038111828210171561305757613057612ff1565b604052919050565b60006001600160401b0382111561307857613078612ff1565b5060051b60200190565b6000806040838503121561309557600080fd5b61309e83612cb8565b91506020808401356001600160401b038111156130ba57600080fd5b8401601f810186136130cb57600080fd5b80356130de6130d98261305f565b61302f565b81815260059190911b820183019083810190888311156130fd57600080fd5b928401925b8284101561311b57833582529284019290840190613102565b80955050505050509250929050565b80356001600160601b0381168114612cc957600080fd5b60008060006060848603121561315657600080fd5b8335925061316660208501612cb8565b91506131746040850161312a565b90509250925092565b6000806040838503121561319057600080fd5b612cea8361312a565b803563ffffffff81168114612cc957600080fd5b6000806000604084860312156131c257600080fd5b6131cb84613199565b925060208401356001600160401b038111156131e657600080fd5b6131f286828701612e48565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612fe557835163ffffffff168352928401929184019160010161321b565b60008060006060848603121561325257600080fd5b61325b84612cb8565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610d4c565b600080604083850312156132b857600080fd5b6132c183612cb8565b9150612f706020840161312a565b6000806000604084860312156132e457600080fd5b8335925060208401356001600160401b038111156131e657600080fd5b600082601f83011261331257600080fd5b813560206133226130d98361305f565b82815260069290921b8401810191818101908684111561334157600080fd5b8286015b84811015613390576040818903121561335e5760008081fd5b613366613007565b813561337181612d35565b815261337e82860161312a565b81860152835291830191604001613345565b509695505050505050565b600080604083850312156133ae57600080fd5b6133b783612cb8565b915060208301356001600160401b038111156133d257600080fd5b6133de85828601613301565b9150509250929050565b6000806000606084860312156133fd57600080fd5b61340684612cb8565b925061341460208501613199565b9150604084013590509250925092565b60008060006060848603121561343957600080fd5b8335925061344960208501612cb8565b915061317460408501613199565b6000806000806080858703121561346d57600080fd5b61347685612cb8565b935061348460208601613199565b93969395505050506040820135916060013590565b600080604083850312156134ac57600080fd5b6132c18361312a565b6000806000606084860312156134ca57600080fd5b6134d384612cb8565b92506134e16020850161312a565b915060408401356001600160401b038111156134fc57600080fd5b61350886828701613301565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561357557600080fd5b81516112f581612d35565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561362457600080fd5b6112f58261312a565b634e487b7160e01b600052601160045260246000fd5b60006000198214156136575761365761362d565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156136e2576136e261362d565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561374e578554851683526001958601959284019201613730565b509098975050505050505050565b6000602080838503121561376f57600080fd5b82516001600160401b0381111561378557600080fd5b8301601f8101851361379657600080fd5b80516137a46130d98261305f565b81815260059190911b820183019083810190878311156137c357600080fd5b928401925b828410156137e1578351825292840192908401906137c8565b979650505050505050565b60008160001904831182151516156138065761380661362d565b500290565b60008261382857634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561384f5761384f61362d565b01949350505050565b6000600160ff1b82141561386e5761386e61362d565b5060000390565b60006001600160601b03838116908316818110156138955761389561362d565b039392505050565b600082198211156138b0576138b061362d565b500190565b6000816138c4576138c461362d565b506000190190565b60008083128015600160ff1b8501841216156138ea576138ea61362d565b6001600160ff1b03840183138116156139055761390561362d565b5050039056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220d1c160b66d71a1a431473146b286303b69b5167369c9475b6da7380e18c6b56f64736f6c634300080c0033 + /// ``` + #[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\x11W`\x005`\xE0\x1C\x80c\x81\xC0u\x02\x11a\x01%W\x80c\xC8)LV\x11a\0\xADW\x80c\xF2\xBE\x94\xAE\x11a\0|W\x80c\xF2\xBE\x94\xAE\x14a\x05\xB0W\x80c\xF5\tU\x1A\x14a\x05\xC3W\x80c\xF8Q\xE1\x98\x14a\x05\xD6W\x80c\xFA(\xC6'\x14a\x05\xE9W\x80c\xFFiJw\x14a\x05\xFCW`\0\x80\xFD[\x80c\xC8)LV\x14a\x05;W\x80c\xD5\xEC\xCC\x05\x14a\x05NW\x80c\xDD\x98F\xB9\x14a\x05aW\x80c\xDF\\\xF7#\x14a\x05\x89W`\0\x80\xFD[\x80c\xB6\x90Kx\x11a\0\xF4W\x80c\xB6\x90Kx\x14a\x04\xC6W\x80c\xBC\x9A@\xC3\x14a\x04\xD9W\x80c\xBD)\xB8\xCD\x14a\x04\xECW\x80c\xC4gx\xA5\x14a\x04\xFFW\x80c\xC6\x01R}\x14a\x05(W`\0\x80\xFD[\x80c\x81\xC0u\x02\x14a\x043W\x80c\x9F<\xCFe\x14a\x04SW\x80c\xACk\xFB\x03\x14a\x04fW\x80c\xAD\xC8\x04\xDA\x14a\x04\x86W`\0\x80\xFD[\x80cK\xD2n\t\x11a\x01\xA8W\x80cf\xAC\xFE\xFE\x11a\x01wW\x80cf\xAC\xFE\xFE\x14a\x03\x89W\x80cm\x14\xA9\x87\x14a\x03\xB4W\x80ctELm\x14a\x03\xF3W\x80c|\x17#G\x14a\x04\x06W\x80c\x7FB\x98\"\x14a\x04 W`\0\x80\xFD[\x80cK\xD2n\t\x14a\x03$W\x80cT\x01\xED'\x14a\x03TW\x80c^Zgu\x14a\x03gW\x80c_\x1F-w\x14a\x03vW`\0\x80\xFD[\x80c \xB6b\x98\x11a\x01\xE4W\x80c \xB6b\x98\x14a\x02\xADW\x80c%PGw\x14a\x02\xC0W\x80c,\xD9Y@\x14a\x02\xE1W\x80c<\xA5\xA5\xF5\x14a\x03\x01W`\0\x80\xFD[\x80c\x03\x90\xA4\xD5\x14a\x02\x16W\x80c\x04\x91\xB4\x1C\x14a\x02+W\x80c\x08s$a\x14a\x02aW\x80c\x1F\x9Bt\xE0\x14a\x02\x82W[`\0\x80\xFD[a\x02)a\x02$6`\x04a,\xCEV[a\x06\x0FV[\0[a\x02Na\x0296`\x04a,\xF8V[`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02ta\x02o6`\x04a,\xCEV[a\x06\x1EV[`@Qa\x02X\x92\x91\x90a-\x13V[a\x02\x95a\x02\x906`\x04a-MV[a\x06gV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02XV[a\x02)a\x02\xBB6`\x04a-\xC8V[a\x06\xB7V[a\x02\xD3a\x02\xCE6`\x04a.\x89V[a\t\xE8V[`@Qa\x02X\x92\x91\x90a/(V[a\x02\xF4a\x02\xEF6`\x04a/MV[a\x0C\xB3V[`@Qa\x02X\x91\x90a/yV[a\x02Na\x03\x0F6`\x04a,\xF8V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02Na\x0326`\x04a/MV[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02\x95a\x03b6`\x04a/MV[a\rRV[a\x02Ng\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02)a\x03\x846`\x04a0\x82V[a\rkV[a\x03\x9Ca\x03\x976`\x04a.\x89V[a\x11\x8BV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02XV[a\x03\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\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02XV[a\x02Na\x04\x016`\x04a1AV[a\x12\xE5V[a\x04\x0E` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02XV[a\x02\x95a\x04.6`\x04a1}V[a\x12\xFCV[a\x04Fa\x04A6`\x04a1\xADV[a\x13\x08V[`@Qa\x02X\x91\x90a1\xFFV[a\x03\xDBa\x04a6`\x04a,\xCEV[a\x15\xD0V[a\x04ya\x04t6`\x04a2=V[a\x16\x08V[`@Qa\x02X\x91\x90a2pV[a\x04\x99a\x04\x946`\x04a,\xCEV[a\x16\xA0V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02XV[a\x04ya\x04\xD46`\x04a,\xCEV[a\x17\x1AV[a\x02)a\x04\xE76`\x04a2\xA5V[a\x17\xA9V[a\x02)a\x04\xFA6`\x04a2\xCFV[a\x18\x9DV[a\x02\x95a\x05\r6`\x04a,\xF8V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02)a\x0566`\x04a3\x9BV[a\x19\xCAV[a\x02\x95a\x05I6`\x04a3\xE8V[a\x1A\xBEV[a\x02\x95a\x05\\6`\x04a,\xF8V[a\x1B=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x079\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07iW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x84a\x07\x85\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x07\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[\x83\x80a\x08\x17W`@\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\x01a\x06\x98V[\x82\x81\x14a\x08\x8CW`@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\x98V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\t\xDDW\x85\x85\x82\x81\x81\x10a\x08\xBAWa\x08\xBAa5\xFCV[\x90P` \x02\x01` \x81\x01\x90a\x08\xCF\x91\x90a6\x12V[\x82\x89\x89\x84\x81\x81\x10a\x08\xE2Wa\x08\xE2a5\xFCV[\x90P` \x02\x015\x81T\x81\x10a\x08\xF9Wa\x08\xF9a5\xFCV[\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\tbWa\tba5\xFCV[\x90P` \x02\x015\x81T\x81\x10a\tyWa\tya5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\t\xA0Wa\t\xA0a5\xFCV[\x90P` \x02\x01` \x81\x01\x90a\t\xB5\x91\x90a6\x12V[`@Qa\t\xC3\x92\x91\x90a-\x13V[`@Q\x80\x91\x03\x90\xA2\x80a\t\xD5\x81a6CV[\x91PPa\x08\xA0V[PPPPPPPPPV[``\x803`\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\n3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\nMWa\nMa/\xF1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\nvW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x93Wa\n\x93a/\xF1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\xBCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\x0C\xA5W`\0\x87\x87\x83\x81\x81\x10a\n\xDEWa\n\xDEa5\xFCV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x0BfW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B`d\x82\x01R`\x84\x01a\x06\x98V[`\0\x80a\x0Bs\x83\x8Da hV[\x91P\x91P\x80a\x0C\x10W`@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\x98V[`\0a\x0C\x1D\x8C\x85\x85a\"fV[\x90P\x82\x87\x86\x81Q\x81\x10a\x0C2Wa\x0C2a5\xFCV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\x0C\\\x84\x82a\x1E\xEEV[\x86\x86\x81Q\x81\x10a\x0CnWa\x0Cna5\xFCV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\x0C\x9D\x90a6CV[\x91PPa\n\xC2V[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\rEW`\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\x0C\xECV[PPPP\x90P[\x92\x91PPV[`\0\x80a\r_\x84\x84a\x1C=V[`@\x01Q\x94\x93PPPPV[\x7F\0\0\0\0\0\0\0\0\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\r\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xED\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0E\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x0E9\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x0EUW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[\x81Q\x80a\x0E\xCAW`@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\x98V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x11\x82W\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\x0F)Wa\x0F)a5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x0FAWa\x0FAa5\xFCV[`\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\x0F\x9FWa\x0F\x9Fa5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x0F\xB7Wa\x0F\xB7a5\xFCV[`\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\x0F\xF7\x90`\x01\x90a6\xD0V[\x81T\x81\x10a\x10\x07Wa\x10\x07a5\xFCV[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\x10$Wa\x10$a5\xFCV[` \x02` \x01\x01Q\x81T\x81\x10a\x10=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18+\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18[W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x18w\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x18\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[a\x06\x19\x83\x83a%\x14V[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\x18\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\0[\x81\x81\x10\x15a\x19\xC4W`\0\x83\x83\x83\x81\x81\x10a\x19\x04Wa\x19\x04a5\xFCV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x01` R`@\x90 T\x90\x92P\x15\x15\x90Pa\x19\x94W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FStakeRegistry.deregisterOperator`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[`\0a\x19\xA2\x86\x83`\0a\"fV[\x90Pa\x19\xAE\x82\x82a\x1E\xEEV[PPP\x80\x80a\x19\xBC\x90a6CV[\x91PPa\x18\xE8V[PPPPV[\x7F\0\0\0\0\0\0\0\0\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(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AL\x91\x90a5cV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x80V[\x81a\x1A\x98\x81`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x15\x15\x90V[a\x1A\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a5\x12V[a\x06\x19\x83\x83a%}V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\xE5Wa\x1A\xE5a5\xFCV[`\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\r_\x81\x85a)\xC0V[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1B]\x91a6\xD0V[\x81T\x81\x10a\x1BmWa\x1Bma5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x12\xF2\x84\x84\x84a+:V[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1B\xCDWa\x1B\xCDa5\xFCV[`\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\x1C$\x81\x86a)\xC0V[`@\x01Q\x95\x94PPPPPV[`\0a\x12\xF5\x83\x83a,\xA0V[`@\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\x1C\x96W\x91Pa\rL\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1C\xBD`\x01\x84a6\xD0V[\x81T\x81\x10a\x1C\xCDWa\x1C\xCDa5\xFCV[`\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\rL\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1DI\x85\x85\x85a+:V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1D_Wa\x1D_a5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[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\x1D\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x98\x90a6^V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x1EIW`@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\x98V[a\x1ES\x83\x82a%}V[a\x1E]\x83\x83a%\x14V[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\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\x1F\x12\x90\x84a6\xD0V[\x81T\x81\x10a\x1F\"Wa\x1F\"a5\xFCV[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a\x1FQWT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\rL\x90PV[\x80T`\0\x90a\x1Fp\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a$\xE6V[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1F\xADW\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua _V[\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[`\0\x80`\0\x80a \x87\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 \xFC\x92\x8C\x92\x01a6\xFDV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a!\x19W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra!A\x91\x90\x81\x01\x90a7\\V[\x90P`\0[\x83\x81\x10\x15a\"2W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a!rWa!ra5\xFCV[`\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!\xC0Wa!\xC0a5\xFCV[` \x02` \x01\x01Q\x11\x15a\" Wg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a!\xF7Wa!\xF7a5\xFCV[` \x02` \x01\x01Qa\"\t\x91\x90a7\xECV[a\"\x13\x91\x90a8\x0BV[a\"\x1D\x90\x86a8-V[\x94P[\x80a\"*\x81a6CV[\x91PPa!FV[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[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a#*W`\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$\x8CV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a#Q`\x01\x84a6\xD0V[\x81T\x81\x10a#aWa#aa5\xFCV[`\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#\x9AW`\0\x93PPPPa\x12\xF5V[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a#\xD4W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua$\x8AV[\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$\xDC\x82\x85a,\xA0V[\x96\x95PPPPPPV[`\0\x80\x82\x12\x15a%\nWa$\xF9\x82a8XV[a%\x03\x90\x84a8uV[\x90Pa\rLV[a%\x03\x82\x84a8-V[`\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%\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a9\x0C\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a&\x05\x83\x83a8\x9DV[\x11\x15a&uW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a9\x0C\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\x98V[`\0[\x82\x81\x10\x15a)\xB9W`\0[a&\x8D\x82\x84a8\x9DV[\x81\x10\x15a'nW\x84\x82\x81Q\x81\x10a&\xA6Wa&\xA6a5\xFCV[` \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&\xE5Wa&\xE5a5\xFCV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a'\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a9\x0C\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x98V[\x80a'f\x81a6CV[\x91PPa&\x83V[P`\0\x84\x82\x81Q\x81\x10a'\x83Wa'\x83a5\xFCV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a(\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a9\x0C\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\x98V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a(.Wa(.a5\xFCV[` \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(\x93Wa(\x93a5\xFCV[` \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)\nWa)\na5\xFCV[` \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)gWa)ga5\xFCV[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a)\x85Wa)\x85a5\xFCV[` \x02` \x01\x01Q` \x01Q`@Qa)\x9F\x92\x91\x90a-\x13V[`@Q\x80\x91\x03\x90\xA2\x80a)\xB1\x81a6CV[\x91PPa&xV[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a*eW`@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\x98V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a*\x8BWP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a+6W`@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\x98V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a+\xDBW`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a+\x8E`\x01\x84a6\xD0V[\x81T\x81\x10a+\x9EWa+\x9Ea5\xFCV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a+\xC9Wa+\xC0`\x01\x82a6\xD0V[\x92PPPa\x12\xF5V[\x80a+\xD3\x81a8\xB5V[\x91PPa+YV[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\x98V[`\0a\x12\xF5`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a8\xCCV[\x805`\xFF\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xE1W`\0\x80\xFD[a,\xEA\x83a,\xB8V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a-\nW`\0\x80\xFD[a\x12\xF5\x82a,\xB8V[`\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-JW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a-`W`\0\x80\xFD[a-i\x83a,\xB8V[\x91P` \x83\x015a-y\x81a-5V[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a-\x96W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xADW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"_W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a-\xE0W`\0\x80\xFD[a-\xE9\x86a,\xB8V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\x05W`\0\x80\xFD[a.\x11\x89\x83\x8A\x01a-\x84V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a.*W`\0\x80\xFD[Pa.7\x88\x82\x89\x01a-\x84V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a.ZW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"_W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a.\x9FW`\0\x80\xFD[\x845a.\xAA\x81a-5V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xCCW`\0\x80\xFD[a.\xD8\x87\x82\x88\x01a.HV[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a/\x1DW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a.\xF8V[P\x94\x95\x94PPPPPV[`@\x81R`\0a/;`@\x83\x01\x85a.\xE4V[\x82\x81\x03` \x84\x01Ra _\x81\x85a.\xE4V[`\0\x80`@\x83\x85\x03\x12\x15a/`W`\0\x80\xFD[\x825\x91Pa/p` \x84\x01a,\xB8V[\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/\xE5Wa/\xD2\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/\x95V[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\x15a0)Wa0)a/\xF1V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a0WWa0Wa/\xF1V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0xWa0xa/\xF1V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\x95W`\0\x80\xFD[a0\x9E\x83a,\xB8V[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xBAW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a0\xCBW`\0\x80\xFD[\x805a0\xDEa0\xD9\x82a0_V[a0/V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a0\xFDW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a1\x1BW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a1\x02V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a1VW`\0\x80\xFD[\x835\x92Pa1f` \x85\x01a,\xB8V[\x91Pa1t`@\x85\x01a1*V[\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a1\x90W`\0\x80\xFD[a,\xEA\x83a1*V[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a,\xC9W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a1\xC2W`\0\x80\xFD[a1\xCB\x84a1\x99V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE6W`\0\x80\xFD[a1\xF2\x86\x82\x87\x01a.HV[\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/\xE5W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a2\x1BV[`\0\x80`\0``\x84\x86\x03\x12\x15a2RW`\0\x80\xFD[a2[\x84a,\xB8V[\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\rLV[`\0\x80`@\x83\x85\x03\x12\x15a2\xB8W`\0\x80\xFD[a2\xC1\x83a,\xB8V[\x91Pa/p` \x84\x01a1*V[`\0\x80`\0`@\x84\x86\x03\x12\x15a2\xE4W`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a3\x12W`\0\x80\xFD[\x815` a3\"a0\xD9\x83a0_V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a3AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a3\x90W`@\x81\x89\x03\x12\x15a3^W`\0\x80\x81\xFD[a3fa0\x07V[\x815a3q\x81a-5V[\x81Ra3~\x82\x86\x01a1*V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a3EV[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a3\xAEW`\0\x80\xFD[a3\xB7\x83a,\xB8V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xD2W`\0\x80\xFD[a3\xDE\x85\x82\x86\x01a3\x01V[\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a3\xFDW`\0\x80\xFD[a4\x06\x84a,\xB8V[\x92Pa4\x14` \x85\x01a1\x99V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a49W`\0\x80\xFD[\x835\x92Pa4I` \x85\x01a,\xB8V[\x91Pa1t`@\x85\x01a1\x99V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a4mW`\0\x80\xFD[a4v\x85a,\xB8V[\x93Pa4\x84` \x86\x01a1\x99V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a4\xACW`\0\x80\xFD[a2\xC1\x83a1*V[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xCAW`\0\x80\xFD[a4\xD3\x84a,\xB8V[\x92Pa4\xE1` \x85\x01a1*V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xFCW`\0\x80\xFD[a5\x08\x86\x82\x87\x01a3\x01V[\x91PP\x92P\x92P\x92V[` \x80\x82R`1\x90\x82\x01R\x7FStakeRegistry.quorumExists: quor`@\x82\x01Rp\x1D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`z\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a5uW`\0\x80\xFD[\x81Qa\x12\xF5\x81a-5V[` \x80\x82R`V\x90\x82\x01R\x7FStakeRegistry.onlyCoordinatorOwn`@\x82\x01R\x7Fer: caller is not the owner of t``\x82\x01Ru42\x9092\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`Q\x1B`\x80\x82\x01R`\xA0\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a6$W`\0\x80\xFD[a\x12\xF5\x82a1*V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a6WWa6Wa6-V[P`\x01\x01\x90V[` \x80\x82R`L\x90\x82\x01R\x7FStakeRegistry.onlyRegistryCoordi`@\x82\x01R\x7Fnator: caller is not the Registr``\x82\x01Rk<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`\xA1\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x82\x10\x15a6\xE2Wa6\xE2a6-V[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\x15a7NW\x85T\x85\x16\x83R`\x01\x95\x86\x01\x95\x92\x84\x01\x92\x01a70V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a7oW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7\x85W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a7\x96W`\0\x80\xFD[\x80Qa7\xA4a0\xD9\x82a0_V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a7\xC3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a7\xE1W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a7\xC8V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a8\x06Wa8\x06a6-V[P\x02\x90V[`\0\x82a8(WcNH{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\x15a8OWa8Oa6-V[\x01\x94\x93PPPPV[`\0`\x01`\xFF\x1B\x82\x14\x15a8nWa8na6-V[P`\0\x03\x90V[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a8\x95Wa8\x95a6-V[\x03\x93\x92PPPV[`\0\x82\x19\x82\x11\x15a8\xB0Wa8\xB0a6-V[P\x01\x90V[`\0\x81a8\xC4Wa8\xC4a6-V[P`\0\x19\x01\x90V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a8\xEAWa8\xEAa6-V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a9\x05Wa9\x05a6-V[PP\x03\x90V\xFEStakeRegistry._addStrategyParams\xA2dipfsX\"\x12 \xD1\xC1`\xB6mq\xA1\xA41G1F\xB2\x860;i\xB5\x16si\xC9G[m\xA78\x0E\x18\xC6\xB5odsolcC\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `applyDelta(uint96,int256)` and selector `0x7f429822`. + ```solidity + function applyDelta(uint96 value, int256 delta) external pure returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct applyDeltaCall { + pub value: alloy::sol_types::private::primitives::aliases::U96, + pub delta: alloy::sol_types::private::primitives::aliases::I256, + } + ///Container type for the return parameters of the [`applyDelta(uint96,int256)`](applyDeltaCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct applyDeltaReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Int<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U96, + 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: applyDeltaCall) -> Self { + (value.value, value.delta) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for applyDeltaCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + value: tuple.0, + delta: 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: applyDeltaReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for applyDeltaReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for applyDeltaCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Int<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = applyDeltaReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "applyDelta(uint96,int256)"; + const SELECTOR: [u8; 4] = [127u8, 66u8, 152u8, 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.value, + ), + as alloy_sol_types::SolType>::tokenize( + &self.delta, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateDelta(uint96,uint96)` and selector `0xf509551a`. + ```solidity + function calculateDelta(uint96 prev, uint96 cur) external pure returns (int256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateDeltaCall { + pub prev: alloy::sol_types::private::primitives::aliases::U96, + pub cur: alloy::sol_types::private::primitives::aliases::U96, + } + ///Container type for the return parameters of the [`calculateDelta(uint96,uint96)`](calculateDeltaCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct calculateDeltaReturn { + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U96, + 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: calculateDeltaCall) -> Self { + (value.prev, value.cur) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateDeltaCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + prev: tuple.0, + cur: tuple.1, + } + } + } + } + { + #[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: calculateDeltaReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateDeltaReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateDeltaCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Uint<96>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateDeltaReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Int<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "calculateDelta(uint96,uint96)"; + const SELECTOR: [u8; 4] = [245u8, 9u8, 85u8, 26u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.prev, + ), + as alloy_sol_types::SolType>::tokenize( + &self.cur, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentTotalStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestStakeUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeHistoryReturn { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minimumStakeForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyStrategyParamsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `recordOperatorStakeUpdate(bytes32,uint8,uint96)` and selector `0x74454c6d`. + ```solidity + function recordOperatorStakeUpdate(bytes32 operatorId, uint8 quorumNumber, uint96 newStake) external returns (int256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordOperatorStakeUpdateCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + pub newStake: alloy::sol_types::private::primitives::aliases::U96, + } + ///Container type for the return parameters of the [`recordOperatorStakeUpdate(bytes32,uint8,uint96)`](recordOperatorStakeUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordOperatorStakeUpdateReturn { + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + 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: recordOperatorStakeUpdateCall) -> Self { + (value.operatorId, value.quorumNumber, value.newStake) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordOperatorStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + newStake: tuple.2, + } + } + } + } + { + #[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: recordOperatorStakeUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordOperatorStakeUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for recordOperatorStakeUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + 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 = recordOperatorStakeUpdateReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Int<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "recordOperatorStakeUpdate(bytes32,uint8,uint96)"; + const SELECTOR: [u8; 4] = [116u8, 69u8, 76u8, 109u8]; + #[inline] + fn new<'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.newStake), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `recordTotalStakeUpdate(uint8,int256)` and selector `0x0390a4d5`. + ```solidity + function recordTotalStakeUpdate(uint8 quorumNumber, int256 stakeDelta) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordTotalStakeUpdateCall { + pub quorumNumber: u8, + pub stakeDelta: alloy::sol_types::private::primitives::aliases::I256, + } + ///Container type for the return parameters of the [`recordTotalStakeUpdate(uint8,int256)`](recordTotalStakeUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordTotalStakeUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Int<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, 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: recordTotalStakeUpdateCall) -> Self { + (value.quorumNumber, value.stakeDelta) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordTotalStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + stakeDelta: 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: recordTotalStakeUpdateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordTotalStakeUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for recordTotalStakeUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Int<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = recordTotalStakeUpdateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "recordTotalStakeUpdate(uint8,int256)"; + const SELECTOR: [u8; 4] = [3u8, 144u8, 164u8, 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.stakeDelta, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setMinimumStakeForQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategiesPerQuorumReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`StakeRegistryHarness`](self) function calls. + pub enum StakeRegistryHarnessCalls { + MAX_WEIGHING_FUNCTION_LENGTH(MAX_WEIGHING_FUNCTION_LENGTHCall), + WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall), + addStrategies(addStrategiesCall), + applyDelta(applyDeltaCall), + calculateDelta(calculateDeltaCall), + 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), + recordOperatorStakeUpdate(recordOperatorStakeUpdateCall), + recordTotalStakeUpdate(recordTotalStakeUpdateCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + removeStrategies(removeStrategiesCall), + setMinimumStakeForQuorum(setMinimumStakeForQuorumCall), + strategiesPerQuorum(strategiesPerQuorumCall), + strategyParams(strategyParamsCall), + strategyParamsByIndex(strategyParamsByIndexCall), + strategyParamsLength(strategyParamsLengthCall), + updateOperatorStake(updateOperatorStakeCall), + weightOfOperatorForQuorum(weightOfOperatorForQuorumCall), + } + #[automatically_derived] + impl StakeRegistryHarnessCalls { + /// 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, 144u8, 164u8, 213u8], + [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], + [116u8, 69u8, 76u8, 109u8], + [124u8, 23u8, 35u8, 71u8], + [127u8, 66u8, 152u8, 34u8], + [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], + [245u8, 9u8, 85u8, 26u8], + [248u8, 81u8, 225u8, 152u8], + [250u8, 40u8, 198u8, 39u8], + [255u8, 105u8, 74u8, 119u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for StakeRegistryHarnessCalls { + const NAME: &'static str = "StakeRegistryHarnessCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 35usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::MAX_WEIGHING_FUNCTION_LENGTH(_) => { + ::SELECTOR + } + Self::WEIGHTING_DIVISOR(_) => { + ::SELECTOR + } + Self::addStrategies(_) => ::SELECTOR, + Self::applyDelta(_) => ::SELECTOR, + Self::calculateDelta(_) => { + ::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::recordOperatorStakeUpdate(_) => { + ::SELECTOR + } + Self::recordTotalStakeUpdate(_) => { + ::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 recordTotalStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::recordTotalStakeUpdate) + } + recordTotalStakeUpdate + }, + { + fn getTotalStakeHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryHarnessCalls::getTotalStakeHistoryLength) + } + getTotalStakeHistoryLength + }, + { + fn strategyParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::strategyParams) + } + strategyParams + }, + { + fn weightOfOperatorForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::weightOfOperatorForQuorum) + } + weightOfOperatorForQuorum + }, + { + fn modifyStrategyParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::modifyStrategyParams) + } + modifyStrategyParams + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::registerOperator) + } + registerOperator + }, + { + fn getStakeHistory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::getStakeHistory) + } + getStakeHistory + }, + { + fn strategyParamsLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::strategyParamsLength) + } + strategyParamsLength + }, + { + fn getStakeHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::getStakeHistoryLength) + } + getStakeHistoryLength + }, + { + fn getCurrentStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::getCurrentStake) + } + getCurrentStake + }, + { + fn WEIGHTING_DIVISOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::WEIGHTING_DIVISOR) + } + WEIGHTING_DIVISOR + }, + { + fn removeStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::removeStrategies) + } + removeStrategies + }, + { + fn updateOperatorStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::updateOperatorStake) + } + updateOperatorStake + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn recordOperatorStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::recordOperatorStakeUpdate) + } + recordOperatorStakeUpdate + }, + { + fn MAX_WEIGHING_FUNCTION_LENGTH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryHarnessCalls::MAX_WEIGHING_FUNCTION_LENGTH) + } + MAX_WEIGHING_FUNCTION_LENGTH + }, + { + fn applyDelta( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StakeRegistryHarnessCalls::applyDelta) + } + applyDelta + }, + { + fn getTotalStakeIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryHarnessCalls::getTotalStakeIndicesAtBlockNumber, + ) + } + getTotalStakeIndicesAtBlockNumber + }, + { + fn strategiesPerQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::strategiesPerQuorum) + } + strategiesPerQuorum + }, + { + fn getStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::getStakeUpdateAtIndex) + } + getStakeUpdateAtIndex + }, + { + fn strategyParamsByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::strategyParamsByIndex) + } + strategyParamsByIndex + }, + { + fn getTotalStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryHarnessCalls::getTotalStakeUpdateAtIndex) + } + getTotalStakeUpdateAtIndex + }, + { + fn setMinimumStakeForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::setMinimumStakeForQuorum) + } + setMinimumStakeForQuorum + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn minimumStakeForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::minimumStakeForQuorum) + } + minimumStakeForQuorum + }, + { + fn addStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::addStrategies) + } + addStrategies + }, + { + fn getTotalStakeAtBlockNumberFromIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryHarnessCalls::getTotalStakeAtBlockNumberFromIndex, + ) + } + getTotalStakeAtBlockNumberFromIndex + }, + { + fn getCurrentTotalStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::getCurrentTotalStake) + } + getCurrentTotalStake + }, + { + fn getStakeUpdateIndexAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryHarnessCalls::getStakeUpdateIndexAtBlockNumber, + ) + } + getStakeUpdateIndexAtBlockNumber + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StakeRegistryHarnessCalls::delegation) + } + delegation + }, + { + fn getStakeAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryHarnessCalls::getStakeAtBlockNumberAndIndex, + ) + } + getStakeAtBlockNumberAndIndex + }, + { + fn calculateDelta( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::calculateDelta) + } + calculateDelta + }, + { + fn getLatestStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::getLatestStakeUpdate) + } + getLatestStakeUpdate + }, + { + fn getStakeAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::getStakeAtBlockNumber) + } + getStakeAtBlockNumber + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryHarnessCalls::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::applyDelta(inner) => { + ::abi_encoded_size(inner) + } + Self::calculateDelta(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::recordOperatorStakeUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recordTotalStakeUpdate(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::applyDelta(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateDelta(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::recordOperatorStakeUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recordTotalStakeUpdate(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 [`StakeRegistryHarness`](self) events. + pub enum StakeRegistryHarnessEvents { + MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated), + OperatorStakeUpdate(OperatorStakeUpdate), + QuorumCreated(QuorumCreated), + StrategyAddedToQuorum(StrategyAddedToQuorum), + StrategyMultiplierUpdated(StrategyMultiplierUpdated), + StrategyRemovedFromQuorum(StrategyRemovedFromQuorum), + } + #[automatically_derived] + impl StakeRegistryHarnessEvents { + /// 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 StakeRegistryHarnessEvents { + const NAME: &'static str = "StakeRegistryHarnessEvents"; + 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 StakeRegistryHarnessEvents { + 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 [`StakeRegistryHarness`](self) contract instance. + + See the [wrapper's documentation](`StakeRegistryHarnessInstance`) 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, + ) -> StakeRegistryHarnessInstance { + StakeRegistryHarnessInstance::::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< + Output = alloy_contract::Result>, + > { + StakeRegistryHarnessInstance::::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 { + StakeRegistryHarnessInstance::::deploy_builder( + provider, + _registryCoordinator, + _delegationManager, + ) + } + /**A [`StakeRegistryHarness`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StakeRegistryHarness`](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 StakeRegistryHarnessInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StakeRegistryHarnessInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StakeRegistryHarnessInstance") + .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, + > StakeRegistryHarnessInstance + { + /**Creates a new wrapper around an on-chain [`StakeRegistryHarness`](self) contract instance. + + See the [wrapper's documentation](`StakeRegistryHarnessInstance`) 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 StakeRegistryHarnessInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StakeRegistryHarnessInstance { + StakeRegistryHarnessInstance { + 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, + > StakeRegistryHarnessInstance + { + /// 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 [`applyDelta`] function. + pub fn applyDelta( + &self, + value: alloy::sol_types::private::primitives::aliases::U96, + delta: alloy::sol_types::private::primitives::aliases::I256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&applyDeltaCall { value, delta }) + } + ///Creates a new call builder for the [`calculateDelta`] function. + pub fn calculateDelta( + &self, + prev: alloy::sol_types::private::primitives::aliases::U96, + cur: alloy::sol_types::private::primitives::aliases::U96, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&calculateDeltaCall { prev, cur }) + } + ///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 [`recordOperatorStakeUpdate`] function. + pub fn recordOperatorStakeUpdate( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + newStake: alloy::sol_types::private::primitives::aliases::U96, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&recordOperatorStakeUpdateCall { + operatorId, + quorumNumber, + newStake, + }) + } + ///Creates a new call builder for the [`recordTotalStakeUpdate`] function. + pub fn recordTotalStakeUpdate( + &self, + quorumNumber: u8, + stakeDelta: alloy::sol_types::private::primitives::aliases::I256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&recordTotalStakeUpdateCall { + quorumNumber, + stakeDelta, + }) + } + ///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, + > StakeRegistryHarnessInstance + { + /// 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/middleware/stakeregistrymock.rs b/crates/utils/src/middleware/stakeregistrymock.rs new file mode 100644 index 00000000..f8f1c14d --- /dev/null +++ b/crates/utils/src/middleware/stakeregistrymock.rs @@ -0,0 +1,7340 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 StakeRegistryMock { + 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, 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 getMockOperatorId(address operator) external pure returns (bytes32); + 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 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 set_updateOperatorStakeReturnBitmap(uint192 newValue) external; + function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StrategyParams memory); + function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); + function updateOperatorStake(address, bytes32, bytes memory) 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": "getMockOperatorId", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "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": "set_updateOperatorStakeReturnBitmap", + "inputs": [ + { + "name": "newValue", + "type": "uint192", + "internalType": "uint192" + } + ], + "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": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "", + "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::pub_underscore_fields, + clippy::style +)] +pub mod StakeRegistryMock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610dad806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063ac6bfb03116100f9578063d5eccc0511610097578063f2be94ae11610071578063f2be94ae14610480578063f851e19814610498578063fa28c627146104a6578063ff694a77146104b457600080fd5b8063d5eccc051461042a578063dd9846b91461045d578063df5cf7231461037257600080fd5b8063bd29b8cd116100d3578063bd29b8cd14610418578063c46778a51461042a578063c601527d14610438578063c8294c561461044657600080fd5b8063ac6bfb03146103a5578063adc804da146103c5578063b6904b781461040557600080fd5b80634c51bf91116101665780635f1f2d77116101405780635f1f2d771461032557806366acfefe146103385780636d14a9871461037257806381c075021461038157600080fd5b80634c51bf91146102e05780635401ed27146103105780635e5a67751461031e57600080fd5b8063224a3c39116101a2578063224a3c391461023557806325504777146102965780632cd95940146102bd5780633ca5a5f5146101c957600080fd5b80630491b41c146101c95780631f9b74e0146101f057806320b662981461021e575b600080fd5b6101dd6101d736600461053a565b50600090565b6040519081526020015b60405180910390f35b6102066101fe36600461056d565b600092915050565b6040516001600160601b0390911681526020016101e7565b61023361022c3660046105ef565b5050505050565b005b6101dd61024336600461066f565b6040516bffffffffffffffffffffffff19606083901b166020820152691bdc195c985d1bdc925960b21b6034820152600090603e0160408051601f19818403018152919052805160209091012092915050565b6102af6102a4366004610769565b606080935093915050565b6040516101e7929190610805565b6102d36102cb366004610833565b606092915050565b6040516101e7919061085f565b6102336102ee3660046108d7565b600080546001600160c01b0319166001600160c01b0392909216919091179055565b6102066101fe366004610833565b60006101dd565b610233610333366004610900565b505050565b61035a610346366004610993565b6000546001600160c01b0316949350505050565b6040516001600160c01b0390911681526020016101e7565b604051600081526020016101e7565b61039861038f366004610a02565b60609392505050565b6040516101e79190610a47565b6103b86103b3366004610a85565b6104c2565b6040516101e79190610ab8565b6103d86103d3366004610aed565b6104e7565b6040805182516001600160a01b031681526020928301516001600160601b031692810192909252016101e7565b6103b8610413366004610aed565b610502565b610233610426366004610b17565b5050565b6102066101d736600461053a565b610233610426366004610c27565b610206610454366004610c6a565b60009392505050565b61046b610454366004610ca6565b60405163ffffffff90911681526020016101e7565b61020661048e366004610ce2565b6000949350505050565b6103b8610413366004610833565b610206610454366004610ca6565b610233610333366004610d24565b60408051606081018252600080825260208201819052918101919091525b9392505050565b60408051808201909152600080825260208201525b92915050565b60408051606081018252600080825260208201819052918101919091526104fc565b803560ff8116811461053557600080fd5b919050565b60006020828403121561054c57600080fd5b6104e082610524565b6001600160a01b038116811461056a57600080fd5b50565b6000806040838503121561058057600080fd5b61058983610524565b9150602083013561059981610555565b809150509250929050565b60008083601f8401126105b657600080fd5b5081356001600160401b038111156105cd57600080fd5b6020830191508360208260051b85010111156105e857600080fd5b9250929050565b60008060008060006060868803121561060757600080fd5b61061086610524565b945060208601356001600160401b038082111561062c57600080fd5b61063889838a016105a4565b9096509450604088013591508082111561065157600080fd5b5061065e888289016105a4565b969995985093965092949392505050565b60006020828403121561068157600080fd5b81356104e081610555565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156106c4576106c461068c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156106f2576106f261068c565b604052919050565b600082601f83011261070b57600080fd5b81356001600160401b038111156107245761072461068c565b610737601f8201601f19166020016106ca565b81815284602083860101111561074c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561077e57600080fd5b833561078981610555565b92506020840135915060408401356001600160401b038111156107ab57600080fd5b6107b7868287016106fa565b9150509250925092565b600081518084526020808501945080840160005b838110156107fa5781516001600160601b0316875295820195908201906001016107d5565b509495945050505050565b60408152600061081860408301856107c1565b828103602084015261082a81856107c1565b95945050505050565b6000806040838503121561084657600080fd5b8235915061085660208401610524565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156108cb576108b883855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b928401926060929092019160010161087b565b50909695505050505050565b6000602082840312156108e957600080fd5b81356001600160c01b03811681146104e057600080fd5b60008060006040848603121561091557600080fd5b61091e84610524565b925060208401356001600160401b0381111561093957600080fd5b610945868287016105a4565b9497909650939450505050565b60008083601f84011261096457600080fd5b5081356001600160401b0381111561097b57600080fd5b6020830191508360208285010111156105e857600080fd5b600080600080606085870312156109a957600080fd5b84356109b481610555565b93506020850135925060408501356001600160401b038111156109d657600080fd5b6109e287828801610952565b95989497509550505050565b803563ffffffff8116811461053557600080fd5b600080600060408486031215610a1757600080fd5b610a20846109ee565b925060208401356001600160401b03811115610a3b57600080fd5b61094586828701610952565b6020808252825182820181905260009190848201906040850190845b818110156108cb57835163ffffffff1683529284019291840191600101610a63565b600080600060608486031215610a9a57600080fd5b610aa384610524565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b031690820152606081016104fc565b60008060408385031215610b0057600080fd5b610b0983610524565b946020939093013593505050565b60008060408385031215610b2a57600080fd5b8235915060208301356001600160401b03811115610b4757600080fd5b610b53858286016106fa565b9150509250929050565b80356001600160601b038116811461053557600080fd5b600082601f830112610b8557600080fd5b813560206001600160401b03821115610ba057610ba061068c565b610bae818360051b016106ca565b82815260069290921b84018101918181019086841115610bcd57600080fd5b8286015b84811015610c1c5760408189031215610bea5760008081fd5b610bf26106a2565b8135610bfd81610555565b8152610c0a828601610b5d565b81860152835291830191604001610bd1565b509695505050505050565b60008060408385031215610c3a57600080fd5b610c4383610524565b915060208301356001600160401b03811115610c5e57600080fd5b610b5385828601610b74565b600080600060608486031215610c7f57600080fd5b610c8884610524565b9250610c96602085016109ee565b9150604084013590509250925092565b600080600060608486031215610cbb57600080fd5b83359250610ccb60208501610524565b9150610cd9604085016109ee565b90509250925092565b60008060008060808587031215610cf857600080fd5b610d0185610524565b9350610d0f602086016109ee565b93969395505050506040820135916060013590565b600080600060608486031215610d3957600080fd5b610d4284610524565b9250610d5060208501610b5d565b915060408401356001600160401b03811115610d6b57600080fd5b6107b786828701610b7456fea26469706673582212209add299a053b0e729784622a7d7983ca7e562200d6114c830c2b3e894c6a147b64736f6c634300080c0033 + /// ``` + #[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\r\xAD\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xC4W`\x005`\xE0\x1C\x80c\xACk\xFB\x03\x11a\0\xF9W\x80c\xD5\xEC\xCC\x05\x11a\0\x97W\x80c\xF2\xBE\x94\xAE\x11a\0qW\x80c\xF2\xBE\x94\xAE\x14a\x04\x80W\x80c\xF8Q\xE1\x98\x14a\x04\x98W\x80c\xFA(\xC6'\x14a\x04\xA6W\x80c\xFFiJw\x14a\x04\xB4W`\0\x80\xFD[\x80c\xD5\xEC\xCC\x05\x14a\x04*W\x80c\xDD\x98F\xB9\x14a\x04]W\x80c\xDF\\\xF7#\x14a\x03rW`\0\x80\xFD[\x80c\xBD)\xB8\xCD\x11a\0\xD3W\x80c\xBD)\xB8\xCD\x14a\x04\x18W\x80c\xC4gx\xA5\x14a\x04*W\x80c\xC6\x01R}\x14a\x048W\x80c\xC8)LV\x14a\x04FW`\0\x80\xFD[\x80c\xACk\xFB\x03\x14a\x03\xA5W\x80c\xAD\xC8\x04\xDA\x14a\x03\xC5W\x80c\xB6\x90Kx\x14a\x04\x05W`\0\x80\xFD[\x80cLQ\xBF\x91\x11a\x01fW\x80c_\x1F-w\x11a\x01@W\x80c_\x1F-w\x14a\x03%W\x80cf\xAC\xFE\xFE\x14a\x038W\x80cm\x14\xA9\x87\x14a\x03rW\x80c\x81\xC0u\x02\x14a\x03\x81W`\0\x80\xFD[\x80cLQ\xBF\x91\x14a\x02\xE0W\x80cT\x01\xED'\x14a\x03\x10W\x80c^Zgu\x14a\x03\x1EW`\0\x80\xFD[\x80c\"J<9\x11a\x01\xA2W\x80c\"J<9\x14a\x025W\x80c%PGw\x14a\x02\x96W\x80c,\xD9Y@\x14a\x02\xBDW\x80c<\xA5\xA5\xF5\x14a\x01\xC9W`\0\x80\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xC9W\x80c\x1F\x9Bt\xE0\x14a\x01\xF0W\x80c \xB6b\x98\x14a\x02\x1EW[`\0\x80\xFD[a\x01\xDDa\x01\xD76`\x04a\x05:V[P`\0\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x06a\x01\xFE6`\x04a\x05mV[`\0\x92\x91PPV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xE7V[a\x023a\x02,6`\x04a\x05\xEFV[PPPPPV[\0[a\x01\xDDa\x02C6`\x04a\x06oV[`@Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19``\x83\x90\x1B\x16` \x82\x01Ri\x1B\xDC\x19\\\x98]\x1B\xDC\x92Y`\xB2\x1B`4\x82\x01R`\0\x90`>\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x91PPV[a\x02\xAFa\x02\xA46`\x04a\x07iV[``\x80\x93P\x93\x91PPV[`@Qa\x01\xE7\x92\x91\x90a\x08\x05V[a\x02\xD3a\x02\xCB6`\x04a\x083V[``\x92\x91PPV[`@Qa\x01\xE7\x91\x90a\x08_V[a\x023a\x02\xEE6`\x04a\x08\xD7V[`\0\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x02\x06a\x01\xFE6`\x04a\x083V[`\0a\x01\xDDV[a\x023a\x0336`\x04a\t\0V[PPPV[a\x03Za\x03F6`\x04a\t\x93V[`\0T`\x01`\x01`\xC0\x1B\x03\x16\x94\x93PPPPV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xE7V[`@Q`\0\x81R` \x01a\x01\xE7V[a\x03\x98a\x03\x8F6`\x04a\n\x02V[``\x93\x92PPPV[`@Qa\x01\xE7\x91\x90a\nGV[a\x03\xB8a\x03\xB36`\x04a\n\x85V[a\x04\xC2V[`@Qa\x01\xE7\x91\x90a\n\xB8V[a\x03\xD8a\x03\xD36`\x04a\n\xEDV[a\x04\xE7V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x01\xE7V[a\x03\xB8a\x04\x136`\x04a\n\xEDV[a\x05\x02V[a\x023a\x04&6`\x04a\x0B\x17V[PPV[a\x02\x06a\x01\xD76`\x04a\x05:V[a\x023a\x04&6`\x04a\x0C'V[a\x02\x06a\x04T6`\x04a\x0CjV[`\0\x93\x92PPPV[a\x04ka\x04T6`\x04a\x0C\xA6V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xE7V[a\x02\x06a\x04\x8E6`\x04a\x0C\xE2V[`\0\x94\x93PPPPV[a\x03\xB8a\x04\x136`\x04a\x083V[a\x02\x06a\x04T6`\x04a\x0C\xA6V[a\x023a\x0336`\x04a\r$V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x04\xFCV[\x805`\xFF\x81\x16\x81\x14a\x055W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x05LW`\0\x80\xFD[a\x04\xE0\x82a\x05$V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05jW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x05\x80W`\0\x80\xFD[a\x05\x89\x83a\x05$V[\x91P` \x83\x015a\x05\x99\x81a\x05UV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x05\xB6W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x05\xCDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x05\xE8W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x06\x07W`\0\x80\xFD[a\x06\x10\x86a\x05$V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x06,W`\0\x80\xFD[a\x068\x89\x83\x8A\x01a\x05\xA4V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\x06QW`\0\x80\xFD[Pa\x06^\x88\x82\x89\x01a\x05\xA4V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x06\x81W`\0\x80\xFD[\x815a\x04\xE0\x81a\x05UV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06\xC4Wa\x06\xC4a\x06\x8CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06\xF2Wa\x06\xF2a\x06\x8CV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x07\x0BW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07$Wa\x07$a\x06\x8CV[a\x077`\x1F\x82\x01`\x1F\x19\x16` \x01a\x06\xCAV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x07LW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07~W`\0\x80\xFD[\x835a\x07\x89\x81a\x05UV[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xABW`\0\x80\xFD[a\x07\xB7\x86\x82\x87\x01a\x06\xFAV[\x91PP\x92P\x92P\x92V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x07\xFAW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xD5V[P\x94\x95\x94PPPPPV[`@\x81R`\0a\x08\x18`@\x83\x01\x85a\x07\xC1V[\x82\x81\x03` \x84\x01Ra\x08*\x81\x85a\x07\xC1V[\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08FW`\0\x80\xFD[\x825\x91Pa\x08V` \x84\x01a\x05$V[\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\x08\xCBWa\x08\xB8\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\x08{V[P\x90\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xE9W`\0\x80\xFD[\x815`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x04\xE0W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a\t\x15W`\0\x80\xFD[a\t\x1E\x84a\x05$V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\t9W`\0\x80\xFD[a\tE\x86\x82\x87\x01a\x05\xA4V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\tdW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\t{W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x05\xE8W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\t\xA9W`\0\x80\xFD[\x845a\t\xB4\x81a\x05UV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xD6W`\0\x80\xFD[a\t\xE2\x87\x82\x88\x01a\tRV[\x95\x98\x94\x97P\x95PPPPV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x055W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a\n\x17W`\0\x80\xFD[a\n \x84a\t\xEEV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\n;W`\0\x80\xFD[a\tE\x86\x82\x87\x01a\tRV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x08\xCBW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\ncV[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\x9AW`\0\x80\xFD[a\n\xA3\x84a\x05$V[\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\x04\xFCV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\0W`\0\x80\xFD[a\x0B\t\x83a\x05$V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B*W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0BGW`\0\x80\xFD[a\x0BS\x85\x82\x86\x01a\x06\xFAV[\x91PP\x92P\x92\x90PV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x055W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x0B\x85W`\0\x80\xFD[\x815` `\x01`\x01`@\x1B\x03\x82\x11\x15a\x0B\xA0Wa\x0B\xA0a\x06\x8CV[a\x0B\xAE\x81\x83`\x05\x1B\x01a\x06\xCAV[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x0B\xCDW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0C\x1CW`@\x81\x89\x03\x12\x15a\x0B\xEAW`\0\x80\x81\xFD[a\x0B\xF2a\x06\xA2V[\x815a\x0B\xFD\x81a\x05UV[\x81Ra\x0C\n\x82\x86\x01a\x0B]V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a\x0B\xD1V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[a\x0CC\x83a\x05$V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C^W`\0\x80\xFD[a\x0BS\x85\x82\x86\x01a\x0BtV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x7FW`\0\x80\xFD[a\x0C\x88\x84a\x05$V[\x92Pa\x0C\x96` \x85\x01a\t\xEEV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xBBW`\0\x80\xFD[\x835\x92Pa\x0C\xCB` \x85\x01a\x05$V[\x91Pa\x0C\xD9`@\x85\x01a\t\xEEV[\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x0C\xF8W`\0\x80\xFD[a\r\x01\x85a\x05$V[\x93Pa\r\x0F` \x86\x01a\t\xEEV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\r9W`\0\x80\xFD[a\rB\x84a\x05$V[\x92Pa\rP` \x85\x01a\x0B]V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\rkW`\0\x80\xFD[a\x07\xB7\x86\x82\x87\x01a\x0BtV\xFE\xA2dipfsX\"\x12 \x9A\xDD)\x9A\x05;\x0Er\x97\x84b*}y\x83\xCA~V\"\0\xD6\x11L\x83\x0C+>\x89Lj\x14{dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063ac6bfb03116100f9578063d5eccc0511610097578063f2be94ae11610071578063f2be94ae14610480578063f851e19814610498578063fa28c627146104a6578063ff694a77146104b457600080fd5b8063d5eccc051461042a578063dd9846b91461045d578063df5cf7231461037257600080fd5b8063bd29b8cd116100d3578063bd29b8cd14610418578063c46778a51461042a578063c601527d14610438578063c8294c561461044657600080fd5b8063ac6bfb03146103a5578063adc804da146103c5578063b6904b781461040557600080fd5b80634c51bf91116101665780635f1f2d77116101405780635f1f2d771461032557806366acfefe146103385780636d14a9871461037257806381c075021461038157600080fd5b80634c51bf91146102e05780635401ed27146103105780635e5a67751461031e57600080fd5b8063224a3c39116101a2578063224a3c391461023557806325504777146102965780632cd95940146102bd5780633ca5a5f5146101c957600080fd5b80630491b41c146101c95780631f9b74e0146101f057806320b662981461021e575b600080fd5b6101dd6101d736600461053a565b50600090565b6040519081526020015b60405180910390f35b6102066101fe36600461056d565b600092915050565b6040516001600160601b0390911681526020016101e7565b61023361022c3660046105ef565b5050505050565b005b6101dd61024336600461066f565b6040516bffffffffffffffffffffffff19606083901b166020820152691bdc195c985d1bdc925960b21b6034820152600090603e0160408051601f19818403018152919052805160209091012092915050565b6102af6102a4366004610769565b606080935093915050565b6040516101e7929190610805565b6102d36102cb366004610833565b606092915050565b6040516101e7919061085f565b6102336102ee3660046108d7565b600080546001600160c01b0319166001600160c01b0392909216919091179055565b6102066101fe366004610833565b60006101dd565b610233610333366004610900565b505050565b61035a610346366004610993565b6000546001600160c01b0316949350505050565b6040516001600160c01b0390911681526020016101e7565b604051600081526020016101e7565b61039861038f366004610a02565b60609392505050565b6040516101e79190610a47565b6103b86103b3366004610a85565b6104c2565b6040516101e79190610ab8565b6103d86103d3366004610aed565b6104e7565b6040805182516001600160a01b031681526020928301516001600160601b031692810192909252016101e7565b6103b8610413366004610aed565b610502565b610233610426366004610b17565b5050565b6102066101d736600461053a565b610233610426366004610c27565b610206610454366004610c6a565b60009392505050565b61046b610454366004610ca6565b60405163ffffffff90911681526020016101e7565b61020661048e366004610ce2565b6000949350505050565b6103b8610413366004610833565b610206610454366004610ca6565b610233610333366004610d24565b60408051606081018252600080825260208201819052918101919091525b9392505050565b60408051808201909152600080825260208201525b92915050565b60408051606081018252600080825260208201819052918101919091526104fc565b803560ff8116811461053557600080fd5b919050565b60006020828403121561054c57600080fd5b6104e082610524565b6001600160a01b038116811461056a57600080fd5b50565b6000806040838503121561058057600080fd5b61058983610524565b9150602083013561059981610555565b809150509250929050565b60008083601f8401126105b657600080fd5b5081356001600160401b038111156105cd57600080fd5b6020830191508360208260051b85010111156105e857600080fd5b9250929050565b60008060008060006060868803121561060757600080fd5b61061086610524565b945060208601356001600160401b038082111561062c57600080fd5b61063889838a016105a4565b9096509450604088013591508082111561065157600080fd5b5061065e888289016105a4565b969995985093965092949392505050565b60006020828403121561068157600080fd5b81356104e081610555565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156106c4576106c461068c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156106f2576106f261068c565b604052919050565b600082601f83011261070b57600080fd5b81356001600160401b038111156107245761072461068c565b610737601f8201601f19166020016106ca565b81815284602083860101111561074c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561077e57600080fd5b833561078981610555565b92506020840135915060408401356001600160401b038111156107ab57600080fd5b6107b7868287016106fa565b9150509250925092565b600081518084526020808501945080840160005b838110156107fa5781516001600160601b0316875295820195908201906001016107d5565b509495945050505050565b60408152600061081860408301856107c1565b828103602084015261082a81856107c1565b95945050505050565b6000806040838503121561084657600080fd5b8235915061085660208401610524565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156108cb576108b883855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b928401926060929092019160010161087b565b50909695505050505050565b6000602082840312156108e957600080fd5b81356001600160c01b03811681146104e057600080fd5b60008060006040848603121561091557600080fd5b61091e84610524565b925060208401356001600160401b0381111561093957600080fd5b610945868287016105a4565b9497909650939450505050565b60008083601f84011261096457600080fd5b5081356001600160401b0381111561097b57600080fd5b6020830191508360208285010111156105e857600080fd5b600080600080606085870312156109a957600080fd5b84356109b481610555565b93506020850135925060408501356001600160401b038111156109d657600080fd5b6109e287828801610952565b95989497509550505050565b803563ffffffff8116811461053557600080fd5b600080600060408486031215610a1757600080fd5b610a20846109ee565b925060208401356001600160401b03811115610a3b57600080fd5b61094586828701610952565b6020808252825182820181905260009190848201906040850190845b818110156108cb57835163ffffffff1683529284019291840191600101610a63565b600080600060608486031215610a9a57600080fd5b610aa384610524565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b031690820152606081016104fc565b60008060408385031215610b0057600080fd5b610b0983610524565b946020939093013593505050565b60008060408385031215610b2a57600080fd5b8235915060208301356001600160401b03811115610b4757600080fd5b610b53858286016106fa565b9150509250929050565b80356001600160601b038116811461053557600080fd5b600082601f830112610b8557600080fd5b813560206001600160401b03821115610ba057610ba061068c565b610bae818360051b016106ca565b82815260069290921b84018101918181019086841115610bcd57600080fd5b8286015b84811015610c1c5760408189031215610bea5760008081fd5b610bf26106a2565b8135610bfd81610555565b8152610c0a828601610b5d565b81860152835291830191604001610bd1565b509695505050505050565b60008060408385031215610c3a57600080fd5b610c4383610524565b915060208301356001600160401b03811115610c5e57600080fd5b610b5385828601610b74565b600080600060608486031215610c7f57600080fd5b610c8884610524565b9250610c96602085016109ee565b9150604084013590509250925092565b600080600060608486031215610cbb57600080fd5b83359250610ccb60208501610524565b9150610cd9604085016109ee565b90509250925092565b60008060008060808587031215610cf857600080fd5b610d0185610524565b9350610d0f602086016109ee565b93969395505050506040820135916060013590565b600080600060608486031215610d3957600080fd5b610d4284610524565b9250610d5060208501610b5d565b915060408401356001600160401b03811115610d6b57600080fd5b6107b786828701610b7456fea26469706673582212209add299a053b0e729784622a7d7983ca7e562200d6114c830c2b3e894c6a147b64736f6c634300080c0033 + /// ``` + #[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\xC4W`\x005`\xE0\x1C\x80c\xACk\xFB\x03\x11a\0\xF9W\x80c\xD5\xEC\xCC\x05\x11a\0\x97W\x80c\xF2\xBE\x94\xAE\x11a\0qW\x80c\xF2\xBE\x94\xAE\x14a\x04\x80W\x80c\xF8Q\xE1\x98\x14a\x04\x98W\x80c\xFA(\xC6'\x14a\x04\xA6W\x80c\xFFiJw\x14a\x04\xB4W`\0\x80\xFD[\x80c\xD5\xEC\xCC\x05\x14a\x04*W\x80c\xDD\x98F\xB9\x14a\x04]W\x80c\xDF\\\xF7#\x14a\x03rW`\0\x80\xFD[\x80c\xBD)\xB8\xCD\x11a\0\xD3W\x80c\xBD)\xB8\xCD\x14a\x04\x18W\x80c\xC4gx\xA5\x14a\x04*W\x80c\xC6\x01R}\x14a\x048W\x80c\xC8)LV\x14a\x04FW`\0\x80\xFD[\x80c\xACk\xFB\x03\x14a\x03\xA5W\x80c\xAD\xC8\x04\xDA\x14a\x03\xC5W\x80c\xB6\x90Kx\x14a\x04\x05W`\0\x80\xFD[\x80cLQ\xBF\x91\x11a\x01fW\x80c_\x1F-w\x11a\x01@W\x80c_\x1F-w\x14a\x03%W\x80cf\xAC\xFE\xFE\x14a\x038W\x80cm\x14\xA9\x87\x14a\x03rW\x80c\x81\xC0u\x02\x14a\x03\x81W`\0\x80\xFD[\x80cLQ\xBF\x91\x14a\x02\xE0W\x80cT\x01\xED'\x14a\x03\x10W\x80c^Zgu\x14a\x03\x1EW`\0\x80\xFD[\x80c\"J<9\x11a\x01\xA2W\x80c\"J<9\x14a\x025W\x80c%PGw\x14a\x02\x96W\x80c,\xD9Y@\x14a\x02\xBDW\x80c<\xA5\xA5\xF5\x14a\x01\xC9W`\0\x80\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xC9W\x80c\x1F\x9Bt\xE0\x14a\x01\xF0W\x80c \xB6b\x98\x14a\x02\x1EW[`\0\x80\xFD[a\x01\xDDa\x01\xD76`\x04a\x05:V[P`\0\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x06a\x01\xFE6`\x04a\x05mV[`\0\x92\x91PPV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xE7V[a\x023a\x02,6`\x04a\x05\xEFV[PPPPPV[\0[a\x01\xDDa\x02C6`\x04a\x06oV[`@Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19``\x83\x90\x1B\x16` \x82\x01Ri\x1B\xDC\x19\\\x98]\x1B\xDC\x92Y`\xB2\x1B`4\x82\x01R`\0\x90`>\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x91PPV[a\x02\xAFa\x02\xA46`\x04a\x07iV[``\x80\x93P\x93\x91PPV[`@Qa\x01\xE7\x92\x91\x90a\x08\x05V[a\x02\xD3a\x02\xCB6`\x04a\x083V[``\x92\x91PPV[`@Qa\x01\xE7\x91\x90a\x08_V[a\x023a\x02\xEE6`\x04a\x08\xD7V[`\0\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`\x01`\x01`\xC0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x02\x06a\x01\xFE6`\x04a\x083V[`\0a\x01\xDDV[a\x023a\x0336`\x04a\t\0V[PPPV[a\x03Za\x03F6`\x04a\t\x93V[`\0T`\x01`\x01`\xC0\x1B\x03\x16\x94\x93PPPPV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xE7V[`@Q`\0\x81R` \x01a\x01\xE7V[a\x03\x98a\x03\x8F6`\x04a\n\x02V[``\x93\x92PPPV[`@Qa\x01\xE7\x91\x90a\nGV[a\x03\xB8a\x03\xB36`\x04a\n\x85V[a\x04\xC2V[`@Qa\x01\xE7\x91\x90a\n\xB8V[a\x03\xD8a\x03\xD36`\x04a\n\xEDV[a\x04\xE7V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x01\xE7V[a\x03\xB8a\x04\x136`\x04a\n\xEDV[a\x05\x02V[a\x023a\x04&6`\x04a\x0B\x17V[PPV[a\x02\x06a\x01\xD76`\x04a\x05:V[a\x023a\x04&6`\x04a\x0C'V[a\x02\x06a\x04T6`\x04a\x0CjV[`\0\x93\x92PPPV[a\x04ka\x04T6`\x04a\x0C\xA6V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xE7V[a\x02\x06a\x04\x8E6`\x04a\x0C\xE2V[`\0\x94\x93PPPPV[a\x03\xB8a\x04\x136`\x04a\x083V[a\x02\x06a\x04T6`\x04a\x0C\xA6V[a\x023a\x0336`\x04a\r$V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R[\x92\x91PPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91Ra\x04\xFCV[\x805`\xFF\x81\x16\x81\x14a\x055W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x05LW`\0\x80\xFD[a\x04\xE0\x82a\x05$V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05jW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x05\x80W`\0\x80\xFD[a\x05\x89\x83a\x05$V[\x91P` \x83\x015a\x05\x99\x81a\x05UV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x05\xB6W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x05\xCDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x05\xE8W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x06\x07W`\0\x80\xFD[a\x06\x10\x86a\x05$V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x06,W`\0\x80\xFD[a\x068\x89\x83\x8A\x01a\x05\xA4V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\x06QW`\0\x80\xFD[Pa\x06^\x88\x82\x89\x01a\x05\xA4V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x06\x81W`\0\x80\xFD[\x815a\x04\xE0\x81a\x05UV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06\xC4Wa\x06\xC4a\x06\x8CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06\xF2Wa\x06\xF2a\x06\x8CV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x07\x0BW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07$Wa\x07$a\x06\x8CV[a\x077`\x1F\x82\x01`\x1F\x19\x16` \x01a\x06\xCAV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x07LW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07~W`\0\x80\xFD[\x835a\x07\x89\x81a\x05UV[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xABW`\0\x80\xFD[a\x07\xB7\x86\x82\x87\x01a\x06\xFAV[\x91PP\x92P\x92P\x92V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x07\xFAW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xD5V[P\x94\x95\x94PPPPPV[`@\x81R`\0a\x08\x18`@\x83\x01\x85a\x07\xC1V[\x82\x81\x03` \x84\x01Ra\x08*\x81\x85a\x07\xC1V[\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08FW`\0\x80\xFD[\x825\x91Pa\x08V` \x84\x01a\x05$V[\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\x08\xCBWa\x08\xB8\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\x08{V[P\x90\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xE9W`\0\x80\xFD[\x815`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x04\xE0W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a\t\x15W`\0\x80\xFD[a\t\x1E\x84a\x05$V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\t9W`\0\x80\xFD[a\tE\x86\x82\x87\x01a\x05\xA4V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\tdW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\t{W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x05\xE8W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\t\xA9W`\0\x80\xFD[\x845a\t\xB4\x81a\x05UV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xD6W`\0\x80\xFD[a\t\xE2\x87\x82\x88\x01a\tRV[\x95\x98\x94\x97P\x95PPPPV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x055W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a\n\x17W`\0\x80\xFD[a\n \x84a\t\xEEV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\n;W`\0\x80\xFD[a\tE\x86\x82\x87\x01a\tRV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x08\xCBW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\ncV[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\x9AW`\0\x80\xFD[a\n\xA3\x84a\x05$V[\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\x04\xFCV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\0W`\0\x80\xFD[a\x0B\t\x83a\x05$V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B*W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0BGW`\0\x80\xFD[a\x0BS\x85\x82\x86\x01a\x06\xFAV[\x91PP\x92P\x92\x90PV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x055W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x0B\x85W`\0\x80\xFD[\x815` `\x01`\x01`@\x1B\x03\x82\x11\x15a\x0B\xA0Wa\x0B\xA0a\x06\x8CV[a\x0B\xAE\x81\x83`\x05\x1B\x01a\x06\xCAV[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x0B\xCDW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0C\x1CW`@\x81\x89\x03\x12\x15a\x0B\xEAW`\0\x80\x81\xFD[a\x0B\xF2a\x06\xA2V[\x815a\x0B\xFD\x81a\x05UV[\x81Ra\x0C\n\x82\x86\x01a\x0B]V[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a\x0B\xD1V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C:W`\0\x80\xFD[a\x0CC\x83a\x05$V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C^W`\0\x80\xFD[a\x0BS\x85\x82\x86\x01a\x0BtV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x7FW`\0\x80\xFD[a\x0C\x88\x84a\x05$V[\x92Pa\x0C\x96` \x85\x01a\t\xEEV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xBBW`\0\x80\xFD[\x835\x92Pa\x0C\xCB` \x85\x01a\x05$V[\x91Pa\x0C\xD9`@\x85\x01a\t\xEEV[\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x0C\xF8W`\0\x80\xFD[a\r\x01\x85a\x05$V[\x93Pa\r\x0F` \x86\x01a\t\xEEV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\r9W`\0\x80\xFD[a\rB\x84a\x05$V[\x92Pa\rP` \x85\x01a\x0B]V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\rkW`\0\x80\xFD[a\x07\xB7\x86\x82\x87\x01a\x0BtV\xFE\xA2dipfsX\"\x12 \x9A\xDD)\x9A\x05;\x0Er\x97\x84b*}y\x83\xCA~V\"\0\xD6\x11L\x83\x0C+>\x89Lj\x14{dsolcC\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentTotalStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestStakeUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `getMockOperatorId(address)` and selector `0x224a3c39`. + ```solidity + function getMockOperatorId(address operator) external pure returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMockOperatorIdCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getMockOperatorId(address)`](getMockOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMockOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: getMockOperatorIdCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMockOperatorIdCall { + 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: getMockOperatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMockOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMockOperatorIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMockOperatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMockOperatorId(address)"; + const SELECTOR: [u8; 4] = [34u8, 74u8, 60u8, 57u8]; + #[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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeHistoryReturn { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minimumStakeForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyStrategyParamsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `set_updateOperatorStakeReturnBitmap(uint192)` and selector `0x4c51bf91`. + ```solidity + function set_updateOperatorStakeReturnBitmap(uint192 newValue) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct set_updateOperatorStakeReturnBitmapCall { + pub newValue: alloy::sol_types::private::primitives::aliases::U192, + } + ///Container type for the return parameters of the [`set_updateOperatorStakeReturnBitmap(uint192)`](set_updateOperatorStakeReturnBitmapCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct set_updateOperatorStakeReturnBitmapReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[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: set_updateOperatorStakeReturnBitmapCall) -> Self { + (value.newValue,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for set_updateOperatorStakeReturnBitmapCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newValue: 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: set_updateOperatorStakeReturnBitmapReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for set_updateOperatorStakeReturnBitmapReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for set_updateOperatorStakeReturnBitmapCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = set_updateOperatorStakeReturnBitmapReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "set_updateOperatorStakeReturnBitmap(uint192)"; + const SELECTOR: [u8; 4] = [76u8, 81u8, 191u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, bytes32, bytes memory) external returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorStakeCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::FixedBytes<32>, + pub _2: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: 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._0, + ), + as alloy_sol_types::SolType>::tokenize(&self._1), + ::tokenize( + &self._2, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`StakeRegistryMock`](self) function calls. + pub enum StakeRegistryMockCalls { + WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall), + addStrategies(addStrategiesCall), + delegation(delegationCall), + deregisterOperator(deregisterOperatorCall), + getCurrentStake(getCurrentStakeCall), + getCurrentTotalStake(getCurrentTotalStakeCall), + getLatestStakeUpdate(getLatestStakeUpdateCall), + getMockOperatorId(getMockOperatorIdCall), + 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), + set_updateOperatorStakeReturnBitmap(set_updateOperatorStakeReturnBitmapCall), + strategyParamsByIndex(strategyParamsByIndexCall), + strategyParamsLength(strategyParamsLengthCall), + updateOperatorStake(updateOperatorStakeCall), + weightOfOperatorForQuorum(weightOfOperatorForQuorumCall), + } + #[automatically_derived] + impl StakeRegistryMockCalls { + /// 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], + [34u8, 74u8, 60u8, 57u8], + [37u8, 80u8, 71u8, 119u8], + [44u8, 217u8, 89u8, 64u8], + [60u8, 165u8, 165u8, 245u8], + [76u8, 81u8, 191u8, 145u8], + [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 StakeRegistryMockCalls { + const NAME: &'static str = "StakeRegistryMockCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 28usize; + #[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::getMockOperatorId(_) => { + ::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::set_updateOperatorStakeReturnBitmap(_) => { + ::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(StakeRegistryMockCalls::getTotalStakeHistoryLength) + } + getTotalStakeHistoryLength + }, + { + fn weightOfOperatorForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::weightOfOperatorForQuorum) + } + weightOfOperatorForQuorum + }, + { + fn modifyStrategyParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::modifyStrategyParams) + } + modifyStrategyParams + }, + { + fn getMockOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::getMockOperatorId) + } + getMockOperatorId + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::registerOperator) + } + registerOperator + }, + { + fn getStakeHistory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::getStakeHistory) + } + getStakeHistory + }, + { + fn strategyParamsLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::strategyParamsLength) + } + strategyParamsLength + }, + { + fn set_updateOperatorStakeReturnBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryMockCalls::set_updateOperatorStakeReturnBitmap, + ) + } + set_updateOperatorStakeReturnBitmap + }, + { + fn getCurrentStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::getCurrentStake) + } + getCurrentStake + }, + { + fn WEIGHTING_DIVISOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::WEIGHTING_DIVISOR) + } + WEIGHTING_DIVISOR + }, + { + fn removeStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::removeStrategies) + } + removeStrategies + }, + { + fn updateOperatorStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::updateOperatorStake) + } + updateOperatorStake + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn getTotalStakeIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryMockCalls::getTotalStakeIndicesAtBlockNumber, + ) + } + getTotalStakeIndicesAtBlockNumber + }, + { + fn getStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::getStakeUpdateAtIndex) + } + getStakeUpdateAtIndex + }, + { + fn strategyParamsByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::strategyParamsByIndex) + } + strategyParamsByIndex + }, + { + fn getTotalStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryMockCalls::getTotalStakeUpdateAtIndex) + } + getTotalStakeUpdateAtIndex + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn minimumStakeForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::minimumStakeForQuorum) + } + minimumStakeForQuorum + }, + { + fn addStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::addStrategies) + } + addStrategies + }, + { + fn getTotalStakeAtBlockNumberFromIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryMockCalls::getTotalStakeAtBlockNumberFromIndex, + ) + } + getTotalStakeAtBlockNumberFromIndex + }, + { + fn getCurrentTotalStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::getCurrentTotalStake) + } + getCurrentTotalStake + }, + { + fn getStakeUpdateIndexAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryMockCalls::getStakeUpdateIndexAtBlockNumber, + ) + } + getStakeUpdateIndexAtBlockNumber + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StakeRegistryMockCalls::delegation) + } + delegation + }, + { + fn getStakeAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryMockCalls::getStakeAtBlockNumberAndIndex) + } + getStakeAtBlockNumberAndIndex + }, + { + fn getLatestStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::getLatestStakeUpdate) + } + getLatestStakeUpdate + }, + { + fn getStakeAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::getStakeAtBlockNumber) + } + getStakeAtBlockNumber + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryMockCalls::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::getMockOperatorId(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::set_updateOperatorStakeReturnBitmap(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::getMockOperatorId(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::set_updateOperatorStakeReturnBitmap(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 [`StakeRegistryMock`](self) events. + pub enum StakeRegistryMockEvents { + MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated), + OperatorStakeUpdate(OperatorStakeUpdate), + QuorumCreated(QuorumCreated), + StrategyAddedToQuorum(StrategyAddedToQuorum), + StrategyMultiplierUpdated(StrategyMultiplierUpdated), + StrategyRemovedFromQuorum(StrategyRemovedFromQuorum), + } + #[automatically_derived] + impl StakeRegistryMockEvents { + /// 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 StakeRegistryMockEvents { + const NAME: &'static str = "StakeRegistryMockEvents"; + 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 StakeRegistryMockEvents { + 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 [`StakeRegistryMock`](self) contract instance. + + See the [wrapper's documentation](`StakeRegistryMockInstance`) 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, + ) -> StakeRegistryMockInstance { + StakeRegistryMockInstance::::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>> + { + StakeRegistryMockInstance::::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 { + StakeRegistryMockInstance::::deploy_builder(provider) + } + /**A [`StakeRegistryMock`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StakeRegistryMock`](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 StakeRegistryMockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StakeRegistryMockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StakeRegistryMockInstance") + .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, + > StakeRegistryMockInstance + { + /**Creates a new wrapper around an on-chain [`StakeRegistryMock`](self) contract instance. + + See the [wrapper's documentation](`StakeRegistryMockInstance`) 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 StakeRegistryMockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StakeRegistryMockInstance { + StakeRegistryMockInstance { + 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, + > StakeRegistryMockInstance + { + /// 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 [`getMockOperatorId`] function. + pub fn getMockOperatorId( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMockOperatorIdCall { operator }) + } + ///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 [`set_updateOperatorStakeReturnBitmap`] function. + pub fn set_updateOperatorStakeReturnBitmap( + &self, + newValue: alloy::sol_types::private::primitives::aliases::U192, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&set_updateOperatorStakeReturnBitmapCall { newValue }) + } + ///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, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::FixedBytes<32>, + _2: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorStakeCall { _0, _1, _2 }) + } + ///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, + > StakeRegistryMockInstance + { + /// 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/middleware/stakeregistrystorage.rs b/crates/utils/src/middleware/stakeregistrystorage.rs new file mode 100644 index 00000000..8955d686 --- /dev/null +++ b/crates/utils/src/middleware/stakeregistrystorage.rs @@ -0,0 +1,7566 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn { + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentTotalStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getLatestStakeUpdateReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeHistoryReturn { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberReturn { + pub _0: u32, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct minimumStakeForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct modifyStrategyParamsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategiesPerQuorumReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsByIndexReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyParamsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateOperatorStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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/middleware/storageslot.rs similarity index 93% rename from crates/utils/src/storageslot.rs rename to crates/utils/src/middleware/storageslot.rs index 6900660d..96da1d68 100644 --- a/crates/utils/src/storageslot.rs +++ b/crates/utils/src/middleware/storageslot.rs @@ -9,29 +9,34 @@ interface StorageSlot {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod StorageSlot { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9c7fee30a73e4b2ba04705e451e9c19b802f42eb2f4ea417e940ec729c9308164736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d76172f31417e95ec3fad554571a7bf4adaf21500697a522be2927956677c81764736f6c634300080c0033 /// ``` #[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", + 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 \xD7ar\xF3\x14\x17\xE9^\xC3\xFA\xD5TW\x1A{\xF4\xAD\xAF!P\x06\x97\xA5\"\xBE)'\x95fw\xC8\x17dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9c7fee30a73e4b2ba04705e451e9c19b802f42eb2f4ea417e940ec729c9308164736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d76172f31417e95ec3fad554571a7bf4adaf21500697a522be2927956677c81764736f6c634300080c0033 /// ``` #[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", + 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 \xD7ar\xF3\x14\x17\xE9^\xC3\xFA\xD5TW\x1A{\xF4\xAD\xAF!P\x06\x97\xA5\"\xBE)'\x95fw\xC8\x17dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`StorageSlot`](self) contract instance. diff --git a/crates/utils/src/strategybase.rs b/crates/utils/src/middleware/strategybase.rs similarity index 70% rename from crates/utils/src/strategybase.rs rename to crates/utils/src/middleware/strategybase.rs index 997df148..83a893f8 100644 --- a/crates/utils/src/strategybase.rs +++ b/crates/utils/src/middleware/strategybase.rs @@ -3,9 +3,11 @@ Generated by the following Solidity interface... ```solidity interface StrategyBase { + event ExchangeRateEmitted(uint256 rate); event Initialized(uint8 version); event Paused(address indexed account, uint256 newPausedStatus); event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event StrategyTokenSet(address token, uint8 decimals); event Unpaused(address indexed account, uint256 newPausedStatus); constructor(address _strategyManager); @@ -389,6 +391,19 @@ interface StrategyBase { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "event", + "name": "ExchangeRateEmitted", + "inputs": [ + { + "name": "rate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, { "type": "event", "name": "Initialized", @@ -440,6 +455,25 @@ interface StrategyBase { ], "anonymous": false }, + { + "type": "event", + "name": "StrategyTokenSet", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "decimals", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, { "type": "event", "name": "Unpaused", @@ -461,41 +495,154 @@ interface StrategyBase { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod StrategyBase { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b50604051620018b9380380620018b98339810160408190526100319161010c565b6001600160a01b03811660805261004661004c565b5061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161174c6200016d6000396000818161019901528181610570015281816109550152610a20015261174c6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046113db565b610310565b005b61014f61015f3660046113f8565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e0366004611411565b610510565b61014f6101f336600461143d565b6106b4565b6101c46102063660046113db565b6107c9565b61014f6107dd565b610232610221366004611476565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046113f8565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c46102843660046113f8565b6108f4565b6101c46102973660046113db565b6108ff565b6102a461090d565b60405161018b91906114c9565b6101c46102bf3660046113db565b61092d565b61014f6102d23660046114fc565b6109c2565b6101c46102e53660046113f8565b610b8b565b6101c46102f83660046113f8565b610bc4565b61014f61030b3660046113f8565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061153d565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061155a565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906115a4565b6104595760405162461bcd60e51b81526004016103b7906115c6565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e883611624565b905060006103e8610607610eb0565b6106119190611624565b9050600061061f878361163c565b90508061062c8489611653565b6106369190611672565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a68685611624565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e91906115a4565b61086a5760405162461bcd60e51b81526004016103b7906115c6565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc9190611624565b905060006103e86108cb610eb0565b6108d59190611624565b9050816108e28583611653565b6108ec9190611672565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d81526020016116ca604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190611694565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e883611624565b905060006103e8610b44610eb0565b610b4e9190611624565b9050600082610b5d8784611653565b610b679190611672565b9050610b73868561163c565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e9190611624565b905060006103e8610bad610eb0565b610bb79190611624565b9050806108e28386611653565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061153d565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b79061155a565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190611694565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611243565b8051909150156107c457808060200190518101906111e491906115a4565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b6060611252848460008561125c565b90505b9392505050565b6060824710156112bd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6113145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b0316858760405161133091906116ad565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b509150915061138282828661138d565b979650505050505050565b6060831561139c575081611255565b8251156113ac5782518084602001fd5b8160405162461bcd60e51b81526004016103b791906114c9565b6001600160a01b03811681146103c957600080fd5b6000602082840312156113ed57600080fd5b8135611255816113c6565b60006020828403121561140a57600080fd5b5035919050565b6000806040838503121561142457600080fd5b823561142f816113c6565b946020939093013593505050565b6000806040838503121561145057600080fd5b823561145b816113c6565b9150602083013561146b816113c6565b809150509250929050565b60006020828403121561148857600080fd5b813560ff8116811461125557600080fd5b60005b838110156114b457818101518382015260200161149c565b838111156114c3576000848401525b50505050565b60208152600082518060208401526114e8816040850160208701611499565b601f01601f19169190910160400192915050565b60008060006060848603121561151157600080fd5b833561151c816113c6565b9250602084013561152c816113c6565b929592945050506040919091013590565b60006020828403121561154f57600080fd5b8151611255816113c6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156115b657600080fd5b8151801515811461125557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116375761163761160e565b500190565b60008282101561164e5761164e61160e565b500390565b600081600019048311821515161561166d5761166d61160e565b500290565b60008261168f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156116a657600080fd5b5051919050565b600082516116bf818460208701611499565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a264697066735822122025b35f1032ae6d3bb61b4872fd219220df0429496a9440af55981863d55a694564736f6c634300080c0033 + ///0x60a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c0033 /// ``` #[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", + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1A\xB48\x03\x80b\0\x1A\xB4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x14V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80Rb\0\0Kb\0\0RV[Pb\0\x01FV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xBFW`@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\x12W`\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\x01?W`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x19=b\0\x01w`\09`\0\x81\x81a\x01\x99\x01R\x81\x81a\x05p\x01R\x81\x81a\t\xF5\x01Ra\n\xC0\x01Ra\x19=`\0\xF3\xFE`\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\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046113db565b610310565b005b61014f61015f3660046113f8565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e0366004611411565b610510565b61014f6101f336600461143d565b6106b4565b6101c46102063660046113db565b6107c9565b61014f6107dd565b610232610221366004611476565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046113f8565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c46102843660046113f8565b6108f4565b6101c46102973660046113db565b6108ff565b6102a461090d565b60405161018b91906114c9565b6101c46102bf3660046113db565b61092d565b61014f6102d23660046114fc565b6109c2565b6101c46102e53660046113f8565b610b8b565b6101c46102f83660046113f8565b610bc4565b61014f61030b3660046113f8565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061153d565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061155a565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906115a4565b6104595760405162461bcd60e51b81526004016103b7906115c6565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e883611624565b905060006103e8610607610eb0565b6106119190611624565b9050600061061f878361163c565b90508061062c8489611653565b6106369190611672565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a68685611624565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e91906115a4565b61086a5760405162461bcd60e51b81526004016103b7906115c6565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc9190611624565b905060006103e86108cb610eb0565b6108d59190611624565b9050816108e28583611653565b6108ec9190611672565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d81526020016116ca604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190611694565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e883611624565b905060006103e8610b44610eb0565b610b4e9190611624565b9050600082610b5d8784611653565b610b679190611672565b9050610b73868561163c565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e9190611624565b905060006103e8610bad610eb0565b610bb79190611624565b9050806108e28386611653565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061153d565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b79061155a565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190611694565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611243565b8051909150156107c457808060200190518101906111e491906115a4565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b6060611252848460008561125c565b90505b9392505050565b6060824710156112bd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6113145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b0316858760405161133091906116ad565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b509150915061138282828661138d565b979650505050505050565b6060831561139c575081611255565b8251156113ac5782518084602001fd5b8160405162461bcd60e51b81526004016103b791906114c9565b6001600160a01b03811681146103c957600080fd5b6000602082840312156113ed57600080fd5b8135611255816113c6565b60006020828403121561140a57600080fd5b5035919050565b6000806040838503121561142457600080fd5b823561142f816113c6565b946020939093013593505050565b6000806040838503121561145057600080fd5b823561145b816113c6565b9150602083013561146b816113c6565b809150509250929050565b60006020828403121561148857600080fd5b813560ff8116811461125557600080fd5b60005b838110156114b457818101518382015260200161149c565b838111156114c3576000848401525b50505050565b60208152600082518060208401526114e8816040850160208701611499565b601f01601f19169190910160400192915050565b60008060006060848603121561151157600080fd5b833561151c816113c6565b9250602084013561152c816113c6565b929592945050506040919091013590565b60006020828403121561154f57600080fd5b8151611255816113c6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156115b657600080fd5b8151801515811461125557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116375761163761160e565b500190565b60008282101561164e5761164e61160e565b500390565b600081600019048311821515161561166d5761166d61160e565b500290565b60008261168f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156116a657600080fd5b5051919050565b600082516116bf818460208701611499565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a264697066735822122025b35f1032ae6d3bb61b4872fd219220df0429496a9440af55981863d55a694564736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c0033 /// ``` #[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", + 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\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\0\x08\x0C\x003", ); + /**Event with signature `ExchangeRateEmitted(uint256)` and selector `0xd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be8`. + ```solidity + event ExchangeRateEmitted(uint256 rate); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ExchangeRateEmitted { + #[allow(missing_docs)] + pub rate: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ExchangeRateEmitted { + 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 = "ExchangeRateEmitted(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { rate: 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.rate, + ), + ) + } + #[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 ExchangeRateEmitted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ExchangeRateEmitted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ExchangeRateEmitted) -> 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -577,7 +724,12 @@ pub mod StrategyBase { ```solidity event Paused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -585,7 +737,12 @@ pub mod StrategyBase { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -676,7 +833,12 @@ pub mod StrategyBase { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -684,7 +846,12 @@ pub mod StrategyBase { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -771,11 +938,125 @@ pub mod StrategyBase { } } }; + /**Event with signature `StrategyTokenSet(address,uint8)` and selector `0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507`. + ```solidity + event StrategyTokenSet(address token, uint8 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct StrategyTokenSet { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub decimals: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyTokenSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + 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 = "StrategyTokenSet(address,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 28u8, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, + 199u8, 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, + 50u8, 122u8, 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + token: data.0, + decimals: 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.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 StrategyTokenSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyTokenSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyTokenSet) -> 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -783,7 +1064,12 @@ pub mod StrategyBase { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -874,7 +1160,7 @@ pub mod StrategyBase { ```solidity constructor(address _strategyManager); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _strategyManager: alloy::sol_types::private::Address, @@ -936,19 +1222,24 @@ pub mod StrategyBase { ```solidity function deposit(address token, uint256 amount) external returns (uint256 newShares); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositReturn { pub newShares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1063,16 +1354,21 @@ pub mod StrategyBase { ```solidity function explanation() external pure returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct explanationCall {} ///Container type for the return parameters of the [`explanation()`](explanationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct explanationReturn { pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1168,17 +1464,22 @@ pub mod StrategyBase { ```solidity function initialize(address _underlyingToken, address _pauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1293,16 +1594,21 @@ pub mod StrategyBase { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1404,14 +1710,19 @@ pub mod StrategyBase { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1507,18 +1818,23 @@ pub mod StrategyBase { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1618,16 +1934,21 @@ pub mod StrategyBase { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1723,16 +2044,21 @@ pub mod StrategyBase { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1828,16 +2154,21 @@ pub mod StrategyBase { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1939,18 +2270,23 @@ pub mod StrategyBase { ```solidity function shares(address user) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2050,18 +2386,23 @@ pub mod StrategyBase { ```solidity function sharesToUnderlying(uint256 amountShares) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesToUnderlyingReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2163,18 +2504,23 @@ pub mod StrategyBase { ```solidity function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct sharesToUnderlyingViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2276,16 +2622,21 @@ pub mod StrategyBase { ```solidity function strategyManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerCall {} ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2381,16 +2732,21 @@ pub mod StrategyBase { ```solidity function totalShares() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSharesCall {} ///Container type for the return parameters of the [`totalShares()`](totalSharesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2486,18 +2842,23 @@ pub mod StrategyBase { ```solidity function underlyingToShares(uint256 amountUnderlying) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingToSharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2599,18 +2960,23 @@ pub mod StrategyBase { ```solidity function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingToSharesViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2712,16 +3078,21 @@ pub mod StrategyBase { ```solidity function underlyingToken() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingTokenCall {} ///Container type for the return parameters of the [`underlyingToken()`](underlyingTokenCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct underlyingTokenReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2817,16 +3188,21 @@ pub mod StrategyBase { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2928,18 +3304,23 @@ pub mod StrategyBase { ```solidity function userUnderlying(address user) external returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct userUnderlyingReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3039,18 +3420,23 @@ pub mod StrategyBase { ```solidity function userUnderlyingView(address user) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct userUnderlyingViewReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3150,7 +3536,7 @@ pub mod StrategyBase { ```solidity function withdraw(address recipient, address token, uint256 amountShares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawCall { pub recipient: alloy::sol_types::private::Address, @@ -3158,10 +3544,15 @@ pub mod StrategyBase { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3796,9 +4187,11 @@ pub mod StrategyBase { } ///Container for all the [`StrategyBase`](self) events. pub enum StrategyBaseEvents { + ExchangeRateEmitted(ExchangeRateEmitted), Initialized(Initialized), Paused(Paused), PauserRegistrySet(PauserRegistrySet), + StrategyTokenSet(StrategyTokenSet), Unpaused(Unpaused), } #[automatically_derived] @@ -3810,6 +4203,11 @@ pub mod StrategyBase { /// /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 28u8, 84u8, 7u8, 7u8, 176u8, 14u8, 181u8, 66u8, 123u8, 107u8, 119u8, 79u8, 199u8, + 153u8, 215u8, 86u8, 81u8, 106u8, 84u8, 174u8, 225u8, 8u8, 182u8, 75u8, 50u8, 122u8, + 204u8, 85u8, 175u8, 85u8, 117u8, 7u8, + ], [ 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, @@ -3830,18 +4228,29 @@ pub mod StrategyBase { 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, ], + [ + 210u8, 73u8, 79u8, 52u8, 121u8, 229u8, 218u8, 73u8, 211u8, 134u8, 101u8, 124u8, + 41u8, 44u8, 97u8, 11u8, 91u8, 1u8, 223u8, 49u8, 61u8, 7u8, 198u8, 46u8, 176u8, + 207u8, 164u8, 153u8, 36u8, 163u8, 27u8, 232u8, + ], ]; } #[automatically_derived] impl alloy_sol_types::SolEventInterface for StrategyBaseEvents { const NAME: &'static str = "StrategyBaseEvents"; - const COUNT: usize = 4usize; + 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::ExchangeRateEmitted) + } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, data, validate, @@ -3858,6 +4267,12 @@ pub mod StrategyBase { ) .map(Self::PauserRegistrySet) } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyTokenSet) + } Some(::SIGNATURE_HASH) => { ::decode_raw_log(topics, data, validate) .map(Self::Unpaused) @@ -3878,6 +4293,9 @@ pub mod StrategyBase { impl alloy_sol_types::private::IntoLogData for StrategyBaseEvents { fn to_log_data(&self) -> alloy_sol_types::private::LogData { match self { + Self::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::Initialized(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -3885,11 +4303,17 @@ pub mod StrategyBase { Self::PauserRegistrySet(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::StrategyTokenSet(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::ExchangeRateEmitted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::Initialized(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -3897,6 +4321,9 @@ pub mod StrategyBase { Self::PauserRegistrySet(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::StrategyTokenSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::Unpaused(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -4243,6 +4670,12 @@ pub mod StrategyBase { ) -> alloy_contract::Event { alloy_contract::Event::new_sol(&self.provider, &self.address) } + ///Creates a new event filter for the [`ExchangeRateEmitted`] event. + pub fn ExchangeRateEmitted_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::() @@ -4257,6 +4690,10 @@ pub mod StrategyBase { ) -> alloy_contract::Event { self.event_filter::() } + ///Creates a new event filter for the [`StrategyTokenSet`] event. + pub fn StrategyTokenSet_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/middleware/strategymanager.rs similarity index 96% rename from crates/utils/src/strategymanager.rs rename to crates/utils/src/middleware/strategymanager.rs index 604e305a..5411bc29 100644 --- a/crates/utils/src/strategymanager.rs +++ b/crates/utils/src/middleware/strategymanager.rs @@ -868,35 +868,45 @@ interface StrategyManager { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod StrategyManager { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea2646970667358221220d180df656724cd64941454eb81318c28ec9c3751aeea874928c7a64c46a9297864736f6c634300080c0033 + ///0x6101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033 /// ``` #[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", + 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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea2646970667358221220d180df656724cd64941454eb81318c28ec9c3751aeea874928c7a64c46a9297864736f6c634300080c0033 + ///0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea26469706673582212209d6fbd275d9b7971f491ebee11f536a9d81a241bd49c115ec917cfd0edbe74bd64736f6c634300080c0033 /// ``` #[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", + 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 \x9Do\xBD']\x9Byq\xF4\x91\xEB\xEE\x11\xF56\xA9\xD8\x1A$\x1B\xD4\x9C\x11^\xC9\x17\xCF\xD0\xED\xBEt\xBDdsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Deposit { #[allow(missing_docs)] @@ -908,7 +918,12 @@ pub mod StrategyManager { #[allow(missing_docs)] pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1009,13 +1024,23 @@ pub mod StrategyManager { ```solidity event Initialized(uint8 version); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Initialized { #[allow(missing_docs)] pub version: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1097,7 +1122,12 @@ pub mod StrategyManager { ```solidity event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1105,7 +1135,12 @@ pub mod StrategyManager { #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1200,7 +1235,12 @@ pub mod StrategyManager { ```solidity event Paused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Paused { #[allow(missing_docs)] @@ -1208,7 +1248,12 @@ pub mod StrategyManager { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1299,7 +1344,12 @@ pub mod StrategyManager { ```solidity event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct PauserRegistrySet { #[allow(missing_docs)] @@ -1307,7 +1357,12 @@ pub mod StrategyManager { #[allow(missing_docs)] pub newPauserRegistry: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1398,13 +1453,23 @@ pub mod StrategyManager { ```solidity event StrategyAddedToDepositWhitelist(address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1486,13 +1551,23 @@ pub mod StrategyManager { ```solidity event StrategyRemovedFromDepositWhitelist(address strategy); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1576,7 +1651,12 @@ pub mod StrategyManager { ```solidity event StrategyWhitelisterChanged(address previousAddress, address newAddress); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct StrategyWhitelisterChanged { #[allow(missing_docs)] @@ -1584,7 +1664,12 @@ pub mod StrategyManager { #[allow(missing_docs)] pub newAddress: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1675,7 +1760,12 @@ pub mod StrategyManager { ```solidity event Unpaused(address indexed account, uint256 newPausedStatus); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Unpaused { #[allow(missing_docs)] @@ -1683,7 +1773,12 @@ pub mod StrategyManager { #[allow(missing_docs)] pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1774,7 +1869,12 @@ pub mod StrategyManager { ```solidity event UpdatedThirdPartyTransfersForbidden(address strategy, bool value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UpdatedThirdPartyTransfersForbidden { #[allow(missing_docs)] @@ -1782,7 +1882,12 @@ pub mod StrategyManager { #[allow(missing_docs)] pub value: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1875,7 +1980,7 @@ pub mod StrategyManager { ```solidity constructor(address _delegation, address _eigenPodManager, address _slasher); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _delegation: alloy::sol_types::private::Address, @@ -1959,16 +2064,21 @@ pub mod StrategyManager { ```solidity function DEPOSIT_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DEPOSIT_TYPEHASHReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2064,16 +2174,21 @@ pub mod StrategyManager { ```solidity function DOMAIN_TYPEHASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DOMAIN_TYPEHASHReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2169,7 +2284,7 @@ pub mod StrategyManager { ```solidity function addShares(address staker, address token, address strategy, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addSharesCall { pub staker: alloy::sol_types::private::Address, @@ -2178,10 +2293,15 @@ pub mod StrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addSharesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2310,7 +2430,7 @@ pub mod StrategyManager { ```solidity function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist, bool[] memory thirdPartyTransfersForbiddenValues) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesToDepositWhitelistCall { pub strategiesToWhitelist: @@ -2318,10 +2438,15 @@ pub mod StrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct addStrategiesToDepositWhitelistReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2443,16 +2568,21 @@ pub mod StrategyManager { ```solidity function delegation() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationCall {} ///Container type for the return parameters of the [`delegation()`](delegationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct delegationReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2548,7 +2678,7 @@ pub mod StrategyManager { ```solidity function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 shares); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositIntoStrategyCall { pub strategy: alloy::sol_types::private::Address, @@ -2556,12 +2686,17 @@ pub mod StrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositIntoStrategyReturn { pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2683,7 +2818,7 @@ pub mod StrategyManager { ```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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositIntoStrategyWithSignatureCall { pub strategy: alloy::sol_types::private::Address, @@ -2694,12 +2829,17 @@ pub mod StrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositIntoStrategyWithSignatureReturn { pub shares: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2850,16 +2990,21 @@ pub mod StrategyManager { ```solidity function domainSeparator() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct domainSeparatorCall {} ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct domainSeparatorReturn { pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2955,16 +3100,21 @@ pub mod StrategyManager { ```solidity function eigenPodManager() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eigenPodManagerCall {} ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eigenPodManagerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3060,20 +3210,25 @@ pub mod StrategyManager { ```solidity function getDeposits(address staker) external view returns (address[] memory, uint256[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3187,7 +3342,7 @@ pub mod StrategyManager { ```solidity function initialize(address initialOwner, address initialStrategyWhitelister, address _pauserRegistry, uint256 initialPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeCall { pub initialOwner: alloy::sol_types::private::Address, @@ -3196,10 +3351,15 @@ pub mod StrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3333,18 +3493,23 @@ pub mod StrategyManager { ```solidity function nonces(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct noncesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3444,16 +3609,21 @@ pub mod StrategyManager { ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3549,16 +3719,21 @@ pub mod StrategyManager { ```solidity function pause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3660,14 +3835,19 @@ pub mod StrategyManager { ```solidity function pauseAll() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllCall {} ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauseAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3763,18 +3943,23 @@ pub mod StrategyManager { ```solidity function paused(uint8 index) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct paused_0Return { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3874,16 +4059,21 @@ pub mod StrategyManager { ```solidity function paused() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3979,16 +4169,21 @@ pub mod StrategyManager { ```solidity function pauserRegistry() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryCall {} ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct pauserRegistryReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4084,7 +4279,7 @@ pub mod StrategyManager { ```solidity function removeShares(address staker, address strategy, uint256 shares) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeSharesCall { pub staker: alloy::sol_types::private::Address, @@ -4092,10 +4287,15 @@ pub mod StrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeSharesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4217,17 +4417,22 @@ pub mod StrategyManager { ```solidity function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct removeStrategiesFromDepositWhitelistReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4332,14 +4537,19 @@ pub mod StrategyManager { ```solidity function renounceOwnership() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipCall {} ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct renounceOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4435,16 +4645,21 @@ pub mod StrategyManager { ```solidity function setPauserRegistry(address newPauserRegistry) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setPauserRegistryReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4546,16 +4761,21 @@ pub mod StrategyManager { ```solidity function setStrategyWhitelister(address newStrategyWhitelister) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setStrategyWhitelisterReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4657,17 +4877,22 @@ pub mod StrategyManager { ```solidity function setThirdPartyTransfersForbidden(address strategy, bool value) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setThirdPartyTransfersForbiddenReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4779,16 +5004,21 @@ pub mod StrategyManager { ```solidity function slasher() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct slasherCall {} ///Container type for the return parameters of the [`slasher()`](slasherCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct slasherReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4884,19 +5114,24 @@ pub mod StrategyManager { ```solidity function stakerStrategyList(address, uint256) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerStrategyListReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5011,18 +5246,23 @@ pub mod StrategyManager { ```solidity function stakerStrategyListLength(address staker) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerStrategyListLengthReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5122,19 +5362,24 @@ pub mod StrategyManager { ```solidity function stakerStrategyShares(address, address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct stakerStrategySharesReturn { pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5249,18 +5494,23 @@ pub mod StrategyManager { ```solidity function strategyIsWhitelistedForDeposit(address) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyIsWhitelistedForDepositReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5360,16 +5610,21 @@ pub mod StrategyManager { ```solidity function strategyWhitelister() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyWhitelisterCall {} ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct strategyWhitelisterReturn { pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5465,18 +5720,23 @@ pub mod StrategyManager { ```solidity function thirdPartyTransfersForbidden(address) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct thirdPartyTransfersForbiddenReturn { pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5576,16 +5836,21 @@ pub mod StrategyManager { ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5685,16 +5950,21 @@ pub mod StrategyManager { ```solidity function unpause(uint256 newPausedStatus) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unpauseReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5796,7 +6066,7 @@ pub mod StrategyManager { ```solidity function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawSharesAsTokensCall { pub recipient: alloy::sol_types::private::Address, @@ -5805,10 +6075,15 @@ pub mod StrategyManager { 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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawSharesAsTokensReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/strategymanagermock.rs b/crates/utils/src/middleware/strategymanagermock.rs new file mode 100644 index 00000000..fdd87a6d --- /dev/null +++ b/crates/utils/src/middleware/strategymanagermock.rs @@ -0,0 +1,9153 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StrategyManagerMock { + 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); + + function addShares(address staker, address token, address strategy, uint256 shares) external; + function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist, bool[] memory thirdPartyTransfersForbiddenValues) external; + function beaconChainETHStrategy() external view returns (address); + function cumulativeWithdrawalsQueued(address) external view returns (uint256); + function delegation() external view returns (address); + function depositBeaconChainETH(address staker, uint256 amount) external; + function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256); + 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 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 recordBeaconChainETHBalanceUpdate(address overcommittedPodOwner, uint256 beaconChainETHStrategyIndex, int256 sharesDelta) external; + function removeShares(address staker, address strategy, uint256 shares) external; + function removeStrategiesFromDepositWhitelist(address[] memory) external pure; + function renounceOwnership() external; + function setAddresses(address _delegation, address _eigenPodManager, address _slasher) external; + function setDeposits(address staker, address[] memory _strategiesToReturn, uint256[] memory _sharesToReturn) external; + function setPauserRegistry(address newPauserRegistry) external; + function setStakerStrategyListLengthReturnValue(uint256 valueToSet) external; + function setStrategyWhitelist(address strategy, bool value) external; + function setStrategyWhitelister(address newStrategyWhitelister) external; + function setThirdPartyTransfersForbidden(address strategy, bool value) external; + function sharesToReturn(address, uint256) external view returns (uint256); + function slasher() external view returns (address); + function stakerStrategyListLength(address) external view returns (uint256); + function stakerStrategyListLengthReturnValue() external view returns (uint256); + function stakerStrategyShares(address user, address strategy) external view returns (uint256 shares); + function stakerStrats(address staker) external view returns (address[] memory); + function strategiesToReturn(address, uint256) external view returns (address); + 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": "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": "beaconChainETHStrategy", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "cumulativeWithdrawalsQueued", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositBeaconChainETH", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "", + "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": "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": "recordBeaconChainETHBalanceUpdate", + "inputs": [ + { + "name": "overcommittedPodOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "beaconChainETHStrategyIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "sharesDelta", + "type": "int256", + "internalType": "int256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setAddresses", + "inputs": [ + { + "name": "_delegation", + "type": "address", + "internalType": "contract IDelegationManager" + }, + { + "name": "_eigenPodManager", + "type": "address", + "internalType": "contract IEigenPodManager" + }, + { + "name": "_slasher", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setDeposits", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "_strategiesToReturn", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "_sharesToReturn", + "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": "setStakerStrategyListLengthReturnValue", + "inputs": [ + { + "name": "valueToSet", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setStrategyWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "value", + "type": "bool", + "internalType": "bool" + } + ], + "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": "sharesToReturn", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyListLength", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyListLengthReturnValue", + "inputs": [], + "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": "stakerStrats", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategiesToReturn", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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::pub_underscore_fields, + clippy::style +)] +pub mod StrategyManagerMock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061176e806100206000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806394f649dd11610146578063c4623ea1116100c3578063e243dc3c11610087578063e243dc3c146105a9578063e2a818c5146105bc578063e7a050aa146105cf578063f2fde38b146105e6578063f698da25146105f9578063fabc1cbc1461060057600080fd5b8063c4623ea114610550578063c608c7f314610564578063c665670214610572578063df5b354714610583578063df5cf7231461059657600080fd5b80639f00fa241161010a5780639f00fa24146104ef578063a178848414610501578063a1ca780b14610521578063b13442711461052f578063b5d8b5b81461054257600080fd5b806394f649dd1461044c578063967fc0d21461046d5780639a9519e0146104805780639b4da03d146104935780639b7e2f77146104b657600080fd5b80635c975abb116101d4578063886f119511610198578063886f1195146103f95780638b8aac3c1461040c5780638c80d4e5146104215780638da5cb5b146104345780639104c3191461044557600080fd5b80635c975abb1461039d57806363fca888146103a5578063663c1de4146103b8578063715018a6146103db5780637a7e0d92146103e357600080fd5b8063363bf9641161021b578063363bf964146102d75780634665bcda146103245780634e5a42631461034f578063595c6a67146103625780635ac86ab71461036a57600080fd5b806301f820b2146102585780630d3908f41461027457806310d67a2f14610295578063136439dd146102aa57806332e89ace146102bd575b600080fd5b61026160d25481565b6040519081526020015b60405180910390f35b61028861028236600461106e565b50606090565b60405161026b91906110d6565b6102a86102a336600461106e565b610613565b005b6102a86102b83660046110e9565b6106cc565b6102616102cb366004611118565b60009695505050505050565b6102a86102e5366004611213565b60c980546001600160a01b039485166001600160a01b03199182161790915560cb80549285169282169290921790915560ca8054929093169116179055565b60ca54610337906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b6102a861035d36600461126c565b61080b565b6102a8610879565b61038d6103783660046112a5565b609854600160ff9092169190911b9081161490565b604051901515815260200161026b565b609854610261565b6102616103b33660046112c8565b610940565b61038d6103c636600461106e565b60cf6020526000908152604090205460ff1681565b6102a8610971565b6102616103f13660046112f4565b600092915050565b609754610337906001600160a01b031681565b61026161041a36600461106e565b5060d25490565b6102a861042f366004611322565b505050565b6033546001600160a01b0316610337565b6000610337565b61045f61045a36600461106e565b610985565b60405161026b929190611363565b60cc54610337906001600160a01b031681565b6102a861048e3660046110e9565b60d255565b61038d6104a136600461106e565b60d16020526000908152604090205460ff1681565b6102a86104c436600461126c565b6001600160a01b0391909116600090815260cf60205260409020805460ff1916911515919091179055565b6102a86104fd3660046112c8565b5050565b61026161050f36600461106e565b60d06020526000908152604090205481565b6102a861042f3660046113ba565b60cb54610337906001600160a01b031681565b6102a86104fd36600461143b565b6102a861055e36600461147d565b50505050565b6102a861055e3660046114ce565b6102a861058036600461106e565b50565b6102a8610591366004611521565b610a5e565b60c954610337906001600160a01b031681565b6103376105b73660046112c8565b610b4f565b6102a86105ca36600461158d565b610b87565b6102616105dd366004611322565b60009392505050565b6102a86105f436600461106e565b610c31565b6000610261565b6102a861060e3660046110e9565b610ca7565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068a9190611610565b6001600160a01b0316336001600160a01b0316146106c35760405162461bcd60e51b81526004016106ba9061162d565b60405180910390fd5b61058081610e03565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107389190611677565b6107545760405162461bcd60e51b81526004016106ba90611694565b609854818116146107cd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106ba565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e59190611677565b6109015760405162461bcd60e51b81526004016106ba90611694565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ce602052816000526040600020818154811061095c57600080fd5b90600052602060002001600091509150505481565b610979610efa565b6109836000610f54565b565b6001600160a01b038116600090815260cd6020908152604080832060ce8352928190208354825181850281018501909352808352606094859490939184918301828280156109fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109de575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191906000526020600020905b815481526020019060010190808311610a3a575b5050505050905091509150915091565b60005b83811015610b4857600160cf6000878785818110610a8157610a816116dc565b9050602002016020810190610a96919061106e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055828282818110610ad057610ad06116dc565b9050602002016020810190610ae591906116f2565b60d16000878785818110610afb57610afb6116dc565b9050602002016020810190610b10919061106e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b418161170f565b9050610a61565b5050505050565b60cd6020528160005260406000208181548110610b6b57600080fd5b6000918252602090912001546001600160a01b03169150829050565b828114610be25760405162461bcd60e51b8152602060048201526024808201527f53747261746567794d616e616765724d6f636b3a206c656e677468206d69736d6044820152630c2e8c6d60e31b60648201526084016106ba565b6001600160a01b038516600090815260cd60205260409020610c05908585610fa6565b506001600160a01b038516600090815260ce60205260409020610c29908383611009565b505050505050565b610c39610efa565b6001600160a01b038116610c9e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ba565b61058081610f54565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e9190611610565b6001600160a01b0316336001600160a01b031614610d4e5760405162461bcd60e51b81526004016106ba9061162d565b609854198119609854191614610dcc5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106ba565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610800565b6001600160a01b038116610e915760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106ba565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146109835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ba565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215610ff9579160200282015b82811115610ff95781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190610fc6565b50611005929150611044565b5090565b828054828255906000526020600020908101928215610ff9579160200282015b82811115610ff9578235825591602001919060010190611029565b5b808211156110055760008155600101611045565b6001600160a01b038116811461058057600080fd5b60006020828403121561108057600080fd5b813561108b81611059565b9392505050565b600081518084526020808501945080840160005b838110156110cb5781516001600160a01b0316875295820195908201906001016110a6565b509495945050505050565b60208152600061108b6020830184611092565b6000602082840312156110fb57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c0878903121561113157600080fd5b863561113c81611059565b9550602087013561114c81611059565b945060408701359350606087013561116381611059565b92506080870135915060a087013567ffffffffffffffff8082111561118757600080fd5b818901915089601f83011261119b57600080fd5b8135818111156111ad576111ad611102565b604051601f8201601f19908116603f011681019083821181831017156111d5576111d5611102565b816040528281528c60208487010111156111ee57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b60008060006060848603121561122857600080fd5b833561123381611059565b9250602084013561124381611059565b9150604084013561125381611059565b809150509250925092565b801515811461058057600080fd5b6000806040838503121561127f57600080fd5b823561128a81611059565b9150602083013561129a8161125e565b809150509250929050565b6000602082840312156112b757600080fd5b813560ff8116811461108b57600080fd5b600080604083850312156112db57600080fd5b82356112e681611059565b946020939093013593505050565b6000806040838503121561130757600080fd5b823561131281611059565b9150602083013561129a81611059565b60008060006060848603121561133757600080fd5b833561134281611059565b9250602084013561135281611059565b929592945050506040919091013590565b6040815260006113766040830185611092565b82810360208481019190915284518083528582019282019060005b818110156113ad57845183529383019391830191600101611391565b5090979650505050505050565b6000806000606084860312156113cf57600080fd5b83356113da81611059565b95602085013595506040909401359392505050565b60008083601f84011261140157600080fd5b50813567ffffffffffffffff81111561141957600080fd5b6020830191508360208260051b850101111561143457600080fd5b9250929050565b6000806020838503121561144e57600080fd5b823567ffffffffffffffff81111561146557600080fd5b611471858286016113ef565b90969095509350505050565b6000806000806080858703121561149357600080fd5b843561149e81611059565b935060208501356114ae81611059565b925060408501356114be81611059565b9396929550929360600135925050565b600080600080608085870312156114e457600080fd5b84356114ef81611059565b935060208501356114ff81611059565b925060408501359150606085013561151681611059565b939692955090935050565b6000806000806040858703121561153757600080fd5b843567ffffffffffffffff8082111561154f57600080fd5b61155b888389016113ef565b9096509450602087013591508082111561157457600080fd5b50611581878288016113ef565b95989497509550505050565b6000806000806000606086880312156115a557600080fd5b85356115b081611059565b9450602086013567ffffffffffffffff808211156115cd57600080fd5b6115d989838a016113ef565b909650945060408801359150808211156115f257600080fd5b506115ff888289016113ef565b969995985093965092949392505050565b60006020828403121561162257600080fd5b815161108b81611059565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561168957600080fd5b815161108b8161125e565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561170457600080fd5b813561108b8161125e565b600060001982141561173157634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220caffcc84a5697fe19faf081ea8bb2e8e3dbe9599cf8072a38bb63dc84c09327c64736f6c634300080c0033 + /// ``` + #[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\x17n\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02SW`\x005`\xE0\x1C\x80c\x94\xF6I\xDD\x11a\x01FW\x80c\xC4b>\xA1\x11a\0\xC3W\x80c\xE2C\xDC<\x11a\0\x87W\x80c\xE2C\xDC<\x14a\x05\xA9W\x80c\xE2\xA8\x18\xC5\x14a\x05\xBCW\x80c\xE7\xA0P\xAA\x14a\x05\xCFW\x80c\xF2\xFD\xE3\x8B\x14a\x05\xE6W\x80c\xF6\x98\xDA%\x14a\x05\xF9W\x80c\xFA\xBC\x1C\xBC\x14a\x06\0W`\0\x80\xFD[\x80c\xC4b>\xA1\x14a\x05PW\x80c\xC6\x08\xC7\xF3\x14a\x05dW\x80c\xC6eg\x02\x14a\x05rW\x80c\xDF[5G\x14a\x05\x83W\x80c\xDF\\\xF7#\x14a\x05\x96W`\0\x80\xFD[\x80c\x9F\0\xFA$\x11a\x01\nW\x80c\x9F\0\xFA$\x14a\x04\xEFW\x80c\xA1x\x84\x84\x14a\x05\x01W\x80c\xA1\xCAx\x0B\x14a\x05!W\x80c\xB14Bq\x14a\x05/W\x80c\xB5\xD8\xB5\xB8\x14a\x05BW`\0\x80\xFD[\x80c\x94\xF6I\xDD\x14a\x04LW\x80c\x96\x7F\xC0\xD2\x14a\x04mW\x80c\x9A\x95\x19\xE0\x14a\x04\x80W\x80c\x9BM\xA0=\x14a\x04\x93W\x80c\x9B~/w\x14a\x04\xB6W`\0\x80\xFD[\x80c\\\x97Z\xBB\x11a\x01\xD4W\x80c\x88o\x11\x95\x11a\x01\x98W\x80c\x88o\x11\x95\x14a\x03\xF9W\x80c\x8B\x8A\xAC<\x14a\x04\x0CW\x80c\x8C\x80\xD4\xE5\x14a\x04!W\x80c\x8D\xA5\xCB[\x14a\x044W\x80c\x91\x04\xC3\x19\x14a\x04EW`\0\x80\xFD[\x80c\\\x97Z\xBB\x14a\x03\x9DW\x80cc\xFC\xA8\x88\x14a\x03\xA5W\x80cf<\x1D\xE4\x14a\x03\xB8W\x80cqP\x18\xA6\x14a\x03\xDBW\x80cz~\r\x92\x14a\x03\xE3W`\0\x80\xFD[\x80c6;\xF9d\x11a\x02\x1BW\x80c6;\xF9d\x14a\x02\xD7W\x80cFe\xBC\xDA\x14a\x03$W\x80cNZBc\x14a\x03OW\x80cY\\jg\x14a\x03bW\x80cZ\xC8j\xB7\x14a\x03jW`\0\x80\xFD[\x80c\x01\xF8 \xB2\x14a\x02XW\x80c\r9\x08\xF4\x14a\x02tW\x80c\x10\xD6z/\x14a\x02\x95W\x80c\x13d9\xDD\x14a\x02\xAAW\x80c2\xE8\x9A\xCE\x14a\x02\xBDW[`\0\x80\xFD[a\x02a`\xD2T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x88a\x02\x826`\x04a\x10nV[P``\x90V[`@Qa\x02k\x91\x90a\x10\xD6V[a\x02\xA8a\x02\xA36`\x04a\x10nV[a\x06\x13V[\0[a\x02\xA8a\x02\xB86`\x04a\x10\xE9V[a\x06\xCCV[a\x02aa\x02\xCB6`\x04a\x11\x18V[`\0\x96\x95PPPPPPV[a\x02\xA8a\x02\xE56`\x04a\x12\x13V[`\xC9\x80T`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\xCB\x80T\x92\x85\x16\x92\x82\x16\x92\x90\x92\x17\x90\x91U`\xCA\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`\xCATa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02kV[a\x02\xA8a\x03]6`\x04a\x12lV[a\x08\x0BV[a\x02\xA8a\x08yV[a\x03\x8Da\x03x6`\x04a\x12\xA5V[`\x98T`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02kV[`\x98Ta\x02aV[a\x02aa\x03\xB36`\x04a\x12\xC8V[a\t@V[a\x03\x8Da\x03\xC66`\x04a\x10nV[`\xCF` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xA8a\tqV[a\x02aa\x03\xF16`\x04a\x12\xF4V[`\0\x92\x91PPV[`\x97Ta\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02aa\x04\x1A6`\x04a\x10nV[P`\xD2T\x90V[a\x02\xA8a\x04/6`\x04a\x13\"V[PPPV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x037V[`\0a\x037V[a\x04_a\x04Z6`\x04a\x10nV[a\t\x85V[`@Qa\x02k\x92\x91\x90a\x13cV[`\xCCTa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\xA8a\x04\x8E6`\x04a\x10\xE9V[`\xD2UV[a\x03\x8Da\x04\xA16`\x04a\x10nV[`\xD1` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xA8a\x04\xC46`\x04a\x12lV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R`\xCF` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[a\x02\xA8a\x04\xFD6`\x04a\x12\xC8V[PPV[a\x02aa\x05\x0F6`\x04a\x10nV[`\xD0` R`\0\x90\x81R`@\x90 T\x81V[a\x02\xA8a\x04/6`\x04a\x13\xBAV[`\xCBTa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\xA8a\x04\xFD6`\x04a\x14;V[a\x02\xA8a\x05^6`\x04a\x14}V[PPPPV[a\x02\xA8a\x05^6`\x04a\x14\xCEV[a\x02\xA8a\x05\x806`\x04a\x10nV[PV[a\x02\xA8a\x05\x916`\x04a\x15!V[a\n^V[`\xC9Ta\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x037a\x05\xB76`\x04a\x12\xC8V[a\x0BOV[a\x02\xA8a\x05\xCA6`\x04a\x15\x8DV[a\x0B\x87V[a\x02aa\x05\xDD6`\x04a\x13\"V[`\0\x93\x92PPPV[a\x02\xA8a\x05\xF46`\x04a\x10nV[a\x0C1V[`\0a\x02aV[a\x02\xA8a\x06\x0E6`\x04a\x10\xE9V[a\x0C\xA7V[`\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\x06fW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x8A\x91\x90a\x16\x10V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16-V[`@Q\x80\x91\x03\x90\xFD[a\x05\x80\x81a\x0E\x03V[`\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\x07\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x078\x91\x90a\x16wV[a\x07TW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16\x94V[`\x98T\x81\x81\x16\x14a\x07\xCDW`@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\xBAV[`\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[`@\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`\xD1` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[`\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\x08\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xE5\x91\x90a\x16wV[a\t\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16\x94V[`\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[`\xCE` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\t\\W`\0\x80\xFD[\x90`\0R` `\0 \x01`\0\x91P\x91PPT\x81V[a\tya\x0E\xFAV[a\t\x83`\0a\x0FTV[V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x83R\x92\x81\x90 \x83T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x85\x94\x90\x93\x91\x84\x91\x83\x01\x82\x82\x80\x15a\t\xFCW` \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\t\xDEW[PPPPP\x91P\x80\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\nNW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\n:W[PPPPP\x90P\x91P\x91P\x91P\x91V[`\0[\x83\x81\x10\x15a\x0BHW`\x01`\xCF`\0\x87\x87\x85\x81\x81\x10a\n\x81Wa\n\x81a\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\n\x96\x91\x90a\x10nV[`\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\x82\x82\x82\x81\x81\x10a\n\xD0Wa\n\xD0a\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\n\xE5\x91\x90a\x16\xF2V[`\xD1`\0\x87\x87\x85\x81\x81\x10a\n\xFBWa\n\xFBa\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\x0B\x10\x91\x90a\x10nV[`\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\x90Ua\x0BA\x81a\x17\x0FV[\x90Pa\naV[PPPPPV[`\xCD` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x0BkW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[\x82\x81\x14a\x0B\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FStrategyManagerMock: length mism`D\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\xCD` R`@\x90 a\x0C\x05\x90\x85\x85a\x0F\xA6V[P`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\xCE` R`@\x90 a\x0C)\x90\x83\x83a\x10\tV[PPPPPPV[a\x0C9a\x0E\xFAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0C\x9EW`@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\xBAV[a\x05\x80\x81a\x0FTV[`\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\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\x16\x10V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16-V[`\x98T\x19\x81\x19`\x98T\x19\x16\x14a\r\xCCW`@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\xBAV[`\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\x08\0V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0E\x91W`@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\xBAV[`\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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x83W`@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\xBAV[`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[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15a\x0F\xF9W\x91` \x02\x82\x01[\x82\x81\x11\x15a\x0F\xF9W\x81T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x845\x16\x17\x82U` \x90\x92\x01\x91`\x01\x90\x91\x01\x90a\x0F\xC6V[Pa\x10\x05\x92\x91Pa\x10DV[P\x90V[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15a\x0F\xF9W\x91` \x02\x82\x01[\x82\x81\x11\x15a\x0F\xF9W\x825\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x10)V[[\x80\x82\x11\x15a\x10\x05W`\0\x81U`\x01\x01a\x10EV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05\x80W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x10\x80W`\0\x80\xFD[\x815a\x10\x8B\x81a\x10YV[\x93\x92PPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x10\xCBW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x10\xA6V[P\x94\x95\x94PPPPPV[` \x81R`\0a\x10\x8B` \x83\x01\x84a\x10\x92V[`\0` \x82\x84\x03\x12\x15a\x10\xFBW`\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\x111W`\0\x80\xFD[\x865a\x11<\x81a\x10YV[\x95P` \x87\x015a\x11L\x81a\x10YV[\x94P`@\x87\x015\x93P``\x87\x015a\x11c\x81a\x10YV[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\x87W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x11\x9BW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xADWa\x11\xADa\x11\x02V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x11\xD5Wa\x11\xD5a\x11\x02V[\x81`@R\x82\x81R\x8C` \x84\x87\x01\x01\x11\x15a\x11\xEEW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x12(W`\0\x80\xFD[\x835a\x123\x81a\x10YV[\x92P` \x84\x015a\x12C\x81a\x10YV[\x91P`@\x84\x015a\x12S\x81a\x10YV[\x80\x91PP\x92P\x92P\x92V[\x80\x15\x15\x81\x14a\x05\x80W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x12\x7FW`\0\x80\xFD[\x825a\x12\x8A\x81a\x10YV[\x91P` \x83\x015a\x12\x9A\x81a\x12^V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\xB7W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x10\x8BW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xDBW`\0\x80\xFD[\x825a\x12\xE6\x81a\x10YV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x13\x07W`\0\x80\xFD[\x825a\x13\x12\x81a\x10YV[\x91P` \x83\x015a\x12\x9A\x81a\x10YV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x137W`\0\x80\xFD[\x835a\x13B\x81a\x10YV[\x92P` \x84\x015a\x13R\x81a\x10YV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`@\x81R`\0a\x13v`@\x83\x01\x85a\x10\x92V[\x82\x81\x03` \x84\x81\x01\x91\x90\x91R\x84Q\x80\x83R\x85\x82\x01\x92\x82\x01\x90`\0[\x81\x81\x10\x15a\x13\xADW\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x13\x91V[P\x90\x97\x96PPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x13\xCFW`\0\x80\xFD[\x835a\x13\xDA\x81a\x10YV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x14\x01W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\x19W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x144W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x14NW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14eW`\0\x80\xFD[a\x14q\x85\x82\x86\x01a\x13\xEFV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\x93W`\0\x80\xFD[\x845a\x14\x9E\x81a\x10YV[\x93P` \x85\x015a\x14\xAE\x81a\x10YV[\x92P`@\x85\x015a\x14\xBE\x81a\x10YV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\xE4W`\0\x80\xFD[\x845a\x14\xEF\x81a\x10YV[\x93P` \x85\x015a\x14\xFF\x81a\x10YV[\x92P`@\x85\x015\x91P``\x85\x015a\x15\x16\x81a\x10YV[\x93\x96\x92\x95P\x90\x93PPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x157W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15OW`\0\x80\xFD[a\x15[\x88\x83\x89\x01a\x13\xEFV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x15tW`\0\x80\xFD[Pa\x15\x81\x87\x82\x88\x01a\x13\xEFV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x15\xA5W`\0\x80\xFD[\x855a\x15\xB0\x81a\x10YV[\x94P` \x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\xCDW`\0\x80\xFD[a\x15\xD9\x89\x83\x8A\x01a\x13\xEFV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\x15\xF2W`\0\x80\xFD[Pa\x15\xFF\x88\x82\x89\x01a\x13\xEFV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x16\"W`\0\x80\xFD[\x81Qa\x10\x8B\x81a\x10YV[` \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\x16\x89W`\0\x80\xFD[\x81Qa\x10\x8B\x81a\x12^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[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x17\x04W`\0\x80\xFD[\x815a\x10\x8B\x81a\x12^V[`\0`\0\x19\x82\x14\x15a\x171WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xCA\xFF\xCC\x84\xA5i\x7F\xE1\x9F\xAF\x08\x1E\xA8\xBB.\x8E=\xBE\x95\x99\xCF\x80r\xA3\x8B\xB6=\xC8L\t2|dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106102535760003560e01c806394f649dd11610146578063c4623ea1116100c3578063e243dc3c11610087578063e243dc3c146105a9578063e2a818c5146105bc578063e7a050aa146105cf578063f2fde38b146105e6578063f698da25146105f9578063fabc1cbc1461060057600080fd5b8063c4623ea114610550578063c608c7f314610564578063c665670214610572578063df5b354714610583578063df5cf7231461059657600080fd5b80639f00fa241161010a5780639f00fa24146104ef578063a178848414610501578063a1ca780b14610521578063b13442711461052f578063b5d8b5b81461054257600080fd5b806394f649dd1461044c578063967fc0d21461046d5780639a9519e0146104805780639b4da03d146104935780639b7e2f77146104b657600080fd5b80635c975abb116101d4578063886f119511610198578063886f1195146103f95780638b8aac3c1461040c5780638c80d4e5146104215780638da5cb5b146104345780639104c3191461044557600080fd5b80635c975abb1461039d57806363fca888146103a5578063663c1de4146103b8578063715018a6146103db5780637a7e0d92146103e357600080fd5b8063363bf9641161021b578063363bf964146102d75780634665bcda146103245780634e5a42631461034f578063595c6a67146103625780635ac86ab71461036a57600080fd5b806301f820b2146102585780630d3908f41461027457806310d67a2f14610295578063136439dd146102aa57806332e89ace146102bd575b600080fd5b61026160d25481565b6040519081526020015b60405180910390f35b61028861028236600461106e565b50606090565b60405161026b91906110d6565b6102a86102a336600461106e565b610613565b005b6102a86102b83660046110e9565b6106cc565b6102616102cb366004611118565b60009695505050505050565b6102a86102e5366004611213565b60c980546001600160a01b039485166001600160a01b03199182161790915560cb80549285169282169290921790915560ca8054929093169116179055565b60ca54610337906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b6102a861035d36600461126c565b61080b565b6102a8610879565b61038d6103783660046112a5565b609854600160ff9092169190911b9081161490565b604051901515815260200161026b565b609854610261565b6102616103b33660046112c8565b610940565b61038d6103c636600461106e565b60cf6020526000908152604090205460ff1681565b6102a8610971565b6102616103f13660046112f4565b600092915050565b609754610337906001600160a01b031681565b61026161041a36600461106e565b5060d25490565b6102a861042f366004611322565b505050565b6033546001600160a01b0316610337565b6000610337565b61045f61045a36600461106e565b610985565b60405161026b929190611363565b60cc54610337906001600160a01b031681565b6102a861048e3660046110e9565b60d255565b61038d6104a136600461106e565b60d16020526000908152604090205460ff1681565b6102a86104c436600461126c565b6001600160a01b0391909116600090815260cf60205260409020805460ff1916911515919091179055565b6102a86104fd3660046112c8565b5050565b61026161050f36600461106e565b60d06020526000908152604090205481565b6102a861042f3660046113ba565b60cb54610337906001600160a01b031681565b6102a86104fd36600461143b565b6102a861055e36600461147d565b50505050565b6102a861055e3660046114ce565b6102a861058036600461106e565b50565b6102a8610591366004611521565b610a5e565b60c954610337906001600160a01b031681565b6103376105b73660046112c8565b610b4f565b6102a86105ca36600461158d565b610b87565b6102616105dd366004611322565b60009392505050565b6102a86105f436600461106e565b610c31565b6000610261565b6102a861060e3660046110e9565b610ca7565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068a9190611610565b6001600160a01b0316336001600160a01b0316146106c35760405162461bcd60e51b81526004016106ba9061162d565b60405180910390fd5b61058081610e03565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107389190611677565b6107545760405162461bcd60e51b81526004016106ba90611694565b609854818116146107cd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106ba565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e59190611677565b6109015760405162461bcd60e51b81526004016106ba90611694565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ce602052816000526040600020818154811061095c57600080fd5b90600052602060002001600091509150505481565b610979610efa565b6109836000610f54565b565b6001600160a01b038116600090815260cd6020908152604080832060ce8352928190208354825181850281018501909352808352606094859490939184918301828280156109fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109de575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191906000526020600020905b815481526020019060010190808311610a3a575b5050505050905091509150915091565b60005b83811015610b4857600160cf6000878785818110610a8157610a816116dc565b9050602002016020810190610a96919061106e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055828282818110610ad057610ad06116dc565b9050602002016020810190610ae591906116f2565b60d16000878785818110610afb57610afb6116dc565b9050602002016020810190610b10919061106e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b418161170f565b9050610a61565b5050505050565b60cd6020528160005260406000208181548110610b6b57600080fd5b6000918252602090912001546001600160a01b03169150829050565b828114610be25760405162461bcd60e51b8152602060048201526024808201527f53747261746567794d616e616765724d6f636b3a206c656e677468206d69736d6044820152630c2e8c6d60e31b60648201526084016106ba565b6001600160a01b038516600090815260cd60205260409020610c05908585610fa6565b506001600160a01b038516600090815260ce60205260409020610c29908383611009565b505050505050565b610c39610efa565b6001600160a01b038116610c9e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ba565b61058081610f54565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e9190611610565b6001600160a01b0316336001600160a01b031614610d4e5760405162461bcd60e51b81526004016106ba9061162d565b609854198119609854191614610dcc5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106ba565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610800565b6001600160a01b038116610e915760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106ba565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146109835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ba565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215610ff9579160200282015b82811115610ff95781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190610fc6565b50611005929150611044565b5090565b828054828255906000526020600020908101928215610ff9579160200282015b82811115610ff9578235825591602001919060010190611029565b5b808211156110055760008155600101611045565b6001600160a01b038116811461058057600080fd5b60006020828403121561108057600080fd5b813561108b81611059565b9392505050565b600081518084526020808501945080840160005b838110156110cb5781516001600160a01b0316875295820195908201906001016110a6565b509495945050505050565b60208152600061108b6020830184611092565b6000602082840312156110fb57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c0878903121561113157600080fd5b863561113c81611059565b9550602087013561114c81611059565b945060408701359350606087013561116381611059565b92506080870135915060a087013567ffffffffffffffff8082111561118757600080fd5b818901915089601f83011261119b57600080fd5b8135818111156111ad576111ad611102565b604051601f8201601f19908116603f011681019083821181831017156111d5576111d5611102565b816040528281528c60208487010111156111ee57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b60008060006060848603121561122857600080fd5b833561123381611059565b9250602084013561124381611059565b9150604084013561125381611059565b809150509250925092565b801515811461058057600080fd5b6000806040838503121561127f57600080fd5b823561128a81611059565b9150602083013561129a8161125e565b809150509250929050565b6000602082840312156112b757600080fd5b813560ff8116811461108b57600080fd5b600080604083850312156112db57600080fd5b82356112e681611059565b946020939093013593505050565b6000806040838503121561130757600080fd5b823561131281611059565b9150602083013561129a81611059565b60008060006060848603121561133757600080fd5b833561134281611059565b9250602084013561135281611059565b929592945050506040919091013590565b6040815260006113766040830185611092565b82810360208481019190915284518083528582019282019060005b818110156113ad57845183529383019391830191600101611391565b5090979650505050505050565b6000806000606084860312156113cf57600080fd5b83356113da81611059565b95602085013595506040909401359392505050565b60008083601f84011261140157600080fd5b50813567ffffffffffffffff81111561141957600080fd5b6020830191508360208260051b850101111561143457600080fd5b9250929050565b6000806020838503121561144e57600080fd5b823567ffffffffffffffff81111561146557600080fd5b611471858286016113ef565b90969095509350505050565b6000806000806080858703121561149357600080fd5b843561149e81611059565b935060208501356114ae81611059565b925060408501356114be81611059565b9396929550929360600135925050565b600080600080608085870312156114e457600080fd5b84356114ef81611059565b935060208501356114ff81611059565b925060408501359150606085013561151681611059565b939692955090935050565b6000806000806040858703121561153757600080fd5b843567ffffffffffffffff8082111561154f57600080fd5b61155b888389016113ef565b9096509450602087013591508082111561157457600080fd5b50611581878288016113ef565b95989497509550505050565b6000806000806000606086880312156115a557600080fd5b85356115b081611059565b9450602086013567ffffffffffffffff808211156115cd57600080fd5b6115d989838a016113ef565b909650945060408801359150808211156115f257600080fd5b506115ff888289016113ef565b969995985093965092949392505050565b60006020828403121561162257600080fd5b815161108b81611059565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561168957600080fd5b815161108b8161125e565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561170457600080fd5b813561108b8161125e565b600060001982141561173157634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220caffcc84a5697fe19faf081ea8bb2e8e3dbe9599cf8072a38bb63dc84c09327c64736f6c634300080c0033 + /// ``` + #[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\x02SW`\x005`\xE0\x1C\x80c\x94\xF6I\xDD\x11a\x01FW\x80c\xC4b>\xA1\x11a\0\xC3W\x80c\xE2C\xDC<\x11a\0\x87W\x80c\xE2C\xDC<\x14a\x05\xA9W\x80c\xE2\xA8\x18\xC5\x14a\x05\xBCW\x80c\xE7\xA0P\xAA\x14a\x05\xCFW\x80c\xF2\xFD\xE3\x8B\x14a\x05\xE6W\x80c\xF6\x98\xDA%\x14a\x05\xF9W\x80c\xFA\xBC\x1C\xBC\x14a\x06\0W`\0\x80\xFD[\x80c\xC4b>\xA1\x14a\x05PW\x80c\xC6\x08\xC7\xF3\x14a\x05dW\x80c\xC6eg\x02\x14a\x05rW\x80c\xDF[5G\x14a\x05\x83W\x80c\xDF\\\xF7#\x14a\x05\x96W`\0\x80\xFD[\x80c\x9F\0\xFA$\x11a\x01\nW\x80c\x9F\0\xFA$\x14a\x04\xEFW\x80c\xA1x\x84\x84\x14a\x05\x01W\x80c\xA1\xCAx\x0B\x14a\x05!W\x80c\xB14Bq\x14a\x05/W\x80c\xB5\xD8\xB5\xB8\x14a\x05BW`\0\x80\xFD[\x80c\x94\xF6I\xDD\x14a\x04LW\x80c\x96\x7F\xC0\xD2\x14a\x04mW\x80c\x9A\x95\x19\xE0\x14a\x04\x80W\x80c\x9BM\xA0=\x14a\x04\x93W\x80c\x9B~/w\x14a\x04\xB6W`\0\x80\xFD[\x80c\\\x97Z\xBB\x11a\x01\xD4W\x80c\x88o\x11\x95\x11a\x01\x98W\x80c\x88o\x11\x95\x14a\x03\xF9W\x80c\x8B\x8A\xAC<\x14a\x04\x0CW\x80c\x8C\x80\xD4\xE5\x14a\x04!W\x80c\x8D\xA5\xCB[\x14a\x044W\x80c\x91\x04\xC3\x19\x14a\x04EW`\0\x80\xFD[\x80c\\\x97Z\xBB\x14a\x03\x9DW\x80cc\xFC\xA8\x88\x14a\x03\xA5W\x80cf<\x1D\xE4\x14a\x03\xB8W\x80cqP\x18\xA6\x14a\x03\xDBW\x80cz~\r\x92\x14a\x03\xE3W`\0\x80\xFD[\x80c6;\xF9d\x11a\x02\x1BW\x80c6;\xF9d\x14a\x02\xD7W\x80cFe\xBC\xDA\x14a\x03$W\x80cNZBc\x14a\x03OW\x80cY\\jg\x14a\x03bW\x80cZ\xC8j\xB7\x14a\x03jW`\0\x80\xFD[\x80c\x01\xF8 \xB2\x14a\x02XW\x80c\r9\x08\xF4\x14a\x02tW\x80c\x10\xD6z/\x14a\x02\x95W\x80c\x13d9\xDD\x14a\x02\xAAW\x80c2\xE8\x9A\xCE\x14a\x02\xBDW[`\0\x80\xFD[a\x02a`\xD2T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x88a\x02\x826`\x04a\x10nV[P``\x90V[`@Qa\x02k\x91\x90a\x10\xD6V[a\x02\xA8a\x02\xA36`\x04a\x10nV[a\x06\x13V[\0[a\x02\xA8a\x02\xB86`\x04a\x10\xE9V[a\x06\xCCV[a\x02aa\x02\xCB6`\x04a\x11\x18V[`\0\x96\x95PPPPPPV[a\x02\xA8a\x02\xE56`\x04a\x12\x13V[`\xC9\x80T`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\xCB\x80T\x92\x85\x16\x92\x82\x16\x92\x90\x92\x17\x90\x91U`\xCA\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`\xCATa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02kV[a\x02\xA8a\x03]6`\x04a\x12lV[a\x08\x0BV[a\x02\xA8a\x08yV[a\x03\x8Da\x03x6`\x04a\x12\xA5V[`\x98T`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02kV[`\x98Ta\x02aV[a\x02aa\x03\xB36`\x04a\x12\xC8V[a\t@V[a\x03\x8Da\x03\xC66`\x04a\x10nV[`\xCF` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xA8a\tqV[a\x02aa\x03\xF16`\x04a\x12\xF4V[`\0\x92\x91PPV[`\x97Ta\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02aa\x04\x1A6`\x04a\x10nV[P`\xD2T\x90V[a\x02\xA8a\x04/6`\x04a\x13\"V[PPPV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x037V[`\0a\x037V[a\x04_a\x04Z6`\x04a\x10nV[a\t\x85V[`@Qa\x02k\x92\x91\x90a\x13cV[`\xCCTa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\xA8a\x04\x8E6`\x04a\x10\xE9V[`\xD2UV[a\x03\x8Da\x04\xA16`\x04a\x10nV[`\xD1` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02\xA8a\x04\xC46`\x04a\x12lV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R`\xCF` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[a\x02\xA8a\x04\xFD6`\x04a\x12\xC8V[PPV[a\x02aa\x05\x0F6`\x04a\x10nV[`\xD0` R`\0\x90\x81R`@\x90 T\x81V[a\x02\xA8a\x04/6`\x04a\x13\xBAV[`\xCBTa\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02\xA8a\x04\xFD6`\x04a\x14;V[a\x02\xA8a\x05^6`\x04a\x14}V[PPPPV[a\x02\xA8a\x05^6`\x04a\x14\xCEV[a\x02\xA8a\x05\x806`\x04a\x10nV[PV[a\x02\xA8a\x05\x916`\x04a\x15!V[a\n^V[`\xC9Ta\x037\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x037a\x05\xB76`\x04a\x12\xC8V[a\x0BOV[a\x02\xA8a\x05\xCA6`\x04a\x15\x8DV[a\x0B\x87V[a\x02aa\x05\xDD6`\x04a\x13\"V[`\0\x93\x92PPPV[a\x02\xA8a\x05\xF46`\x04a\x10nV[a\x0C1V[`\0a\x02aV[a\x02\xA8a\x06\x0E6`\x04a\x10\xE9V[a\x0C\xA7V[`\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\x06fW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x8A\x91\x90a\x16\x10V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16-V[`@Q\x80\x91\x03\x90\xFD[a\x05\x80\x81a\x0E\x03V[`\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\x07\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x078\x91\x90a\x16wV[a\x07TW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16\x94V[`\x98T\x81\x81\x16\x14a\x07\xCDW`@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\xBAV[`\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[`@\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`\xD1` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[`\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\x08\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xE5\x91\x90a\x16wV[a\t\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16\x94V[`\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[`\xCE` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\t\\W`\0\x80\xFD[\x90`\0R` `\0 \x01`\0\x91P\x91PPT\x81V[a\tya\x0E\xFAV[a\t\x83`\0a\x0FTV[V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x83R\x92\x81\x90 \x83T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x85\x94\x90\x93\x91\x84\x91\x83\x01\x82\x82\x80\x15a\t\xFCW` \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\t\xDEW[PPPPP\x91P\x80\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\nNW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\n:W[PPPPP\x90P\x91P\x91P\x91P\x91V[`\0[\x83\x81\x10\x15a\x0BHW`\x01`\xCF`\0\x87\x87\x85\x81\x81\x10a\n\x81Wa\n\x81a\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\n\x96\x91\x90a\x10nV[`\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\x82\x82\x82\x81\x81\x10a\n\xD0Wa\n\xD0a\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\n\xE5\x91\x90a\x16\xF2V[`\xD1`\0\x87\x87\x85\x81\x81\x10a\n\xFBWa\n\xFBa\x16\xDCV[\x90P` \x02\x01` \x81\x01\x90a\x0B\x10\x91\x90a\x10nV[`\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\x90Ua\x0BA\x81a\x17\x0FV[\x90Pa\naV[PPPPPV[`\xCD` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x0BkW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[\x82\x81\x14a\x0B\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FStrategyManagerMock: length mism`D\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\xCD` R`@\x90 a\x0C\x05\x90\x85\x85a\x0F\xA6V[P`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\xCE` R`@\x90 a\x0C)\x90\x83\x83a\x10\tV[PPPPPPV[a\x0C9a\x0E\xFAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0C\x9EW`@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\xBAV[a\x05\x80\x81a\x0FTV[`\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\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\x16\x10V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x90a\x16-V[`\x98T\x19\x81\x19`\x98T\x19\x16\x14a\r\xCCW`@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\xBAV[`\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\x08\0V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0E\x91W`@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\xBAV[`\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[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x83W`@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\xBAV[`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[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15a\x0F\xF9W\x91` \x02\x82\x01[\x82\x81\x11\x15a\x0F\xF9W\x81T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x845\x16\x17\x82U` \x90\x92\x01\x91`\x01\x90\x91\x01\x90a\x0F\xC6V[Pa\x10\x05\x92\x91Pa\x10DV[P\x90V[\x82\x80T\x82\x82U\x90`\0R` `\0 \x90\x81\x01\x92\x82\x15a\x0F\xF9W\x91` \x02\x82\x01[\x82\x81\x11\x15a\x0F\xF9W\x825\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x10)V[[\x80\x82\x11\x15a\x10\x05W`\0\x81U`\x01\x01a\x10EV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05\x80W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x10\x80W`\0\x80\xFD[\x815a\x10\x8B\x81a\x10YV[\x93\x92PPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x10\xCBW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x10\xA6V[P\x94\x95\x94PPPPPV[` \x81R`\0a\x10\x8B` \x83\x01\x84a\x10\x92V[`\0` \x82\x84\x03\x12\x15a\x10\xFBW`\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\x111W`\0\x80\xFD[\x865a\x11<\x81a\x10YV[\x95P` \x87\x015a\x11L\x81a\x10YV[\x94P`@\x87\x015\x93P``\x87\x015a\x11c\x81a\x10YV[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\x87W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x11\x9BW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x11\xADWa\x11\xADa\x11\x02V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x11\xD5Wa\x11\xD5a\x11\x02V[\x81`@R\x82\x81R\x8C` \x84\x87\x01\x01\x11\x15a\x11\xEEW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x12(W`\0\x80\xFD[\x835a\x123\x81a\x10YV[\x92P` \x84\x015a\x12C\x81a\x10YV[\x91P`@\x84\x015a\x12S\x81a\x10YV[\x80\x91PP\x92P\x92P\x92V[\x80\x15\x15\x81\x14a\x05\x80W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x12\x7FW`\0\x80\xFD[\x825a\x12\x8A\x81a\x10YV[\x91P` \x83\x015a\x12\x9A\x81a\x12^V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x12\xB7W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x10\x8BW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xDBW`\0\x80\xFD[\x825a\x12\xE6\x81a\x10YV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x13\x07W`\0\x80\xFD[\x825a\x13\x12\x81a\x10YV[\x91P` \x83\x015a\x12\x9A\x81a\x10YV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x137W`\0\x80\xFD[\x835a\x13B\x81a\x10YV[\x92P` \x84\x015a\x13R\x81a\x10YV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`@\x81R`\0a\x13v`@\x83\x01\x85a\x10\x92V[\x82\x81\x03` \x84\x81\x01\x91\x90\x91R\x84Q\x80\x83R\x85\x82\x01\x92\x82\x01\x90`\0[\x81\x81\x10\x15a\x13\xADW\x84Q\x83R\x93\x83\x01\x93\x91\x83\x01\x91`\x01\x01a\x13\x91V[P\x90\x97\x96PPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x13\xCFW`\0\x80\xFD[\x835a\x13\xDA\x81a\x10YV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x14\x01W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\x19W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x144W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x14NW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14eW`\0\x80\xFD[a\x14q\x85\x82\x86\x01a\x13\xEFV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\x93W`\0\x80\xFD[\x845a\x14\x9E\x81a\x10YV[\x93P` \x85\x015a\x14\xAE\x81a\x10YV[\x92P`@\x85\x015a\x14\xBE\x81a\x10YV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\xE4W`\0\x80\xFD[\x845a\x14\xEF\x81a\x10YV[\x93P` \x85\x015a\x14\xFF\x81a\x10YV[\x92P`@\x85\x015\x91P``\x85\x015a\x15\x16\x81a\x10YV[\x93\x96\x92\x95P\x90\x93PPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x157W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15OW`\0\x80\xFD[a\x15[\x88\x83\x89\x01a\x13\xEFV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x15tW`\0\x80\xFD[Pa\x15\x81\x87\x82\x88\x01a\x13\xEFV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\x15\xA5W`\0\x80\xFD[\x855a\x15\xB0\x81a\x10YV[\x94P` \x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\xCDW`\0\x80\xFD[a\x15\xD9\x89\x83\x8A\x01a\x13\xEFV[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\x15\xF2W`\0\x80\xFD[Pa\x15\xFF\x88\x82\x89\x01a\x13\xEFV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x16\"W`\0\x80\xFD[\x81Qa\x10\x8B\x81a\x10YV[` \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\x16\x89W`\0\x80\xFD[\x81Qa\x10\x8B\x81a\x12^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[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x17\x04W`\0\x80\xFD[\x815a\x10\x8B\x81a\x12^V[`\0`\0\x19\x82\x14\x15a\x171WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xCA\xFF\xCC\x84\xA5i\x7F\xE1\x9F\xAF\x08\x1E\xA8\xBB.\x8E=\xBE\x95\x99\xCF\x80r\xA3\x8B\xB6=\xC8L\t2|dsolcC\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addStrategiesToDepositWhitelistReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `beaconChainETHStrategy()` and selector `0x9104c319`. + ```solidity + function beaconChainETHStrategy() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `cumulativeWithdrawalsQueued(address)` and selector `0xa1788484`. + ```solidity + function cumulativeWithdrawalsQueued(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct cumulativeWithdrawalsQueuedReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `depositBeaconChainETH(address,uint256)` and selector `0x9f00fa24`. + ```solidity + function depositBeaconChainETH(address staker, uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositBeaconChainETHCall { + pub staker: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`depositBeaconChainETH(address,uint256)`](depositBeaconChainETHCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositBeaconChainETHReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: depositBeaconChainETHCall) -> Self { + (value.staker, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositBeaconChainETHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: 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: depositBeaconChainETHReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositBeaconChainETHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositBeaconChainETHCall { + 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 = depositBeaconChainETHReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "depositBeaconChainETH(address,uint256)"; + const SELECTOR: [u8; 4] = [159u8, 0u8, 250u8, 36u8]; + #[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.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 `depositIntoStrategy(address,address,uint256)` and selector `0xe7a050aa`. + ```solidity + function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoStrategyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoStrategyWithSignatureReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `recordBeaconChainETHBalanceUpdate(address,uint256,int256)` and selector `0xa1ca780b`. + ```solidity + function recordBeaconChainETHBalanceUpdate(address overcommittedPodOwner, uint256 beaconChainETHStrategyIndex, int256 sharesDelta) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateCall { + pub overcommittedPodOwner: alloy::sol_types::private::Address, + pub beaconChainETHStrategyIndex: alloy::sol_types::private::primitives::aliases::U256, + pub sharesDelta: alloy::sol_types::private::primitives::aliases::I256, + } + ///Container type for the return parameters of the [`recordBeaconChainETHBalanceUpdate(address,uint256,int256)`](recordBeaconChainETHBalanceUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Int<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + 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: recordBeaconChainETHBalanceUpdateCall) -> Self { + ( + value.overcommittedPodOwner, + value.beaconChainETHStrategyIndex, + value.sharesDelta, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordBeaconChainETHBalanceUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + overcommittedPodOwner: tuple.0, + beaconChainETHStrategyIndex: tuple.1, + sharesDelta: 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: 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::Uint<256>, + 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,uint256,int256)"; + const SELECTOR: [u8; 4] = [161u8, 202u8, 120u8, 11u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.overcommittedPodOwner, + ), + as alloy_sol_types::SolType>::tokenize( + &self.beaconChainETHStrategyIndex, + ), + 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,address,uint256)` and selector `0x8c80d4e5`. + ```solidity + function removeShares(address staker, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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) external pure; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesFromDepositWhitelistCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesFromDepositWhitelistReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesFromDepositWhitelistCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: 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._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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 `setAddresses(address,address,address)` and selector `0x363bf964`. + ```solidity + function setAddresses(address _delegation, address _eigenPodManager, address _slasher) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setAddressesCall { + pub _delegation: alloy::sol_types::private::Address, + pub _eigenPodManager: alloy::sol_types::private::Address, + pub _slasher: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setAddresses(address,address,address)`](setAddressesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setAddressesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + ); + #[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: setAddressesCall) -> Self { + (value._delegation, value._eigenPodManager, value._slasher) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setAddressesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _delegation: tuple.0, + _eigenPodManager: tuple.1, + _slasher: 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: setAddressesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setAddressesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setAddressesCall { + 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>; + type Return = setAddressesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setAddresses(address,address,address)"; + const SELECTOR: [u8; 4] = [54u8, 59u8, 249u8, 100u8]; + #[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, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setDeposits(address,address[],uint256[])` and selector `0xe2a818c5`. + ```solidity + function setDeposits(address staker, address[] memory _strategiesToReturn, uint256[] memory _sharesToReturn) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setDepositsCall { + pub staker: alloy::sol_types::private::Address, + pub _strategiesToReturn: alloy::sol_types::private::Vec, + pub _sharesToReturn: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`setDeposits(address,address[],uint256[])`](setDepositsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setDepositsReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setDepositsCall) -> Self { + ( + value.staker, + value._strategiesToReturn, + value._sharesToReturn, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setDepositsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + _strategiesToReturn: tuple.1, + _sharesToReturn: 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: setDepositsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setDepositsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setDepositsCall { + 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 = setDepositsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setDeposits(address,address[],uint256[])"; + const SELECTOR: [u8; 4] = [226u8, 168u8, 24u8, 197u8]; + #[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._strategiesToReturn), + , + > as alloy_sol_types::SolType>::tokenize(&self._sharesToReturn), + ) + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setStakerStrategyListLengthReturnValue(uint256)` and selector `0x9a9519e0`. + ```solidity + function setStakerStrategyListLengthReturnValue(uint256 valueToSet) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStakerStrategyListLengthReturnValueCall { + pub valueToSet: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`setStakerStrategyListLengthReturnValue(uint256)`](setStakerStrategyListLengthReturnValueCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStakerStrategyListLengthReturnValueReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setStakerStrategyListLengthReturnValueCall) -> Self { + (value.valueToSet,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStakerStrategyListLengthReturnValueCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + valueToSet: 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: setStakerStrategyListLengthReturnValueReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setStakerStrategyListLengthReturnValueReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setStakerStrategyListLengthReturnValueCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setStakerStrategyListLengthReturnValueReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setStakerStrategyListLengthReturnValue(uint256)"; + const SELECTOR: [u8; 4] = [154u8, 149u8, 25u8, 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.valueToSet, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setStrategyWhitelist(address,bool)` and selector `0x9b7e2f77`. + ```solidity + function setStrategyWhitelist(address strategy, bool value) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWhitelistCall { + pub strategy: alloy::sol_types::private::Address, + pub value: bool, + } + ///Container type for the return parameters of the [`setStrategyWhitelist(address,bool)`](setStrategyWhitelistCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWhitelistReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: setStrategyWhitelistCall) -> Self { + (value.strategy, value.value) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStrategyWhitelistCall { + 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: setStrategyWhitelistReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStrategyWhitelistReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setStrategyWhitelistCall { + 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 = setStrategyWhitelistReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setStrategyWhitelist(address,bool)"; + const SELECTOR: [u8; 4] = [155u8, 126u8, 47u8, 119u8]; + #[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 `setStrategyWhitelister(address)` and selector `0xc6656702`. + ```solidity + function setStrategyWhitelister(address newStrategyWhitelister) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWhitelisterReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setThirdPartyTransfersForbiddenReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `sharesToReturn(address,uint256)` and selector `0x63fca888`. + ```solidity + function sharesToReturn(address, uint256) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sharesToReturnCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`sharesToReturn(address,uint256)`](sharesToReturnCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sharesToReturnReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: sharesToReturnCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToReturnCall { + 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: sharesToReturnReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToReturnReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesToReturnCall { + 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 = sharesToReturnReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sharesToReturn(address,uint256)"; + const SELECTOR: [u8; 4] = [99u8, 252u8, 168u8, 136u8]; + #[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 `slasher()` and selector `0xb1344271`. + ```solidity + function slasher() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategyListLengthCall { + pub _0: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategyListLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListLengthCall { + 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: 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._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 `stakerStrategyListLengthReturnValue()` and selector `0x01f820b2`. + ```solidity + function stakerStrategyListLengthReturnValue() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategyListLengthReturnValueCall {} + ///Container type for the return parameters of the [`stakerStrategyListLengthReturnValue()`](stakerStrategyListLengthReturnValueCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategyListLengthReturnValueReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategyListLengthReturnValueCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListLengthReturnValueCall { + 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: stakerStrategyListLengthReturnValueReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListLengthReturnValueReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerStrategyListLengthReturnValueCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerStrategyListLengthReturnValueReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerStrategyListLengthReturnValue()"; + const SELECTOR: [u8; 4] = [1u8, 248u8, 32u8, 178u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategySharesReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `stakerStrats(address)` and selector `0x0d3908f4`. + ```solidity + function stakerStrats(address staker) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStratsCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerStrats(address)`](stakerStratsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStratsReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: stakerStratsCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStratsCall { + 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: stakerStratsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStratsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerStratsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerStratsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerStrats(address)"; + const SELECTOR: [u8; 4] = [13u8, 57u8, 8u8, 244u8]; + #[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 `strategiesToReturn(address,uint256)` and selector `0xe243dc3c`. + ```solidity + function strategiesToReturn(address, uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategiesToReturnCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`strategiesToReturn(address,uint256)`](strategiesToReturnCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategiesToReturnReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: strategiesToReturnCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategiesToReturnCall { + 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: strategiesToReturnReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategiesToReturnReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategiesToReturnCall { + 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 = strategiesToReturnReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategiesToReturn(address,uint256)"; + const SELECTOR: [u8; 4] = [226u8, 67u8, 220u8, 60u8]; + #[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 `strategyIsWhitelistedForDeposit(address)` and selector `0x663c1de4`. + ```solidity + function strategyIsWhitelistedForDeposit(address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyIsWhitelistedForDepositReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWhitelisterCall {} + ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWhitelisterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct thirdPartyTransfersForbiddenReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`StrategyManagerMock`](self) function calls. + pub enum StrategyManagerMockCalls { + addShares(addSharesCall), + addStrategiesToDepositWhitelist(addStrategiesToDepositWhitelistCall), + beaconChainETHStrategy(beaconChainETHStrategyCall), + cumulativeWithdrawalsQueued(cumulativeWithdrawalsQueuedCall), + delegation(delegationCall), + depositBeaconChainETH(depositBeaconChainETHCall), + depositIntoStrategy(depositIntoStrategyCall), + depositIntoStrategyWithSignature(depositIntoStrategyWithSignatureCall), + domainSeparator(domainSeparatorCall), + eigenPodManager(eigenPodManagerCall), + getDeposits(getDepositsCall), + owner(ownerCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + recordBeaconChainETHBalanceUpdate(recordBeaconChainETHBalanceUpdateCall), + removeShares(removeSharesCall), + removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall), + renounceOwnership(renounceOwnershipCall), + setAddresses(setAddressesCall), + setDeposits(setDepositsCall), + setPauserRegistry(setPauserRegistryCall), + setStakerStrategyListLengthReturnValue(setStakerStrategyListLengthReturnValueCall), + setStrategyWhitelist(setStrategyWhitelistCall), + setStrategyWhitelister(setStrategyWhitelisterCall), + setThirdPartyTransfersForbidden(setThirdPartyTransfersForbiddenCall), + sharesToReturn(sharesToReturnCall), + slasher(slasherCall), + stakerStrategyListLength(stakerStrategyListLengthCall), + stakerStrategyListLengthReturnValue(stakerStrategyListLengthReturnValueCall), + stakerStrategyShares(stakerStrategySharesCall), + stakerStrats(stakerStratsCall), + strategiesToReturn(strategiesToReturnCall), + strategyIsWhitelistedForDeposit(strategyIsWhitelistedForDepositCall), + strategyWhitelister(strategyWhitelisterCall), + thirdPartyTransfersForbidden(thirdPartyTransfersForbiddenCall), + transferOwnership(transferOwnershipCall), + unpause(unpauseCall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl StrategyManagerMockCalls { + /// 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, 248u8, 32u8, 178u8], + [13u8, 57u8, 8u8, 244u8], + [16u8, 214u8, 122u8, 47u8], + [19u8, 100u8, 57u8, 221u8], + [50u8, 232u8, 154u8, 206u8], + [54u8, 59u8, 249u8, 100u8], + [70u8, 101u8, 188u8, 218u8], + [78u8, 90u8, 66u8, 99u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [99u8, 252u8, 168u8, 136u8], + [102u8, 60u8, 29u8, 228u8], + [113u8, 80u8, 24u8, 166u8], + [122u8, 126u8, 13u8, 146u8], + [136u8, 111u8, 17u8, 149u8], + [139u8, 138u8, 172u8, 60u8], + [140u8, 128u8, 212u8, 229u8], + [141u8, 165u8, 203u8, 91u8], + [145u8, 4u8, 195u8, 25u8], + [148u8, 246u8, 73u8, 221u8], + [150u8, 127u8, 192u8, 210u8], + [154u8, 149u8, 25u8, 224u8], + [155u8, 77u8, 160u8, 61u8], + [155u8, 126u8, 47u8, 119u8], + [159u8, 0u8, 250u8, 36u8], + [161u8, 120u8, 132u8, 132u8], + [161u8, 202u8, 120u8, 11u8], + [177u8, 52u8, 66u8, 113u8], + [181u8, 216u8, 181u8, 184u8], + [196u8, 98u8, 62u8, 161u8], + [198u8, 8u8, 199u8, 243u8], + [198u8, 101u8, 103u8, 2u8], + [223u8, 91u8, 53u8, 71u8], + [223u8, 92u8, 247u8, 35u8], + [226u8, 67u8, 220u8, 60u8], + [226u8, 168u8, 24u8, 197u8], + [231u8, 160u8, 80u8, 170u8], + [242u8, 253u8, 227u8, 139u8], + [246u8, 152u8, 218u8, 37u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for StrategyManagerMockCalls { + const NAME: &'static str = "StrategyManagerMockCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 41usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::addShares(_) => { + ::SELECTOR + } + Self::addStrategiesToDepositWhitelist(_) => { + ::SELECTOR + } + Self::beaconChainETHStrategy(_) => { + ::SELECTOR + } + Self::cumulativeWithdrawalsQueued(_) => { + ::SELECTOR + } + Self::delegation(_) => { + ::SELECTOR + } + Self::depositBeaconChainETH(_) => { + ::SELECTOR + } + Self::depositIntoStrategy(_) => { + ::SELECTOR + } + Self::depositIntoStrategyWithSignature(_) => { + ::SELECTOR + } + Self::domainSeparator(_) => { + ::SELECTOR + } + Self::eigenPodManager(_) => { + ::SELECTOR + } + Self::getDeposits(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::recordBeaconChainETHBalanceUpdate(_) => { + ::SELECTOR + } + Self::removeShares(_) => { + ::SELECTOR + } + Self::removeStrategiesFromDepositWhitelist(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::setAddresses(_) => { + ::SELECTOR + } + Self::setDeposits(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::setStakerStrategyListLengthReturnValue(_) => { + ::SELECTOR + } + Self::setStrategyWhitelist(_) => { + ::SELECTOR + } + Self::setStrategyWhitelister(_) => { + ::SELECTOR + } + Self::setThirdPartyTransfersForbidden(_) => { + ::SELECTOR + } + Self::sharesToReturn(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stakerStrategyListLength(_) => { + ::SELECTOR + } + Self::stakerStrategyListLengthReturnValue(_) => { + ::SELECTOR + } + Self::stakerStrategyShares(_) => { + ::SELECTOR + } + Self::stakerStrats(_) => { + ::SELECTOR + } + Self::strategiesToReturn(_) => { + ::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 stakerStrategyListLengthReturnValue( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerMockCalls::stakerStrategyListLengthReturnValue, + ) + } + stakerStrategyListLengthReturnValue + }, + { + fn stakerStrats( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::stakerStrats) + } + stakerStrats + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::pause) + } + pause + }, + { + fn depositIntoStrategyWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerMockCalls::depositIntoStrategyWithSignature, + ) + } + depositIntoStrategyWithSignature + }, + { + fn setAddresses( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::setAddresses) + } + setAddresses + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn setThirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerMockCalls::setThirdPartyTransfersForbidden, + ) + } + setThirdPartyTransfersForbidden + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::paused_1) + } + paused_1 + }, + { + fn sharesToReturn( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::sharesToReturn) + } + sharesToReturn + }, + { + fn strategyIsWhitelistedForDeposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerMockCalls::strategyIsWhitelistedForDeposit, + ) + } + strategyIsWhitelistedForDeposit + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn stakerStrategyShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::stakerStrategyShares) + } + stakerStrategyShares + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn stakerStrategyListLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::stakerStrategyListLength) + } + stakerStrategyListLength + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::removeShares) + } + removeShares + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::owner) + } + owner + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn getDeposits( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::getDeposits) + } + getDeposits + }, + { + fn strategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::strategyWhitelister) + } + strategyWhitelister + }, + { + fn setStakerStrategyListLengthReturnValue( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerMockCalls::setStakerStrategyListLengthReturnValue, + ) + } + setStakerStrategyListLengthReturnValue + }, + { + fn thirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StrategyManagerMockCalls::thirdPartyTransfersForbidden) + } + thirdPartyTransfersForbidden + }, + { + fn setStrategyWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::setStrategyWhitelist) + } + setStrategyWhitelist + }, + { + fn depositBeaconChainETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::depositBeaconChainETH) + } + depositBeaconChainETH + }, + { + fn cumulativeWithdrawalsQueued( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StrategyManagerMockCalls::cumulativeWithdrawalsQueued) + } + cumulativeWithdrawalsQueued + }, + { + fn recordBeaconChainETHBalanceUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerMockCalls::recordBeaconChainETHBalanceUpdate, + ) + } + recordBeaconChainETHBalanceUpdate + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::slasher) + } + slasher + }, + { + fn removeStrategiesFromDepositWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerMockCalls::removeStrategiesFromDepositWhitelist, + ) + } + removeStrategiesFromDepositWhitelist + }, + { + fn addShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::addShares) + } + addShares + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn setStrategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::setStrategyWhitelister) + } + setStrategyWhitelister + }, + { + fn addStrategiesToDepositWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerMockCalls::addStrategiesToDepositWhitelist, + ) + } + addStrategiesToDepositWhitelist + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::delegation) + } + delegation + }, + { + fn strategiesToReturn( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::strategiesToReturn) + } + strategiesToReturn + }, + { + fn setDeposits( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::setDeposits) + } + setDeposits + }, + { + fn depositIntoStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::depositIntoStrategy) + } + depositIntoStrategy + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::transferOwnership) + } + transferOwnership + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerMockCalls::domainSeparator) + } + domainSeparator + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerMockCalls::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::addStrategiesToDepositWhitelist(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::cumulativeWithdrawalsQueued(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::depositBeaconChainETH(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::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::recordBeaconChainETHBalanceUpdate(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::setAddresses(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setDeposits(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStakerStrategyListLengthReturnValue(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStrategyWhitelist(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStrategyWhitelister(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setThirdPartyTransfersForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::sharesToReturn(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::slasher(inner) => { + ::abi_encoded_size(inner) + } + Self::stakerStrategyListLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerStrategyListLengthReturnValue(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerStrategyShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerStrats(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategiesToReturn(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::addShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::addStrategiesToDepositWhitelist(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::cumulativeWithdrawalsQueued(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::depositBeaconChainETH(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::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::recordBeaconChainETHBalanceUpdate(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::setAddresses(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setDeposits(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setStakerStrategyListLengthReturnValue(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setStrategyWhitelist(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setStrategyWhitelister(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setThirdPartyTransfersForbidden(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::sharesToReturn(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::slasher(inner) => { + ::abi_encode_raw(inner, out) + } + Self::stakerStrategyListLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerStrategyListLengthReturnValue(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerStrategyShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerStrats(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategiesToReturn(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 [`StrategyManagerMock`](self) events. + pub enum StrategyManagerMockEvents { + Deposit(Deposit), + Initialized(Initialized), + OwnershipTransferred(OwnershipTransferred), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + StrategyAddedToDepositWhitelist(StrategyAddedToDepositWhitelist), + StrategyRemovedFromDepositWhitelist(StrategyRemovedFromDepositWhitelist), + StrategyWhitelisterChanged(StrategyWhitelisterChanged), + Unpaused(Unpaused), + UpdatedThirdPartyTransfersForbidden(UpdatedThirdPartyTransfersForbidden), + } + #[automatically_derived] + impl StrategyManagerMockEvents { + /// 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 StrategyManagerMockEvents { + const NAME: &'static str = "StrategyManagerMockEvents"; + 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 StrategyManagerMockEvents { + 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 [`StrategyManagerMock`](self) contract instance. + + See the [wrapper's documentation](`StrategyManagerMockInstance`) 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, + ) -> StrategyManagerMockInstance { + StrategyManagerMockInstance::::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>> + { + StrategyManagerMockInstance::::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 { + StrategyManagerMockInstance::::deploy_builder(provider) + } + /**A [`StrategyManagerMock`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StrategyManagerMock`](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 StrategyManagerMockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StrategyManagerMockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StrategyManagerMockInstance") + .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, + > StrategyManagerMockInstance + { + /**Creates a new wrapper around an on-chain [`StrategyManagerMock`](self) contract instance. + + See the [wrapper's documentation](`StrategyManagerMockInstance`) 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 StrategyManagerMockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StrategyManagerMockInstance { + StrategyManagerMockInstance { + 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, + > StrategyManagerMockInstance + { + /// 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 [`beaconChainETHStrategy`] function. + pub fn beaconChainETHStrategy( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&beaconChainETHStrategyCall {}) + } + ///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 [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`depositBeaconChainETH`] function. + pub fn depositBeaconChainETH( + &self, + staker: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositBeaconChainETHCall { staker, amount }) + } + ///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 [`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 [`recordBeaconChainETHBalanceUpdate`] function. + pub fn recordBeaconChainETHBalanceUpdate( + &self, + overcommittedPodOwner: alloy::sol_types::private::Address, + beaconChainETHStrategyIndex: alloy::sol_types::private::primitives::aliases::U256, + sharesDelta: alloy::sol_types::private::primitives::aliases::I256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&recordBeaconChainETHBalanceUpdateCall { + overcommittedPodOwner, + beaconChainETHStrategyIndex, + sharesDelta, + }) + } + ///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, + _0: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&removeStrategiesFromDepositWhitelistCall { _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 [`setAddresses`] function. + pub fn setAddresses( + &self, + _delegation: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setAddressesCall { + _delegation, + _eigenPodManager, + _slasher, + }) + } + ///Creates a new call builder for the [`setDeposits`] function. + pub fn setDeposits( + &self, + staker: alloy::sol_types::private::Address, + _strategiesToReturn: alloy::sol_types::private::Vec, + _sharesToReturn: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setDepositsCall { + staker, + _strategiesToReturn, + _sharesToReturn, + }) + } + ///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 [`setStakerStrategyListLengthReturnValue`] function. + pub fn setStakerStrategyListLengthReturnValue( + &self, + valueToSet: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&setStakerStrategyListLengthReturnValueCall { valueToSet }) + } + ///Creates a new call builder for the [`setStrategyWhitelist`] function. + pub fn setStrategyWhitelist( + &self, + strategy: alloy::sol_types::private::Address, + value: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setStrategyWhitelistCall { strategy, value }) + } + ///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 [`sharesToReturn`] function. + pub fn sharesToReturn( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesToReturnCall { _0, _1 }) + } + ///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, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerStrategyListLengthCall { _0 }) + } + ///Creates a new call builder for the [`stakerStrategyListLengthReturnValue`] function. + pub fn stakerStrategyListLengthReturnValue( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&stakerStrategyListLengthReturnValueCall {}) + } + ///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 [`stakerStrats`] function. + pub fn stakerStrats( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerStratsCall { staker }) + } + ///Creates a new call builder for the [`strategiesToReturn`] function. + pub fn strategiesToReturn( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategiesToReturnCall { _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, + > StrategyManagerMockInstance + { + /// 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/middleware/strategymanagerstorage.rs b/crates/utils/src/middleware/strategymanagerstorage.rs new file mode 100644 index 00000000..3209ad30 --- /dev/null +++ b/crates/utils/src/middleware/strategymanagerstorage.rs @@ -0,0 +1,5301 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StrategyManagerStorage { + 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 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 nonces(address) external view returns (uint256); + function removeShares(address staker, address strategy, uint256 shares) external; + function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) 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 withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "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": "nonces", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "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": "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": "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::pub_underscore_fields, + clippy::style +)] +pub mod StrategyManagerStorage { + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `DEPOSIT_TYPEHASH()` and selector `0x48825e94`. + ```solidity + function DEPOSIT_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DEPOSIT_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct addStrategiesToDepositWhitelistReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoStrategyReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoStrategyWithSignatureReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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 `nonces(address)` and selector `0x7ecebe00`. + ```solidity + function nonces(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct noncesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct removeStrategiesFromDepositWhitelistReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `setStrategyWhitelister(address)` and selector `0xc6656702`. + ```solidity + function setStrategyWhitelister(address newStrategyWhitelister) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStrategyWhitelisterReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setThirdPartyTransfersForbiddenReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategyListReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategyListLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakerStrategySharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyIsWhitelistedForDepositReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWhitelisterCall {} + ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct strategyWhitelisterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct thirdPartyTransfersForbiddenReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 [`StrategyManagerStorage`](self) function calls. + pub enum StrategyManagerStorageCalls { + DEPOSIT_TYPEHASH(DEPOSIT_TYPEHASHCall), + DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall), + addShares(addSharesCall), + addStrategiesToDepositWhitelist(addStrategiesToDepositWhitelistCall), + delegation(delegationCall), + depositIntoStrategy(depositIntoStrategyCall), + depositIntoStrategyWithSignature(depositIntoStrategyWithSignatureCall), + domainSeparator(domainSeparatorCall), + eigenPodManager(eigenPodManagerCall), + getDeposits(getDepositsCall), + nonces(noncesCall), + removeShares(removeSharesCall), + removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall), + setStrategyWhitelister(setStrategyWhitelisterCall), + setThirdPartyTransfersForbidden(setThirdPartyTransfersForbiddenCall), + slasher(slasherCall), + stakerStrategyList(stakerStrategyListCall), + stakerStrategyListLength(stakerStrategyListLengthCall), + stakerStrategyShares(stakerStrategySharesCall), + strategyIsWhitelistedForDeposit(strategyIsWhitelistedForDepositCall), + strategyWhitelister(strategyWhitelisterCall), + thirdPartyTransfersForbidden(thirdPartyTransfersForbiddenCall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl StrategyManagerStorageCalls { + /// 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, 96u8, 107u8, 112u8], + [50u8, 232u8, 154u8, 206u8], + [70u8, 101u8, 188u8, 218u8], + [72u8, 130u8, 94u8, 148u8], + [78u8, 90u8, 66u8, 99u8], + [102u8, 60u8, 29u8, 228u8], + [122u8, 126u8, 13u8, 146u8], + [126u8, 206u8, 190u8, 0u8], + [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], + [198u8, 101u8, 103u8, 2u8], + [203u8, 194u8, 189u8, 98u8], + [223u8, 91u8, 53u8, 71u8], + [223u8, 92u8, 247u8, 35u8], + [231u8, 160u8, 80u8, 170u8], + [246u8, 152u8, 218u8, 37u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for StrategyManagerStorageCalls { + const NAME: &'static str = "StrategyManagerStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 23usize; + #[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::nonces(_) => ::SELECTOR, + Self::removeShares(_) => ::SELECTOR, + Self::removeStrategiesFromDepositWhitelist(_) => { + ::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::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 DOMAIN_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::DOMAIN_TYPEHASH) + } + DOMAIN_TYPEHASH + }, + { + fn depositIntoStrategyWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerStorageCalls::depositIntoStrategyWithSignature, + ) + } + depositIntoStrategyWithSignature + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn DEPOSIT_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::DEPOSIT_TYPEHASH) + } + DEPOSIT_TYPEHASH + }, + { + fn setThirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerStorageCalls::setThirdPartyTransfersForbidden, + ) + } + setThirdPartyTransfersForbidden + }, + { + fn strategyIsWhitelistedForDeposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerStorageCalls::strategyIsWhitelistedForDeposit, + ) + } + strategyIsWhitelistedForDeposit + }, + { + fn stakerStrategyShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::stakerStrategyShares) + } + stakerStrategyShares + }, + { + fn nonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerStorageCalls::nonces) + } + nonces + }, + { + fn stakerStrategyListLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::stakerStrategyListLength) + } + stakerStrategyListLength + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::removeShares) + } + removeShares + }, + { + fn getDeposits( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::getDeposits) + } + getDeposits + }, + { + fn strategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::strategyWhitelister) + } + strategyWhitelister + }, + { + fn thirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerStorageCalls::thirdPartyTransfersForbidden, + ) + } + thirdPartyTransfersForbidden + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerStorageCalls::slasher) + } + slasher + }, + { + fn removeStrategiesFromDepositWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerStorageCalls::removeStrategiesFromDepositWhitelist, + ) + } + removeStrategiesFromDepositWhitelist + }, + { + fn addShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerStorageCalls::addShares) + } + addShares + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn setStrategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::setStrategyWhitelister) + } + setStrategyWhitelister + }, + { + fn stakerStrategyList( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::stakerStrategyList) + } + stakerStrategyList + }, + { + fn addStrategiesToDepositWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerStorageCalls::addStrategiesToDepositWhitelist, + ) + } + addStrategiesToDepositWhitelist + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerStorageCalls::delegation) + } + delegation + }, + { + fn depositIntoStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::depositIntoStrategy) + } + depositIntoStrategy + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerStorageCalls::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::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::nonces(inner) => { + ::abi_encoded_size(inner) + } + Self::removeShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeStrategiesFromDepositWhitelist(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::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::nonces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::removeShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeStrategiesFromDepositWhitelist(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::withdrawSharesAsTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`StrategyManagerStorage`](self) events. + pub enum StrategyManagerStorageEvents { + Deposit(Deposit), + StrategyAddedToDepositWhitelist(StrategyAddedToDepositWhitelist), + StrategyRemovedFromDepositWhitelist(StrategyRemovedFromDepositWhitelist), + StrategyWhitelisterChanged(StrategyWhitelisterChanged), + UpdatedThirdPartyTransfersForbidden(UpdatedThirdPartyTransfersForbidden), + } + #[automatically_derived] + impl StrategyManagerStorageEvents { + /// 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 StrategyManagerStorageEvents { + const NAME: &'static str = "StrategyManagerStorageEvents"; + 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 StrategyManagerStorageEvents { + 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 [`StrategyManagerStorage`](self) contract instance. + + See the [wrapper's documentation](`StrategyManagerStorageInstance`) 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, + ) -> StrategyManagerStorageInstance { + StrategyManagerStorageInstance::::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>, + > { + StrategyManagerStorageInstance::::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 { + StrategyManagerStorageInstance::::deploy_builder(provider) + } + /**A [`StrategyManagerStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StrategyManagerStorage`](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 StrategyManagerStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StrategyManagerStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StrategyManagerStorageInstance") + .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, + > StrategyManagerStorageInstance + { + /**Creates a new wrapper around an on-chain [`StrategyManagerStorage`](self) contract instance. + + See the [wrapper's documentation](`StrategyManagerStorageInstance`) 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 StrategyManagerStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StrategyManagerStorageInstance { + StrategyManagerStorageInstance { + 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, + > StrategyManagerStorageInstance + { + /// 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 [`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 [`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 [`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 [`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, + > StrategyManagerStorageInstance + { + /// 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/strings.rs b/crates/utils/src/middleware/strings.rs similarity index 93% rename from crates/utils/src/strings.rs rename to crates/utils/src/middleware/strings.rs index c5150e84..b2ebbe16 100644 --- a/crates/utils/src/strings.rs +++ b/crates/utils/src/middleware/strings.rs @@ -9,29 +9,34 @@ interface Strings {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod Strings { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f80b9de8ef90e16ebfa04150beb3416c8944ee41e5a4056382b2166a5a2a0b64736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b65e23e46e8c3d161c3cc5213acdfc8dee6311e6a81fb878adaafad350b67b3064736f6c634300080c0033 /// ``` #[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", + 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 \xB6^#\xE4n\x8C=\x16\x1C<\xC5!:\xCD\xFC\x8D\xEEc\x11\xE6\xA8\x1F\xB8x\xAD\xAA\xFA\xD3P\xB6{0dsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f80b9de8ef90e16ebfa04150beb3416c8944ee41e5a4056382b2166a5a2a0b64736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b65e23e46e8c3d161c3cc5213acdfc8dee6311e6a81fb878adaafad350b67b3064736f6c634300080c0033 /// ``` #[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", + 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 \xB6^#\xE4n\x8C=\x16\x1C<\xC5!:\xCD\xFC\x8D\xEEc\x11\xE6\xA8\x1F\xB8x\xAD\xAA\xFA\xD3P\xB6{0dsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Strings`](self) contract instance. diff --git a/crates/utils/src/stringsupgradeable.rs b/crates/utils/src/middleware/stringsupgradeable.rs similarity index 94% rename from crates/utils/src/stringsupgradeable.rs rename to crates/utils/src/middleware/stringsupgradeable.rs index bbe7d615..0d2fd23f 100644 --- a/crates/utils/src/stringsupgradeable.rs +++ b/crates/utils/src/middleware/stringsupgradeable.rs @@ -9,29 +9,34 @@ interface StringsUpgradeable {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod StringsUpgradeable { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011fb48dd485c31a8d22fe7037c7f09984ac8eab820115d53460965a9fd57991064736f6c634300080c0033 + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205585d9f54f3979306e8020d3814066c18c1932acf7b45869824042cf1b72826a64736f6c634300080c0033 /// ``` #[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", + 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 U\x85\xD9\xF5O9y0n\x80 \xD3\x81@f\xC1\x8C\x192\xAC\xF7\xB4Xi\x82@B\xCF\x1Br\x82jdsolcC\0\x08\x0C\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011fb48dd485c31a8d22fe7037c7f09984ac8eab820115d53460965a9fd57991064736f6c634300080c0033 + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205585d9f54f3979306e8020d3814066c18c1932acf7b45869824042cf1b72826a64736f6c634300080c0033 /// ``` #[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", + 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 U\x85\xD9\xF5O9y0n\x80 \xD3\x81@f\xC1\x8C\x192\xAC\xF7\xB4Xi\x82@B\xCF\x1Br\x82jdsolcC\0\x08\x0C\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`StringsUpgradeable`](self) contract instance. diff --git a/crates/utils/src/middleware/timemachine.rs b/crates/utils/src/middleware/timemachine.rs new file mode 100644 index 00000000..8ae7579d --- /dev/null +++ b/crates/utils/src/middleware/timemachine.rs @@ -0,0 +1,6266 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface TimeMachine { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function createSnapshot() external returns (uint256); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external returns (bool); + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function warpToLast() external returns (uint256 curState); + function warpToPresent(uint256 curState) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createSnapshot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "warpToLast", + "inputs": [], + "outputs": [ + { + "name": "curState", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "warpToPresent", + "inputs": [ + { + "name": "curState", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod TimeMachine { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a81b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905534801561005457600080fd5b50611119806100646000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA8\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U4\x80\x15a\0TW`\0\x80\xFD[Pa\x11\x19\x80a\0d`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610193578063bf87b834146101ab578063e20c9f71146101b3578063fa7626d4146101bb57600080fd5b8063916a17c61461016e578063b437edcb14610176578063b5508aa91461018b57600080fd5b80633e5e3c23116100c85780633e5e3c23146101345780633f7286f41461013c57806366d9a9a01461014457806385226c811461015957600080fd5b80631504d8f0146100ef5780631ed7831c1461010a5780632ade38801461011f575b600080fd5b6100f76101c8565b6040519081526020015b60405180910390f35b610112610262565b6040516101019190610d19565b6101276102c4565b6040516101019190610dc2565b610112610406565b610112610466565b61014c6104c6565b6040516101019190610e82565b6101616105ac565b6040516101019190610f35565b61014c61067c565b610189610184366004610f97565b610762565b005b6101616107d5565b61019b6108a5565b6040519015158152602001610101565b6100f76109d2565b610112610af6565b60075461019b9060ff1681565b600080601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102449190610fb0565b601d819055601c805460ff60a01b1916600160a01b17905592915050565b606060148054806020026020016040519081016040528092919081815260200182805480156102ba57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161029c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e657838290600052602060002001805461035990610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461038590610fc9565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b50505050508152602001906001019061033a565b5050505081525050815260200190600101906102e8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561059457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105565790505b505050505081525050815260200190600101906104ea565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103fd5783829060005260206000200180546105ef90610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90610fc9565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050815260200190600101906105d0565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561074a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161070c5790505b505050505081525050815260200190600101906106a0565b601c54604051631135fc2960e21b8152600481018390526001600160a01b03909116906344d7f0a4906024016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611004565b5050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103fd57838290600052602060002001805461081890610fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461084490610fc9565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050815260200190600101906107f9565b600754600090610100900460ff16156108c75750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109cd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610955917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161102d565b60408051601f198184030181529082905261096f9161105e565b6000604051808303816000865af19150503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b50915050808060200190518101906109c99190611004565b9150505b919050565b6000610a05601c60149054906101000a900460ff166040518060600160405280603a81526020016110aa603a9139610b56565b601c60009054906101000a90046001600160a01b03166001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190610fb0565b601c54601d54604051631135fc2960e21b815260048101919091529192506001600160a01b0316906344d7f0a4906024016020604051808303816000875af1158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af29190611004565b5090565b606060138054806020026020016040519081016040528092919081815260200182805480156102ba576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161029c575050505050905090565b816107d1577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610b8a919061107a565b60405180910390a16107d18280610c0a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610bfa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1610c0a610c0d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d085760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610ca7929160200161102d565b60408051601f1981840301815290829052610cc19161105e565b6000604051808303816000865af19150503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b505050505b6007805461ff001916610100179055565b6020808252825182820181905260009190848201906040850190845b81811015610d5a5783516001600160a01b031683529284019291840191600101610d35565b50909695505050505050565b60005b83811015610d81578181015183820152602001610d69565b83811115610d90576000848401525b50505050565b60008151808452610dae816020860160208601610d66565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610e7257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610e5c57605f19898503018352610e4a848651610d96565b948e01949350918d0191600101610e2e565b505050978a019794505091880191600101610de9565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610f2657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610f115783516001600160e01b0319168252928b019260019290920191908b0190610ee7565b50978a01979550505091870191600101610eaa565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610f8a57603f19888603018452610f78858351610d96565b94509285019290850190600101610f5c565b5092979650505050505050565b600060208284031215610fa957600080fd5b5035919050565b600060208284031215610fc257600080fd5b5051919050565b600181811c90821680610fdd57607f821691505b60208210811415610ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561101657600080fd5b8151801515811461102657600080fd5b9392505050565b6001600160e01b0319831681528151600090611050816004850160208701610d66565b919091016004019392505050565b60008251611070818460208701610d66565b9190910192915050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006110266080830184610d9656fe54696d654d616368696e652e77617270546f4c6173743a20696e76616c69642075736167652c207061737420646f6573206e6f74206578697374a2646970667358221220486452420a8b9213c1e52c5a68ea6521e5b5dfef42fb88089f3b105829074e5c64736f6c634300080c0033 + /// ``` + #[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\xEAW`\x005`\xE0\x1C\x80c\x91j\x17\xC6\x11a\0\x8CW\x80c\xBAAO\xA6\x11a\0fW\x80c\xBAAO\xA6\x14a\x01\x93W\x80c\xBF\x87\xB84\x14a\x01\xABW\x80c\xE2\x0C\x9Fq\x14a\x01\xB3W\x80c\xFAv&\xD4\x14a\x01\xBBW`\0\x80\xFD[\x80c\x91j\x17\xC6\x14a\x01nW\x80c\xB47\xED\xCB\x14a\x01vW\x80c\xB5P\x8A\xA9\x14a\x01\x8BW`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x014W\x80c?r\x86\xF4\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02D\x91\x90a\x0F\xB0V[`\x1D\x81\x90U`\x1C\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CW[PPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xE6W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03Y\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\x85\x90a\x0F\xC9V[\x80\x15a\x03\xD2W\x80`\x1F\x10a\x03\xA7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\xD2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xB5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03:V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xE8V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x94W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05VW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xEAV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xEF\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x1B\x90a\x0F\xC9V[\x80\x15a\x06hW\x80`\x1F\x10a\x06=Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06hV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06KW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xD0V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07JW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x0CW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xA0V[`\x1CT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xADW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD1\x91\x90a\x10\x04V[PPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xFDW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x08\x18\x90a\x0F\xC9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08D\x90a\x0F\xC9V[\x80\x15a\x08\x91W\x80`\x1F\x10a\x08fWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x08\x91V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x08tW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF9V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x08\xC7WP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\t\xCDW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\tU\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\to\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\t\xACW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\t\xB1V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\t\xC9\x91\x90a\x10\x04V[\x91PP[\x91\x90PV[`\0a\n\x05`\x1C`\x14\x90T\x90a\x01\0\n\x90\x04`\xFF\x16`@Q\x80``\x01`@R\x80`:\x81R` \x01a\x10\xAA`:\x919a\x0BVV[`\x1C`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x97\x11qZ`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\nZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n~\x91\x90a\x0F\xB0V[`\x1CT`\x1DT`@Qc\x115\xFC)`\xE2\x1B\x81R`\x04\x81\x01\x91\x90\x91R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cD\xD7\xF0\xA4\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\xCEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xF2\x91\x90a\x10\x04V[P\x90V[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xBAW` \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\x02\x9CWPPPPP\x90P\x90V[\x81a\x07\xD1W\x7F(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\x81`@Qa\x0B\x8A\x91\x90a\x10zV[`@Q\x80\x91\x03\x90\xA1a\x07\xD1\x82\x80a\x0C\nW\x7FA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FP`@Qa\x0B\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a\x0C\na\x0C\rV[PV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\r\x08W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xA7\x92\x91` \x01a\x10-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0C\xC1\x91a\x10^V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x0C\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\r\x03V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rZW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\r5V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a\r\x81W\x81\x81\x01Q\x83\x82\x01R` \x01a\riV[\x83\x81\x11\x15a\r\x90W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra\r\xAE\x81` \x86\x01` \x86\x01a\rfV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0ErW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0E\\W`_\x19\x89\x85\x03\x01\x83Ra\x0EJ\x84\x86Qa\r\x96V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0E.V[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\r\xE9V[P\x91\x9A\x99PPPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a\x0F&W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0F\x11W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a\x0E\xE7V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0E\xAAV[P\x91\x99\x98PPPPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a\x0F\x8AW`?\x19\x88\x86\x03\x01\x84Ra\x0Fx\x85\x83Qa\r\x96V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0F\\V[P\x92\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x0F\xA9W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xC2W`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xDDW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0F\xFEWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\x16W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x10&W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a\x10P\x81`\x04\x85\x01` \x87\x01a\rfV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa\x10p\x81\x84` \x87\x01a\rfV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x10&`\x80\x83\x01\x84a\r\x96V\xFETimeMachine.warpToLast: invalid usage, past does not exist\xA2dipfsX\"\x12 HdRB\n\x8B\x92\x13\xC1\xE5,Zh\xEAe!\xE5\xB5\xDF\xEFB\xFB\x88\x08\x9F;\x10X)\x07N\\dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `createSnapshot()` and selector `0x1504d8f0`. + ```solidity + function createSnapshot() external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createSnapshotCall {} + ///Container type for the return parameters of the [`createSnapshot()`](createSnapshotCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createSnapshotReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createSnapshotCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createSnapshotCall { + 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: createSnapshotReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createSnapshotReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createSnapshotCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createSnapshotReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "createSnapshot()"; + const SELECTOR: [u8; 4] = [21u8, 4u8, 216u8, 240u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `warpToLast()` and selector `0xbf87b834`. + ```solidity + function warpToLast() external returns (uint256 curState); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct warpToLastCall {} + ///Container type for the return parameters of the [`warpToLast()`](warpToLastCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct warpToLastReturn { + pub curState: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: warpToLastCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for warpToLastCall { + 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: warpToLastReturn) -> Self { + (value.curState,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for warpToLastReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { curState: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for warpToLastCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = warpToLastReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "warpToLast()"; + const SELECTOR: [u8; 4] = [191u8, 135u8, 184u8, 52u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `warpToPresent(uint256)` and selector `0xb437edcb`. + ```solidity + function warpToPresent(uint256 curState) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct warpToPresentCall { + pub curState: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`warpToPresent(uint256)`](warpToPresentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct warpToPresentReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: warpToPresentCall) -> Self { + (value.curState,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for warpToPresentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { curState: 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: warpToPresentReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for warpToPresentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for warpToPresentCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = warpToPresentReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "warpToPresent(uint256)"; + const SELECTOR: [u8; 4] = [180u8, 55u8, 237u8, 203u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.curState, + ), + ) + } + #[inline] + fn 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 [`TimeMachine`](self) function calls. + pub enum TimeMachineCalls { + IS_TEST(IS_TESTCall), + createSnapshot(createSnapshotCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + warpToLast(warpToLastCall), + warpToPresent(warpToPresentCall), + } + #[automatically_derived] + impl TimeMachineCalls { + /// 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, 4u8, 216u8, 240u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [102u8, 217u8, 169u8, 160u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [180u8, 55u8, 237u8, 203u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [191u8, 135u8, 184u8, 52u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for TimeMachineCalls { + const NAME: &'static str = "TimeMachineCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 14usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::createSnapshot(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::warpToLast(_) => ::SELECTOR, + Self::warpToPresent(_) => ::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 createSnapshot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::createSnapshot) + } + createSnapshot + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::targetContracts) + } + targetContracts + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TimeMachineCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::targetSelectors) + } + targetSelectors + }, + { + fn warpToPresent( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::warpToPresent) + } + warpToPresent + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(TimeMachineCalls::failed) + } + failed + }, + { + fn warpToLast( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::warpToLast) + } + warpToLast + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(TimeMachineCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::createSnapshot(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::warpToLast(inner) => { + ::abi_encoded_size(inner) + } + Self::warpToPresent(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::createSnapshot(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::warpToLast(inner) => { + ::abi_encode_raw(inner, out) + } + Self::warpToPresent(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`TimeMachine`](self) events. + pub enum TimeMachineEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl TimeMachineEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for TimeMachineEvents { + const NAME: &'static str = "TimeMachineEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 TimeMachineEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`TimeMachine`](self) contract instance. + + See the [wrapper's documentation](`TimeMachineInstance`) 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, + ) -> TimeMachineInstance { + TimeMachineInstance::::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>> + { + TimeMachineInstance::::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 { + TimeMachineInstance::::deploy_builder(provider) + } + /**A [`TimeMachine`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`TimeMachine`](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 TimeMachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeMachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeMachineInstance") + .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, + > TimeMachineInstance + { + /**Creates a new wrapper around an on-chain [`TimeMachine`](self) contract instance. + + See the [wrapper's documentation](`TimeMachineInstance`) 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 TimeMachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeMachineInstance { + TimeMachineInstance { + 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, + > TimeMachineInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`createSnapshot`] function. + pub fn createSnapshot( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createSnapshotCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`warpToLast`] function. + pub fn warpToLast(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&warpToLastCall {}) + } + ///Creates a new call builder for the [`warpToPresent`] function. + pub fn warpToPresent( + &self, + curState: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&warpToPresentCall { curState }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeMachineInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/transparentupgradeableproxy.rs b/crates/utils/src/middleware/transparentupgradeableproxy.rs similarity index 96% rename from crates/utils/src/transparentupgradeableproxy.rs rename to crates/utils/src/middleware/transparentupgradeableproxy.rs index 5f1aec40..5219d82c 100644 --- a/crates/utils/src/transparentupgradeableproxy.rs +++ b/crates/utils/src/middleware/transparentupgradeableproxy.rs @@ -170,35 +170,45 @@ interface TransparentUpgradeableProxy { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] pub mod TransparentUpgradeableProxy { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207420b9d3a17a9b4b1279482aea62855b38b1f3c36865e13712f5632f3a487f3764736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564 + ///0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564 /// ``` #[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", + 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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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 + ///0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033 /// ``` #[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", + 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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct AdminChanged { #[allow(missing_docs)] @@ -206,7 +216,12 @@ pub mod TransparentUpgradeableProxy { #[allow(missing_docs)] pub newAdmin: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -297,13 +312,23 @@ pub mod TransparentUpgradeableProxy { ```solidity event BeaconUpgraded(address indexed beacon); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -387,13 +412,23 @@ pub mod TransparentUpgradeableProxy { ```solidity event Upgraded(address indexed implementation); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -479,7 +514,7 @@ pub mod TransparentUpgradeableProxy { ```solidity constructor(address _logic, address admin_, bytes _data) payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { pub _logic: alloy::sol_types::private::Address, @@ -563,16 +598,21 @@ pub mod TransparentUpgradeableProxy { ```solidity function admin() external returns (address admin_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct adminCall {} ///Container type for the return parameters of the [`admin()`](adminCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct adminReturn { pub admin_: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -668,16 +708,21 @@ pub mod TransparentUpgradeableProxy { ```solidity function changeAdmin(address newAdmin) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct changeAdminReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -777,16 +822,21 @@ pub mod TransparentUpgradeableProxy { ```solidity function implementation() external returns (address implementation_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct implementationCall {} ///Container type for the return parameters of the [`implementation()`](implementationCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct implementationReturn { pub implementation_: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -884,16 +934,21 @@ pub mod TransparentUpgradeableProxy { ```solidity function upgradeTo(address newImplementation) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct upgradeToReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -995,17 +1050,22 @@ pub mod TransparentUpgradeableProxy { ```solidity function upgradeToAndCall(address newImplementation, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[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)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct upgradeToAndCallReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { diff --git a/crates/utils/src/middleware/upgradeablebeacon.rs b/crates/utils/src/middleware/upgradeablebeacon.rs new file mode 100644 index 00000000..ffaea3fe --- /dev/null +++ b/crates/utils/src/middleware/upgradeablebeacon.rs @@ -0,0 +1,1478 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface UpgradeableBeacon { + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event Upgraded(address indexed implementation); + + constructor(address implementation_); + + function implementation() external view returns (address); + function owner() external view returns (address); + function renounceOwnership() external; + function transferOwnership(address newOwner) external; + function upgradeTo(address newImplementation) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "implementation_", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "implementation", + "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": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeTo", + "inputs": [ + { + "name": "newImplementation", + "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 + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod UpgradeableBeacon { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c0033 + /// ``` + #[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\x04\xE48\x03\x80a\x04\xE4\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01QV[a\083a\0GV[a\0A\x81a\0\x97V[Pa\x01\x81V[`\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\0\xAA\x81a\x01B` \x1Ba\x01\xA0\x17` \x1CV[a\x01 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\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\x16;\x15\x15\x90V[`\0` \x82\x84\x03\x12\x15a\x01cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01zW`\0\x80\xFD[\x93\x92PPPV[a\x03T\x80a\x01\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220eeccd5a7e2e2e95455fc205258c910e3811721cc83d83aad63a4c2d06cc8f02e64736f6c634300080c0033 + /// ``` + #[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\0WW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0\\W\x80c\\`\xDA\x1B\x14a\0qW\x80cqP\x18\xA6\x14a\0\x9AW\x80c\x8D\xA5\xCB[\x14a\0\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\0\xB3W[`\0\x80\xFD[a\0oa\0j6`\x04a\x02\xEEV[a\0\xC6V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0oa\x01\x0EV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0~V[a\0oa\0\xC16`\x04a\x02\xEEV[a\x01\"V[a\0\xCEa\x01\xAFV[a\0\xD7\x81a\x02\tV[`@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\x01\x16a\x01\xAFV[a\x01 `\0a\x02\x9EV[V[a\x01*a\x01\xAFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x94W`@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\x01\x9D\x81a\x02\x9EV[PV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01 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\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x8BV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\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[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x17W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xEE\xCC\xD5\xA7\xE2\xE2\xE9TU\xFC RX\xC9\x10\xE3\x81\x17!\xCC\x83\xD8:\xADc\xA4\xC2\xD0l\xC8\xF0.dsolcC\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::pub_underscore_fields, + 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::pub_underscore_fields, + 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 `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`. + ```solidity + event Upgraded(address indexed implementation); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::pub_underscore_fields, + 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 implementation_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub implementation_: 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.implementation_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + implementation_: 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.implementation_, + ), + ) + } + } + }; + /**Function with signature `implementation()` and selector `0x5c60da1b`. + ```solidity + function implementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct implementationCall {} + ///Container type for the return parameters of the [`implementation()`](implementationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct implementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 `upgradeTo(address)` and selector `0x3659cfe6`. + ```solidity + function upgradeTo(address newImplementation) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct upgradeToReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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) + } + } + }; + ///Container for all the [`UpgradeableBeacon`](self) function calls. + pub enum UpgradeableBeaconCalls { + implementation(implementationCall), + owner(ownerCall), + renounceOwnership(renounceOwnershipCall), + transferOwnership(transferOwnershipCall), + upgradeTo(upgradeToCall), + } + #[automatically_derived] + impl UpgradeableBeaconCalls { + /// 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], + [92u8, 96u8, 218u8, 27u8], + [113u8, 80u8, 24u8, 166u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for UpgradeableBeaconCalls { + const NAME: &'static str = "UpgradeableBeaconCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 5usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::implementation(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::upgradeTo(_) => ::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 upgradeTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UpgradeableBeaconCalls::upgradeTo) + } + upgradeTo + }, + { + fn implementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UpgradeableBeaconCalls::implementation) + } + implementation + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UpgradeableBeaconCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UpgradeableBeaconCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UpgradeableBeaconCalls::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::implementation(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::upgradeTo(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) + } + 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::upgradeTo(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`UpgradeableBeacon`](self) events. + pub enum UpgradeableBeaconEvents { + OwnershipTransferred(OwnershipTransferred), + Upgraded(Upgraded), + } + #[automatically_derived] + impl UpgradeableBeaconEvents { + /// 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, + ], + [ + 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 UpgradeableBeaconEvents { + const NAME: &'static str = "UpgradeableBeaconEvents"; + 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::OwnershipTransferred) + } + 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 UpgradeableBeaconEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(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::OwnershipTransferred(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 [`UpgradeableBeacon`](self) contract instance. + + See the [wrapper's documentation](`UpgradeableBeaconInstance`) 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, + ) -> UpgradeableBeaconInstance { + UpgradeableBeaconInstance::::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, + implementation_: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + UpgradeableBeaconInstance::::deploy(provider, implementation_) + } + /**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, + implementation_: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + UpgradeableBeaconInstance::::deploy_builder(provider, implementation_) + } + /**A [`UpgradeableBeacon`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`UpgradeableBeacon`](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 UpgradeableBeaconInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for UpgradeableBeaconInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("UpgradeableBeaconInstance") + .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, + > UpgradeableBeaconInstance + { + /**Creates a new wrapper around an on-chain [`UpgradeableBeacon`](self) contract instance. + + See the [wrapper's documentation](`UpgradeableBeaconInstance`) 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, + implementation_: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, implementation_); + 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, + implementation_: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + implementation_, + })[..], + ] + .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 UpgradeableBeaconInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> UpgradeableBeaconInstance { + UpgradeableBeaconInstance { + 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, + > UpgradeableBeaconInstance + { + /// 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 {}) + } + ///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 [`upgradeTo`] function. + pub fn upgradeTo( + &self, + newImplementation: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&upgradeToCall { newImplementation }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UpgradeableBeaconInstance + { + /// 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::() + } + ///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/middleware/upgradeableproxyutils.rs b/crates/utils/src/middleware/upgradeableproxyutils.rs new file mode 100644 index 00000000..bd5900fc --- /dev/null +++ b/crates/utils/src/middleware/upgradeableproxyutils.rs @@ -0,0 +1,227 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface UpgradeableProxyUtils {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod UpgradeableProxyUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220609f8d01fe2c87f042b4807be73efcdf814289f33521646c3ef99227e45be6bf64736f6c634300080c0033 + /// ``` + #[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 `\x9F\x8D\x01\xFE,\x87\xF0B\xB4\x80{\xE7>\xFC\xDF\x81B\x89\xF35!dl>\xF9\x92'\xE4[\xE6\xBFdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220609f8d01fe2c87f042b4807be73efcdf814289f33521646c3ef99227e45be6bf64736f6c634300080c0033 + /// ``` + #[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 `\x9F\x8D\x01\xFE,\x87\xF0B\xB4\x80{\xE7>\xFC\xDF\x81B\x89\xF35!dl>\xF9\x92'\xE4[\xE6\xBFdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`UpgradeableProxyUtils`](self) contract instance. + + See the [wrapper's documentation](`UpgradeableProxyUtilsInstance`) 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, + ) -> UpgradeableProxyUtilsInstance { + UpgradeableProxyUtilsInstance::::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>, + > { + UpgradeableProxyUtilsInstance::::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 { + UpgradeableProxyUtilsInstance::::deploy_builder(provider) + } + /**A [`UpgradeableProxyUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`UpgradeableProxyUtils`](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 UpgradeableProxyUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for UpgradeableProxyUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("UpgradeableProxyUtilsInstance") + .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, + > UpgradeableProxyUtilsInstance + { + /**Creates a new wrapper around an on-chain [`UpgradeableProxyUtils`](self) contract instance. + + See the [wrapper's documentation](`UpgradeableProxyUtilsInstance`) 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 UpgradeableProxyUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> UpgradeableProxyUtilsInstance { + UpgradeableProxyUtilsInstance { + 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, + > UpgradeableProxyUtilsInstance + { + /// 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, + > UpgradeableProxyUtilsInstance + { + /// 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/middleware/user.rs b/crates/utils/src/middleware/user.rs new file mode 100644 index 00000000..a9998983 --- /dev/null +++ b/crates/utils/src/middleware/user.rs @@ -0,0 +1,8706 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface User { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + constructor(string name, uint256 _privKey, IBLSApkRegistry.PubkeyRegistrationParams _pubkeyParams); + + function IS_TEST() external view returns (bool); + function NAME() external view returns (string memory); + function depositIntoEigenlayer(address[] memory strategies, uint256[] memory tokenBalances) external; + function deregisterOperator(bytes memory quorums) external; + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function exitEigenlayer() external returns (address[] memory, uint256[] memory); + function failed() external returns (bool); + function isValidSignature(bytes32 digestHash, bytes memory) external view returns (bytes4); + function operatorId() external view returns (bytes32); + function pubkeyG1() external view returns (BN254.G1Point memory); + function registerAsOperator() external; + function registerOperator(bytes memory quorums) external returns (bytes32); + function registerOperatorWithChurn(bytes memory churnQuorums, address[] memory churnTargets, bytes memory standardQuorums) external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function updateStakes() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "_privKey", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_pubkeyParams", + "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]" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "NAME", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositIntoEigenlayer", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "tokenBalances", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "quorums", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "exitEigenlayer", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "digestHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorId", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pubkeyG1", + "inputs": [], + "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": "registerAsOperator", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "quorums", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperatorWithChurn", + "inputs": [ + { + "name": "churnQuorums", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "churnTargets", + "type": "address[]", + "internalType": "contract User[]" + }, + { + "name": "standardQuorums", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "updateStakes", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod User { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b50604051620046f4380380620046f48339810160408190526200007d9162000b62565b6000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000c59565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000c59565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000c59565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000c59565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000c59565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000372919062000c59565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f7919062000c59565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000c59565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c59565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000562573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000588919062000c59565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000613919062000c80565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000c59565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b3906028906020870190620008a2565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006f8908290600262000931565b50602082015162000710906002808401919062000931565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000786919062000c9a565b9050620007a4602a5482620007eb60201b62001bcd1790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007dc9162001c646200088b821b17901c565b6029555062000cf69350505050565b60408051808201909152600080825260208201526200080962000961565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156200083e5762000840565bfe5b5080620008835760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b09062000cb9565b90600052602060002090601f016020900481019282620008d457600085556200091f565b82601f10620008ef57805160ff19168380011785556200091f565b828001600101855582156200091f579182015b828111156200091f57825182559160200191906001019062000902565b506200092d9291506200097f565b5090565b82600281019282156200091f57916020028201828111156200091f57825182559160200191906001019062000902565b60405180606001604052806003906020820280368337509192915050565b5b808211156200092d576000815560010162000980565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d157620009d162000996565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a025762000a0262000996565b604052919050565b60006040828403121562000a1d57600080fd5b604080519081016001600160401b038111828210171562000a425762000a4262000996565b604052825181526020928301519281019290925250919050565b600082601f83011262000a6e57600080fd5b62000a78620009ac565b80604084018581111562000a8b57600080fd5b845b8181101562000aa757805184526020938401930162000a8d565b509095945050505050565b600081830361010081121562000ac757600080fd5b604051606081016001600160401b038111828210171562000aec5762000aec62000996565b60405291508162000afe858562000a0a565b815262000b0f856040860162000a0a565b60208201526080607f198301121562000b2757600080fd5b62000b31620009ac565b915062000b42856080860162000a5c565b825262000b538560c0860162000a5c565b60208301526040015292915050565b6000806000610140848603121562000b7957600080fd5b83516001600160401b038082111562000b9157600080fd5b818601915086601f83011262000ba657600080fd5b81518181111562000bbb5762000bbb62000996565b6020915062000bd3601f8201601f19168301620009d7565b818152888383860101111562000be857600080fd5b60005b8281101562000c0857848101840151828201850152830162000beb565b8281111562000c1a5760008484840101525b508096505050808601519350505062000c37856040860162000ab2565b90509250925092565b6001600160a01b038116811462000c5657600080fd5b50565b60006020828403121562000c6c57600080fd5b815162000c798162000c40565b9392505050565b60006020828403121562000c9357600080fd5b5051919050565b60006040828403121562000cad57600080fd5b62000c79838362000a0a565b600181811c9082168062000cce57607f821691505b6020821081141562000cf057634e487b7160e01b600052602260045260246000fd5b50919050565b6139ee8062000d066000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0F\xF48\x03\x80b\0F\xF4\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BbV[`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xE7\x91\x90b\0\x0CYV[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\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\x01f\x91\x90b\0\x0CYV[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xE9\x91\x90b\0\x0CYV[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02l\x91\x90b\0\x0CYV[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xC9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xEF\x91\x90b\0\x0CYV[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03LW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03r\x91\x90b\0\x0CYV[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xF7\x91\x90b\0\x0CYV[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04x\x91\x90b\0\x0CYV[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xD7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04\xFD\x91\x90b\0\x0CYV[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05bW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x88\x91\x90b\0\x0CYV[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x13\x91\x90b\0\x0C\x80V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06~\x91\x90b\0\x0CYV[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB3\x90`(\x90` \x87\x01\x90b\0\x08\xA2V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xF8\x90\x82\x90`\x02b\0\t1V[P` \x82\x01Qb\0\x07\x10\x90`\x02\x80\x84\x01\x91\x90b\0\t1V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x86\x91\x90b\0\x0C\x9AV[\x90Pb\0\x07\xA4`*T\x82b\0\x07\xEB` \x1Bb\0\x1B\xCD\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDC\x91b\0\x1Cdb\0\x08\x8B\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xF6\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\tb\0\taV[\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\x15b\0\x08>Wb\0\x08@V[\xFE[P\x80b\0\x08\x83W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB0\x90b\0\x0C\xB9V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xD4W`\0\x85Ub\0\t\x1FV[\x82`\x1F\x10b\0\x08\xEFW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t\x1FV[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t\x1FW\x91\x82\x01[\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[Pb\0\t-\x92\x91Pb\0\t\x7FV[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t\x1FW\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t\x1FW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x02V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t-W`\0\x81U`\x01\x01b\0\t\x80V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD1Wb\0\t\xD1b\0\t\x96V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x02Wb\0\n\x02b\0\t\x96V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n\x1DW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nBWb\0\nBb\0\t\x96V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\nnW`\0\x80\xFD[b\0\nxb\0\t\xACV[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x8BW`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xA7W\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x8DV[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xC7W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xECWb\0\n\xECb\0\t\x96V[`@R\x91P\x81b\0\n\xFE\x85\x85b\0\n\nV[\x81Rb\0\x0B\x0F\x85`@\x86\x01b\0\n\nV[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B'W`\0\x80\xFD[b\0\x0B1b\0\t\xACV[\x91Pb\0\x0BB\x85`\x80\x86\x01b\0\n\\V[\x82Rb\0\x0BS\x85`\xC0\x86\x01b\0\n\\V[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0ByW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x91W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xA6W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xBBWb\0\x0B\xBBb\0\t\x96V[` \x91Pb\0\x0B\xD3`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xD7V[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xE8W`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x08W\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xEBV[\x82\x81\x11\x15b\0\x0C\x1AW`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C7\x85`@\x86\x01b\0\n\xB2V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0CVW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0ClW`\0\x80\xFD[\x81Qb\0\x0Cy\x81b\0\x0C@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x93W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xADW`\0\x80\xFD[b\0\x0Cy\x83\x83b\0\n\nV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xCEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF0WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a9\xEE\x80b\0\r\x06`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046128d4565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f919061295d565b610195610388565b005b61019f6104c1565b60405161016f9190612a06565b610180610603565b610180610663565b6101956106c3565b6101cc6107ee565b60405161016f929190612b3a565b6101e2610a29565b60405161016f9190612b68565b6101956101fd366004612cb9565b610b0f565b610215610210366004612dc2565b610d88565b60405190815260200161016f565b61022b610ece565b60405161016f9190612e03565b6101e2610f9e565b610248611084565b60405161016f9190612e65565b610195610263366004612e78565b611112565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611859565b6102b6611929565b604051901515815260200161016f565b61021560295481565b6101956102dd366004612dc2565b611a56565b610180611b6d565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612f42565b506104406040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250611c7b565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e599061048c90849060289060040161300d565b600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105e357838290600052602060002001805461055690612f5b565b80601f016020809104026020016040519081016040528092919081815260200182805461058290612f5b565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b505050505081526020019060010190610537565b5050505081525050815260200190600101906104e5565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190612f42565b5061077b6040518060400160405280601e81526020017f7570646174655374616b657320287570646174654f70657261746f7273290000815250611c7b565b6040805160018082528183019092526000916020808301908036833701905050905030816000815181106107b1576107b161304d565b6001600160a01b039283166020918202929092018101919091525460405162cf2ab560e01b815291169062cf2ab59061048c90849060040161295d565b606080602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f42565b506108a16040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250611c7b565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091691908101906130be565b60408051600180825281830190925292945090925060009190816020015b604080516060808201835280825260208201526000918101919091528152602001906001900390816109345790505090506040518060600160405280848152602001838152602001306001600160a01b03168152508160008151811061099c5761099c61304d565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd02906109d7908490600401613178565b6000604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1e9190810190613212565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab95790505b50505050508152505081526020019060010190610a4d565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612f42565b50610bc76040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250611c7b565b60005b8251811015610d83576000838281518110610be757610be761304d565b602002602001015190506000838381518110610c0557610c0561304d565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7391906132a2565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906132bf565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612f42565b505050508080610d7b906132f7565b915050610bca565b505050565b602554604080516301504d8f60e41b815290516000926001600160a01b031691631504d8f0916004808301926020929190829003018187875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190612f42565b50610e2b6040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b8152508484611cc3565b6020546001600160a01b031663a50857bf84846028602b610e4a611d48565b6040518663ffffffff1660e01b8152600401610e6a9594939291906133d5565b600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b5050604080518082018252602d54808252602e546020928301908152600091825251909152209150610ec79050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105fa578382906000526020600020018054610f1190612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d90612f5b565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105fa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561106c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161102e5790505b50505050508152505081526020019060010190610fc2565b6028805461109190612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546110bd90612f5b565b801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505081565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612f42565b506112666040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611e5092505050565b60006112a787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b905060006112ea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120d392505050565b6040805160608101909152603580825291925061131291899188916139266020830139612260565b6113408183166001600160c01b0316156040518060600160405280603e815260200161395b603e9139612296565b60006113596001600160c01b03838116908516176122cd565b9050600081516001600160401b0381111561137657611376612867565b6040519080825280602002602001820160405280156113bb57816020015b60408051808201909152600080825260208201528152602001906001900390816113945790505b5090506000805b83516113ce828461342c565b10156115e957818b1415611429576040805180820190915260008082526020820152836113fb838561342c565b8151811061140b5761140b61304d565b60200260200101819052508080611421906132f7565b9150506113c2565b8087148061147c57508787828181106114445761144461304d565b909101356001600160f81b03191690508c8c848181106114665761146661304d565b9050013560f81c60f81b6001600160f81b031916105b156115175760405180604001604052808d8d8581811061149e5761149e61304d565b919091013560f81c8252506020018b8b858181106114be576114be61304d565b90506020020160208101906114d39190613444565b6001600160a01b03169052836114e9838561342c565b815181106114f9576114f961304d565b6020026020010181905250818061150f906132f7565b9250506113c2565b8b8b838181106115295761152961304d565b909101356001600160f81b031916905088888381811061154b5761154b61304d565b9050013560f81c60f81b6001600160f81b0319161015611584576040805180820190915260008082526020820152836113fb838561342c565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b60006034600081546115fa906132f7565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca52139161167d9130918b90899089906004016134a8565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612f42565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611704918890600401918252602082015260400190565b606060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906134e3565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b816001835161178f9190613520565b8151811061179f5761179f61304d565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f866117f0611d48565b6040518763ffffffff1660e01b815260040161181196959493929190613537565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105fa57838290600052602060002001805461189c90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890612f5b565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b50505050508152602001906001019061187d565b600754600090610100900460ff161561194b5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a515760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916119d9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016135b8565b60408051601f19818403018152908290526119f3916135e9565b6000604051808303816000865af19150503d8060008114611a30576040519150601f19603f3d011682016040523d82523d6000602084013e611a35565b606091505b5091505080806020019051810190611a4d91906132bf565b9150505b919050565b602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acf9190612f42565b50611b05604051806040016040528060128152602001713232b932b3b4b9ba32b927b832b930ba37b960711b8152508383611cc3565b60205460405163ca4f2d9760e01b81526001600160a01b039091169063ca4f2d9790611b379085908590600401613605565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6040805180820190915260008082526020820152611be9612849565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1c57611c1e565bfe5b5080611c5c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016115e0565b505092915050565b805160009081526020918201519091526040902090565b600080516020613906833981519152602882604051602001611c9e929190613619565b60408051601f1981840301815290829052611cb891612e65565b60405180910390a150565b600080516020613999833981519152602884604051602001611ce6929190613619565b60408051601f198184030181526020601f860181900481028401810190925284835291611d2d91869086908190840183828082843760009201919091525061239992505050565b604051611d3b9291906136a9565b60405180910390a1505050565b604080516060808201835280825260006020830181905282840181905283519182018181526080830190945291928190815260200160346000815480929190611d90906132f7565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612f42565b6000908152603360205260409020805460ff1916600117905550919050565b600080516020613906833981519152602885604051602001611e73929190613619565b60408051601f1981840301815290829052611e8d91612e65565b60405180910390a1600080516020613999833981519152611ead82612399565b604051611eba91906136ce565b60405180910390a1600080516020613999833981519152611eda84612399565b604051611ee79190613709565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b83518110156120845760018451611f219190613520565b811415611fcf5781848281518110611f3b57611f3b61304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa89190810190613741565b604051602001611fb99291906137ae565b6040516020818303038152906040529150612072565b81848281518110611fe257611fe261304d565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261204f9190810190613741565b6040516020016120609291906137dd565b60405160208183030381529060405291505b8061207c816132f7565b915050611f0a565b50806040516020016120969190613819565b6040516020818303038152906040529050600080516020613999833981519152816040516120c4919061383e565b60405180910390a15050505050565b60006101008251111561215c5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016115e0565b815161216a57506000919050565b600080836000815181106121805761218061304d565b0160200151600160f89190911c81901b92505b8451811015612257578481815181106121ae576121ae61304d565b0160200151600160f89190911c1b91508282116122435760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016115e0565b91811791612250816132f7565b9050612193565b50909392505050565b818314610d8357600080516020613999833981519152816040516122849190613876565b60405180910390a1610d838383612493565b816122c957600080516020613999833981519152816040516122b89190613876565b60405180910390a16122c9826125a8565b5050565b60606000806122db8461260d565b61ffff166001600160401b038111156122f6576122f6612867565b6040519080825280601f01601f191660200182016040528015612320576020820181803683370190505b5090506000805b825182108015612338575061010081105b1561238f576001811b93508584161561237f578060f81b8383815181106123615761236161304d565b60200101906001600160f81b031916908160001a9053508160010191505b612388816132f7565b9050612327565b5090949350505050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561246a57600184516123ce9190613520565b81141561241f57816123f88583815181106123eb576123eb61304d565b016020015160f81c612638565b6040516020016124099291906137ae565b6040516020818303038152906040529150612458565b816124358583815181106123eb576123eb61304d565b6040516020016124469291906137dd565b60405160208183030381529060405291505b80612462816132f7565b9150506123b7565b508060405160200161247c9190613819565b60408051601f198184030181529190529392505050565b8082146122c9576000805160206139068339815191526040516124f29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16122c961273d565b8061260a576000805160206139068339815191526040516125fa9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161260a61273d565b50565b6000805b821561032057612622600184613520565b9092169180612630816138a5565b915050612611565b60608161265c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156126865780612670816132f7565b915061267f9050600a836138dd565b9150612660565b6000816001600160401b038111156126a0576126a0612867565b6040519080825280601f01601f1916602001820160405280156126ca576020820181803683370190505b5090505b8415612735576126df600183613520565b91506126ec600a866138f1565b6126f790603061342c565b60f81b81838151811061270c5761270c61304d565b60200101906001600160f81b031916908160001a90535061272e600a866138dd565b94506126ce565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128385760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526127d792916020016135b8565b60408051601f19818403018152908290526127f1916135e9565b6000604051808303816000865af19150503d806000811461282e576040519150601f19603f3d011682016040523d82523d6000602084013e612833565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156128a5576128a5612867565b604052919050565b60006001600160401b038211156128c6576128c6612867565b50601f01601f191660200190565b600080604083850312156128e757600080fd5b8235915060208301356001600160401b0381111561290457600080fd5b8301601f8101851361291557600080fd5b8035612928612923826128ad565b61287d565b81815286602083850101111561293d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561299e5783516001600160a01b031683529284019291840191600101612979565b50909695505050505050565b60005b838110156129c55781810151838201526020016129ad565b838111156129d4576000848401525b50505050565b600081518084526129f28160208601602086016129aa565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612ab657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612aa057605f19898503018352612a8e8486516129da565b948e01949350918d0191600101612a72565b505050978a019794505091880191600101612a2d565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015612aff5781516001600160a01b031687529582019590820190600101612ada565b509495945050505050565b600081518084526020808501945080840160005b83811015612aff57815187529582019590820190600101612b1e565b604081526000612b4d6040830185612ac6565b8281036020840152612b5f8185612b0a565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612c0c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612bf75783516001600160e01b0319168252928b019260019290920191908b0190612bcd565b50978a01979550505091870191600101612b90565b50919998505050505050505050565b60006001600160401b03821115612c3457612c34612867565b5060051b60200190565b6001600160a01b038116811461260a57600080fd5b600082601f830112612c6457600080fd5b81356020612c7461292383612c1b565b82815260059290921b84018101918181019086841115612c9357600080fd5b8286015b84811015612cae5780358352918301918301612c97565b509695505050505050565b60008060408385031215612ccc57600080fd5b82356001600160401b0380821115612ce357600080fd5b818501915085601f830112612cf757600080fd5b81356020612d0761292383612c1b565b82815260059290921b84018101918181019089841115612d2657600080fd5b948201945b83861015612d4d578535612d3e81612c3e565b82529482019490820190612d2b565b96505086013592505080821115612d6357600080fd5b50612d7085828601612c53565b9150509250929050565b60008083601f840112612d8c57600080fd5b5081356001600160401b03811115612da357600080fd5b602083019150836020828501011115612dbb57600080fd5b9250929050565b60008060208385031215612dd557600080fd5b82356001600160401b03811115612deb57600080fd5b612df785828601612d7a565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612e5857603f19888603018452612e468583516129da565b94509285019290850190600101612e2a565b5092979650505050505050565b602081526000610ec760208301846129da565b60008060008060008060608789031215612e9157600080fd5b86356001600160401b0380821115612ea857600080fd5b612eb48a838b01612d7a565b90985096506020890135915080821115612ecd57600080fd5b818901915089601f830112612ee157600080fd5b813581811115612ef057600080fd5b8a60208260051b8501011115612f0557600080fd5b602083019650809550506040890135915080821115612f2357600080fd5b50612f3089828a01612d7a565b979a9699509497509295939492505050565b600060208284031215612f5457600080fd5b5051919050565b600181811c90821680612f6f57607f821691505b60208210811415612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612fa381612f5b565b808552602060018381168015612fc05760018114612fd457613002565b60ff19851688840152604088019550613002565b866000528260002060005b85811015612ffa5781548a8201860152908301908401612fdf565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff6040850151166040830152608060608301526127356080830184612f96565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261307457600080fd5b8151602061308461292383612c1b565b82815260059290921b840181019181810190868411156130a357600080fd5b8286015b84811015612cae57805183529183019183016130a7565b600080604083850312156130d157600080fd5b82516001600160401b03808211156130e857600080fd5b818501915085601f8301126130fc57600080fd5b8151602061310c61292383612c1b565b82815260059290921b8401810191818101908984111561312b57600080fd5b948201945b8386101561315257855161314381612c3e565b82529482019490820190613130565b9188015191965090935050508082111561316b57600080fd5b50612d7085828601613063565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561320457603f198984030185528151606081518186526131c582870182612ac6565b915050888201518582038a8701526131dd8282612b0a565b928901516001600160a01b031695890195909552509487019492509086019060010161319f565b509098975050505050505050565b6000602080838503121561322557600080fd5b82516001600160401b0381111561323b57600080fd5b8301601f8101851361324c57600080fd5b805161325a61292382612c1b565b81815260059190911b8201830190838101908783111561327957600080fd5b928401925b828410156132975783518252928401929084019061327e565b979650505050505050565b6000602082840312156132b457600080fd5b8151610ec781612c3e565b6000602082840312156132d157600080fd5b81518015158114610ec757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561330b5761330b6132e1565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156129d457815484526020909301926001918201910161333f565b80548252600181015460208301526002810154604083015260038101546060830152613390608083016004830161333b565b6122c960c083016006830161333b565b60008151606084526133b560608501826129da565b905060208301516020850152604083015160408501528091505092915050565b60006101608083526133ea818401888a613312565b905082810360208401526133fe8187612f96565b905061340d604084018661335e565b82810361014084015261342081856133a0565b98975050505050505050565b6000821982111561343f5761343f6132e1565b500190565b60006020828403121561345657600080fd5b8135610ec781612c3e565b600081518084526020808501945080840160005b83811015612aff578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613475565b60018060a01b038616815284602082015260a0604082015260006134cf60a0830186613461565b606083019490945250608001529392505050565b6000806000606084860312156134f857600080fd5b835160ff8116811461350957600080fd5b602085015160409095015190969495509392505050565b600082821015613532576135326132e1565b500390565b60006101a080835261354b8184018a6129da565b9050828103602084015261355f8189612f96565b905061356e604084018861335e565b8281036101408401526135818187613461565b905082810361016084015261359681866133a0565b90508281036101808401526135ab81856133a0565b9998505050505050505050565b6001600160e01b03198316815281516000906135db8160048501602087016129aa565b919091016004019392505050565b600082516135fb8184602087016129aa565b9190910192915050565b602081526000612735602083018486613312565b600080845461362781612f5b565b6001828116801561363f57600181146136505761367f565b60ff1984168752828701945061367f565b8860005260208060002060005b858110156136765781548a82015290840190820161365d565b50505082870194505b50601760f91b84528651925061369b8382860160208a016129aa565b919092010195945050505050565b6040815260006136bc60408301856129da565b8281036020840152612b5f81856129da565b6040815260116040820152702d207374616e6461726451756f72756d7360781b6060820152608060208201526000610ec760808301846129da565b60408152600e60408201526d2d20636875726e51756f72756d7360901b6060820152608060208201526000610ec760808301846129da565b60006020828403121561375357600080fd5b81516001600160401b0381111561376957600080fd5b8201601f8101841361377a57600080fd5b8051613788612923826128ad565b81815285602083850101111561379d57600080fd5b612b5f8260208301602086016129aa565b600083516137c08184602088016129aa565b8351908301906137d48183602088016129aa565b01949350505050565b600083516137ef8184602088016129aa565b8351908301906138038183602088016129aa565b61016160f51b9101908152600201949350505050565b6000825161382b8184602087016129aa565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b6060820152608060208201526000610ec760808301846129da565b60408152600560408201526422b93937b960d91b6060820152608060208201526000610ec760808301846129da565b600061ffff808316818114156138bd576138bd6132e1565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826138ec576138ec6138c7565b500490565b600082613900576139006138c7565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583a26469706673582212205412fccab6a31a52e0c0507762d4453fac4ba8d9b9d0ba236dc54acba88d3ec464736f6c634300080c0033 + /// ``` + #[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\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a(\xD4V[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a)]V[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x04\xC1V[`@Qa\x01o\x91\x90a*\x06V[a\x01\x80a\x06\x03V[a\x01\x80a\x06cV[a\x01\x95a\x06\xC3V[a\x01\xCCa\x07\xEEV[`@Qa\x01o\x92\x91\x90a+:V[a\x01\xE2a\n)V[`@Qa\x01o\x91\x90a+hV[a\x01\x95a\x01\xFD6`\x04a,\xB9V[a\x0B\x0FV[a\x02\x15a\x02\x106`\x04a-\xC2V[a\r\x88V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x0E\xCEV[`@Qa\x01o\x91\x90a.\x03V[a\x01\xE2a\x0F\x9EV[a\x02Ha\x10\x84V[`@Qa\x01o\x91\x90a.eV[a\x01\x95a\x02c6`\x04a.xV[a\x11\x12V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x18YV[a\x02\xB6a\x19)V[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a-\xC2V[a\x1AVV[a\x01\x80a\x1BmV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03\xDDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x01\x91\x90a/BV[Pa\x04@`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa\x1C{V[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\x8C\x90\x84\x90`(\x90`\x04\x01a0\rV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xBAW=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x05\xE3W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05V\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x82\x90a/[V[\x80\x15a\x05\xCFW\x80`\x1F\x10a\x05\xA4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xCFV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xB2W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x057V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xE5V[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x18W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07<\x91\x90a/BV[Pa\x07{`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FupdateStakes (updateOperators)\0\0\x81RPa\x1C{V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P0\x81`\0\x81Q\x81\x10a\x07\xB1Wa\x07\xB1a0MV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x81\x01\x91\x90\x91RT`@Qb\xCF*\xB5`\xE0\x1B\x81R\x91\x16\x90b\xCF*\xB5\x90a\x04\x8C\x90\x84\x90`\x04\x01a)]V[``\x80`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08j\x91\x90a/BV[Pa\x08\xA1`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa\x1C{V[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\x16\x91\x90\x81\x01\x90a0\xBEV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t4W\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\t\x9CWa\t\x9Ca0MV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\t\xD7\x90\x84\x90`\x04\x01a1xV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\n\x1E\x91\x90\x81\x01\x90a2\x12V[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xF7W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\xB9W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\nMV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0BdW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x88\x91\x90a/BV[Pa\x0B\xC7`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa\x1C{V[`\0[\x82Q\x81\x10\x15a\r\x83W`\0\x83\x82\x81Q\x81\x10a\x0B\xE7Wa\x0B\xE7a0MV[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x0C\x05Wa\x0C\x05a0MV[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0COW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cs\x91\x90a2\xA2V[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xEC\x91\x90a2\xBFV[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\rHW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rl\x91\x90a/BV[PPPP\x80\x80a\r{\x90a2\xF7V[\x91PPa\x0B\xCAV[PPPV[`%T`@\x80Qc\x01PM\x8F`\xE4\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x15\x04\xD8\xF0\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x87\x87Z\xF1\x15\x80\x15a\r\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xF7\x91\x90a/BV[Pa\x0E+`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a\x1C\xC3V[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x0EJa\x1DHV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x95\x94\x93\x92\x91\x90a3\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\x84W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x98W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x0E\xC7\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x0F\x11\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0F=\x90a/[V[\x80\x15a\x0F\x8AW\x80`\x1F\x10a\x0F_Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0F\x8AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0FmW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0E\xF2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x10lW` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x10.W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0F\xC2V[`(\x80Ta\x10\x91\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\xBD\x90a/[V[\x80\x15a\x11\nW\x80`\x1F\x10a\x10\xDFWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x11\nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x10\xEDW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11gW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a/BV[Pa\x12f`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x1EP\x92PPPV[`\0a\x12\xA7\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 \xD3\x92PPPV[\x90P`\0a\x12\xEA\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 \xD3\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x13\x12\x91\x89\x91\x88\x91a9&` \x83\x019a\"`V[a\x13@\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01a9[`>\x919a\"\x96V[`\0a\x13Y`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a\"\xCDV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13vWa\x13va(gV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBBW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x13\x94W\x90P[P\x90P`\0\x80[\x83Qa\x13\xCE\x82\x84a4,V[\x10\x15a\x15\xE9W\x81\x8B\x14\x15a\x14)W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[\x81Q\x81\x10a\x14\x0BWa\x14\x0Ba0MV[` \x02` \x01\x01\x81\x90RP\x80\x80a\x14!\x90a2\xF7V[\x91PPa\x13\xC2V[\x80\x87\x14\x80a\x14|WP\x87\x87\x82\x81\x81\x10a\x14DWa\x14Da0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x14fWa\x14fa0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x15\x17W`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x14\x9EWa\x14\x9Ea0MV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x14\xBEWa\x14\xBEa0MV[\x90P` \x02\x01` \x81\x01\x90a\x14\xD3\x91\x90a4DV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x14\xE9\x83\x85a4,V[\x81Q\x81\x10a\x14\xF9Wa\x14\xF9a0MV[` \x02` \x01\x01\x81\x90RP\x81\x80a\x15\x0F\x90a2\xF7V[\x92PPa\x13\xC2V[\x8B\x8B\x83\x81\x81\x10a\x15)Wa\x15)a0MV[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x15KWa\x15Ka0MV[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x15\x84W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x13\xFB\x83\x85a4,V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x15\xFA\x90a2\xF7V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x16}\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a4\xA8V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBE\x91\x90a/BV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x17\x04\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17E\x91\x90a4\xE3V[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x17\x8F\x91\x90a5 V[\x81Q\x81\x10a\x17\x9FWa\x17\x9Fa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x17\xF0a\x1DHV[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\x11\x96\x95\x94\x93\x92\x91\x90a57V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18?W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x05\xFAW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x18\x9C\x90a/[V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x18\xC8\x90a/[V[\x80\x15a\x19\x15W\x80`\x1F\x10a\x18\xEAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x19\x15V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x18\xF8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x18}V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x19KWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1AQW`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x19\xD9\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\xF3\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1A0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1A5V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1AM\x91\x90a2\xBFV[\x91PP[\x91\x90PV[`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xCF\x91\x90a/BV[Pa\x1B\x05`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q22\xB92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`q\x1B\x81RP\x83\x83a\x1C\xC3V[` T`@Qc\xCAO-\x97`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCAO-\x97\x90a\x1B7\x90\x85\x90\x85\x90`\x04\x01a6\x05V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BQW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1BeW=`\0\x80>=`\0\xFD[PPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x1B\xE9a(IV[\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\x1C\x1CWa\x1C\x1EV[\xFE[P\x80a\x1C\\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\x15\xE0V[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x82`@Q` \x01a\x1C\x9E\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xB8\x91a.eV[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80Q` a9\x99\x839\x81Q\x91R`(\x84`@Q` \x01a\x1C\xE6\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a\x1D-\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa#\x99\x92PPPV[`@Qa\x1D;\x92\x91\x90a6\xA9V[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a\x1D\x90\x90a2\xF7V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1E\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E1\x91\x90a/BV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` a9\x06\x839\x81Q\x91R`(\x85`@Q` \x01a\x1Es\x92\x91\x90a6\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x8D\x91a.eV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xAD\x82a#\x99V[`@Qa\x1E\xBA\x91\x90a6\xCEV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` a9\x99\x839\x81Q\x91Ra\x1E\xDA\x84a#\x99V[`@Qa\x1E\xE7\x91\x90a7\tV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a \x84W`\x01\x84Qa\x1F!\x91\x90a5 V[\x81\x14\x15a\x1F\xCFW\x81\x84\x82\x81Q\x81\x10a\x1F;Wa\x1F;a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1F\xA8\x91\x90\x81\x01\x90a7AV[`@Q` \x01a\x1F\xB9\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa rV[\x81\x84\x82\x81Q\x81\x10a\x1F\xE2Wa\x1F\xE2a0MV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a 'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra O\x91\x90\x81\x01\x90a7AV[`@Q` \x01a `\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a |\x81a2\xF7V[\x91PPa\x1F\nV[P\x80`@Q` \x01a \x96\x91\x90a8\x19V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa \xC4\x91\x90a8>V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a!\\W`@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\x15\xE0V[\x81Qa!jWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a!\x80Wa!\x80a0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\"WW\x84\x81\x81Q\x81\x10a!\xAEWa!\xAEa0MV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\"CW`@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\x15\xE0V[\x91\x81\x17\x91a\"P\x81a2\xF7V[\x90Pa!\x93V[P\x90\x93\x92PPPV[\x81\x83\x14a\r\x83W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\x84\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\r\x83\x83\x83a$\x93V[\x81a\"\xC9W`\0\x80Q` a9\x99\x839\x81Q\x91R\x81`@Qa\"\xB8\x91\x90a8vV[`@Q\x80\x91\x03\x90\xA1a\"\xC9\x82a%\xA8V[PPV[```\0\x80a\"\xDB\x84a&\rV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF6Wa\"\xF6a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a# W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a#8WPa\x01\0\x81\x10[\x15a#\x8FW`\x01\x81\x1B\x93P\x85\x84\x16\x15a#\x7FW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a#aWa#aa0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a#\x88\x81a2\xF7V[\x90Pa#'V[P\x90\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a$jW`\x01\x84Qa#\xCE\x91\x90a5 V[\x81\x14\x15a$\x1FW\x81a#\xF8\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[\x01` \x01Q`\xF8\x1Ca&8V[`@Q` \x01a$\t\x92\x91\x90a7\xAEV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa$XV[\x81a$5\x85\x83\x81Q\x81\x10a#\xEBWa#\xEBa0MV[`@Q` \x01a$F\x92\x91\x90a7\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a$b\x81a2\xF7V[\x91PPa#\xB7V[P\x80`@Q` \x01a$|\x91\x90a8\x19V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a\"\xC9W`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa$\xF2\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a\"\xC9a'=V[\x80a&\nW`\0\x80Q` a9\x06\x839\x81Q\x91R`@Qa%\xFA\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a&\na'=V[PV[`\0\x80[\x82\x15a\x03 Wa&\"`\x01\x84a5 V[\x90\x92\x16\x91\x80a&0\x81a8\xA5V[\x91PPa&\x11V[``\x81a&\\WPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a&\x86W\x80a&p\x81a2\xF7V[\x91Pa&\x7F\x90P`\n\x83a8\xDDV[\x91Pa&`V[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xA0Wa&\xA0a(gV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a&\xCAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a'5Wa&\xDF`\x01\x83a5 V[\x91Pa&\xEC`\n\x86a8\xF1V[a&\xF7\x90`0a4,V[`\xF8\x1B\x81\x83\x81Q\x81\x10a'\x0CWa'\x0Ca0MV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa'.`\n\x86a8\xDDV[\x94Pa&\xCEV[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a(8W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xD7\x92\x91` \x01a5\xB8V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'\xF1\x91a5\xE9V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a(.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a(3V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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(\xA5Wa(\xA5a(gV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC6Wa(\xC6a(gV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a(\xE7W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x04W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x15W`\0\x80\xFD[\x805a)(a)#\x82a(\xADV[a(}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a)=W`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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)\x9EW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a)yV[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a)\xC5W\x81\x81\x01Q\x83\x82\x01R` \x01a)\xADV[\x83\x81\x11\x15a)\xD4W`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra)\xF2\x81` \x86\x01` \x86\x01a)\xAAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a*\xB6W`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a*\xA0W`_\x19\x89\x85\x03\x01\x83Ra*\x8E\x84\x86Qa)\xDAV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a*rV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a*-V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a*\xDAV[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a+\x1EV[`@\x81R`\0a+M`@\x83\x01\x85a*\xC6V[\x82\x81\x03` \x84\x01Ra+_\x81\x85a+\nV[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a,\x0CW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a+\xF7W\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a+\xCDV[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a+\x90V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a,4Wa,4a(gV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a&\nW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a,dW`\0\x80\xFD[\x815` a,ta)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\x93W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x805\x83R\x91\x83\x01\x91\x83\x01a,\x97V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a,\xCCW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a,\xE3W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a,\xF7W`\0\x80\xFD[\x815` a-\x07a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a-&W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a-MW\x855a->\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a-+V[\x96PP\x86\x015\x92PP\x80\x82\x11\x15a-cW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a,SV[\x91PP\x92P\x92\x90PV[`\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-\xBBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80` \x83\x85\x03\x12\x15a-\xD5W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xEBW`\0\x80\xFD[a-\xF7\x85\x82\x86\x01a-zV[\x90\x96\x90\x95P\x93PPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P\x83\x87\x01`\0[\x82\x81\x10\x15a.XW`?\x19\x88\x86\x03\x01\x84Ra.F\x85\x83Qa)\xDAV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a.*V[P\x92\x97\x96PPPPPPPV[` \x81R`\0a\x0E\xC7` \x83\x01\x84a)\xDAV[`\0\x80`\0\x80`\0\x80``\x87\x89\x03\x12\x15a.\x91W`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a.\xA8W`\0\x80\xFD[a.\xB4\x8A\x83\x8B\x01a-zV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15a.\xCDW`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a.\xE1W`\0\x80\xFD[\x815\x81\x81\x11\x15a.\xF0W`\0\x80\xFD[\x8A` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x05W`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP`@\x89\x015\x91P\x80\x82\x11\x15a/#W`\0\x80\xFD[Pa/0\x89\x82\x8A\x01a-zV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a/TW`\0\x80\xFD[PQ\x91\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a/oW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a/\x90WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x81Ta/\xA3\x81a/[V[\x80\x85R` `\x01\x83\x81\x16\x80\x15a/\xC0W`\x01\x81\x14a/\xD4Wa0\x02V[`\xFF\x19\x85\x16\x88\x84\x01R`@\x88\x01\x95Pa0\x02V[\x86`\0R\x82`\0 `\0[\x85\x81\x10\x15a/\xFAW\x81T\x8A\x82\x01\x86\x01R\x90\x83\x01\x90\x84\x01a/\xDFV[\x89\x01\x84\x01\x96PP[PPPPP\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'5`\x80\x83\x01\x84a/\x96V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a0tW`\0\x80\xFD[\x81Q` a0\x84a)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a0\xA3W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xAEW\x80Q\x83R\x91\x83\x01\x91\x83\x01a0\xA7V[`\0\x80`@\x83\x85\x03\x12\x15a0\xD1W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a0\xFCW`\0\x80\xFD[\x81Q` a1\x0Ca)#\x83a,\x1BV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a1+W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a1RW\x85Qa1C\x81a,>V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a10V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15a1kW`\0\x80\xFD[Pa-p\x85\x82\x86\x01a0cV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a2\x04W`?\x19\x89\x84\x03\x01\x85R\x81Q``\x81Q\x81\x86Ra1\xC5\x82\x87\x01\x82a*\xC6V[\x91PP\x88\x82\x01Q\x85\x82\x03\x8A\x87\x01Ra1\xDD\x82\x82a+\nV[\x92\x89\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x95\x89\x01\x95\x90\x95RP\x94\x87\x01\x94\x92P\x90\x86\x01\x90`\x01\x01a1\x9FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a2%W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a2;W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2LW`\0\x80\xFD[\x80Qa2Za)#\x82a,\x1BV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a2yW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a2\x97W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a2~V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a2\xB4W`\0\x80\xFD[\x81Qa\x0E\xC7\x81a,>V[`\0` \x82\x84\x03\x12\x15a2\xD1W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\xC7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a3\x0BWa3\x0Ba2\xE1V[P`\x01\x01\x90V[\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[\x80`\0[`\x02\x81\x10\x15a)\xD4W\x81T\x84R` \x90\x93\x01\x92`\x01\x91\x82\x01\x91\x01a3?V[\x80T\x82R`\x01\x81\x01T` \x83\x01R`\x02\x81\x01T`@\x83\x01R`\x03\x81\x01T``\x83\x01Ra3\x90`\x80\x83\x01`\x04\x83\x01a3;V[a\"\xC9`\xC0\x83\x01`\x06\x83\x01a3;V[`\0\x81Q``\x84Ra3\xB5``\x85\x01\x82a)\xDAV[\x90P` \x83\x01Q` \x85\x01R`@\x83\x01Q`@\x85\x01R\x80\x91PP\x92\x91PPV[`\0a\x01`\x80\x83Ra3\xEA\x81\x84\x01\x88\x8Aa3\x12V[\x90P\x82\x81\x03` \x84\x01Ra3\xFE\x81\x87a/\x96V[\x90Pa4\r`@\x84\x01\x86a3^V[\x82\x81\x03a\x01@\x84\x01Ra4 \x81\x85a3\xA0V[\x98\x97PPPPPPPPV[`\0\x82\x19\x82\x11\x15a4?Wa4?a2\xE1V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a4VW`\0\x80\xFD[\x815a\x0E\xC7\x81a,>V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*\xFFW\x81Q\x80Q`\xFF\x16\x88R\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x01R`@\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a4uV[`\x01\x80`\xA0\x1B\x03\x86\x16\x81R\x84` \x82\x01R`\xA0`@\x82\x01R`\0a4\xCF`\xA0\x83\x01\x86a4aV[``\x83\x01\x94\x90\x94RP`\x80\x01R\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a4\xF8W`\0\x80\xFD[\x83Q`\xFF\x81\x16\x81\x14a5\tW`\0\x80\xFD[` \x85\x01Q`@\x90\x95\x01Q\x90\x96\x94\x95P\x93\x92PPPV[`\0\x82\x82\x10\x15a52Wa52a2\xE1V[P\x03\x90V[`\0a\x01\xA0\x80\x83Ra5K\x81\x84\x01\x8Aa)\xDAV[\x90P\x82\x81\x03` \x84\x01Ra5_\x81\x89a/\x96V[\x90Pa5n`@\x84\x01\x88a3^V[\x82\x81\x03a\x01@\x84\x01Ra5\x81\x81\x87a4aV[\x90P\x82\x81\x03a\x01`\x84\x01Ra5\x96\x81\x86a3\xA0V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra5\xAB\x81\x85a3\xA0V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a5\xDB\x81`\x04\x85\x01` \x87\x01a)\xAAV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa5\xFB\x81\x84` \x87\x01a)\xAAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a'5` \x83\x01\x84\x86a3\x12V[`\0\x80\x84Ta6'\x81a/[V[`\x01\x82\x81\x16\x80\x15a6?W`\x01\x81\x14a6PWa6\x7FV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa6\x7FV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a6vW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a6]V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa6\x9B\x83\x82\x86\x01` \x8A\x01a)\xAAV[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`@\x81R`\0a6\xBC`@\x83\x01\x85a)\xDAV[\x82\x81\x03` \x84\x01Ra+_\x81\x85a)\xDAV[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0` \x82\x84\x03\x12\x15a7SW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a7iW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a7zW`\0\x80\xFD[\x80Qa7\x88a)#\x82a(\xADV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a7\x9DW`\0\x80\xFD[a+_\x82` \x83\x01` \x86\x01a)\xAAV[`\0\x83Qa7\xC0\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a7\xD4\x81\x83` \x88\x01a)\xAAV[\x01\x94\x93PPPPV[`\0\x83Qa7\xEF\x81\x84` \x88\x01a)\xAAV[\x83Q\x90\x83\x01\x90a8\x03\x81\x83` \x88\x01a)\xAAV[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82Qa8+\x81\x84` \x87\x01a)\xAAV[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x0E\xC7`\x80\x83\x01\x84a)\xDAV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a8\xBDWa8\xBDa2\xE1V[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82a8\xECWa8\xECa8\xC7V[P\x04\x90V[`\0\x82a9\0Wa9\0a8\xC7V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83\xA2dipfsX\"\x12 T\x12\xFC\xCA\xB6\xA3\x1AR\xE0\xC0Pwb\xD4E?\xACK\xA8\xD9\xB9\xD0\xBA#m\xC5J\xCB\xA8\x8D>\xC4dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(string name, uint256 _privKey, IBLSApkRegistry.PubkeyRegistrationParams _pubkeyParams); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub name: alloy::sol_types::private::String, + pub _privKey: alloy::sol_types::private::primitives::aliases::U256, + pub _pubkeyParams: + ::RustType, + } + 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::Uint<256>, + IBLSApkRegistry::PubkeyRegistrationParams, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + 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: constructorCall) -> Self { + (value.name, value._privKey, value._pubkeyParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name: tuple.0, + _privKey: tuple.1, + _pubkeyParams: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + IBLSApkRegistry::PubkeyRegistrationParams, + ); + 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, + ), + as alloy_sol_types::SolType>::tokenize(&self._privKey), + ::tokenize( + &self._pubkeyParams, + ), + ) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `NAME()` and selector `0xa3f4df7e`. + ```solidity + function NAME() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NAMECall {} + ///Container type for the return parameters of the [`NAME()`](NAMECall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NAMEReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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] = [163u8, 244u8, 223u8, 126u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `depositIntoEigenlayer(address[],uint256[])` and selector `0x6d336f58`. + ```solidity + function depositIntoEigenlayer(address[] memory strategies, uint256[] memory tokenBalances) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoEigenlayerCall { + pub strategies: alloy::sol_types::private::Vec, + pub tokenBalances: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`depositIntoEigenlayer(address[],uint256[])`](depositIntoEigenlayerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoEigenlayerReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: depositIntoEigenlayerCall) -> Self { + (value.strategies, value.tokenBalances) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoEigenlayerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + tokenBalances: 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: depositIntoEigenlayerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoEigenlayerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositIntoEigenlayerCall { + 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 = depositIntoEigenlayerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "depositIntoEigenlayer(address[],uint256[])"; + const SELECTOR: [u8; 4] = [109u8, 51u8, 111u8, 88u8]; + #[inline] + fn new<'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.tokenBalances), + ) + } + #[inline] + fn abi_decode_returns( + 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 quorums) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub quorums: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.quorums,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { quorums: 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.quorums, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `exitEigenlayer()` and selector `0x65eda8e5`. + ```solidity + function exitEigenlayer() external returns (address[] memory, uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct exitEigenlayerCall {} + ///Container type for the return parameters of the [`exitEigenlayer()`](exitEigenlayerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct exitEigenlayerReturn { + pub _0: alloy::sol_types::private::Vec, + pub _1: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: exitEigenlayerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for exitEigenlayerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[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: exitEigenlayerReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for exitEigenlayerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for exitEigenlayerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = exitEigenlayerReturn; + 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 = "exitEigenlayer()"; + const SELECTOR: [u8; 4] = [101u8, 237u8, 168u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e`. + ```solidity + function isValidSignature(bytes32 digestHash, bytes memory) external view returns (bytes4); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isValidSignatureCall { + pub digestHash: alloy::sol_types::private::FixedBytes<32>, + pub _1: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isValidSignatureReturn { + pub _0: alloy::sol_types::private::FixedBytes<4>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.digestHash, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + digestHash: tuple.0, + _1: 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.digestHash), + ::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 `operatorId()` and selector `0xbf68b816`. + ```solidity + function operatorId() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorIdCall {} + ///Container type for the return parameters of the [`operatorId()`](operatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorIdCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorIdCall { + 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: operatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorIdCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorId()"; + const SELECTOR: [u8; 4] = [191u8, 104u8, 184u8, 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) + } + } + }; + /**Function with signature `pubkeyG1()` and selector `0xafa1c737`. + ```solidity + function pubkeyG1() external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyG1Call {} + ///Container type for the return parameters of the [`pubkeyG1()`](pubkeyG1Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyG1Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyG1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyG1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[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: pubkeyG1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyG1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pubkeyG1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pubkeyG1Return; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pubkeyG1()"; + const SELECTOR: [u8; 4] = [175u8, 161u8, 199u8, 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 `registerAsOperator()` and selector `0x2a34ade8`. + ```solidity + function registerAsOperator() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerAsOperatorCall {} + ///Container type for the return parameters of the [`registerAsOperator()`](registerAsOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerAsOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerAsOperatorCall { + 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: 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> = (); + 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()"; + const SELECTOR: [u8; 4] = [42u8, 52u8, 173u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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)` and selector `0x8231b54c`. + ```solidity + function registerOperator(bytes memory quorums) external returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub quorums: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: registerOperatorCall) -> Self { + (value.quorums,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { quorums: 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: 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::Bytes,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(bytes)"; + const SELECTOR: [u8; 4] = [130u8, 49u8, 181u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.quorums, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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,address[],bytes)` and selector `0xa5f6cc1a`. + ```solidity + function registerOperatorWithChurn(bytes memory churnQuorums, address[] memory churnTargets, bytes memory standardQuorums) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorWithChurnCall { + pub churnQuorums: alloy::sol_types::private::Bytes, + pub churnTargets: alloy::sol_types::private::Vec, + pub standardQuorums: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperatorWithChurn(bytes,address[],bytes)`](registerOperatorWithChurnCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorWithChurnReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + 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: registerOperatorWithChurnCall) -> Self { + ( + value.churnQuorums, + value.churnTargets, + value.standardQuorums, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithChurnCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + churnQuorums: tuple.0, + churnTargets: tuple.1, + standardQuorums: 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: 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::Array, + alloy::sol_types::sol_data::Bytes, + ); + 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,address[],bytes)"; + const SELECTOR: [u8; 4] = [165u8, 246u8, 204u8, 26u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.churnQuorums, + ), + as alloy_sol_types::SolType>::tokenize(&self.churnTargets), + ::tokenize( + &self.standardQuorums, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `updateStakes()` and selector `0x505377e2`. + ```solidity + function updateStakes() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateStakesCall {} + ///Container type for the return parameters of the [`updateStakes()`](updateStakesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateStakesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateStakesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakesCall { + 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: updateStakesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateStakesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateStakesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateStakes()"; + const SELECTOR: [u8; 4] = [80u8, 83u8, 119u8, 226u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`User`](self) function calls. + pub enum UserCalls { + IS_TEST(IS_TESTCall), + NAME(NAMECall), + depositIntoEigenlayer(depositIntoEigenlayerCall), + deregisterOperator(deregisterOperatorCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + exitEigenlayer(exitEigenlayerCall), + failed(failedCall), + isValidSignature(isValidSignatureCall), + operatorId(operatorIdCall), + pubkeyG1(pubkeyG1Call), + registerAsOperator(registerAsOperatorCall), + registerOperator(registerOperatorCall), + registerOperatorWithChurn(registerOperatorWithChurnCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + updateStakes(updateStakesCall), + } + #[automatically_derived] + impl UserCalls { + /// 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], + [30u8, 215u8, 131u8, 28u8], + [42u8, 52u8, 173u8, 232u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [80u8, 83u8, 119u8, 226u8], + [101u8, 237u8, 168u8, 229u8], + [102u8, 217u8, 169u8, 160u8], + [109u8, 51u8, 111u8, 88u8], + [130u8, 49u8, 181u8, 76u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [163u8, 244u8, 223u8, 126u8], + [165u8, 246u8, 204u8, 26u8], + [175u8, 161u8, 199u8, 55u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [191u8, 104u8, 184u8, 22u8], + [202u8, 79u8, 45u8, 151u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for UserCalls { + const NAME: &'static str = "UserCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 22usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::NAME(_) => ::SELECTOR, + Self::depositIntoEigenlayer(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::exitEigenlayer(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::isValidSignature(_) => { + ::SELECTOR + } + Self::operatorId(_) => ::SELECTOR, + Self::pubkeyG1(_) => ::SELECTOR, + Self::registerAsOperator(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registerOperatorWithChurn(_) => { + ::SELECTOR + } + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::updateStakes(_) => ::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(UserCalls::isValidSignature) + } + isValidSignature + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::excludeSenders) + } + excludeSenders + }, + { + fn registerAsOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::registerAsOperator) + } + registerAsOperator + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::targetContracts) + } + targetContracts + }, + { + fn updateStakes( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::updateStakes) + } + updateStakes + }, + { + fn exitEigenlayer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::exitEigenlayer) + } + exitEigenlayer + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn depositIntoEigenlayer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::depositIntoEigenlayer) + } + depositIntoEigenlayer + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::registerOperator) + } + registerOperator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::targetSelectors) + } + targetSelectors + }, + { + fn NAME(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UserCalls::NAME) + } + NAME + }, + { + fn registerOperatorWithChurn( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::registerOperatorWithChurn) + } + registerOperatorWithChurn + }, + { + fn pubkeyG1(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UserCalls::pubkeyG1) + } + pubkeyG1 + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UserCalls::failed) + } + failed + }, + { + fn operatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UserCalls::operatorId) + } + operatorId + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UserCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UserCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::NAME(inner) => { + ::abi_encoded_size(inner) + } + Self::depositIntoEigenlayer(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::exitEigenlayer(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::isValidSignature(inner) => { + ::abi_encoded_size(inner) + } + Self::operatorId(inner) => { + ::abi_encoded_size(inner) + } + Self::pubkeyG1(inner) => { + ::abi_encoded_size(inner) + } + Self::registerAsOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorWithChurn(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::updateStakes(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::NAME(inner) => { + ::abi_encode_raw(inner, out) + } + Self::depositIntoEigenlayer(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::exitEigenlayer(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isValidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + Self::operatorId(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pubkeyG1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerAsOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorWithChurn(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateStakes(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`User`](self) events. + pub enum UserEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl UserEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for UserEvents { + const NAME: &'static str = "UserEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 UserEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`User`](self) contract instance. + + See the [wrapper's documentation](`UserInstance`) 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, + ) -> UserInstance { + UserInstance::::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, + _privKey: alloy::sol_types::private::primitives::aliases::U256, + _pubkeyParams: ::RustType, + ) -> impl ::core::future::Future>> { + UserInstance::::deploy(provider, name, _privKey, _pubkeyParams) + } + /**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, + _privKey: alloy::sol_types::private::primitives::aliases::U256, + _pubkeyParams: ::RustType, + ) -> alloy_contract::RawCallBuilder { + UserInstance::::deploy_builder(provider, name, _privKey, _pubkeyParams) + } + /**A [`User`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`User`](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 UserInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for UserInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("UserInstance").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, + > UserInstance + { + /**Creates a new wrapper around an on-chain [`User`](self) contract instance. + + See the [wrapper's documentation](`UserInstance`) 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, + _privKey: alloy::sol_types::private::primitives::aliases::U256, + _pubkeyParams: ::RustType, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, name, _privKey, _pubkeyParams); + 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, + _privKey: alloy::sol_types::private::primitives::aliases::U256, + _pubkeyParams: ::RustType, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + name, + _privKey, + _pubkeyParams, + })[..], + ] + .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 UserInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> UserInstance { + UserInstance { + 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, + > UserInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`depositIntoEigenlayer`] function. + pub fn depositIntoEigenlayer( + &self, + strategies: alloy::sol_types::private::Vec, + tokenBalances: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositIntoEigenlayerCall { + strategies, + tokenBalances, + }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + quorums: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { quorums }) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`exitEigenlayer`] function. + pub fn exitEigenlayer( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&exitEigenlayerCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`isValidSignature`] function. + pub fn isValidSignature( + &self, + digestHash: alloy::sol_types::private::FixedBytes<32>, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isValidSignatureCall { digestHash, _1 }) + } + ///Creates a new call builder for the [`operatorId`] function. + pub fn operatorId(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorIdCall {}) + } + ///Creates a new call builder for the [`pubkeyG1`] function. + pub fn pubkeyG1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pubkeyG1Call {}) + } + ///Creates a new call builder for the [`registerAsOperator`] function. + pub fn registerAsOperator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterAsOperatorCall {}) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + quorums: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { quorums }) + } + ///Creates a new call builder for the [`registerOperatorWithChurn`] function. + pub fn registerOperatorWithChurn( + &self, + churnQuorums: alloy::sol_types::private::Bytes, + churnTargets: alloy::sol_types::private::Vec, + standardQuorums: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorWithChurnCall { + churnQuorums, + churnTargets, + standardQuorums, + }) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`updateStakes`] function. + pub fn updateStakes(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateStakesCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UserInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/user_altmethods.rs b/crates/utils/src/middleware/user_altmethods.rs new file mode 100644 index 00000000..6f84c4ce --- /dev/null +++ b/crates/utils/src/middleware/user_altmethods.rs @@ -0,0 +1,8725 @@ +///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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[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::pub_underscore_fields, + 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::pub_underscore_fields, + 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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 StdInvariant { + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct FuzzInterface { address addr; string[] artifacts; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[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 FuzzInterface { + 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 FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[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.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[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.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + 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 FuzzSelector { address addr; bytes4[] selectors; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[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 FuzzSelector { + 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 FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[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.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[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.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + 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 [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StdInvariant`](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 StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance") + .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, + > StdInvariantInstance + { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + + See the [wrapper's documentation](`StdInvariantInstance`) 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 StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + 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, + > StdInvariantInstance + { + /// 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, + > StdInvariantInstance + { + /// 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 StdInvariant { + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface User_AltMethods { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + constructor(string name, uint256 _privKey, IBLSApkRegistry.PubkeyRegistrationParams _pubkeyParams); + + function IS_TEST() external view returns (bool); + function NAME() external view returns (string memory); + function depositIntoEigenlayer(address[] memory strategies, uint256[] memory tokenBalances) external; + function deregisterOperator(bytes memory quorums) external; + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function exitEigenlayer() external returns (address[] memory, uint256[] memory); + function failed() external returns (bool); + function isValidSignature(bytes32 digestHash, bytes memory) external view returns (bytes4); + function operatorId() external view returns (bytes32); + function pubkeyG1() external view returns (BN254.G1Point memory); + function registerAsOperator() external; + function registerOperator(bytes memory quorums) external returns (bytes32); + function registerOperatorWithChurn(bytes memory churnQuorums, address[] memory churnTargets, bytes memory standardQuorums) external; + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); + function updateStakes() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "_privKey", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_pubkeyParams", + "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]" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "NAME", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositIntoEigenlayer", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "tokenBalances", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "quorums", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "exitEigenlayer", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "digestHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorId", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pubkeyG1", + "inputs": [], + "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": "registerAsOperator", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "quorums", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperatorWithChurn", + "inputs": [ + { + "name": "churnQuorums", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "churnTargets", + "type": "address[]", + "internalType": "contract User[]" + }, + { + "name": "standardQuorums", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "updateStakes", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod User_AltMethods { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60806040526007805460ff199081166001908117909255600b80549091169091179055601c80546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d17905560006034553480156200005a57600080fd5b5060405162005013380380620050138339810160408190526200007d9162000b68565b8282826000339050806001600160a01b0316636d14a9876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ea919062000c5f565b602080546001600160a01b0319166001600160a01b039283161781556040805163359d539760e11b8152905192841692636b3aa72e926004808401939192918290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000c5f565b601f80546001600160a01b0319166001600160a01b039283161790556020805460408051633998fdd360e01b815290519190931692633998fdd39260048083019391928290030181865afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000c5f565b602180546001600160a01b0319166001600160a01b039283161790556020805460408051632efa2ca360e11b815290519190931692635df459469260048083019391928290030181865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000c5f565b602280546001600160a01b0319166001600160a01b039283161790556020805460408051636830483560e01b81529051919093169263683048359260048083019391928290030181865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000c5f565b602380546001600160a01b0319166001600160a01b039283161790556020805460408051634f4c91e160e11b815290519190931692639e9923c29260048083019391928290030181865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000c5f565b602480546001600160a01b0319166001600160a01b039283161790556023546040805163df5cf72360e01b81529051919092169163df5cf7239160048083019260209291908290030181865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000c5f565b601d80546001600160a01b0319166001600160a01b0392909216918217905560408051630736e1c760e31b815290516339b70e38916004808201926020929091908290030181865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c5f565b601e80546001600160a01b0319166001600160a01b039283161790556021546040805163359d539760e11b815290519190921691636b3aa72e9160048083019260209291908290030181865afa158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000c5f565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316633dfb40e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062000c5f565b602560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316632dbcb04c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000616919062000c86565b602681905550806001600160a01b031663054310e66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000c5f565b602780546001600160a01b0319166001600160a01b03929092169190911790558351620006b6906028906020870190620008a8565b50602a83905581518051602b908155602091820151602c55818401518051602d5590910151602e556040830151805184929190602f90620006fb908290600262000937565b50602082015162000713906002808401919062000937565b5050602054604051630f0a9fd360e21b8152306004820152600094506001600160a01b039091169250633c2a7f4c91506024016040805180830381865afa15801562000763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000789919062000ca0565b9050620007a7602a5482620007f160201b620022a81790919060201c565b8051602b55602090810151602c5560408051808201909152602d548152602e5481830152620007df916200233f62000891821b17901c565b6029555062000cfc9650505050505050565b60408051808201909152600080825260208201526200080f62000967565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015620008445762000846565bfe5b5080620008895760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640160405180910390fd5b505092915050565b805160009081526020918201519091526040902090565b828054620008b69062000cbf565b90600052602060002090601f016020900481019282620008da576000855562000925565b82601f10620008f557805160ff191683800117855562000925565b8280016001018555821562000925579182015b828111156200092557825182559160200191906001019062000908565b506200093392915062000985565b5090565b82600281019282156200092557916020028201828111156200092557825182559160200191906001019062000908565b60405180606001604052806003906020820280368337509192915050565b5b8082111562000933576000815560010162000986565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009d757620009d76200099c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a085762000a086200099c565b604052919050565b60006040828403121562000a2357600080fd5b604080519081016001600160401b038111828210171562000a485762000a486200099c565b604052825181526020928301519281019290925250919050565b600082601f83011262000a7457600080fd5b62000a7e620009b2565b80604084018581111562000a9157600080fd5b845b8181101562000aad57805184526020938401930162000a93565b509095945050505050565b600081830361010081121562000acd57600080fd5b604051606081016001600160401b038111828210171562000af25762000af26200099c565b60405291508162000b04858562000a10565b815262000b15856040860162000a10565b60208201526080607f198301121562000b2d57600080fd5b62000b37620009b2565b915062000b48856080860162000a62565b825262000b598560c0860162000a62565b60208301526040015292915050565b6000806000610140848603121562000b7f57600080fd5b83516001600160401b038082111562000b9757600080fd5b818601915086601f83011262000bac57600080fd5b81518181111562000bc15762000bc16200099c565b6020915062000bd9601f8201601f19168301620009dd565b818152888383860101111562000bee57600080fd5b60005b8281101562000c0e57848101840151828201850152830162000bf1565b8281111562000c205760008484840101525b508096505050808601519350505062000c3d856040860162000ab8565b90509250925092565b6001600160a01b038116811462000c5c57600080fd5b50565b60006020828403121562000c7257600080fd5b815162000c7f8162000c46565b9392505050565b60006020828403121562000c9957600080fd5b5051919050565b60006040828403121562000cb357600080fd5b62000c7f838362000a10565b600181811c9082168062000cd457607f821691505b6020821081141562000cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6143078062000d0c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x07\x80T`\xFF\x19\x90\x81\x16`\x01\x90\x81\x17\x90\x92U`\x0B\x80T\x90\x91\x16\x90\x91\x17\x90U`\x1C\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x17\x90U`\0`4U4\x80\x15b\0\0ZW`\0\x80\xFD[P`@Qb\0P\x138\x03\x80b\0P\x13\x839\x81\x01`@\x81\x90Rb\0\0}\x91b\0\x0BhV[\x82\x82\x82`\x003\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16cm\x14\xA9\x87`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xEA\x91\x90b\0\x0C_V[` \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x81U`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x92\x84\x16\x92ck:\xA7.\x92`\x04\x80\x84\x01\x93\x91\x92\x91\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x0C_V[`\x1F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc9\x98\xFD\xD3`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92c9\x98\xFD\xD3\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xEC\x91\x90b\0\x0C_V[`!\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qc.\xFA,\xA3`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c]\xF4YF\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02o\x91\x90b\0\x0C_V[`\"\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80Qch0H5`\xE0\x1B\x81R\x90Q\x91\x90\x93\x16\x92ch0H5\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x02\xCCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02\xF2\x91\x90b\0\x0C_V[`#\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U` \x80T`@\x80QcOL\x91\xE1`\xE1\x1B\x81R\x90Q\x91\x90\x93\x16\x92c\x9E\x99#\xC2\x92`\x04\x80\x83\x01\x93\x91\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03OW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03u\x91\x90b\0\x0C_V[`$\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`#T`@\x80Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90Q\x91\x90\x92\x16\x91c\xDF\\\xF7#\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\xFA\x91\x90b\0\x0C_V[`\x1D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80Qc\x076\xE1\xC7`\xE3\x1B\x81R\x90Qc9\xB7\x0E8\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x04{\x91\x90b\0\x0C_V[`\x1E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`!T`@\x80Qc5\x9DS\x97`\xE1\x1B\x81R\x90Q\x91\x90\x92\x16\x91ck:\xA7.\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x04\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\0\x91\x90b\0\x0C_V[`\x1F`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c=\xFB@\xE0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05eW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x8B\x91\x90b\0\x0C_V[`%`\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\x80`\x01`\x01`\xA0\x1B\x03\x16c-\xBC\xB0L`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x05\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x16\x91\x90b\0\x0C\x86V[`&\x81\x90UP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x05C\x10\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x06[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\x81\x91\x90b\0\x0C_V[`'\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x83Qb\0\x06\xB6\x90`(\x90` \x87\x01\x90b\0\x08\xA8V[P`*\x83\x90U\x81Q\x80Q`+\x90\x81U` \x91\x82\x01Q`,U\x81\x84\x01Q\x80Q`-U\x90\x91\x01Q`.U`@\x83\x01Q\x80Q\x84\x92\x91\x90`/\x90b\0\x06\xFB\x90\x82\x90`\x02b\0\t7V[P` \x82\x01Qb\0\x07\x13\x90`\x02\x80\x84\x01\x91\x90b\0\t7V[PP` T`@Qc\x0F\n\x9F\xD3`\xE2\x1B\x81R0`\x04\x82\x01R`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc<*\x7FL\x91P`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07\x89\x91\x90b\0\x0C\xA0V[\x90Pb\0\x07\xA7`*T\x82b\0\x07\xF1` \x1Bb\0\"\xA8\x17\x90\x91\x90` \x1CV[\x80Q`+U` \x90\x81\x01Q`,U`@\x80Q\x80\x82\x01\x90\x91R`-T\x81R`.T\x81\x83\x01Rb\0\x07\xDF\x91b\0#?b\0\x08\x91\x82\x1B\x17\x90\x1CV[`)UPb\0\x0C\xFC\x96PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Rb\0\x08\x0Fb\0\tgV[\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\x15b\0\x08DWb\0\x08FV[\xFE[P\x80b\0\x08\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x82\x80Tb\0\x08\xB6\x90b\0\x0C\xBFV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\x08\xDAW`\0\x85Ub\0\t%V[\x82`\x1F\x10b\0\x08\xF5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\t%V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\t%W\x91\x82\x01[\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[Pb\0\t3\x92\x91Pb\0\t\x85V[P\x90V[\x82`\x02\x81\x01\x92\x82\x15b\0\t%W\x91` \x02\x82\x01\x82\x81\x11\x15b\0\t%W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\t\x08V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15b\0\t3W`\0\x81U`\x01\x01b\0\t\x86V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\t\xD7Wb\0\t\xD7b\0\t\x9CV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\x08Wb\0\n\x08b\0\t\x9CV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\n#W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\nHWb\0\nHb\0\t\x9CV[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[`\0\x82`\x1F\x83\x01\x12b\0\ntW`\0\x80\xFD[b\0\n~b\0\t\xB2V[\x80`@\x84\x01\x85\x81\x11\x15b\0\n\x91W`\0\x80\xFD[\x84[\x81\x81\x10\x15b\0\n\xADW\x80Q\x84R` \x93\x84\x01\x93\x01b\0\n\x93V[P\x90\x95\x94PPPPPV[`\0\x81\x83\x03a\x01\0\x81\x12\x15b\0\n\xCDW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\n\xF2Wb\0\n\xF2b\0\t\x9CV[`@R\x91P\x81b\0\x0B\x04\x85\x85b\0\n\x10V[\x81Rb\0\x0B\x15\x85`@\x86\x01b\0\n\x10V[` \x82\x01R`\x80`\x7F\x19\x83\x01\x12\x15b\0\x0B-W`\0\x80\xFD[b\0\x0B7b\0\t\xB2V[\x91Pb\0\x0BH\x85`\x80\x86\x01b\0\nbV[\x82Rb\0\x0BY\x85`\xC0\x86\x01b\0\nbV[` \x83\x01R`@\x01R\x92\x91PPV[`\0\x80`\0a\x01@\x84\x86\x03\x12\x15b\0\x0B\x7FW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x0B\x97W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x0B\xACW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x0B\xC1Wb\0\x0B\xC1b\0\t\x9CV[` \x91Pb\0\x0B\xD9`\x1F\x82\x01`\x1F\x19\x16\x83\x01b\0\t\xDDV[\x81\x81R\x88\x83\x83\x86\x01\x01\x11\x15b\0\x0B\xEEW`\0\x80\xFD[`\0[\x82\x81\x10\x15b\0\x0C\x0EW\x84\x81\x01\x84\x01Q\x82\x82\x01\x85\x01R\x83\x01b\0\x0B\xF1V[\x82\x81\x11\x15b\0\x0C W`\0\x84\x84\x84\x01\x01R[P\x80\x96PPP\x80\x86\x01Q\x93PPPb\0\x0C=\x85`@\x86\x01b\0\n\xB8V[\x90P\x92P\x92P\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x0C\\W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x0CrW`\0\x80\xFD[\x81Qb\0\x0C\x7F\x81b\0\x0CFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15b\0\x0C\x99W`\0\x80\xFD[PQ\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x0C\xB3W`\0\x80\xFD[b\0\x0C\x7F\x83\x83b\0\n\x10V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x0C\xD4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x0C\xF6WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[aC\x07\x80b\0\r\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101425760003560e01c806385226c81116100b8578063b5508aa91161007c578063b5508aa9146102a6578063ba414fa6146102ae578063bf68b816146102c6578063ca4f2d97146102cf578063e20c9f71146102e2578063fa7626d4146102ea57600080fd5b806385226c8114610223578063916a17c614610238578063a3f4df7e14610240578063a5f6cc1a14610255578063afa1c7371461026857600080fd5b80633f7286f41161010a5780633f7286f4146101b4578063505377e2146101bc57806365eda8e5146101c457806366d9a9a0146101da5780636d336f58146101ef5780638231b54c1461020257600080fd5b80631626ba7e146101475780631ed7831c146101785780632a34ade81461018d5780632ade3880146101975780633e5e3c23146101ac575b600080fd5b61015a6101553660046130dc565b6102f7565b6040516001600160e01b031990911681526020015b60405180910390f35b610180610326565b60405161016f9190613165565b610195610388565b005b61019f61052d565b60405161016f919061320e565b61018061066f565b6101806106cf565b61019561072f565b6101cc610bc2565b60405161016f929190613342565b6101e2610e6b565b60405161016f9190613370565b6101956101fd3660046134c1565b610f51565b6102156102103660046135ca565b611236565b60405190815260200161016f565b61022b6113f5565b60405161016f919061360b565b6101e26114c5565b6102486115ab565b60405161016f919061366d565b610195610263366004613680565b611639565b604080518082018252600080825260209182015281518083018352602d54808252602e5491830191825283519081529051918101919091520161016f565b61022b611dec565b6102b6611ebc565b604051901515815260200161016f565b61021560295481565b6101956102dd3660046135ca565b611fe9565b610180612248565b6007546102b69060ff1681565b60008281526033602052604081205460ff161561031c5750630b135d3f60e11b610320565b5060005b92915050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610360575b5050505050905090565b601c546001600160a01b0316631f7b4f306103a4436001613760565b6040518263ffffffff1660e01b81526004016103c291815260200190565b600060405180830381600087803b1580156103dc57600080fd5b505af11580156103f0573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190613778565b506104ac6040518060400160405280601981526020017f726567697374657241734f70657261746f722028636f72652900000000000000815250612356565b6040805160608101825230815260006020820181905281830152601d549151630f589e5960e01b815290916001600160a01b031690630f589e59906104f8908490602890600401613843565b600060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561066657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561064f5783829060005260206000200180546105c290613791565b80601f01602080910402602001604051908101604052809291908181526020018280546105ee90613791565b801561063b5780601f106106105761010080835404028352916020019161063b565b820191906000526020600020905b81548152906001019060200180831161061e57829003601f168201915b5050505050815260200190600101906105a3565b505050508152505081526020019060010190610551565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b601c546001600160a01b0316631f7b4f3061074b436001613760565b6040518263ffffffff1660e01b815260040161076991815260200190565b600060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190613778565b506108366040518060600160405280602781526020016142ab60279139612356565b60006108ca6001602060009054906101000a90046001600160a01b03166001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613894565b60ff166001901b6108c591906138af565b61239e565b9050600081516001600160401b038111156108e7576108e761306f565b60405190808252806020026020018201604052801561091a57816020015b60608152602001906001900390816109055790505b50905060005b8251811015610b5957600083828151811061093d5761093d6138c6565b016020015160248054604051638902624560e01b815260f89390931c600484018190524363ffffffff16928401929092529092506000916001600160a01b0390911690638902624590604401600060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ce91908101906138dc565b905080516001600160401b038111156109e9576109e961306f565b604051908082528060200260200182016040528015610a12578160200160208202803683370190505b50848481518110610a2557610a256138c6565b602002602001018190525060005b8151811015610b215760225482516001600160a01b03909116906347b314e890849084908110610a6557610a656138c6565b60200260200101516040518263ffffffff1660e01b8152600401610a8b91815260200190565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc919061396c565b858581518110610ade57610ade6138c6565b60200260200101518281518110610af757610af76138c6565b6001600160a01b039092166020928302919091019091015280610b1981613989565b915050610a33565b50610b44848481518110610b3757610b376138c6565b602002602001015161246a565b50508080610b5190613989565b915050610920565b50602054604051630a2814a960e31b81526001600160a01b0390911690635140a54890610b8c90849086906004016139a4565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050505050565b601c5460609081906001600160a01b0316631f7b4f30610be3436001613760565b6040518263ffffffff1660e01b8152600401610c0191815260200190565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613778565b50610ce36040518060400160405280601581526020017465786974456967656e6c617965722028636f72652960581b815250612356565b601d546040516367c0439f60e11b815230600482015260009182916001600160a01b039091169063cf80873e90602401600060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d589190810190613a9d565b60408051600180825281830190925292945090925060009190816020015b60408051606080820183528082526020820152600091810191909152815260200190600190039081610d765790505090506040518060600160405280848152602001838152602001306001600160a01b031681525081600081518110610dde57610dde6138c6565b6020908102919091010152601d546040516306ec6e8160e11b81526001600160a01b0390911690630dd8dd0290610e19908490600401613b57565b6000604051808303816000875af1158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6091908101906138dc565b509193509150509091565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610f3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610efb5790505b50505050508152505081526020019060010190610e8f565b601c546001600160a01b0316631f7b4f30610f6d436001613760565b6040518263ffffffff1660e01b8152600401610f8b91815260200190565b600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110369190613778565b506110756040518060400160405280601c81526020017f6465706f736974496e746f456967656e4c617965722028636f72652900000000815250612356565b60005b8251811015611231576000838281518110611095576110956138c6565b6020026020010151905060008383815181106110b3576110b36138c6565b602002602001015190506000826001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061396c565b601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905291925082169063095ea7b3906044016020604051808303816000875af1158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190613bf1565b50601e546040516373d0285560e11b81526001600160a01b0385811660048301528381166024830152604482018590529091169063e7a050aa906064016020604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613778565b50505050808061122990613989565b915050611078565b505050565b601c546000906001600160a01b0316631f7b4f30611255436001613760565b6040518263ffffffff1660e01b815260040161127391815260200190565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613778565b506113526040518060400160405280601081526020016f3932b3b4b9ba32b927b832b930ba37b960811b815250848461259b565b6020546001600160a01b031663a50857bf84846028602b611371612620565b6040518663ffffffff1660e01b8152600401611391959493929190613cd6565b600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b5050604080518082018252602d54808252602e5460209283019081526000918252519091522091506113ee9050565b9392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561066657838290600052602060002001805461143890613791565b80601f016020809104026020016040519081016040528092919081815260200182805461146490613791565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505081526020019060010190611419565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106665760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561159357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115555790505b505050505081525050815260200190600101906114e9565b602880546115b890613791565b80601f01602080910402602001604051908101604052809291908181526020018280546115e490613791565b80156116315780601f1061160657610100808354040283529160200191611631565b820191906000526020600020905b81548152906001019060200180831161161457829003601f168201915b505050505081565b601c546001600160a01b0316631f7b4f30611655436001613760565b6040518263ffffffff1660e01b815260040161167391815260200190565b600060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190613778565b506117f96040518060400160405280601981526020017f72656769737465724f70657261746f7257697468436875726e0000000000000081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061272892505050565b600061183a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b9050600061187d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129ab92505050565b604080516060810190915260358082529192506118a591899188916142186020830139612b38565b6118d38183166001600160c01b0316156040518060600160405280603e815260200161424d603e9139612b6e565b60006118ec6001600160c01b038381169085161761239e565b9050600081516001600160401b038111156119095761190961306f565b60405190808252806020026020018201604052801561194e57816020015b60408051808201909152600080825260208201528152602001906001900390816119275790505b5090506000805b83516119618284613760565b1015611b7c57818b14156119bc5760408051808201909152600080825260208201528361198e8385613760565b8151811061199e5761199e6138c6565b602002602001018190525080806119b490613989565b915050611955565b80871480611a0f57508787828181106119d7576119d76138c6565b909101356001600160f81b03191690508c8c848181106119f9576119f96138c6565b9050013560f81c60f81b6001600160f81b031916105b15611aaa5760405180604001604052808d8d85818110611a3157611a316138c6565b919091013560f81c8252506020018b8b85818110611a5157611a516138c6565b9050602002016020810190611a669190613d2d565b6001600160a01b0316905283611a7c8385613760565b81518110611a8c57611a8c6138c6565b60200260200101819052508180611aa290613989565b925050611955565b8b8b83818110611abc57611abc6138c6565b909101356001600160f81b0319169050888883818110611ade57611ade6138c6565b9050013560f81c60f81b6001600160f81b0319161015611b175760408051808201909152600080825260208201528361198e8385613760565b60405162461bcd60e51b815260206004820152602f60248201527f557365722e72656769737465724f70657261746f7257697468436875726e3a2060448201526e1b585b199bdc9b5959081a5b9c1d5d608a1b60648201526084015b60405180910390fd5b6000603460008154611b8d90613989565b91829055506040805160208101929092526bffffffffffffffffffffffff193060601b169082015260540160408051601f1981840301815290829052805160209182012090546029546384ca521360e01b8452919350600019926000926001600160a01b03909216916384ca521391611c109130918b9089908990600401613d91565b602060405180830381865afa158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c519190613778565b601c546026546040516338d07aa960e21b8152929350600092839283926001600160a01b039091169163e341eaa491611c97918890600401918252602082015260400190565b606060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613dcc565b604080516041808252608082019092529396509194509250600091906020820181803683370190505090508260208201528160408201528360f81b8160018351611d2291906138af565b81518110611d3257611d326138c6565b60200101906001600160f81b031916908160001a9053506040805160608101825282815260208082018a905291810188905290546001600160a01b0316639b5d177b8d6028602b8f86611d83612620565b6040518763ffffffff1660e01b8152600401611da496959493929190613e01565b600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505050505050505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610666578382906000526020600020018054611e2f90613791565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90613791565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505081526020019060010190611e10565b600754600090610100900460ff1615611ede5750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611fe45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091611f6c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e82565b60408051601f1981840301815290829052611f8691613eb3565b6000604051808303816000865af19150503d8060008114611fc3576040519150601f19603f3d011682016040523d82523d6000602084013e611fc8565b606091505b5091505080806020019051810190611fe09190613bf1565b9150505b919050565b601c546001600160a01b0316631f7b4f30612005436001613760565b6040518263ffffffff1660e01b815260040161202391815260200190565b600060405180830381600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b50505050602560009054906101000a90046001600160a01b03166001600160a01b0316631504d8f06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613778565b5061210f6040518060400160405280601a81526020017f646572656769737465724f70657261746f722028656a65637429000000000000815250838361259b565b60208054604080516328f61b3160e01b815290516000936001600160a01b03909316926328f61b3192600480820193918290030181865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061396c565b601c5460405163ca669fa760e01b81526001600160a01b03808416600483015292935091169063ca669fa790602401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b5050602054604051636e3b17db60e01b81526001600160a01b039091169250636e3b17db915061221190309087908790600401613ecf565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561037e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610360575050505050905090565b60408051808201909152600080825260208201526122c4613051565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156122f7576122f9565bfe5b50806123375760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401611b73565b505092915050565b805160009081526020918201519091526040902090565b6000805160206141f8833981519152602882604051602001612379929190613ef4565b60408051601f19818403018152908290526123939161366d565b60405180910390a150565b60606000806123ac84612ba1565b61ffff166001600160401b038111156123c7576123c761306f565b6040519080825280601f01601f1916602001820160405280156123f1576020820181803683370190505b5090506000805b825182108015612409575061010081105b15612460576001811b935085841615612450578060f81b838381518110612432576124326138c6565b60200101906001600160f81b031916908160001a9053508160010191505b61245981613989565b90506123f8565b5090949350505050565b60015b815181101561259757600082828151811061248a5761248a6138c6565b6020026020010151905060006001836124a391906138af565b90505b816001600160a01b03168482815181106124c2576124c26138c6565b60200260200101516001600160a01b03161115612545578381815181106124eb576124eb6138c6565b6020026020010151848260016125019190613760565b81518110612511576125116138c6565b6001600160a01b03909216602092830291909101909101528061253357612545565b8061253d81613f84565b9150506124a6565b8184612552836001613760565b81518110612562576125626138c6565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061258f90613989565b91505061246d565b5050565b60008051602061428b8339815191526028846040516020016125be929190613ef4565b60408051601f198184030181526020601f860181900481028401810190925284835291612605918690869081908401838280828437600092019190915250612bcc92505050565b604051612613929190613f9b565b60405180910390a1505050565b60408051606080820183528082526000602083018190528284018190528351918201818152608083019094529192819081526020016034600081548092919061266890613989565b909155508152600019602091820152601f54602154918301516040808501519051631420c19160e31b81523060048201526001600160a01b0394851660248201526044810192909252606482015292935060009291169063a1060c8890608401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190613778565b6000908152603360205260409020805460ff1916600117905550919050565b6000805160206141f883398151915260288560405160200161274b929190613ef4565b60408051601f19818403018152908290526127659161366d565b60405180910390a160008051602061428b83398151915261278582612bcc565b6040516127929190613fc0565b60405180910390a160008051602061428b8339815191526127b284612bcc565b6040516127bf9190613ffb565b60405180910390a16040805180820190915260018152605b60f81b602082015260005b835181101561295c57600184516127f991906138af565b8114156128a75781848281518110612813576128136138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128809190810190614033565b6040516020016128919291906140a0565b604051602081830303815290604052915061294a565b818482815181106128ba576128ba6138c6565b60200260200101516001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156128ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129279190810190614033565b6040516020016129389291906140cf565b60405160208183030381529060405291505b8061295481613989565b9150506127e2565b508060405160200161296e919061410b565b604051602081830303815290604052905060008051602061428b8339815191528160405161299c9190614130565b60405180910390a15050505050565b600061010082511115612a345760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401611b73565b8151612a4257506000919050565b60008083600081518110612a5857612a586138c6565b0160200151600160f89190911c81901b92505b8451811015612b2f57848181518110612a8657612a866138c6565b0160200151600160f89190911c1b9150828211612b1b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401611b73565b91811791612b2881613989565b9050612a6b565b50909392505050565b8183146112315760008051602061428b83398151915281604051612b5c9190614168565b60405180910390a16112318383612cc6565b816125975760008051602061428b83398151915281604051612b909190614168565b60405180910390a161259782612ddb565b6000805b821561032057612bb66001846138af565b9092169180612bc481614197565b915050612ba5565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015612c9d5760018451612c0191906138af565b811415612c525781612c2b858381518110612c1e57612c1e6138c6565b016020015160f81c612e40565b604051602001612c3c9291906140a0565b6040516020818303038152906040529150612c8b565b81612c68858381518110612c1e57612c1e6138c6565b604051602001612c799291906140cf565b60405160208183030381529060405291505b80612c9581613989565b915050612bea565b5080604051602001612caf919061410b565b60408051601f198184030181529190529392505050565b808214612597576000805160206141f8833981519152604051612d259060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1612597612f45565b80612e3d576000805160206141f8833981519152604051612e2d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1612e3d612f45565b50565b606081612e645750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e8e5780612e7881613989565b9150612e879050600a836141cf565b9150612e68565b6000816001600160401b03811115612ea857612ea861306f565b6040519080825280601f01601f191660200182016040528015612ed2576020820181803683370190505b5090505b8415612f3d57612ee76001836138af565b9150612ef4600a866141e3565b612eff906030613760565b60f81b818381518110612f1457612f146138c6565b60200101906001600160f81b031916908160001a905350612f36600a866141cf565b9450612ed6565b949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156130405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052612fdf9291602001613e82565b60408051601f1981840301815290829052612ff991613eb3565b6000604051808303816000865af19150503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b505050505b6007805461ff001916610100179055565b60405180606001604052806003906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130ad576130ad61306f565b604052919050565b60006001600160401b038211156130ce576130ce61306f565b50601f01601f191660200190565b600080604083850312156130ef57600080fd5b8235915060208301356001600160401b0381111561310c57600080fd5b8301601f8101851361311d57600080fd5b803561313061312b826130b5565b613085565b81815286602083850101111561314557600080fd5b816020840160208301376000602083830101528093505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156131a65783516001600160a01b031683529284019291840191600101613181565b50909695505050505050565b60005b838110156131cd5781810151838201526020016131b5565b838111156131dc576000848401525b50505050565b600081518084526131fa8160208601602086016131b2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156132be57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156132a857605f198985030183526132968486516131e2565b948e01949350918d019160010161327a565b505050978a019794505091880191600101613235565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156133075781516001600160a01b0316875295820195908201906001016132e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561330757815187529582019590820190600101613326565b60408152600061335560408301856132ce565b82810360208401526133678185613312565b95945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561341457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156133ff5783516001600160e01b0319168252928b019260019290920191908b01906133d5565b50978a01979550505091870191600101613398565b50919998505050505050505050565b60006001600160401b0382111561343c5761343c61306f565b5060051b60200190565b6001600160a01b0381168114612e3d57600080fd5b600082601f83011261346c57600080fd5b8135602061347c61312b83613423565b82815260059290921b8401810191818101908684111561349b57600080fd5b8286015b848110156134b6578035835291830191830161349f565b509695505050505050565b600080604083850312156134d457600080fd5b82356001600160401b03808211156134eb57600080fd5b818501915085601f8301126134ff57600080fd5b8135602061350f61312b83613423565b82815260059290921b8401810191818101908984111561352e57600080fd5b948201945b8386101561355557853561354681613446565b82529482019490820190613533565b9650508601359250508082111561356b57600080fd5b506135788582860161345b565b9150509250929050565b60008083601f84011261359457600080fd5b5081356001600160401b038111156135ab57600080fd5b6020830191508360208285010111156135c357600080fd5b9250929050565b600080602083850312156135dd57600080fd5b82356001600160401b038111156135f357600080fd5b6135ff85828601613582565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366057603f1988860301845261364e8583516131e2565b94509285019290850190600101613632565b5092979650505050505050565b6020815260006113ee60208301846131e2565b6000806000806000806060878903121561369957600080fd5b86356001600160401b03808211156136b057600080fd5b6136bc8a838b01613582565b909850965060208901359150808211156136d557600080fd5b818901915089601f8301126136e957600080fd5b8135818111156136f857600080fd5b8a60208260051b850101111561370d57600080fd5b60208301965080955050604089013591508082111561372b57600080fd5b5061373889828a01613582565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137735761377361374a565b500190565b60006020828403121561378a57600080fd5b5051919050565b600181811c908216806137a557607f821691505b602082108114156137c657634e487b7160e01b600052602260045260246000fd5b50919050565b600081546137d981613791565b8085526020600183811680156137f6576001811461380a57613838565b60ff19851688840152604088019550613838565b866000528260002060005b858110156138305781548a8201860152908301908401613815565b890184019650505b505050505092915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152612f3d60808301846137cc565b805160ff81168114611fe457600080fd5b6000602082840312156138a657600080fd5b6113ee82613883565b6000828210156138c1576138c161374a565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156138ef57600080fd5b82516001600160401b0381111561390557600080fd5b8301601f8101851361391657600080fd5b805161392461312b82613423565b81815260059190911b8201830190838101908783111561394357600080fd5b928401925b8284101561396157835182529284019290840190613948565b979650505050505050565b60006020828403121561397e57600080fd5b81516113ee81613446565b600060001982141561399d5761399d61374a565b5060010190565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b84811015613a2b57888703605f19018652825180518089529085019085890190845b81811015613a155783516001600160a01b0316835292870192918701916001016139f0565b50909850505094830194918301916001016139ce565b5050508584038187015250505061336781856131e2565b600082601f830112613a5357600080fd5b81516020613a6361312b83613423565b82815260059290921b84018101918181019086841115613a8257600080fd5b8286015b848110156134b65780518352918301918301613a86565b60008060408385031215613ab057600080fd5b82516001600160401b0380821115613ac757600080fd5b818501915085601f830112613adb57600080fd5b81516020613aeb61312b83613423565b82815260059290921b84018101918181019089841115613b0a57600080fd5b948201945b83861015613b31578551613b2281613446565b82529482019490820190613b0f565b91880151919650909350505080821115613b4a57600080fd5b5061357885828601613a42565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613be357603f19898403018552815160608151818652613ba4828701826132ce565b915050888201518582038a870152613bbc8282613312565b928901516001600160a01b0316958901959095525094870194925090860190600101613b7e565b509098975050505050505050565b600060208284031215613c0357600080fd5b815180151581146113ee57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b60028110156131dc578154845260209093019260019182019101613c40565b80548252600181015460208301526002810154604083015260038101546060830152613c916080830160048301613c3c565b61259760c0830160068301613c3c565b6000815160608452613cb660608501826131e2565b905060208301516020850152604083015160408501528091505092915050565b6000610160808352613ceb818401888a613c13565b90508281036020840152613cff81876137cc565b9050613d0e6040840186613c5f565b828103610140840152613d218185613ca1565b98975050505050505050565b600060208284031215613d3f57600080fd5b81356113ee81613446565b600081518084526020808501945080840160005b83811015613307578151805160ff1688528301516001600160a01b03168388015260409096019590820190600101613d5e565b60018060a01b038616815284602082015260a060408201526000613db860a0830186613d4a565b606083019490945250608001529392505050565b600080600060608486031215613de157600080fd5b613dea84613883565b925060208401519150604084015190509250925092565b60006101a0808352613e158184018a6131e2565b90508281036020840152613e2981896137cc565b9050613e386040840188613c5f565b828103610140840152613e4b8187613d4a565b9050828103610160840152613e608186613ca1565b9050828103610180840152613e758185613ca1565b9998505050505050505050565b6001600160e01b0319831681528151600090613ea58160048501602087016131b2565b919091016004019392505050565b60008251613ec58184602087016131b2565b9190910192915050565b6001600160a01b03841681526040602082018190526000906133679083018486613c13565b6000808454613f0281613791565b60018281168015613f1a5760018114613f2b57613f5a565b60ff19841687528287019450613f5a565b8860005260208060002060005b85811015613f515781548a820152908401908201613f38565b50505082870194505b50601760f91b845286519250613f768382860160208a016131b2565b919092010195945050505050565b600081613f9357613f9361374a565b506000190190565b604081526000613fae60408301856131e2565b828103602084015261336781856131e2565b6040815260116040820152702d207374616e6461726451756f72756d7360781b60608201526080602082015260006113ee60808301846131e2565b60408152600e60408201526d2d20636875726e51756f72756d7360901b60608201526080602082015260006113ee60808301846131e2565b60006020828403121561404557600080fd5b81516001600160401b0381111561405b57600080fd5b8201601f8101841361406c57600080fd5b805161407a61312b826130b5565b81815285602083850101111561408f57600080fd5b6133678260208301602086016131b2565b600083516140b28184602088016131b2565b8351908301906140c68183602088016131b2565b01949350505050565b600083516140e18184602088016131b2565b8351908301906140f58183602088016131b2565b61016160f51b9101908152600201949350505050565b6000825161411d8184602087016131b2565b605d60f81b920191825250600101919050565b60408152600e60408201526d2d20636875726e5461726765747360901b60608201526080602082015260006113ee60808301846131e2565b60408152600560408201526422b93937b960d91b60608201526080602082015260006113ee60808301846131e2565b600061ffff808316818114156141af576141af61374a565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826141de576141de6141b9565b500490565b6000826141f2576141f26141b9565b50069056fe41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50557365722e72656769737465724f70657261746f7257697468436875726e3a20696e707574206c656e677468206d69736d61746368557365722e72656769737465724f70657261746f7257697468436875726e3a20696e7075742071756f72756d73206861766520636f6d6d6f6e2062697473280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35837570646174655374616b657320287570646174654f70657261746f7273466f7251756f72756d29a26469706673582212205b671206c61d23c42c96339fe5ec70fbc6dd8924b67cbec0bb85c21812db98c364736f6c634300080c0033 + /// ``` + #[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\x01BW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\xB8W\x80c\xB5P\x8A\xA9\x11a\0|W\x80c\xB5P\x8A\xA9\x14a\x02\xA6W\x80c\xBAAO\xA6\x14a\x02\xAEW\x80c\xBFh\xB8\x16\x14a\x02\xC6W\x80c\xCAO-\x97\x14a\x02\xCFW\x80c\xE2\x0C\x9Fq\x14a\x02\xE2W\x80c\xFAv&\xD4\x14a\x02\xEAW`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x02#W\x80c\x91j\x17\xC6\x14a\x028W\x80c\xA3\xF4\xDF~\x14a\x02@W\x80c\xA5\xF6\xCC\x1A\x14a\x02UW\x80c\xAF\xA1\xC77\x14a\x02hW`\0\x80\xFD[\x80c?r\x86\xF4\x11a\x01\nW\x80c?r\x86\xF4\x14a\x01\xB4W\x80cPSw\xE2\x14a\x01\xBCW\x80ce\xED\xA8\xE5\x14a\x01\xC4W\x80cf\xD9\xA9\xA0\x14a\x01\xDAW\x80cm3oX\x14a\x01\xEFW\x80c\x821\xB5L\x14a\x02\x02W`\0\x80\xFD[\x80c\x16&\xBA~\x14a\x01GW\x80c\x1E\xD7\x83\x1C\x14a\x01xW\x80c*4\xAD\xE8\x14a\x01\x8DW\x80c*\xDE8\x80\x14a\x01\x97W\x80c>^<#\x14a\x01\xACW[`\0\x80\xFD[a\x01Za\x01U6`\x04a0\xDCV[a\x02\xF7V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x80a\x03&V[`@Qa\x01o\x91\x90a1eV[a\x01\x95a\x03\x88V[\0[a\x01\x9Fa\x05-V[`@Qa\x01o\x91\x90a2\x0EV[a\x01\x80a\x06oV[a\x01\x80a\x06\xCFV[a\x01\x95a\x07/V[a\x01\xCCa\x0B\xC2V[`@Qa\x01o\x92\x91\x90a3BV[a\x01\xE2a\x0EkV[`@Qa\x01o\x91\x90a3pV[a\x01\x95a\x01\xFD6`\x04a4\xC1V[a\x0FQV[a\x02\x15a\x02\x106`\x04a5\xCAV[a\x126V[`@Q\x90\x81R` \x01a\x01oV[a\x02+a\x13\xF5V[`@Qa\x01o\x91\x90a6\x0BV[a\x01\xE2a\x14\xC5V[a\x02Ha\x15\xABV[`@Qa\x01o\x91\x90a6mV[a\x01\x95a\x02c6`\x04a6\x80V[a\x169V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x83R`-T\x80\x82R`.T\x91\x83\x01\x91\x82R\x83Q\x90\x81R\x90Q\x91\x81\x01\x91\x90\x91R\x01a\x01oV[a\x02+a\x1D\xECV[a\x02\xB6a\x1E\xBCV[`@Q\x90\x15\x15\x81R` \x01a\x01oV[a\x02\x15`)T\x81V[a\x01\x95a\x02\xDD6`\x04a5\xCAV[a\x1F\xE9V[a\x01\x80a\"HV[`\x07Ta\x02\xB6\x90`\xFF\x16\x81V[`\0\x82\x81R`3` R`@\x81 T`\xFF\x16\x15a\x03\x1CWPc\x0B\x13]?`\xE1\x1Ba\x03 V[P`\0[\x92\x91PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`W[PPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x03\xA4C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xC2\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\xDCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xF0W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04IW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04m\x91\x90a7xV[Pa\x04\xAC`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterAsOperator (core)\0\0\0\0\0\0\0\x81RPa#VV[`@\x80Q``\x81\x01\x82R0\x81R`\0` \x82\x01\x81\x90R\x81\x83\x01R`\x1DT\x91Qc\x0FX\x9EY`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x0FX\x9EY\x90a\x04\xF8\x90\x84\x90`(\x90`\x04\x01a8CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x12W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05&W=`\0\x80>=`\0\xFD[PPPPPV[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x06OW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x05\xC2\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xEE\x90a7\x91V[\x80\x15a\x06;W\x80`\x1F\x10a\x06\x10Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06;V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1EW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xA3V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05QV[PPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x07KC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07i\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\x97W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x14\x91\x90a7xV[Pa\x086`@Q\x80``\x01`@R\x80`'\x81R` \x01aB\xAB`'\x919a#VV[`\0a\x08\xCA`\x01` `\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\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\x08\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB4\x91\x90a8\x94V[`\xFF\x16`\x01\x90\x1Ba\x08\xC5\x91\x90a8\xAFV[a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xE7Wa\x08\xE7a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x05W\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x0BYW`\0\x83\x82\x81Q\x81\x10a\t=Wa\t=a8\xC6V[\x01` \x01Q`$\x80T`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x93\x90\x93\x1C`\x04\x84\x01\x81\x90RCc\xFF\xFF\xFF\xFF\x16\x92\x84\x01\x92\x90\x92R\x90\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xA6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xCE\x91\x90\x81\x01\x90a8\xDCV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xE9Wa\t\xE9a0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\n\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x84\x84\x81Q\x81\x10a\n%Wa\n%a8\xC6V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x0B!W`\"T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cG\xB3\x14\xE8\x90\x84\x90\x84\x90\x81\x10a\neWa\nea8\xC6V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\x8B\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xCC\x91\x90a9lV[\x85\x85\x81Q\x81\x10a\n\xDEWa\n\xDEa8\xC6V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\n\xF7Wa\n\xF7a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x0B\x19\x81a9\x89V[\x91PPa\n3V[Pa\x0BD\x84\x84\x81Q\x81\x10a\x0B7Wa\x0B7a8\xC6V[` \x02` \x01\x01Qa$jV[PP\x80\x80a\x0BQ\x90a9\x89V[\x91PPa\t V[P` T`@Qc\n(\x14\xA9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cQ@\xA5H\x90a\x0B\x8C\x90\x84\x90\x86\x90`\x04\x01a9\xA4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B\xA6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\xBAW=`\0\x80>=`\0\xFD[PPPPPPV[`\x1CT``\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0B\xE3C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\x01\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\x1BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0C/W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xAC\x91\x90a7xV[Pa\x0C\xE3`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01texitEigenlayer (core)`X\x1B\x81RPa#VV[`\x1DT`@Qcg\xC0C\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\0\x91\x82\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xCF\x80\x87>\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rX\x91\x90\x81\x01\x90a:\x9DV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\rvW\x90PP\x90P`@Q\x80``\x01`@R\x80\x84\x81R` \x01\x83\x81R` \x010`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x81`\0\x81Q\x81\x10a\r\xDEWa\r\xDEa8\xC6V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x1DT`@Qc\x06\xECn\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\r\xD8\xDD\x02\x90a\x0E\x19\x90\x84\x90`\x04\x01a;WV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E`\x91\x90\x81\x01\x90a8\xDCV[P\x91\x93P\x91PP\x90\x91V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0F9W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x0E\xFBW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x0E\x8FV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x0FmC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\x8B\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xA5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xB9W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x10\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x106\x91\x90a7xV[Pa\x10u`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7FdepositIntoEigenLayer (core)\0\0\0\0\x81RPa#VV[`\0[\x82Q\x81\x10\x15a\x121W`\0\x83\x82\x81Q\x81\x10a\x10\x95Wa\x10\x95a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x83\x83\x81Q\x81\x10a\x10\xB3Wa\x10\xB3a8\xC6V[` \x02` \x01\x01Q\x90P`\0\x82`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xFDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11!\x91\x90a9lV[`\x1ET`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x91\x92P\x82\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x9A\x91\x90a;\xF1V[P`\x1ET`@Qcs\xD0(U`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x83\x81\x16`$\x83\x01R`D\x82\x01\x85\x90R\x90\x91\x16\x90c\xE7\xA0P\xAA\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x1A\x91\x90a7xV[PPPP\x80\x80a\x12)\x90a9\x89V[\x91PPa\x10xV[PPPV[`\x1CT`\0\x90`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x12UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x12\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x1E\x91\x90a7xV[Pa\x13R`@Q\x80`@\x01`@R\x80`\x10\x81R` \x01o92\xB3\xB4\xB9\xBA2\xB9'\xB82\xB90\xBA7\xB9`\x81\x1B\x81RP\x84\x84a%\x9BV[` T`\x01`\x01`\xA0\x1B\x03\x16c\xA5\x08W\xBF\x84\x84`(`+a\x13qa& V[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x91\x95\x94\x93\x92\x91\x90a<\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x13\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`-T\x80\x82R`.T` \x92\x83\x01\x90\x81R`\0\x91\x82RQ\x90\x91R \x91Pa\x13\xEE\x90PV[\x93\x92PPPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x148\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x14d\x90a7\x91V[\x80\x15a\x14\xB1W\x80`\x1F\x10a\x14\x86Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x14\xB1V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x14\x94W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x14\x19V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xA0\x1B\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x15\x93W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x15UW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x14\xE9V[`(\x80Ta\x15\xB8\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x15\xE4\x90a7\x91V[\x80\x15a\x161W\x80`\x1F\x10a\x16\x06Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x161V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x16\x14W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a\x16UC`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16s\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x16\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x16\xA1W=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x16\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x1E\x91\x90a7xV[Pa\x17\xF9`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7FregisterOperatorWithChurn\0\0\0\0\0\0\0\x81RP\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\x91RPP`@\x80Q` \x80\x8B\x02\x82\x81\x01\x82\x01\x90\x93R\x8A\x82R\x90\x93P\x8A\x92P\x89\x91\x82\x91\x85\x01\x90\x84\x90\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Q` `\x1F\x8A\x01\x81\x90\x04\x81\x02\x82\x01\x81\x01\x90\x92R\x88\x81R\x92P\x88\x91P\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa'(\x92PPPV[`\0a\x18:\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)\xAB\x92PPPV[\x90P`\0a\x18}\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)\xAB\x92PPPV[`@\x80Q``\x81\x01\x90\x91R`5\x80\x82R\x91\x92Pa\x18\xA5\x91\x89\x91\x88\x91aB\x18` \x83\x019a+8V[a\x18\xD3\x81\x83\x16`\x01`\x01`\xC0\x1B\x03\x16\x15`@Q\x80``\x01`@R\x80`>\x81R` \x01aBM`>\x919a+nV[`\0a\x18\xEC`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17a#\x9EV[\x90P`\0\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\tWa\x19\ta0oV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19NW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x19'W\x90P[P\x90P`\0\x80[\x83Qa\x19a\x82\x84a7`V[\x10\x15a\x1B|W\x81\x8B\x14\x15a\x19\xBCW`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[\x81Q\x81\x10a\x19\x9EWa\x19\x9Ea8\xC6V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x19\xB4\x90a9\x89V[\x91PPa\x19UV[\x80\x87\x14\x80a\x1A\x0FWP\x87\x87\x82\x81\x81\x10a\x19\xD7Wa\x19\xD7a8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x8C\x8C\x84\x81\x81\x10a\x19\xF9Wa\x19\xF9a8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10[\x15a\x1A\xAAW`@Q\x80`@\x01`@R\x80\x8D\x8D\x85\x81\x81\x10a\x1A1Wa\x1A1a8\xC6V[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x01\x8B\x8B\x85\x81\x81\x10a\x1AQWa\x1AQa8\xC6V[\x90P` \x02\x01` \x81\x01\x90a\x1Af\x91\x90a=-V[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x83a\x1A|\x83\x85a7`V[\x81Q\x81\x10a\x1A\x8CWa\x1A\x8Ca8\xC6V[` \x02` \x01\x01\x81\x90RP\x81\x80a\x1A\xA2\x90a9\x89V[\x92PPa\x19UV[\x8B\x8B\x83\x81\x81\x10a\x1A\xBCWa\x1A\xBCa8\xC6V[\x90\x91\x015`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P\x88\x88\x83\x81\x81\x10a\x1A\xDEWa\x1A\xDEa8\xC6V[\x90P\x015`\xF8\x1C`\xF8\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x10\x15a\x1B\x17W`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x83a\x19\x8E\x83\x85a7`V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FUser.registerOperatorWithChurn: `D\x82\x01Rn\x1BX[\x19\x9B\xDC\x9BYY\x08\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0`4`\0\x81Ta\x1B\x8D\x90a9\x89V[\x91\x82\x90UP`@\x80Q` \x81\x01\x92\x90\x92Rk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x190``\x1B\x16\x90\x82\x01R`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x80Q` \x91\x82\x01 \x90T`)Tc\x84\xCAR\x13`\xE0\x1B\x84R\x91\x93P`\0\x19\x92`\0\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x84\xCAR\x13\x91a\x1C\x10\x910\x91\x8B\x90\x89\x90\x89\x90`\x04\x01a=\x91V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1CQ\x91\x90a7xV[`\x1CT`&T`@Qc8\xD0z\xA9`\xE2\x1B\x81R\x92\x93P`\0\x92\x83\x92\x83\x92`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91c\xE3A\xEA\xA4\x91a\x1C\x97\x91\x88\x90`\x04\x01\x91\x82R` \x82\x01R`@\x01\x90V[```@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\xD8\x91\x90a=\xCCV[`@\x80Q`A\x80\x82R`\x80\x82\x01\x90\x92R\x93\x96P\x91\x94P\x92P`\0\x91\x90` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x82` \x82\x01R\x81`@\x82\x01R\x83`\xF8\x1B\x81`\x01\x83Qa\x1D\"\x91\x90a8\xAFV[\x81Q\x81\x10a\x1D2Wa\x1D2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`@\x80Q``\x81\x01\x82R\x82\x81R` \x80\x82\x01\x8A\x90R\x91\x81\x01\x88\x90R\x90T`\x01`\x01`\xA0\x1B\x03\x16c\x9B]\x17{\x8D`(`+\x8F\x86a\x1D\x83a& V[`@Q\x87c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xA4\x96\x95\x94\x93\x92\x91\x90a>\x01V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xBEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xD2W=`\0\x80>=`\0\xFD[PPPPPPPPPPPPPPPPPPPPPPPPV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x06fW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x1E/\x90a7\x91V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x1E[\x90a7\x91V[\x80\x15a\x1E\xA8W\x80`\x1F\x10a\x1E}Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x1E\xA8V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x1E\x8BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x1E\x10V[`\x07T`\0\x90a\x01\0\x90\x04`\xFF\x16\x15a\x1E\xDEWP`\x07Ta\x01\0\x90\x04`\xFF\x16\x90V[`\0sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a\x1F\xE4W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\0\x92\x90\x91a\x1Fl\x91\x7Ff\x7F\x9Dp\xCAA\x1Dp\xEA\xD5\r\x8D\\\"\x07\r\xAF\xC3j\xD7_=\xCF^r7\xB2*\xDE\x9A\xEC\xC4\x91`\x80\x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x86\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x1F\xC3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xC8V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x1F\xE0\x91\x90a;\xF1V[\x91PP[\x91\x90PV[`\x1CT`\x01`\x01`\xA0\x1B\x03\x16c\x1F{O0a \x05C`\x01a7`V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a #\x91\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a =W`\0\x80\xFD[PZ\xF1\x15\x80\x15a QW=`\0\x80>=`\0\xFD[PPPP`%`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x15\x04\xD8\xF0`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a \xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \xCE\x91\x90a7xV[Pa!\x0F`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7FderegisterOperator (eject)\0\0\0\0\0\0\x81RP\x83\x83a%\x9BV[` \x80T`@\x80Qc(\xF6\x1B1`\xE0\x1B\x81R\x90Q`\0\x93`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92c(\xF6\x1B1\x92`\x04\x80\x82\x01\x93\x91\x82\x90\x03\x01\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!|\x91\x90a9lV[`\x1CT`@Qc\xCAf\x9F\xA7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P\x91\x16\x90c\xCAf\x9F\xA7\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a!\xC5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a!\xD9W=`\0\x80>=`\0\xFD[PP` T`@Qcn;\x17\xDB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pcn;\x17\xDB\x91Pa\"\x11\x900\x90\x87\x90\x87\x90`\x04\x01a>\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\"+W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\"?W=`\0\x80>=`\0\xFD[PPPPPPPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03~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\x03`WPPPPP\x90P\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\"\xC4a0QV[\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\"\xF7Wa\"\xF9V[\xFE[P\x80a#7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x1BsV[PP\x92\x91PPV[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x82`@Q` \x01a#y\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra#\x93\x91a6mV[`@Q\x80\x91\x03\x90\xA1PV[```\0\x80a#\xAC\x84a+\xA1V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xC7Wa#\xC7a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a#\xF1W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a$\tWPa\x01\0\x81\x10[\x15a$`W`\x01\x81\x1B\x93P\x85\x84\x16\x15a$PW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a$2Wa$2a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a$Y\x81a9\x89V[\x90Pa#\xF8V[P\x90\x94\x93PPPPV[`\x01[\x81Q\x81\x10\x15a%\x97W`\0\x82\x82\x81Q\x81\x10a$\x8AWa$\x8Aa8\xC6V[` \x02` \x01\x01Q\x90P`\0`\x01\x83a$\xA3\x91\x90a8\xAFV[\x90P[\x81`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a$\xC2Wa$\xC2a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x11\x15a%EW\x83\x81\x81Q\x81\x10a$\xEBWa$\xEBa8\xC6V[` \x02` \x01\x01Q\x84\x82`\x01a%\x01\x91\x90a7`V[\x81Q\x81\x10a%\x11Wa%\x11a8\xC6V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a%3Wa%EV[\x80a%=\x81a?\x84V[\x91PPa$\xA6V[\x81\x84a%R\x83`\x01a7`V[\x81Q\x81\x10a%bWa%ba8\xC6V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPPP\x80\x80a%\x8F\x90a9\x89V[\x91PPa$mV[PPV[`\0\x80Q` aB\x8B\x839\x81Q\x91R`(\x84`@Q` \x01a%\xBE\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` `\x1F\x86\x01\x81\x90\x04\x81\x02\x84\x01\x81\x01\x90\x92R\x84\x83R\x91a&\x05\x91\x86\x90\x86\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa+\xCC\x92PPPV[`@Qa&\x13\x92\x91\x90a?\x9BV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x80\x82\x01\x83R\x80\x82R`\0` \x83\x01\x81\x90R\x82\x84\x01\x81\x90R\x83Q\x91\x82\x01\x81\x81R`\x80\x83\x01\x90\x94R\x91\x92\x81\x90\x81R` \x01`4`\0\x81T\x80\x92\x91\x90a&h\x90a9\x89V[\x90\x91UP\x81R`\0\x19` \x91\x82\x01R`\x1FT`!T\x91\x83\x01Q`@\x80\x85\x01Q\x90Qc\x14 \xC1\x91`\xE3\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`$\x82\x01R`D\x81\x01\x92\x90\x92R`d\x82\x01R\x92\x93P`\0\x92\x91\x16\x90c\xA1\x06\x0C\x88\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a&\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'\t\x91\x90a7xV[`\0\x90\x81R`3` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UP\x91\x90PV[`\0\x80Q` aA\xF8\x839\x81Q\x91R`(\x85`@Q` \x01a'K\x92\x91\x90a>\xF4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra'e\x91a6mV[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\x85\x82a+\xCCV[`@Qa'\x92\x91\x90a?\xC0V[`@Q\x80\x91\x03\x90\xA1`\0\x80Q` aB\x8B\x839\x81Q\x91Ra'\xB2\x84a+\xCCV[`@Qa'\xBF\x91\x90a?\xFBV[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R`\0[\x83Q\x81\x10\x15a)\\W`\x01\x84Qa'\xF9\x91\x90a8\xAFV[\x81\x14\x15a(\xA7W\x81\x84\x82\x81Q\x81\x10a(\x13Wa(\x13a8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x80\x91\x90\x81\x01\x90a@3V[`@Q` \x01a(\x91\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa)JV[\x81\x84\x82\x81Q\x81\x10a(\xBAWa(\xBAa8\xC6V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xF4\xDF~`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra)'\x91\x90\x81\x01\x90a@3V[`@Q` \x01a)8\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a)T\x81a9\x89V[\x91PPa'\xE2V[P\x80`@Q` \x01a)n\x91\x90aA\x0BV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa)\x9C\x91\x90aA0V[`@Q\x80\x91\x03\x90\xA1PPPPPV[`\0a\x01\0\x82Q\x11\x15a*4W`@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\x1BsV[\x81Qa*BWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a*XWa*Xa8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a+/W\x84\x81\x81Q\x81\x10a*\x86Wa*\x86a8\xC6V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a+\x1BW`@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\x1BsV[\x91\x81\x17\x91a+(\x81a9\x89V[\x90Pa*kV[P\x90\x93\x92PPPV[\x81\x83\x14a\x121W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\\\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a\x121\x83\x83a,\xC6V[\x81a%\x97W`\0\x80Q` aB\x8B\x839\x81Q\x91R\x81`@Qa+\x90\x91\x90aAhV[`@Q\x80\x91\x03\x90\xA1a%\x97\x82a-\xDBV[`\0\x80[\x82\x15a\x03 Wa+\xB6`\x01\x84a8\xAFV[\x90\x92\x16\x91\x80a+\xC4\x81aA\x97V[\x91PPa+\xA5V[`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`[`\xF8\x1B` \x82\x01R``\x90`\0[\x83Q\x81\x10\x15a,\x9DW`\x01\x84Qa,\x01\x91\x90a8\xAFV[\x81\x14\x15a,RW\x81a,+\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[\x01` \x01Q`\xF8\x1Ca.@V[`@Q` \x01a,<\x92\x91\x90a@\xA0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91Pa,\x8BV[\x81a,h\x85\x83\x81Q\x81\x10a,\x1EWa,\x1Ea8\xC6V[`@Q` \x01a,y\x92\x91\x90a@\xCFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P[\x80a,\x95\x81a9\x89V[\x91PPa+\xEAV[P\x80`@Q` \x01a,\xAF\x91\x90aA\x0BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x93\x92PPPV[\x80\x82\x14a%\x97W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa-%\x90` \x80\x82R`\"\x90\x82\x01R\x7FError: a == b not satisfied [uin`@\x82\x01Rat]`\xF0\x1B``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9D`\xB2\x1B``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9AY\xDA\x1D`\xB2\x1B``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7F\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\x91\x81\x90\x03`\x80\x01\x90\xA1a%\x97a/EV[\x80a.=W`\0\x80Q` aA\xF8\x839\x81Q\x91R`@Qa.-\x90` \x80\x82R`\x17\x90\x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xA1a.=a/EV[PV[``\x81a.dWPP`@\x80Q\x80\x82\x01\x90\x91R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[\x81`\0[\x81\x15a.\x8EW\x80a.x\x81a9\x89V[\x91Pa.\x87\x90P`\n\x83aA\xCFV[\x91Pa.hV[`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA8Wa.\xA8a0oV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xD2W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P[\x84\x15a/=Wa.\xE7`\x01\x83a8\xAFV[\x91Pa.\xF4`\n\x86aA\xE3V[a.\xFF\x90`0a7`V[`\xF8\x1B\x81\x83\x81Q\x81\x10a/\x14Wa/\x14a8\xC6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SPa/6`\n\x86aA\xCFV[\x94Pa.\xD6V[\x94\x93PPPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-;\x15a0@W`@\x80Qsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xD2\x1B\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\0\x91\x90\x7Fp\xCA\x10\xBB\xD0\xDB\xFD\x90 \xA9\xF4\xB14\x02\xC1l\xB1 p^\r\x1C\n\xEA\xB1\x0F\xA3S\xAEXo\xC4\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xDF\x92\x91` \x01a>\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra/\xF9\x91a>\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a06W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a0;V[``\x91P[PPPP[`\x07\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90UV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[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\x15a0\xADWa0\xADa0oV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a0\xCEWa0\xCEa0oV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a0\xEFW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x0CW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x1DW`\0\x80\xFD[\x805a10a1+\x82a0\xB5V[a0\x85V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1EW`\0\x80\xFD[\x81` \x84\x01` \x83\x017`\0` \x83\x83\x01\x01R\x80\x93PPPP\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\x15a1\xA6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a1\x81V[P\x90\x96\x95PPPPPPV[`\0[\x83\x81\x10\x15a1\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a1\xB5V[\x83\x81\x11\x15a1\xDCW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Ra1\xFA\x81` \x86\x01` \x86\x01a1\xB2V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a2\xBEW`?\x19\x8B\x85\x03\x01\x87R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a2\xA8W`_\x19\x89\x85\x03\x01\x83Ra2\x96\x84\x86Qa1\xE2V[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a2zV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a25V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a2\xE2V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a3\x07W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a3&V[`@\x81R`\0a3U`@\x83\x01\x85a2\xCEV[\x82\x81\x03` \x84\x01Ra3g\x81\x85a3\x12V[\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0\x80[\x84\x81\x10\x15a4\x14W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a3\xFFW\x83Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x82R\x92\x8B\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8B\x01\x90a3\xD5V[P\x97\x8A\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a3\x98V[P\x91\x99\x98PPPPPPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\x15\x81\x84\x01\x8Aa1\xE2V[\x90P\x82\x81\x03` \x84\x01Ra>)\x81\x89a7\xCCV[\x90Pa>8`@\x84\x01\x88a<_V[\x82\x81\x03a\x01@\x84\x01Ra>K\x81\x87a=JV[\x90P\x82\x81\x03a\x01`\x84\x01Ra>`\x81\x86a<\xA1V[\x90P\x82\x81\x03a\x01\x80\x84\x01Ra>u\x81\x85a<\xA1V[\x99\x98PPPPPPPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90a>\xA5\x81`\x04\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\0\x82Qa>\xC5\x81\x84` \x87\x01a1\xB2V[\x91\x90\x91\x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90a3g\x90\x83\x01\x84\x86a<\x13V[`\0\x80\x84Ta?\x02\x81a7\x91V[`\x01\x82\x81\x16\x80\x15a?\x1AW`\x01\x81\x14a?+Wa?ZV[`\xFF\x19\x84\x16\x87R\x82\x87\x01\x94Pa?ZV[\x88`\0R` \x80`\0 `\0[\x85\x81\x10\x15a?QW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a?8V[PPP\x82\x87\x01\x94P[P`\x17`\xF9\x1B\x84R\x86Q\x92Pa?v\x83\x82\x86\x01` \x8A\x01a1\xB2V[\x91\x90\x92\x01\x01\x95\x94PPPPPV[`\0\x81a?\x93Wa?\x93a7JV[P`\0\x19\x01\x90V[`@\x81R`\0a?\xAE`@\x83\x01\x85a1\xE2V[\x82\x81\x03` \x84\x01Ra3g\x81\x85a1\xE2V[`@\x81R`\x11`@\x82\x01Rp- standardQuorums`x\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x0E`@\x82\x01Rm- churnQuorums`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0` \x82\x84\x03\x12\x15a@EW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a@[W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a@lW`\0\x80\xFD[\x80Qa@za1+\x82a0\xB5V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a@\x8FW`\0\x80\xFD[a3g\x82` \x83\x01` \x86\x01a1\xB2V[`\0\x83Qa@\xB2\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xC6\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[`\0\x83Qa@\xE1\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xF5\x81\x83` \x88\x01a1\xB2V[a\x01a`\xF5\x1B\x91\x01\x90\x81R`\x02\x01\x94\x93PPPPV[`\0\x82QaA\x1D\x81\x84` \x87\x01a1\xB2V[`]`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`@\x81R`\x0E`@\x82\x01Rm- churnTargets`\x90\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`@\x81R`\x05`@\x82\x01Rd\"\xB997\xB9`\xD9\x1B``\x82\x01R`\x80` \x82\x01R`\0a\x13\xEE`\x80\x83\x01\x84a1\xE2V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15aA\xAFWaA\xAFa7JV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aA\xDEWaA\xDEaA\xB9V[P\x04\x90V[`\0\x82aA\xF2WaA\xF2aA\xB9V[P\x06\x90V\xFEA0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPUser.registerOperatorWithChurn: input length mismatchUser.registerOperatorWithChurn: input quorums have common bits(\x0FDF\xB2\x8A\x13rA}\xDAe\x8D0\xB9[)\x92\xB1*\xC9\xC7\xF3xS_)\xA9z\xCF5\x83updateStakes (updateOperatorsForQuorum)\xA2dipfsX\"\x12 [g\x12\x06\xC6\x1D#\xC4,\x963\x9F\xE5\xECp\xFB\xC6\xDD\x89$\xB6|\xBE\xC0\xBB\x85\xC2\x18\x12\xDB\x98\xC3dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. + ```solidity + event log(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + 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>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, + 9u8, 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, + 233u8, 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. + ```solidity + event log_address(address); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + 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 = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, + 214u8, 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. + ```solidity + event log_array(uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, + 181u8, 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, + 141u8, 4u8, 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. + ```solidity + event log_array(int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, + 124u8, 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. + ```solidity + event log_array(address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, + 241u8, 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: 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.val + ),) + } + #[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 log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. + ```solidity + event log_bytes(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + 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 = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, + 3u8, 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, + 26u8, 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. + ```solidity + event log_bytes32(bytes32); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + 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 = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, + 212u8, 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0), + ) + } + #[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 log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. + ```solidity + event log_int(int256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + 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>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. + ```solidity + event log_named_address(string key, address val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, + 122u8, 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. + ```solidity + event log_named_array(string key, uint256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, + 12u8, 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, + 83u8, 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. + ```solidity + event log_named_array(string key, int256[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, + 17u8, 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, + 123u8, 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. + ```solidity + event log_named_array(string key, address[] val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, + 223u8, 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. + ```solidity + event log_named_bytes(string key, bytes val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, + 213u8, 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. + ```solidity + event log_named_bytes32(string key, bytes32 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[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 log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. + ```solidity + event log_named_decimal_int(string key, int256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<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 = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, + 239u8, 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, + 232u8, 67u8, 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. + ```solidity + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + as alloy_sol_types::SolType>::tokenize( + &self.decimals, + ), + ) + } + #[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 log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. + ```solidity + event log_named_int(string key, int256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, + 126u8, 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. + ```solidity + event log_named_string(string key, string val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[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 log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. + ```solidity + event log_named_uint(string key, uint256 val); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + 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 = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, + 253u8, 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, + 108u8, 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: 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.key, + ), + as alloy_sol_types::SolType>::tokenize( + &self.val, + ), + ) + } + #[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 log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. + ```solidity + event log_string(string); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + 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>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, + 131u8, 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, + 156u8, 79u8, 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. + ```solidity + event log_uint(uint256); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + 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 = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, + 66u8, 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. + ```solidity + event logs(bytes); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + 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 = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: 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._0, + ), + ) + } + #[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 logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(string name, uint256 _privKey, IBLSApkRegistry.PubkeyRegistrationParams _pubkeyParams); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub name: alloy::sol_types::private::String, + pub _privKey: alloy::sol_types::private::primitives::aliases::U256, + pub _pubkeyParams: + ::RustType, + } + 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::Uint<256>, + IBLSApkRegistry::PubkeyRegistrationParams, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + 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: constructorCall) -> Self { + (value.name, value._privKey, value._pubkeyParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name: tuple.0, + _privKey: tuple.1, + _pubkeyParams: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + IBLSApkRegistry::PubkeyRegistrationParams, + ); + 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, + ), + as alloy_sol_types::SolType>::tokenize(&self._privKey), + ::tokenize( + &self._pubkeyParams, + ), + ) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. + ```solidity + function IS_TEST() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + 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_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 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 `NAME()` and selector `0xa3f4df7e`. + ```solidity + function NAME() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NAMECall {} + ///Container type for the return parameters of the [`NAME()`](NAMECall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NAMEReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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] = [163u8, 244u8, 223u8, 126u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `depositIntoEigenlayer(address[],uint256[])` and selector `0x6d336f58`. + ```solidity + function depositIntoEigenlayer(address[] memory strategies, uint256[] memory tokenBalances) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoEigenlayerCall { + pub strategies: alloy::sol_types::private::Vec, + pub tokenBalances: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`depositIntoEigenlayer(address[],uint256[])`](depositIntoEigenlayerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct depositIntoEigenlayerReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: depositIntoEigenlayerCall) -> Self { + (value.strategies, value.tokenBalances) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoEigenlayerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + tokenBalances: 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: depositIntoEigenlayerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoEigenlayerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositIntoEigenlayerCall { + 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 = depositIntoEigenlayerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "depositIntoEigenlayer(address[],uint256[])"; + const SELECTOR: [u8; 4] = [109u8, 51u8, 111u8, 88u8]; + #[inline] + fn new<'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.tokenBalances), + ) + } + #[inline] + fn abi_decode_returns( + 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 quorums) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub quorums: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.quorums,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { quorums: 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.quorums, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. + ```solidity + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsCall { + 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: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. + ```solidity + function excludeContracts() external view returns (address[] memory excludedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsCall { + 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: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 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 `excludeSenders()` and selector `0x1ed7831c`. + ```solidity + function excludeSenders() external view returns (address[] memory excludedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + 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: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `exitEigenlayer()` and selector `0x65eda8e5`. + ```solidity + function exitEigenlayer() external returns (address[] memory, uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct exitEigenlayerCall {} + ///Container type for the return parameters of the [`exitEigenlayer()`](exitEigenlayerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct exitEigenlayerReturn { + pub _0: alloy::sol_types::private::Vec, + pub _1: + alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: exitEigenlayerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for exitEigenlayerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[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: exitEigenlayerReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for exitEigenlayerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for exitEigenlayerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = exitEigenlayerReturn; + 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 = "exitEigenlayer()"; + const SELECTOR: [u8; 4] = [101u8, 237u8, 168u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. + ```solidity + function failed() external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + 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: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 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 `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e`. + ```solidity + function isValidSignature(bytes32 digestHash, bytes memory) external view returns (bytes4); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isValidSignatureCall { + pub digestHash: alloy::sol_types::private::FixedBytes<32>, + pub _1: 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, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct isValidSignatureReturn { + pub _0: alloy::sol_types::private::FixedBytes<4>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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.digestHash, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + digestHash: tuple.0, + _1: 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.digestHash), + ::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 `operatorId()` and selector `0xbf68b816`. + ```solidity + function operatorId() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorIdCall {} + ///Container type for the return parameters of the [`operatorId()`](operatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorIdCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorIdCall { + 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: operatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorIdCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorId()"; + const SELECTOR: [u8; 4] = [191u8, 104u8, 184u8, 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) + } + } + }; + /**Function with signature `pubkeyG1()` and selector `0xafa1c737`. + ```solidity + function pubkeyG1() external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyG1Call {} + ///Container type for the return parameters of the [`pubkeyG1()`](pubkeyG1Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pubkeyG1Return { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyG1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyG1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[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: pubkeyG1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyG1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pubkeyG1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pubkeyG1Return; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pubkeyG1()"; + const SELECTOR: [u8; 4] = [175u8, 161u8, 199u8, 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 `registerAsOperator()` and selector `0x2a34ade8`. + ```solidity + function registerAsOperator() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerAsOperatorCall {} + ///Container type for the return parameters of the [`registerAsOperator()`](registerAsOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerAsOperatorReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_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 { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerAsOperatorCall { + 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: 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> = (); + 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()"; + const SELECTOR: [u8; 4] = [42u8, 52u8, 173u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + 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)` and selector `0x8231b54c`. + ```solidity + function registerOperator(bytes memory quorums) external returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub quorums: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: registerOperatorCall) -> Self { + (value.quorums,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { quorums: 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: 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::Bytes,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(bytes)"; + const SELECTOR: [u8; 4] = [130u8, 49u8, 181u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.quorums, + ), + ) + } + #[inline] + fn abi_decode_returns( + 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,address[],bytes)` and selector `0xa5f6cc1a`. + ```solidity + function registerOperatorWithChurn(bytes memory churnQuorums, address[] memory churnTargets, bytes memory standardQuorums) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorWithChurnCall { + pub churnQuorums: alloy::sol_types::private::Bytes, + pub churnTargets: alloy::sol_types::private::Vec, + pub standardQuorums: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperatorWithChurn(bytes,address[],bytes)`](registerOperatorWithChurnCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registerOperatorWithChurnReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + 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: registerOperatorWithChurnCall) -> Self { + ( + value.churnQuorums, + value.churnTargets, + value.standardQuorums, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithChurnCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + churnQuorums: tuple.0, + churnTargets: tuple.1, + standardQuorums: 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: 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::Array, + alloy::sol_types::sol_data::Bytes, + ); + 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,address[],bytes)"; + const SELECTOR: [u8; 4] = [165u8, 246u8, 204u8, 26u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.churnQuorums, + ), + as alloy_sol_types::SolType>::tokenize(&self.churnTargets), + ::tokenize( + &self.standardQuorums, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. + ```solidity + function targetArtifactSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedArtifactSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsCall { + 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< + ::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: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. + ```solidity + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + 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: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 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 `targetContracts()` and selector `0x3f7286f4`. + ```solidity + function targetContracts() external view returns (address[] memory targetedContracts_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + 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: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. + ```solidity + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesCall { + 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< + ::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: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 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 `targetSelectors()` and selector `0x916a17c6`. + ```solidity + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + 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< + ::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: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. + ```solidity + function targetSenders() external view returns (address[] memory targetedSenders_); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + 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: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSenders_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 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 `updateStakes()` and selector `0x505377e2`. + ```solidity + function updateStakes() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateStakesCall {} + ///Container type for the return parameters of the [`updateStakes()`](updateStakesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct updateStakesReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateStakesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakesCall { + 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: updateStakesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateStakesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateStakesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateStakes()"; + const SELECTOR: [u8; 4] = [80u8, 83u8, 119u8, 226u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn 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 [`User_AltMethods`](self) function calls. + pub enum User_AltMethodsCalls { + IS_TEST(IS_TESTCall), + NAME(NAMECall), + depositIntoEigenlayer(depositIntoEigenlayerCall), + deregisterOperator(deregisterOperatorCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSenders(excludeSendersCall), + exitEigenlayer(exitEigenlayerCall), + failed(failedCall), + isValidSignature(isValidSignatureCall), + operatorId(operatorIdCall), + pubkeyG1(pubkeyG1Call), + registerAsOperator(registerAsOperatorCall), + registerOperator(registerOperatorCall), + registerOperatorWithChurn(registerOperatorWithChurnCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + updateStakes(updateStakesCall), + } + #[automatically_derived] + impl User_AltMethodsCalls { + /// 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], + [30u8, 215u8, 131u8, 28u8], + [42u8, 52u8, 173u8, 232u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [80u8, 83u8, 119u8, 226u8], + [101u8, 237u8, 168u8, 229u8], + [102u8, 217u8, 169u8, 160u8], + [109u8, 51u8, 111u8, 88u8], + [130u8, 49u8, 181u8, 76u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [163u8, 244u8, 223u8, 126u8], + [165u8, 246u8, 204u8, 26u8], + [175u8, 161u8, 199u8, 55u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [191u8, 104u8, 184u8, 22u8], + [202u8, 79u8, 45u8, 151u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for User_AltMethodsCalls { + const NAME: &'static str = "User_AltMethodsCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 22usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::NAME(_) => ::SELECTOR, + Self::depositIntoEigenlayer(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::exitEigenlayer(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::isValidSignature(_) => { + ::SELECTOR + } + Self::operatorId(_) => ::SELECTOR, + Self::pubkeyG1(_) => ::SELECTOR, + Self::registerAsOperator(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registerOperatorWithChurn(_) => { + ::SELECTOR + } + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => ::SELECTOR, + Self::updateStakes(_) => ::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(User_AltMethodsCalls::isValidSignature) + } + isValidSignature + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::excludeSenders) + } + excludeSenders + }, + { + fn registerAsOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::registerAsOperator) + } + registerAsOperator + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::targetContracts) + } + targetContracts + }, + { + fn updateStakes( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::updateStakes) + } + updateStakes + }, + { + fn exitEigenlayer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::exitEigenlayer) + } + exitEigenlayer + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn depositIntoEigenlayer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::depositIntoEigenlayer) + } + depositIntoEigenlayer + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::registerOperator) + } + registerOperator + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::targetSelectors) + } + targetSelectors + }, + { + fn NAME( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(User_AltMethodsCalls::NAME) + } + NAME + }, + { + fn registerOperatorWithChurn( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::registerOperatorWithChurn) + } + registerOperatorWithChurn + }, + { + fn pubkeyG1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(User_AltMethodsCalls::pubkeyG1) + } + pubkeyG1 + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(User_AltMethodsCalls::failed) + } + failed + }, + { + fn operatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(User_AltMethodsCalls::operatorId) + } + operatorId + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(User_AltMethodsCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(User_AltMethodsCalls::IS_TEST) + } + IS_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::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::NAME(inner) => { + ::abi_encoded_size(inner) + } + Self::depositIntoEigenlayer(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::exitEigenlayer(inner) => { + ::abi_encoded_size(inner) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::isValidSignature(inner) => { + ::abi_encoded_size(inner) + } + Self::operatorId(inner) => { + ::abi_encoded_size(inner) + } + Self::pubkeyG1(inner) => { + ::abi_encoded_size(inner) + } + Self::registerAsOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorWithChurn(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetContracts(inner) => { + ::abi_encoded_size(inner) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size(inner) + } + Self::targetSenders(inner) => { + ::abi_encoded_size(inner) + } + Self::updateStakes(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::NAME(inner) => { + ::abi_encode_raw(inner, out) + } + Self::depositIntoEigenlayer(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::exitEigenlayer(inner) => { + ::abi_encode_raw(inner, out) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isValidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + Self::operatorId(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pubkeyG1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerAsOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorWithChurn(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetContracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetSenders(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateStakes(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`User_AltMethods`](self) events. + pub enum User_AltMethodsEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl User_AltMethodsEvents { + /// 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]] = &[ + [ + 0u8, 170u8, 163u8, 156u8, 159u8, 251u8, 95u8, 86u8, 122u8, 69u8, 52u8, 56u8, 12u8, + 115u8, 112u8, 117u8, 112u8, 46u8, 31u8, 127u8, 20u8, 16u8, 127u8, 201u8, 83u8, + 40u8, 227u8, 181u8, 108u8, 3u8, 37u8, 251u8, + ], + [ + 11u8, 46u8, 19u8, 255u8, 32u8, 172u8, 123u8, 71u8, 65u8, 152u8, 101u8, 85u8, 131u8, + 237u8, 247u8, 13u8, 237u8, 210u8, 193u8, 220u8, 152u8, 14u8, 50u8, 156u8, 79u8, + 187u8, 47u8, 192u8, 116u8, 139u8, 121u8, 107u8, + ], + [ + 14u8, 181u8, 213u8, 38u8, 36u8, 200u8, 210u8, 138u8, 218u8, 159u8, 197u8, 90u8, + 140u8, 80u8, 46u8, 213u8, 170u8, 63u8, 190u8, 47u8, 182u8, 233u8, 27u8, 113u8, + 181u8, 243u8, 118u8, 136u8, 43u8, 29u8, 47u8, 184u8, + ], + [ + 35u8, 182u8, 42u8, 208u8, 88u8, 77u8, 36u8, 167u8, 95u8, 11u8, 243u8, 86u8, 3u8, + 145u8, 239u8, 86u8, 89u8, 236u8, 109u8, 177u8, 38u8, 156u8, 86u8, 225u8, 26u8, + 162u8, 65u8, 214u8, 55u8, 241u8, 155u8, 32u8, + ], + [ + 40u8, 15u8, 68u8, 70u8, 178u8, 138u8, 19u8, 114u8, 65u8, 125u8, 218u8, 101u8, + 141u8, 48u8, 185u8, 91u8, 41u8, 146u8, 177u8, 42u8, 201u8, 199u8, 243u8, 120u8, + 83u8, 95u8, 41u8, 169u8, 122u8, 207u8, 53u8, 131u8, + ], + [ + 44u8, 171u8, 151u8, 144u8, 81u8, 15u8, 216u8, 189u8, 251u8, 210u8, 17u8, 82u8, + 136u8, 219u8, 51u8, 254u8, 198u8, 102u8, 145u8, 212u8, 118u8, 239u8, 197u8, 66u8, + 124u8, 253u8, 76u8, 9u8, 105u8, 48u8, 23u8, 85u8, + ], + [ + 47u8, 230u8, 50u8, 119u8, 145u8, 116u8, 55u8, 67u8, 120u8, 68u8, 42u8, 142u8, + 151u8, 139u8, 204u8, 251u8, 220u8, 193u8, 214u8, 178u8, 176u8, 216u8, 31u8, 126u8, + 142u8, 183u8, 118u8, 171u8, 34u8, 134u8, 241u8, 104u8, + ], + [ + 59u8, 207u8, 178u8, 174u8, 46u8, 141u8, 19u8, 45u8, 209u8, 252u8, 231u8, 207u8, + 39u8, 138u8, 154u8, 25u8, 117u8, 106u8, 159u8, 206u8, 171u8, 228u8, 112u8, 223u8, + 59u8, 218u8, 187u8, 75u8, 197u8, 119u8, 209u8, 189u8, + ], + [ + 64u8, 225u8, 132u8, 15u8, 87u8, 105u8, 7u8, 61u8, 97u8, 189u8, 1u8, 55u8, 45u8, + 155u8, 117u8, 186u8, 169u8, 132u8, 45u8, 86u8, 41u8, 160u8, 201u8, 159u8, 241u8, + 3u8, 190u8, 17u8, 120u8, 168u8, 233u8, 226u8, + ], + [ + 65u8, 48u8, 79u8, 172u8, 217u8, 50u8, 61u8, 117u8, 177u8, 27u8, 205u8, 214u8, 9u8, + 203u8, 56u8, 239u8, 255u8, 253u8, 176u8, 87u8, 16u8, 247u8, 202u8, 240u8, 233u8, + 177u8, 108u8, 109u8, 157u8, 112u8, 159u8, 80u8, + ], + [ + 93u8, 166u8, 206u8, 157u8, 81u8, 21u8, 27u8, 161u8, 12u8, 9u8, 165u8, 89u8, 239u8, + 36u8, 213u8, 32u8, 185u8, 218u8, 197u8, 197u8, 184u8, 129u8, 10u8, 232u8, 67u8, + 78u8, 77u8, 13u8, 134u8, 65u8, 26u8, 149u8, + ], + [ + 122u8, 231u8, 76u8, 82u8, 116u8, 20u8, 174u8, 19u8, 95u8, 217u8, 112u8, 71u8, + 177u8, 41u8, 33u8, 165u8, 236u8, 57u8, 17u8, 184u8, 4u8, 25u8, 120u8, 85u8, 214u8, + 126u8, 37u8, 199u8, 183u8, 94u8, 230u8, 243u8, + ], + [ + 137u8, 10u8, 130u8, 103u8, 155u8, 71u8, 15u8, 43u8, 216u8, 40u8, 22u8, 237u8, + 155u8, 22u8, 31u8, 151u8, 216u8, 185u8, 103u8, 243u8, 127u8, 163u8, 100u8, 124u8, + 33u8, 213u8, 191u8, 57u8, 116u8, 158u8, 45u8, 213u8, + ], + [ + 156u8, 78u8, 133u8, 65u8, 202u8, 143u8, 13u8, 193u8, 196u8, 19u8, 249u8, 16u8, + 143u8, 102u8, 216u8, 45u8, 60u8, 236u8, 177u8, 189u8, 219u8, 206u8, 67u8, 122u8, + 97u8, 202u8, 163u8, 23u8, 92u8, 76u8, 201u8, 111u8, + ], + [ + 167u8, 62u8, 218u8, 9u8, 102u8, 47u8, 70u8, 221u8, 231u8, 41u8, 190u8, 70u8, 17u8, + 56u8, 95u8, 243u8, 79u8, 230u8, 196u8, 79u8, 187u8, 198u8, 247u8, 225u8, 123u8, + 4u8, 43u8, 89u8, 163u8, 68u8, 91u8, 87u8, + ], + [ + 175u8, 183u8, 149u8, 201u8, 198u8, 30u8, 79u8, 231u8, 70u8, 140u8, 56u8, 111u8, + 146u8, 93u8, 122u8, 84u8, 41u8, 236u8, 173u8, 156u8, 4u8, 149u8, 221u8, 184u8, + 211u8, 141u8, 105u8, 6u8, 20u8, 211u8, 47u8, 153u8, + ], + [ + 178u8, 222u8, 47u8, 190u8, 128u8, 26u8, 13u8, 246u8, 192u8, 203u8, 221u8, 253u8, + 68u8, 139u8, 163u8, 196u8, 29u8, 72u8, 160u8, 64u8, 202u8, 53u8, 197u8, 108u8, + 129u8, 150u8, 239u8, 15u8, 202u8, 231u8, 33u8, 168u8, + ], + [ + 210u8, 110u8, 22u8, 202u8, 212u8, 84u8, 135u8, 5u8, 228u8, 201u8, 226u8, 217u8, + 79u8, 152u8, 238u8, 145u8, 194u8, 137u8, 8u8, 94u8, 228u8, 37u8, 89u8, 79u8, 213u8, + 99u8, 95u8, 162u8, 150u8, 76u8, 207u8, 24u8, + ], + [ + 231u8, 149u8, 14u8, 222u8, 3u8, 148u8, 185u8, 242u8, 206u8, 74u8, 90u8, 27u8, + 245u8, 167u8, 225u8, 133u8, 36u8, 17u8, 247u8, 230u8, 102u8, 27u8, 67u8, 8u8, + 201u8, 19u8, 196u8, 191u8, 209u8, 16u8, 39u8, 228u8, + ], + [ + 232u8, 22u8, 153u8, 184u8, 81u8, 19u8, 238u8, 161u8, 199u8, 62u8, 16u8, 88u8, + 139u8, 43u8, 3u8, 94u8, 85u8, 137u8, 51u8, 105u8, 99u8, 33u8, 115u8, 175u8, 212u8, + 63u8, 235u8, 25u8, 47u8, 172u8, 100u8, 227u8, + ], + [ + 235u8, 139u8, 164u8, 60u8, 237u8, 117u8, 55u8, 66u8, 25u8, 70u8, 189u8, 67u8, + 232u8, 40u8, 184u8, 178u8, 184u8, 66u8, 137u8, 39u8, 170u8, 143u8, 128u8, 28u8, + 19u8, 217u8, 52u8, 191u8, 17u8, 172u8, 165u8, 123u8, + ], + [ + 251u8, 16u8, 40u8, 101u8, 213u8, 10u8, 221u8, 221u8, 246u8, 157u8, 169u8, 181u8, + 170u8, 27u8, 206u8, 214u8, 108u8, 128u8, 207u8, 134u8, 154u8, 92u8, 141u8, 4u8, + 113u8, 164u8, 103u8, 225u8, 140u8, 233u8, 202u8, 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for User_AltMethodsEvents { + const NAME: &'static str = "User_AltMethodsEvents"; + const COUNT: usize = 22usize; + 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::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::logs) + } + _ => 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 User_AltMethodsEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::logs(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`User_AltMethods`](self) contract instance. + + See the [wrapper's documentation](`User_AltMethodsInstance`) 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, + ) -> User_AltMethodsInstance { + User_AltMethodsInstance::::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, + _privKey: alloy::sol_types::private::primitives::aliases::U256, + _pubkeyParams: ::RustType, + ) -> impl ::core::future::Future>> + { + User_AltMethodsInstance::::deploy(provider, name, _privKey, _pubkeyParams) + } + /**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, + _privKey: alloy::sol_types::private::primitives::aliases::U256, + _pubkeyParams: ::RustType, + ) -> alloy_contract::RawCallBuilder { + User_AltMethodsInstance::::deploy_builder(provider, name, _privKey, _pubkeyParams) + } + /**A [`User_AltMethods`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`User_AltMethods`](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 User_AltMethodsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for User_AltMethodsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("User_AltMethodsInstance") + .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, + > User_AltMethodsInstance + { + /**Creates a new wrapper around an on-chain [`User_AltMethods`](self) contract instance. + + See the [wrapper's documentation](`User_AltMethodsInstance`) 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, + _privKey: alloy::sol_types::private::primitives::aliases::U256, + _pubkeyParams: ::RustType, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, name, _privKey, _pubkeyParams); + 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, + _privKey: alloy::sol_types::private::primitives::aliases::U256, + _pubkeyParams: ::RustType, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + name, + _privKey, + _pubkeyParams, + })[..], + ] + .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 User_AltMethodsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> User_AltMethodsInstance { + User_AltMethodsInstance { + 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, + > User_AltMethodsInstance + { + /// 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_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///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 [`depositIntoEigenlayer`] function. + pub fn depositIntoEigenlayer( + &self, + strategies: alloy::sol_types::private::Vec, + tokenBalances: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositIntoEigenlayerCall { + strategies, + tokenBalances, + }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + quorums: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { quorums }) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`exitEigenlayer`] function. + pub fn exitEigenlayer( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&exitEigenlayerCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`isValidSignature`] function. + pub fn isValidSignature( + &self, + digestHash: alloy::sol_types::private::FixedBytes<32>, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isValidSignatureCall { digestHash, _1 }) + } + ///Creates a new call builder for the [`operatorId`] function. + pub fn operatorId(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorIdCall {}) + } + ///Creates a new call builder for the [`pubkeyG1`] function. + pub fn pubkeyG1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pubkeyG1Call {}) + } + ///Creates a new call builder for the [`registerAsOperator`] function. + pub fn registerAsOperator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterAsOperatorCall {}) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + quorums: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { quorums }) + } + ///Creates a new call builder for the [`registerOperatorWithChurn`] function. + pub fn registerOperatorWithChurn( + &self, + churnQuorums: alloy::sol_types::private::Bytes, + churnTargets: alloy::sol_types::private::Vec, + standardQuorums: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorWithChurnCall { + churnQuorums, + churnTargets, + standardQuorums, + }) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + ///Creates a new call builder for the [`updateStakes`] function. + pub fn updateStakes(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateStakesCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > User_AltMethodsInstance + { + /// 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 [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/middleware/utils.rs b/crates/utils/src/middleware/utils.rs new file mode 100644 index 00000000..992bc467 --- /dev/null +++ b/crates/utils/src/middleware/utils.rs @@ -0,0 +1,505 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Utils { + function deployNewStrategy(address token, address strategyManager, address pauserRegistry, address admin) external returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "deployNewStrategy", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + }, + { + "name": "pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "admin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract StrategyBase" + } + ], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod Utils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50612b59806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063cd86341714610030575b600080fd5b61004361003e366004610192565b61005f565b6040516001600160a01b03909116815260200160405180910390f35b6000808460405161006f90610160565b6001600160a01b039091168152602001604051809103906000f08015801561009b573d6000803e3d6000fd5b50905080836040516100ac9061016d565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156100ee573d6000803e3d6000fd5b5060405163485cc95560e01b81526001600160a01b03888116600483015286811660248301529192509082169063485cc95590604401600060405180830381600087803b15801561013e57600080fd5b505af1158015610152573d6000803e3d6000fd5b509298975050505050505050565b611ab4806101ef83390190565b610e8180611ca383390190565b6001600160a01b038116811461018f57600080fd5b50565b600080600080608085870312156101a857600080fd5b84356101b38161017a565b935060208501356101c38161017a565b925060408501356101d38161017a565b915060608501356101e38161017a565b93969295509093505056fe60a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122089b1dd5ce129a71fcf9d85080e017f55fd655c7024f186b20282f5455dd2dda864736f6c634300080c0033 + /// ``` + #[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+Y\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\xCD\x864\x17\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\x92V[a\0_V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0\x80\x84`@Qa\0o\x90a\x01`V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0\x9BW=`\0\x80>=`\0\xFD[P\x90P\x80\x83`@Qa\0\xAC\x90a\x01mV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90\x82\x01R`\x80\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0\xEEW=`\0\x80>=`\0\xFD[P`@QcH\\\xC9U`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x86\x81\x16`$\x83\x01R\x91\x92P\x90\x82\x16\x90cH\\\xC9U\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01RW=`\0\x80>=`\0\xFD[P\x92\x98\x97PPPPPPPPV[a\x1A\xB4\x80a\x01\xEF\x839\x01\x90V[a\x0E\x81\x80a\x1C\xA3\x839\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x8FW`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x01\xA8W`\0\x80\xFD[\x845a\x01\xB3\x81a\x01zV[\x93P` \x85\x015a\x01\xC3\x81a\x01zV[\x92P`@\x85\x015a\x01\xD3\x81a\x01zV[\x91P``\x85\x015a\x01\xE3\x81a\x01zV[\x93\x96\x92\x95P\x90\x93PPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1A\xB48\x03\x80b\0\x1A\xB4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x14V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80Rb\0\0Kb\0\0RV[Pb\0\x01FV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xBFW`@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\x12W`\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\x01?W`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x19=b\0\x01w`\09`\0\x81\x81a\x01\x99\x01R\x81\x81a\x05p\x01R\x81\x81a\t\xF5\x01Ra\n\xC0\x01Ra\x19=`\0\xF3\xFE`\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\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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\xA2dipfsX\"\x12 \x89\xB1\xDD\\\xE1)\xA7\x1F\xCF\x9D\x85\x08\x0E\x01\x7FU\xFDe\\p$\xF1\x86\xB2\x02\x82\xF5E]\xD2\xDD\xA8dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063cd86341714610030575b600080fd5b61004361003e366004610192565b61005f565b6040516001600160a01b03909116815260200160405180910390f35b6000808460405161006f90610160565b6001600160a01b039091168152602001604051809103906000f08015801561009b573d6000803e3d6000fd5b50905080836040516100ac9061016d565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156100ee573d6000803e3d6000fd5b5060405163485cc95560e01b81526001600160a01b03888116600483015286811660248301529192509082169063485cc95590604401600060405180830381600087803b15801561013e57600080fd5b505af1158015610152573d6000803e3d6000fd5b509298975050505050505050565b611ab4806101ef83390190565b610e8180611ca383390190565b6001600160a01b038116811461018f57600080fd5b50565b600080600080608085870312156101a857600080fd5b84356101b38161017a565b935060208501356101c38161017a565b925060408501356101d38161017a565b915060608501356101e38161017a565b93969295509093505056fe60a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b31310ef602cd5e050a79829bff9889ab6ef1ac28f4bfd7b9c868d6a04fc73d864736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c39e9ec474c00a771df876bc66b27952d6710849d93efe0c27ea3d7a822fb21c64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122089b1dd5ce129a71fcf9d85080e017f55fd655c7024f186b20282f5455dd2dda864736f6c634300080c0033 + /// ``` + #[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\xCD\x864\x17\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\x92V[a\0_V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0\x80\x84`@Qa\0o\x90a\x01`V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0\x9BW=`\0\x80>=`\0\xFD[P\x90P\x80\x83`@Qa\0\xAC\x90a\x01mV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90\x82\x01R`\x80\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0\xEEW=`\0\x80>=`\0\xFD[P`@QcH\\\xC9U`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x86\x81\x16`$\x83\x01R\x91\x92P\x90\x82\x16\x90cH\\\xC9U\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01RW=`\0\x80>=`\0\xFD[P\x92\x98\x97PPPPPPPPV[a\x1A\xB4\x80a\x01\xEF\x839\x01\x90V[a\x0E\x81\x80a\x1C\xA3\x839\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x8FW`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x01\xA8W`\0\x80\xFD[\x845a\x01\xB3\x81a\x01zV[\x93P` \x85\x015a\x01\xC3\x81a\x01zV[\x92P`@\x85\x015a\x01\xD3\x81a\x01zV[\x91P``\x85\x015a\x01\xE3\x81a\x01zV[\x93\x96\x92\x95P\x90\x93PPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1A\xB48\x03\x80b\0\x1A\xB4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x14V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80Rb\0\0Kb\0\0RV[Pb\0\x01FV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xBFW`@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\x12W`\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\x01?W`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x19=b\0\x01w`\09`\0\x81\x81a\x01\x99\x01R\x81\x81a\x05p\x01R\x81\x81a\t\xF5\x01Ra\n\xC0\x01Ra\x19=`\0\xF3\xFE`\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\x17\x11V[`\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\x17.V[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r\xE8V[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\x17xV[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\x0E\xEDV[`3T`\0a\x05\xF8a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x06\x07a\x0FmV[a\x06\x11\x91\x90a\x17\xF8V[\x90P`\0a\x06\x1F\x87\x83a\x18\x10V[\x90P\x80a\x06,\x84\x89a\x18'V[a\x066\x91\x90a\x18FV[\x95P\x85a\x06\x9CW`@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\x03\xB7V[a\x06\xA6\x86\x85a\x17\xF8V[`3\x81\x90UoK;L\xA8Z\x86\xC4z\t\x8A\"?\xFF\xFF\xFF\xFF\x10\x15a\x070W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FStrategyBase.deposit: totalShare`D\x82\x01R\x7Fs exceeds `MAX_TOTAL_SHARES`\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07I\x82a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0F\xDFV[PPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x07tWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x07\x8EWP0;\x15\x80\x15a\x07\x8EWP`\0T`\xFF\x16`\x01\x14[a\x07\xF1W`@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\xB7V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\x14W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\x1E\x83\x83a\x103V[\x80\x15a\x08dW`\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\x08wa\x02X\x83a\t\xCDV[\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\x08\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEE\x91\x90a\x17xV[a\t\nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17\x9AV[`\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\t\\\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\tka\x0FmV[a\tu\x91\x90a\x17\xF8V[\x90P\x81a\t\x82\x85\x83a\x18'V[a\t\x8C\x91\x90a\x18FV[\x94\x93PPPPV[`\0a\x08w\x82a\x0CHV[`\0a\x08wa\x02\xF8\x83a\t\xCDV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x18\xBB`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\n>W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08w\x91\x90a\x18hV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\xB5W`@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\x0B-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x0B8\x84\x84\x84a\x11~V[`3T\x80\x83\x11\x15a\x0B\xC7W`@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\x0B\xD5a\x03\xE8\x83a\x17\xF8V[\x90P`\0a\x03\xE8a\x0B\xE4a\x0FmV[a\x0B\xEE\x91\x90a\x17\xF8V[\x90P`\0\x82a\x0B\xFD\x87\x84a\x18'V[a\x0C\x07\x91\x90a\x18FV[\x90Pa\x0C\x13\x86\x85a\x18\x10V[`3Ua\x0C3a\x0C#\x82\x84a\x18\x10V[a\x03\xE8`3Ta\x07D\x91\x90a\x17\xF8V[a\x0C>\x88\x88\x83a\x12\x01V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\x0C[\x91\x90a\x17\xF8V[\x90P`\0a\x03\xE8a\x0Cja\x0FmV[a\x0Ct\x91\x90a\x17\xF8V[\x90P\x80a\t\x82\x83\x86a\x18'V[`\0a\x08w\x82a\tIV[`\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\x0C\xDFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x03\x91\x90a\x17\x11V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\r3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x17.V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\r\xB1W`@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\x0EvW`@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\x0FiW`@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\x0F\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xDA\x91\x90a\x18hV[\x90P\x90V[\x7F\xD2IO4y\xE5\xDAI\xD3\x86e|),a\x0B[\x01\xDF1=\x07\xC6.\xB0\xCF\xA4\x99$\xA3\x1B\xE8\x81a\x10\x13\x84g\r\xE0\xB6\xB3\xA7d\0\0a\x18'V[a\x10\x1D\x91\x90a\x18FV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x9EW`@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\x10\xC4\x81`\0a\x12\x15V[\x7F\x1CT\x07\x07\xB0\x0E\xB5B{kwO\xC7\x99\xD7VQjT\xAE\xE1\x08\xB6K2z\xCCU\xAFUu\x07`2`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16c1<\xE5g`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x119W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11]\x91\x90a\x18\x81V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xFF\x90\x91\x16` \x83\x01R\x01a\x10'V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x08dW`@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\x08d`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x13\x01V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x12a\x15=V[``\x91P[P\x91P\x91Pa\x15M\x82\x82\x86a\x15XV[\x97\x96PPPPPPPV[``\x83\x15a\x15gWP\x81a\x14 V[\x82Q\x15a\x15wW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x16\x9DV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x15\xB8W`\0\x80\xFD[\x815a\x14 \x81a\x15\x91V[`\0` \x82\x84\x03\x12\x15a\x15\xD5W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\xEFW`\0\x80\xFD[\x825a\x15\xFA\x81a\x15\x91V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x16\x1BW`\0\x80\xFD[\x825a\x16&\x81a\x15\x91V[\x91P` \x83\x015a\x166\x81a\x15\x91V[\x80\x91PP\x92P\x92\x90PV[`\xFF\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x16bW`\0\x80\xFD[\x815a\x14 \x81a\x16AV[`\0[\x83\x81\x10\x15a\x16\x88W\x81\x81\x01Q\x83\x82\x01R` \x01a\x16pV[\x83\x81\x11\x15a\x16\x97W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x16\xBC\x81`@\x85\x01` \x87\x01a\x16mV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x16\xE5W`\0\x80\xFD[\x835a\x16\xF0\x81a\x15\x91V[\x92P` \x84\x015a\x17\0\x81a\x15\x91V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x17#W`\0\x80\xFD[\x81Qa\x14 \x81a\x15\x91V[` \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\x17\x8AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14 W`\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\x18\x0BWa\x18\x0Ba\x17\xE2V[P\x01\x90V[`\0\x82\x82\x10\x15a\x18\"Wa\x18\"a\x17\xE2V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x18AWa\x18Aa\x17\xE2V[P\x02\x90V[`\0\x82a\x18cWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x18zW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\x93W`\0\x80\xFD[\x81Qa\x14 \x81a\x16AV[`\0\x82Qa\x18\xB0\x81\x84` \x87\x01a\x16mV[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 \xB3\x13\x10\xEF`,\xD5\xE0P\xA7\x98)\xBF\xF9\x88\x9A\xB6\xEF\x1A\xC2\x8FK\xFD{\x9C\x86\x8Dj\x04\xFCs\xD8dsolcC\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 \xC3\x9E\x9E\xC4t\xC0\nw\x1D\xF8v\xBCf\xB2yR\xD6q\x08I\xD9>\xFE\x0C'\xEA=z\x82/\xB2\x1CdsolcC\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\xA2dipfsX\"\x12 \x89\xB1\xDD\\\xE1)\xA7\x1F\xCF\x9D\x85\x08\x0E\x01\x7FU\xFDe\\p$\xF1\x86\xB2\x02\x82\xF5E]\xD2\xDD\xA8dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `deployNewStrategy(address,address,address,address)` and selector `0xcd863417`. + ```solidity + function deployNewStrategy(address token, address strategyManager, address pauserRegistry, address admin) external returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deployNewStrategyCall { + pub token: alloy::sol_types::private::Address, + pub strategyManager: alloy::sol_types::private::Address, + pub pauserRegistry: alloy::sol_types::private::Address, + pub admin: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deployNewStrategy(address,address,address,address)`](deployNewStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct deployNewStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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, + ); + #[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: deployNewStrategyCall) -> Self { + ( + value.token, + value.strategyManager, + value.pauserRegistry, + value.admin, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deployNewStrategyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + strategyManager: tuple.1, + pauserRegistry: tuple.2, + admin: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deployNewStrategyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deployNewStrategyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deployNewStrategyCall { + 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>; + type Return = deployNewStrategyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deployNewStrategy(address,address,address,address)"; + const SELECTOR: [u8; 4] = [205u8, 134u8, 52u8, 23u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.strategyManager, + ), + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.admin, + ), + ) + } + #[inline] + fn 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 [`Utils`](self) function calls. + pub enum UtilsCalls { + deployNewStrategy(deployNewStrategyCall), + } + #[automatically_derived] + impl UtilsCalls { + /// 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]] = &[[205u8, 134u8, 52u8, 23u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for UtilsCalls { + const NAME: &'static str = "UtilsCalls"; + const MIN_DATA_LENGTH: usize = 128usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deployNewStrategy(_) => { + ::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 deployNewStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(UtilsCalls::deployNewStrategy) + } + deployNewStrategy + }]; + 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::deployNewStrategy(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deployNewStrategy(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Utils`](self) contract instance. + + See the [wrapper's documentation](`UtilsInstance`) 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, + ) -> UtilsInstance { + UtilsInstance::::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>> { + UtilsInstance::::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 { + UtilsInstance::::deploy_builder(provider) + } + /**A [`Utils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Utils`](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 UtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for UtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("UtilsInstance").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, + > UtilsInstance + { + /**Creates a new wrapper around an on-chain [`Utils`](self) contract instance. + + See the [wrapper's documentation](`UtilsInstance`) 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 UtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> UtilsInstance { + UtilsInstance { + 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, + > UtilsInstance + { + /// 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 [`deployNewStrategy`] function. + pub fn deployNewStrategy( + &self, + token: alloy::sol_types::private::Address, + strategyManager: alloy::sol_types::private::Address, + pauserRegistry: alloy::sol_types::private::Address, + admin: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deployNewStrategyCall { + token, + strategyManager, + pauserRegistry, + admin, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UtilsInstance + { + /// 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/middleware/withconstructor.rs b/crates/utils/src/middleware/withconstructor.rs new file mode 100644 index 00000000..d8e3bb12 --- /dev/null +++ b/crates/utils/src/middleware/withconstructor.rs @@ -0,0 +1,816 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface WithConstructor { + constructor(uint256 _a); + + function a() external view returns (uint256); + function b() external view returns (uint256); + function initialize(uint256 _b) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_a", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "a", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "b", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_b", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style +)] +pub mod WithConstructor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b5060405161014938038061014983398101604081905261002f91610037565b608052610050565b60006020828403121561004957600080fd5b5051919050565b60805160e161006860003960006045015260e16000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c80630dbe671f1460415780634df7e3d0146079578063fe4b84df146081575b600080fd5b60677f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b606760005481565b6091608c3660046093565b600055565b005b60006020828403121560a457600080fd5b503591905056fea26469706673582212203c827fe277a174a91a1c6471972298f9f549bcdf1c20c2ac8c9856b572c3053464736f6c634300080c0033 + /// ``` + #[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\x01I8\x03\x80a\x01I\x839\x81\x01`@\x81\x90Ra\0/\x91a\x007V[`\x80Ra\0PV[`\0` \x82\x84\x03\x12\x15a\0IW`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xE1a\0h`\09`\0`E\x01R`\xE1`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10` = (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: constructorCall) -> Self { + (value._a,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _a: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + 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._a, + ), + ) + } + } + }; + /**Function with signature `a()` and selector `0x0dbe671f`. + ```solidity + function a() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct aCall {} + ///Container type for the return parameters of the [`a()`](aCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct aReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: aCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for aCall { + 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: aReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for aReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for aCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = aReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "a()"; + const SELECTOR: [u8; 4] = [13u8, 190u8, 103u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `b()` and selector `0x4df7e3d0`. + ```solidity + function b() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct bCall {} + ///Container type for the return parameters of the [`b()`](bCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct bReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: bCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for bCall { + 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: bReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for bReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for bCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = bReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "b()"; + const SELECTOR: [u8; 4] = [77u8, 247u8, 227u8, 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 `initialize(uint256)` and selector `0xfe4b84df`. + ```solidity + function initialize(uint256 _b) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + pub _b: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`initialize(uint256)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + 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: initializeCall) -> Self { + (value._b,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _b: 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::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(uint256)"; + const SELECTOR: [u8; 4] = [254u8, 75u8, 132u8, 223u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._b, + ), + ) + } + #[inline] + fn 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 [`WithConstructor`](self) function calls. + pub enum WithConstructorCalls { + a(aCall), + b(bCall), + initialize(initializeCall), + } + #[automatically_derived] + impl WithConstructorCalls { + /// 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]] = &[ + [13u8, 190u8, 103u8, 31u8], + [77u8, 247u8, 227u8, 208u8], + [254u8, 75u8, 132u8, 223u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for WithConstructorCalls { + const NAME: &'static str = "WithConstructorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::a(_) => ::SELECTOR, + Self::b(_) => ::SELECTOR, + Self::initialize(_) => ::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 a( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(WithConstructorCalls::a) + } + a + }, + { + fn b( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(WithConstructorCalls::b) + } + b + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(WithConstructorCalls::initialize) + } + initialize + }, + ]; + 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::a(inner) => ::abi_encoded_size(inner), + Self::b(inner) => ::abi_encoded_size(inner), + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::a(inner) => ::abi_encode_raw(inner, out), + Self::b(inner) => ::abi_encode_raw(inner, out), + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`WithConstructor`](self) contract instance. + + See the [wrapper's documentation](`WithConstructorInstance`) 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, + ) -> WithConstructorInstance { + WithConstructorInstance::::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, + _a: alloy::sol_types::private::primitives::aliases::U256, + ) -> impl ::core::future::Future>> + { + WithConstructorInstance::::deploy(provider, _a) + } + /**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, + _a: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::RawCallBuilder { + WithConstructorInstance::::deploy_builder(provider, _a) + } + /**A [`WithConstructor`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`WithConstructor`](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 WithConstructorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for WithConstructorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("WithConstructorInstance") + .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, + > WithConstructorInstance + { + /**Creates a new wrapper around an on-chain [`WithConstructor`](self) contract instance. + + See the [wrapper's documentation](`WithConstructorInstance`) 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, + _a: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _a); + 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, + _a: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { _a })[..], + ] + .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 WithConstructorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> WithConstructorInstance { + WithConstructorInstance { + 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, + > WithConstructorInstance + { + /// 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 [`a`] function. + pub fn a(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&aCall {}) + } + ///Creates a new call builder for the [`b`] function. + pub fn b(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&bCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _b: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { _b }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > WithConstructorInstance + { + /// 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/operatorstateretriever.rs b/crates/utils/src/operatorstateretriever.rs deleted file mode 100644 index 526e1ed6..00000000 --- a/crates/utils/src/operatorstateretriever.rs +++ /dev/null @@ -1,2112 +0,0 @@ -/** - -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/registeroperators.rs b/crates/utils/src/registeroperators.rs deleted file mode 100644 index 2a3f9bba..00000000 --- a/crates/utils/src/registeroperators.rs +++ /dev/null @@ -1,695 +0,0 @@ -/** - -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/updateoperators.rs b/crates/utils/src/updateoperators.rs deleted file mode 100644 index b37d2297..00000000 --- a/crates/utils/src/updateoperators.rs +++ /dev/null @@ -1,695 +0,0 @@ -/** - -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/testing/testing-utils/Cargo.toml b/testing/testing-utils/Cargo.toml index a2ce32a2..4487dd2d 100644 --- a/testing/testing-utils/Cargo.toml +++ b/testing/testing-utils/Cargo.toml @@ -13,9 +13,10 @@ workspace = true [dependencies] alloy-primitives.workspace = true -alloy-provider.workspace = true alloy-rpc-types.workspace = true alloy-transport.workspace = true +alloy-provider.workspace = true +eigen-common.workspace = true eigen-utils.workspace = true serde.workspace = true serde_json.workspace = true diff --git a/testing/testing-utils/src/anvil_constants.rs b/testing/testing-utils/src/anvil_constants.rs index 33d6655b..dd3a8029 100644 --- a/testing/testing-utils/src/anvil_constants.rs +++ b/testing/testing-utils/src/anvil_constants.rs @@ -1,9 +1,8 @@ //! Anvil utilities use alloy_primitives::{address, Address}; -use eigen_utils::{ - contractsregistry::ContractsRegistry::{self, contractsReturn}, - get_provider, -}; +use eigen_utils::deploy::contractsregistry::ContractsRegistry::{self, contractsReturn}; + +use eigen_common::get_provider; /// Local anvil ContractsRegistry which contains a mapping of all locally deployed EL contracts. pub const CONTRACTS_REGISTRY: Address = address!("5FbDB2315678afecb367f032d93F642f64180aa3"); From a7699ba5cdf873c2ecda7abf1dba26e966464b0c Mon Sep 17 00:00:00 2001 From: Tomas Date: Wed, 8 Jan 2025 16:18:45 -0300 Subject: [PATCH 09/11] Delete TxManager (#151) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Pablo Deymonnaz Co-authored-by: Tomás Grüner <47506558+MegaRedHand@users.noreply.github.com> Co-authored-by: supernovahs <91280922+supernovahs@users.noreply.github.com> Co-authored-by: supernovahs --- Cargo.lock | 754 +++++++++--------- Cargo.toml | 5 +- README.md | 1 - crates/chainio/txmanager/Cargo.toml | 22 - crates/chainio/txmanager/README.md | 1 - crates/chainio/txmanager/src/lib.rs | 11 - .../txmanager/src/simple_tx_manager.rs | 424 ---------- crates/eigensdk/Cargo.toml | 5 - crates/eigensdk/README.md | 1 - crates/eigensdk/src/lib.rs | 6 - crates/metrics/Cargo.toml | 2 +- 11 files changed, 380 insertions(+), 852 deletions(-) delete mode 100644 crates/chainio/txmanager/Cargo.toml delete mode 100644 crates/chainio/txmanager/README.md delete mode 100644 crates/chainio/txmanager/src/lib.rs delete mode 100644 crates/chainio/txmanager/src/simple_tx_manager.rs diff --git a/Cargo.lock b/Cargo.lock index f17149a1..8513f114 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,9 +94,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.47" +version = "0.1.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c5c520273946ecf715c0010b4e3503d7eba9893cd9ce6b7fff5654c4a3c470" +checksum = "da226340862e036ab26336dc99ca85311c6b662267c1440e1733890fd688802c" dependencies = [ "alloy-primitives", "num_enum", @@ -153,7 +153,7 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror 2.0.4", + "thiserror 2.0.9", ] [[package]] @@ -263,7 +263,7 @@ dependencies = [ "alloy-sol-types", "serde", "serde_json", - "thiserror 2.0.4", + "thiserror 2.0.9", "tracing", ] @@ -289,7 +289,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.4", + "thiserror 2.0.9", ] [[package]] @@ -317,7 +317,7 @@ dependencies = [ "rand", "serde_json", "tempfile", - "thiserror 2.0.4", + "thiserror 2.0.9", "tracing", "url", ] @@ -378,11 +378,11 @@ dependencies = [ "lru", "parking_lot", "pin-project", - "reqwest 0.12.9", + "reqwest 0.12.12", "schnellru", "serde", "serde_json", - "thiserror 2.0.4", + "thiserror 2.0.9", "tokio", "tracing", "url", @@ -410,9 +410,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -421,13 +421,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -445,7 +445,7 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest 0.12.9", + "reqwest 0.12.12", "serde", "serde_json", "tokio", @@ -513,7 +513,7 @@ dependencies = [ "itertools 0.13.0", "serde", "serde_json", - "thiserror 2.0.4", + "thiserror 2.0.9", ] [[package]] @@ -538,7 +538,7 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror 2.0.4", + "thiserror 2.0.9", ] [[package]] @@ -555,7 +555,7 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror 2.0.4", + "thiserror 2.0.9", "tracing", ] @@ -572,7 +572,7 @@ dependencies = [ "async-trait", "k256", "rand", - "thiserror 2.0.4", + "thiserror 2.0.9", ] [[package]] @@ -586,7 +586,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -603,7 +603,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "syn-solidity", "tiny-keccak", ] @@ -621,7 +621,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.90", + "syn 2.0.95", "syn-solidity", ] @@ -660,7 +660,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.4", + "thiserror 2.0.9", "tokio", "tower", "tracing", @@ -676,7 +676,7 @@ checksum = "6e1509599021330a31c4a6816b655e34bf67acb1cc03c564e09fd8754ff6c5de" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.9", + "reqwest 0.12.12", "serde_json", "tower", "tracing", @@ -711,8 +711,8 @@ dependencies = [ "alloy-pubsub", "alloy-transport", "futures", - "http 1.1.0", - "rustls 0.23.19", + "http 1.2.0", + "rustls 0.23.20", "serde_json", "tokio", "tokio-tungstenite 0.24.0", @@ -946,7 +946,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -984,7 +984,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -1098,7 +1098,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -1151,9 +1151,9 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ "event-listener", "event-listener-strategy", @@ -1192,18 +1192,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -1231,7 +1231,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -1242,9 +1242,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.10" +version = "1.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b49afaa341e8dd8577e1a2200468f98956d6eda50bcf4a53246cc00174ba924" +checksum = "c03a50b30228d3af8865ce83376b4e99e1ffa34728220fe2860e4df0bb5278d6" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1284,9 +1284,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47bb8cc16b669d267eeccf585aea077d0882f4777b1c1f740217885d6e6e5a3" +checksum = "f409eb70b561706bf8abba8ca9c112729c481595893fd06a2dd9af8ed8441148" dependencies = [ "aws-lc-sys", "paste", @@ -1295,24 +1295,23 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.23.1" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2101df3813227bbaaaa0b04cd61c534c7954b22bd68d399b440be937dc63ff7" +checksum = "923ded50f602b3007e5e63e3f094c479d9c8a9b42d7f4034e4afe456aa48bfd2" dependencies = [ "bindgen", "cc", "cmake", "dunce", "fs_extra", - "libc", "paste", ] [[package]] name = "aws-runtime" -version = "1.4.3" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468" +checksum = "b16d1aa50accc11a4b4d5c50f7fb81cc0cf60328259c587d0e6b0f11385bde46" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1335,9 +1334,9 @@ dependencies = [ [[package]] name = "aws-sdk-kms" -version = "1.50.0" +version = "1.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfd059dacda4dfd5b57f2bd453fc6555f9acb496cb77508d517da24cf5d73167" +checksum = "a6cf16c0e5853312995505557b876dd3f9fb9941e96d031383528ccef14ace57" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1357,9 +1356,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.49.0" +version = "1.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09677244a9da92172c8dc60109b4a9658597d4d298b188dd0018b6a66b410ca4" +checksum = "1605dc0bf9f0a4b05b451441a17fcb0bda229db384f23bf5cead3adbab0664ac" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1379,9 +1378,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.50.0" +version = "1.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fea2f3a8bb3bd10932ae7ad59cc59f65f270fc9183a7e91f501dc5efbef7ee" +checksum = "59f3f73466ff24f6ad109095e0f3f2c830bfb4cd6c8b12f744c8e61ebf4d3ba1" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1401,9 +1400,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.50.0" +version = "1.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ada54e5f26ac246dc79727def52f7f8ed38915cb47781e2a72213957dc3a7d5" +checksum = "249b2acaa8e02fd4718705a9494e3eb633637139aa4bb09d70965b0448e865db" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1424,9 +1423,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5619742a0d8f253be760bfbb8e8e8368c69e3587e4637af5754e488a611499b1" +checksum = "7d3820e0c08d0737872ff3c7c1f21ebbb6693d832312d6152bf18ef50a5471c2" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1437,7 +1436,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "once_cell", "percent-encoding", "sha2", @@ -1447,9 +1446,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.1" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62220bc6e97f946ddd51b5f1361f78996e704677afc518a4ff66b7a72ea1378c" +checksum = "427cb637d15d63d6f9aae26358e1c9a9c09d5aa490d64b09354c8217cfef0f28" dependencies = [ "futures-util", "pin-project-lite", @@ -1478,9 +1477,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.60.7" +version = "0.61.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6" +checksum = "ee4e69cc50921eb913c6b662f8d909131bb3e6ad6cb6090d3a39b66fc5c52095" dependencies = [ "aws-smithy-types", ] @@ -1497,9 +1496,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.3" +version = "1.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be28bd063fa91fd871d131fc8b68d7cd4c5fa0869bea68daca50dcb1cbd76be2" +checksum = "a05dd41a70fc74051758ee75b5c4db2c0ca070ed9229c3df50e9475cda1cb985" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1512,7 +1511,7 @@ dependencies = [ "http-body 0.4.6", "http-body 1.0.1", "httparse", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-rustls 0.24.2", "once_cell", "pin-project-lite", @@ -1532,7 +1531,7 @@ dependencies = [ "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "pin-project-lite", "tokio", "tracing", @@ -1541,16 +1540,16 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.9" +version = "1.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fbd94a32b3a7d55d3806fe27d98d3ad393050439dd05eb53ece36ec5e3d3510" +checksum = "38ddc9bd6c28aeb303477170ddd183760a956a03e083b3902a990238a7e3792d" dependencies = [ "base64-simd", "bytes", "bytes-utils", "futures-core", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -1588,20 +1587,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "backoff" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" -dependencies = [ - "futures-core", - "getrandom", - "instant", - "pin-project-lite", - "rand", - "tokio", -] - [[package]] name = "backtrace" version = "0.3.74" @@ -1694,7 +1679,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.90", + "syn 2.0.95", "which", ] @@ -1771,16 +1756,16 @@ dependencies = [ "futures-util", "hex", "home", - "http 1.1.0", + "http 1.2.0", "http-body-util", - "hyper 1.5.1", + "hyper 1.5.2", "hyper-named-pipe", - "hyper-rustls 0.27.3", + "hyper-rustls 0.27.5", "hyper-util", "hyperlocal", "log", "pin-project-lite", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-native-certs 0.7.3", "rustls-pemfile 2.2.0", "rustls-pki-types", @@ -1917,7 +1902,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "thiserror 1.0.69", @@ -1925,9 +1910,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.2" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" dependencies = [ "jobserver", "libc", @@ -1957,9 +1942,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1993,9 +1978,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.21" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "9560b07a799281c7e0958b9296854d6fafd4c5f31444a7e5bb1ad6dde5ccf1bd" dependencies = [ "clap_builder", "clap_derive", @@ -2003,9 +1988,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "874e0dd3eb68bf99058751ac9712f622e61e6f393a94f7128fa26e3f02f5c7cd" dependencies = [ "anstream", "anstyle", @@ -2015,21 +2000,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "clap_lex" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cmake" @@ -2100,12 +2085,12 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -2188,9 +2173,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -2207,9 +2192,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" @@ -2246,7 +2231,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -2289,7 +2274,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -2300,7 +2285,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -2371,7 +2356,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "unicode-xid", ] @@ -2446,7 +2431,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -2495,23 +2480,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.90", -] - -[[package]] -name = "eigen-chainio-txmanager" -version = "0.1.1" -dependencies = [ - "alloy", - "async-trait", - "backoff", - "eigen-logging", - "eigen-signer", - "eigen-testing-utils", - "once_cell", - "reqwest 0.12.9", - "thiserror 1.0.69", - "tokio", + "syn 2.0.95", ] [[package]] @@ -2708,7 +2677,7 @@ dependencies = [ "metrics-exporter-prometheus", "metrics-util", "num-bigint 0.4.6", - "reqwest 0.12.9", + "reqwest 0.12.12", "tokio", ] @@ -2741,7 +2710,7 @@ name = "eigen-nodeapi" version = "0.1.1" dependencies = [ "ntex", - "reqwest 0.12.9", + "reqwest 0.12.12", "serde", "serde_json", "thiserror 1.0.69", @@ -2883,14 +2852,13 @@ name = "eigen-utils" version = "0.1.1" dependencies = [ "alloy", - "reqwest 0.12.9", + "reqwest 0.12.12", ] [[package]] name = "eigensdk" version = "0.1.1" dependencies = [ - "eigen-chainio-txmanager", "eigen-client-avsregistry", "eigen-client-elcontracts", "eigen-client-eth", @@ -2995,7 +2963,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -3161,7 +3129,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.90", + "syn 2.0.95", "toml", "walkdir", ] @@ -3179,7 +3147,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -3205,7 +3173,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.90", + "syn 2.0.95", "tempfile", "thiserror 1.0.69", "tiny-keccak", @@ -3221,7 +3189,7 @@ dependencies = [ "chrono", "ethers-core", "reqwest 0.11.27", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "thiserror 1.0.69", @@ -3330,7 +3298,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "solang-parser", @@ -3345,9 +3313,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -3424,9 +3392,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fastrlp" @@ -3439,6 +3407,17 @@ dependencies = [ "bytes", ] +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + [[package]] name = "ff" version = "0.13.0" @@ -3613,7 +3592,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -3703,9 +3682,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "gloo-timers" @@ -3760,7 +3739,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.1.0", + "http 1.2.0", "indexmap 2.7.0", "slab", "tokio", @@ -3857,11 +3836,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3877,9 +3856,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -3904,7 +3883,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -3915,7 +3894,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] @@ -3934,9 +3913,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -3958,15 +3937,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", "futures-util", "h2 0.4.7", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -3984,7 +3963,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.5.1", + "hyper 1.5.2", "hyper-util", "pin-project-lite", "tokio", @@ -4000,7 +3979,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.32", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -4010,19 +3989,19 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.5.1", + "http 1.2.0", + "hyper 1.5.2", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tower-service", "webpki-roots 0.26.7", ] @@ -4034,7 +4013,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.31", + "hyper 0.14.32", "native-tls", "tokio", "tokio-native-tls", @@ -4048,7 +4027,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.1", + "hyper 1.5.2", "hyper-util", "native-tls", "tokio", @@ -4065,9 +4044,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.1", + "hyper 1.5.2", "pin-project-lite", "socket2", "tokio", @@ -4083,7 +4062,7 @@ checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" dependencies = [ "hex", "http-body-util", - "hyper 1.5.1", + "hyper 1.5.2", "hyper-util", "pin-project-lite", "tokio", @@ -4228,7 +4207,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -4293,7 +4272,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -4441,9 +4420,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ "once_cell", "wasm-bindgen", @@ -4554,9 +4533,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.167" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libloading" @@ -4582,14 +4561,14 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" @@ -4650,14 +4629,14 @@ dependencies = [ [[package]] name = "metrics-exporter-prometheus" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b6f8152da6d7892ff1b7a1c0fa3f435e92b5918ad67035c3bb432111d9a29b" +checksum = "12779523996a67c13c84906a876ac6fe4d07a6e1adb54978378e13f199251a62" dependencies = [ "base64 0.22.1", "http-body-util", - "hyper 1.5.1", - "hyper-rustls 0.27.3", + "hyper 1.5.2", + "hyper-rustls 0.27.5", "hyper-util", "indexmap 2.7.0", "ipnet", @@ -4671,9 +4650,9 @@ dependencies = [ [[package]] name = "metrics-util" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b482df36c13dd1869d73d14d28cd4855fbd6cfc32294bee109908a9f4a4ed7" +checksum = "dbd4884b1dd24f7d6628274a2f5ae22465c337c5ba065ec9b6edccddf8acc673" dependencies = [ "aho-corasick", "crossbeam-epoch", @@ -4684,6 +4663,8 @@ dependencies = [ "ordered-float", "quanta", "radix_trie", + "rand", + "rand_xoshiro", "sketches-ddsketch", ] @@ -4701,9 +4682,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] @@ -4781,9 +4762,9 @@ dependencies = [ [[package]] name = "ntex" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d89f9d82fbcff4998af06815e18773fab96c85ec2b58efe8957f4e8562eb4b4" +checksum = "a1988f5a24be40f4cd06c5a1d66ff71da4dcf161f19a61013e6f967642c3c5bc" dependencies = [ "base64 0.22.1", "bitflags 2.6.0", @@ -4840,9 +4821,9 @@ dependencies = [ [[package]] name = "ntex-h2" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b32d95fd8ce40fbbfbeb96d8fdb56722cccf2747ccc2b0f336a79ffa341922" +checksum = "5b235208bb51db69da394f3c77361bed9b62dc50b424842952ff636b1b36f800" dependencies = [ "bitflags 2.6.0", "fxhash", @@ -4853,6 +4834,7 @@ dependencies = [ "ntex-http", "ntex-io", "ntex-net", + "ntex-rt", "ntex-service", "ntex-util", "pin-project-lite", @@ -4867,7 +4849,7 @@ checksum = "aa914d2065138de8d3439a6221259fa810c04ded06ddbcc7e46accc52f6365de" dependencies = [ "futures-core", "fxhash", - "http 1.1.0", + "http 1.2.0", "itoa", "log", "ntex-bytes", @@ -4876,9 +4858,9 @@ dependencies = [ [[package]] name = "ntex-io" -version = "2.8.3" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5cff5b309daa9923f563587718caf736a56dccab1055ae171594f5f215eee5c" +checksum = "857063bbe358ab1d9b49ce3fdcdaf39394aea018818d0bdae3add00ad6dc27c1" dependencies = [ "bitflags 2.6.0", "log", @@ -4924,7 +4906,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb9c68c26a87ffca54339be5f95223339db3e7bcc5d64733fef20812970a746f" dependencies = [ - "http 1.1.0", + "http 1.2.0", "log", "ntex-bytes", "regex", @@ -4933,9 +4915,9 @@ dependencies = [ [[package]] name = "ntex-rt" -version = "0.4.22" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733a898a4bf210dbf417bdee328f98feccdc40a183e4f8f4a08fff4bca352054" +checksum = "c6ff00071886fd8f78f335f7bc8d369822c7ea8b0504fa796f8bbd4a33bde29f" dependencies = [ "async-channel", "futures-core", @@ -4946,9 +4928,9 @@ dependencies = [ [[package]] name = "ntex-server" -version = "2.5.0" +version = "2.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300921ed1f8626d7bfb06813ff839945eed08f763fbc1296590f878b8ee7f9e3" +checksum = "35d4d5a5e06133d1941a56052a827dfe5b529aca810d6480fad993a53a8fb92f" dependencies = [ "async-broadcast", "async-channel", @@ -4967,18 +4949,18 @@ dependencies = [ [[package]] name = "ntex-service" -version = "3.3.3" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd12132d538e9c99c12e613d8ca0e1b58aa9ba8b6edf76f6e073cccfafdeeb4c" +checksum = "07867c1db27ae44cc6c796a0995c08d76aac32dffde961677a3b1950a0008a54" dependencies = [ "slab", ] [[package]] name = "ntex-tls" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6df536ec6f8f2499f5e3a2e2893cfc1b775408ee0c917d0570821025dc22e3" +checksum = "09365414dfba07030f914123f24631ae04caeed8ead42e219a5d7b54d3f52518" dependencies = [ "log", "ntex-bytes", @@ -5004,9 +4986,9 @@ dependencies = [ [[package]] name = "ntex-util" -version = "2.6.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186b3b1d63560a8a4c95e54b7e10e2397dcaea5cd09b9bcb150183520b4eae6c" +checksum = "73a7a68f2b6508ac7da46cc5b78cd9c997580473b3673a308c0f1e27c643a402" dependencies = [ "bitflags 2.6.0", "futures-core", @@ -5105,7 +5087,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5123,9 +5105,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -5190,7 +5172,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5219,9 +5201,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-float" -version = "4.5.0" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65ee1f9701bf938026630b455d5315f490640234259037edb259798b3bcf85e" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" dependencies = [ "num-traits", ] @@ -5254,14 +5236,14 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.7.0" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8781a75c6205af67215f382092b6e0a4ff3734798523e69073d4bcd294ec767b" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 1.0.109", ] [[package]] @@ -5288,7 +5270,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", "smallvec", "windows-targets 0.52.6", ] @@ -5315,7 +5297,7 @@ dependencies = [ "regex", "regex-syntax", "structmeta", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5402,12 +5384,12 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 1.0.69", + "thiserror 2.0.9", "ucd-trie", ] @@ -5433,35 +5415,35 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared 0.11.3", ] [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", + "phf_shared 0.11.3", "rand", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", - "phf_shared 0.11.2", + "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5470,43 +5452,43 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" dependencies = [ - "siphasher", + "siphasher 0.3.11", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "siphasher", + "siphasher 1.0.1", ] [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -5574,12 +5556,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "483f8c21f64f3ea09fe0f30f5d48c3e8eefe5dac9129f0075f76593b4c1da705" dependencies = [ "proc-macro2", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5624,7 +5606,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5658,9 +5640,9 @@ dependencies = [ [[package]] name = "quanta" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" +checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" dependencies = [ "crossbeam-utils", "libc", @@ -5688,9 +5670,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.0", - "rustls 0.23.19", + "rustls 0.23.20", "socket2", - "thiserror 2.0.4", + "thiserror 2.0.9", "tokio", "tracing", ] @@ -5706,10 +5688,10 @@ dependencies = [ "rand", "ring 0.17.8", "rustc-hash 2.1.0", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "slab", - "thiserror 2.0.4", + "thiserror 2.0.9", "tinyvec", "tracing", "web-time", @@ -5717,9 +5699,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" dependencies = [ "cfg_aliases", "libc", @@ -5731,9 +5713,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -5794,6 +5776,15 @@ dependencies = [ "rand_core", ] +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core", +] + [[package]] name = "raw-cpuid" version = "11.2.0" @@ -5840,9 +5831,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -5913,7 +5904,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-rustls 0.24.2", "hyper-tls 0.5.0", "ipnet", @@ -5945,9 +5936,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", @@ -5955,11 +5946,11 @@ dependencies = [ "futures-core", "futures-util", "h2 0.4.7", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", - "hyper-rustls 0.27.3", + "hyper 1.5.2", + "hyper-rustls 0.27.5", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -5971,7 +5962,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -5981,7 +5972,8 @@ dependencies = [ "system-configuration 0.6.1", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", + "tower", "tower-service", "url", "wasm-bindgen", @@ -6088,22 +6080,24 @@ dependencies = [ "regex", "relative-path", "rustc_version 0.4.1", - "syn 2.0.90", + "syn 2.0.95", "unicode-ident", ] [[package]] name = "ruint" -version = "1.12.3" +version = "1.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +checksum = "f5ef8fb1dd8de3870cb8400d51b4c2023854bbafd5431a3ac7e7317243e22d2f" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", "bytes", - "fastrlp", + "fastrlp 0.3.1", + "fastrlp 0.4.0", "num-bigint 0.4.6", + "num-integer", "num-traits", "parity-scale-codec", "primitive-types", @@ -6189,20 +6183,20 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.24", ] [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6219,9 +6213,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.19" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "aws-lc-rs", "once_cell", @@ -6266,7 +6260,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.0.1", + "security-framework 3.2.0", ] [[package]] @@ -6289,9 +6283,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" dependencies = [ "web-time", ] @@ -6320,9 +6314,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "rusty-fork" @@ -6381,14 +6375,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "scc" -version = "2.2.5" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b202022bb57c049555430e11fc22fea12909276a80a4c3d368da36ac1d88ed" +checksum = "28e1c91382686d21b5ac7959341fcb9780fa7c03773646995a87c950fa7be640" dependencies = [ "sdd", ] @@ -6404,9 +6398,9 @@ dependencies = [ [[package]] name = "schnellru" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" dependencies = [ "ahash", "cfg-if", @@ -6455,9 +6449,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95" +checksum = "478f121bb72bbf63c52c93011ea1791dca40140dfe13f8336c4c5ac952c33aa9" [[package]] name = "sec1" @@ -6488,9 +6482,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.0.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ "bitflags 2.6.0", "core-foundation 0.10.0", @@ -6501,9 +6495,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -6520,9 +6514,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" dependencies = [ "serde", ] @@ -6550,29 +6544,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.215" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.215" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.135" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" dependencies = [ "itoa", "memchr", @@ -6588,7 +6582,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -6614,9 +6608,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ "base64 0.22.1", "chrono", @@ -6632,14 +6626,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -6664,7 +6658,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -6793,6 +6787,12 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + [[package]] name = "sketches-ddsketch" version = "0.3.0" @@ -6903,7 +6903,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -6914,7 +6914,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -6936,7 +6936,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -6956,7 +6956,7 @@ dependencies = [ "hex", "once_cell", "reqwest 0.11.27", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "sha2", @@ -6978,9 +6978,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" dependencies = [ "proc-macro2", "quote", @@ -6996,7 +6996,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -7022,7 +7022,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -7075,12 +7075,13 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand", + "getrandom", "once_cell", "rustix", "windows-sys 0.59.0", @@ -7137,11 +7138,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.4" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" dependencies = [ - "thiserror-impl 2.0.4", + "thiserror-impl 2.0.9", ] [[package]] @@ -7152,18 +7153,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "thiserror-impl" -version = "2.0.4" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -7187,9 +7188,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -7208,9 +7209,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", @@ -7237,9 +7238,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -7252,9 +7253,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.1" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -7270,13 +7271,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -7301,20 +7302,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.19", - "rustls-pki-types", + "rustls 0.23.20", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -7360,19 +7360,19 @@ checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tungstenite 0.24.0", "webpki-roots 0.26.7", ] [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -7417,14 +7417,15 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.2", + "tokio", "tower-layer", "tower-service", ] @@ -7460,7 +7461,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -7565,11 +7566,11 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.2.0", "httparse", "log", "rand", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "sha1", "thiserror 1.0.69", @@ -7760,9 +7761,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -7771,24 +7772,23 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.47" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", @@ -7799,9 +7799,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7809,22 +7809,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasmtimer" @@ -7842,9 +7842,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -8113,9 +8113,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" dependencies = [ "memchr", ] @@ -8172,9 +8172,9 @@ dependencies = [ [[package]] name = "xattr" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" dependencies = [ "libc", "linux-raw-sys", @@ -8213,7 +8213,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "synstructure", ] @@ -8235,7 +8235,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -8255,7 +8255,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "synstructure", ] @@ -8276,7 +8276,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -8298,7 +8298,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 4cfadf30..f5c7858c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,6 @@ members = [ "crates/chainio/clients/elcontracts/", "crates/chainio/clients/eth/", "crates/chainio/clients/fireblocks/", - "crates/chainio/txmanager/", "crates/crypto/bls/", "crates/crypto/bn254/", "crates/eigen-cli/", @@ -57,6 +56,7 @@ clippy.question_mark = "warn" clippy.implicit_return = "allow" [workspace.dependencies] +eigen-client-avsregistry = { path = "crates/chainio/clients/avsregistry" } ark-bn254 = "0.5.0" ark-ec = "0.5.0" ark-ff = "0.5.0" @@ -68,7 +68,6 @@ backoff = { version = "0.4.0", features = ["futures", "tokio"] } clap = { version = "4.5.20", features = ["derive"] } eigen-common = { path = "crates/common/" } eigen-chainio-txmanager = { path = "crates/chainio/txmanager/" } -eigen-client-avsregistry = { path = "crates/chainio/clients/avsregistry" } eigen-client-elcontracts = { path = "crates/chainio/clients/elcontracts" } eigen-client-eth = { path = "crates/chainio/clients/eth" } eigen-client-fireblocks = { path = "crates/chainio/clients/fireblocks" } @@ -98,7 +97,7 @@ hyper = "0.5" info-operator-service = { path = "examples/info-operator-service" } k256 = "0.13" metrics = "0.24" -metrics-exporter-prometheus = "0.16" +metrics-exporter-prometheus = "0.16.1" num-bigint = "0.4" once_cell = "1.20" prometheus-client = "0.22" diff --git a/README.md b/README.md index 69858b04..e54c2069 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ cargo add eigensdk --features full - [eigen-types](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/types) - Common types - [eigen-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/utils) - Publicly exportable `mainnet rewards v0.4.3` compatible alloy bindings. - [eigen-testing-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/testing/testing-utils) - Contains publicly exportable anvil, holesky, mainnet addresses for eigen contracts. -- [eigen-chainio-txmanager](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/chainio/txmanager) - Simple transaction manager. - [eigen-cli](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/eigen-cli) - ECDSA, BLS keystore cli - [eigen-nodeapi](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/nodeapi) - NodeApi implementation for EigenLayer. - [eigen-logging](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/logging) - Logging utilities diff --git a/crates/chainio/txmanager/Cargo.toml b/crates/chainio/txmanager/Cargo.toml deleted file mode 100644 index afec9039..00000000 --- a/crates/chainio/txmanager/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "eigen-chainio-txmanager" -description = "Eigen Layer Tx Manager" -version.workspace = true -edition.workspace = true -rust-version.workspace = true -repository.workspace = true -license-file.workspace = true - -[dependencies] -alloy.workspace = true -async-trait.workspace = true -eigen-logging.workspace = true -eigen-signer.workspace = true -reqwest.workspace = true -thiserror.workspace = true -tokio.workspace = true -backoff.workspace = true - -[dev-dependencies] -eigen-testing-utils.workspace = true -once_cell.workspace = true diff --git a/crates/chainio/txmanager/README.md b/crates/chainio/txmanager/README.md deleted file mode 100644 index 5070707b..00000000 --- a/crates/chainio/txmanager/README.md +++ /dev/null @@ -1 +0,0 @@ -# Eigen SDK ChainIo Tx Manager diff --git a/crates/chainio/txmanager/src/lib.rs b/crates/chainio/txmanager/src/lib.rs deleted file mode 100644 index 2fde8d66..00000000 --- a/crates/chainio/txmanager/src/lib.rs +++ /dev/null @@ -1,11 +0,0 @@ -#![doc( - html_logo_url = "https://github.com/Layr-Labs/eigensdk-rs/assets/91280922/bd13caec-3c00-4afc-839a-b83d2890beb5", - issue_tracker_base_url = "https://github.com/Layr-Labs/eigensdk-rs/issues/" -)] -#![cfg_attr(not(test), warn(unused_crate_dependencies))] - -pub mod alloy_backend; -pub mod eth_backend_trait; -mod fake_backend; -pub mod geometric_tx_manager; -pub mod simple_tx_manager; diff --git a/crates/chainio/txmanager/src/simple_tx_manager.rs b/crates/chainio/txmanager/src/simple_tx_manager.rs deleted file mode 100644 index 889be616..00000000 --- a/crates/chainio/txmanager/src/simple_tx_manager.rs +++ /dev/null @@ -1,424 +0,0 @@ -use alloy::eips::BlockNumberOrTag; -use alloy::network::{Ethereum, EthereumWallet, TransactionBuilder}; -use alloy::primitives::U256; -use alloy::providers::{PendingTransactionBuilder, Provider, ProviderBuilder, RootProvider}; -use alloy::rpc::types::eth::{TransactionInput, TransactionReceipt, TransactionRequest}; -use alloy::signers::local::PrivateKeySigner; -use backoff::{future::retry, ExponentialBackoffBuilder}; -use eigen_logging::logger::SharedLogger; -use eigen_signer::signer::Config; -use reqwest::Url; -use std::time::Duration; -use thiserror::Error; - -static FALLBACK_GAS_TIP_CAP: u128 = 5_000_000_000; - -pub type Transport = alloy::transports::http::Http; - -/// Possible errors raised in Tx Manager -#[derive(Error, Debug, PartialEq)] -pub enum TxManagerError { - #[error("signer error")] - SignerError, - #[error("send error")] - SendTxError, - #[error("wait_for_receipt error")] - WaitForReceiptError, - #[error("address error")] - AddressError, - #[error("invalid url error")] - InvalidUrlError, -} - -/// A simple transaction manager that encapsulates operations to send transactions to an Ethereum node. -pub struct SimpleTxManager { - logger: SharedLogger, - gas_limit_multiplier: f64, - private_key: String, - provider: RootProvider, -} - -impl SimpleTxManager { - /// Creates a new SimpleTxManager. - /// - /// # Arguments - /// - /// * `logger`: The logger to be used. - /// * `gas_limit_multiplier`: The gas limit multiplier. - /// * `private_key`: The private key of the wallet. - /// * `rpc_url`: The RPC URL. It could be an anvil node or any other node. - /// - /// # Returns - /// - /// * The SimpleTxManager created. - /// - /// # Errors - /// - /// * If the URL is invalid. - pub fn new( - logger: SharedLogger, - gas_limit_multiplier: f64, - private_key: &str, - rpc_url: &str, - ) -> Result { - let url = Url::parse(rpc_url) - .inspect_err(|err| logger.error("Failed to parse url", &err.to_string())) - .map_err(|_| TxManagerError::InvalidUrlError)?; - let provider = ProviderBuilder::new().on_http(url); - Ok(SimpleTxManager { - logger, - gas_limit_multiplier, - private_key: private_key.to_string(), - provider, - }) - } - - /// Sets the gas limit multiplier. - /// - /// # Arguments - /// - /// * `multiplier` - The gas limit multiplier. - pub fn with_gas_limit_multiplier(&mut self, multiplier: f64) { - self.gas_limit_multiplier = multiplier; - } - - /// Creates a local signer. - /// - /// # Returns - /// - /// * `PrivateKeySigner` The local signer. - /// - /// # Errors - /// - /// * If the signer cannot be created. - fn create_local_signer(&self) -> Result { - let config = Config::PrivateKey(self.private_key.clone()); - Config::signer_from_config(config) - .inspect_err(|err| { - self.logger - .error("Failed to create signer", &err.to_string()) - }) - .map_err(|_| TxManagerError::SignerError) - } - - /// Send is used to send a transaction to the Ethereum node. It takes an unsigned/signed transaction, - /// sends it to the Ethereum node and waits for the receipt. - /// If you pass in a signed transaction it will ignore the signature - /// and re-sign the transaction after adding the nonce and gas limit. - /// - /// # Arguments - /// - /// * `tx`: The transaction to be sent. - /// - /// # Returns - /// - /// * `TransactionReceipt` The transaction receipt. - /// - /// # Errors - /// - /// * `TxManagerError` - If the transaction cannot be sent, or there is an error - /// signing the transaction or estimating gas and nonce. - pub async fn send_tx( - &self, - tx: &mut TransactionRequest, - ) -> Result { - // Estimating gas and nonce - self.logger.debug("Estimating gas and nonce", ""); - - let tx = self.estimate_gas_and_nonce(tx).await.inspect_err(|err| { - self.logger - .error("Failed to estimate gas", &err.to_string()) - })?; - - let signer = self.create_local_signer()?; - let wallet = EthereumWallet::from(signer); - - let signed_tx = tx - .build(&wallet) - .await - .inspect_err(|err| { - self.logger - .error("Failed to build and sign transaction", &err.to_string()) - }) - .map_err(|_| TxManagerError::SendTxError)?; - - // send transaction and get receipt - let pending_tx = self - .provider - .send_tx_envelope(signed_tx) - .await - .inspect_err(|err| self.logger.error("Failed to get receipt", &err.to_string())) - .map_err(|_| TxManagerError::SendTxError)?; - - self.logger.debug( - "Transaction sent. Pending transaction: ", - &pending_tx.tx_hash().to_string(), - ); - // wait for the transaction to be mined - SimpleTxManager::wait_for_receipt(self, pending_tx).await - } - - /// Send a transaction to the Ethereum node. It takes an unsigned/signed transaction, - /// sends it to the Ethereum node and waits for the receipt. - /// If you pass in a signed transaction it will ignore the signature - /// and re-sign the transaction after adding the nonce and gas limit. - /// If the transaction fails, it will retry sending the transaction until it gets a receipt, - /// using an **exponential backoff** strategy. - /// If no receipt is received after `max_elapsed_time`, it will return an error. - /// - /// # Arguments - /// - /// * `tx`: The transaction to be sent. - /// * `initial_interval`: The initial interval duration for the backoff. - /// * `max_elapsed_time`: The maximum elapsed time for retrying. - /// * `multiplier`: The multiplier used to compute the exponential backoff. - /// - /// # Returns - /// - /// * `TransactionReceipt` The transaction receipt. - /// - /// # Errors - /// - /// * `TxManagerError` - If the transaction cannot be sent, or there is an error - /// signing the transaction or estimating gas and nonce. - pub async fn send_tx_with_retries( - &self, - tx: &mut TransactionRequest, - initial_interval: Duration, - max_elapsed_time: Duration, - multiplier: f64, - ) -> Result { - let backoff_config = ExponentialBackoffBuilder::default() - .with_initial_interval(initial_interval) - .with_max_elapsed_time(Some(max_elapsed_time)) - .with_multiplier(multiplier) - .build(); - retry(backoff_config, || async { - let mut cloned_tx = tx.clone(); - Ok(self.send_tx(&mut cloned_tx).await?) - }) - .await - } - - /// Estimates the gas and nonce for a transaction. - /// - /// # Arguments - /// - /// * `tx`: The transaction for which we want to estimate the gas and nonce. - /// - /// # Returns - /// - /// * The transaction request with the gas and nonce estimated. - /// - /// # Errors - /// - /// * If the transaction request could not sent of gives an error. - /// * If the latest block header could not be retrieved. - /// * If the gas price could not be estimated. - /// * If the gas limit could not be estimated. - /// * If the destination address could not be retrieved. - async fn estimate_gas_and_nonce( - &self, - tx: &TransactionRequest, - ) -> Result { - let gas_tip_cap = self.provider.get_max_priority_fee_per_gas().await - .inspect_err(|err| - self.logger.info("eth_maxPriorityFeePerGas is unsupported by current backend, using fallback gasTipCap", - &err.to_string())) - .unwrap_or(FALLBACK_GAS_TIP_CAP); - - let header = self - .provider - .get_block_by_number(BlockNumberOrTag::Latest, false.into()) - .await - .ok() - .flatten() - .map(|block| block.header) - .ok_or(TxManagerError::SendTxError) - .inspect_err(|_| self.logger.error("Failed to get latest block header", ""))?; - - // 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: 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(); - // we only estimate if gas_limit is not already set - if let Some(0) = gas_limit { - let from = self.create_local_signer()?.address(); - let to = tx.to().ok_or(TxManagerError::SendTxError)?; - - let mut tx_request = TransactionRequest::default() - .to(to) - .from(from) - .value(tx.value().unwrap_or_default()) - .input(TransactionInput::new(tx_input.clone().into())); - tx_request.set_max_priority_fee_per_gas(gas_tip_cap); - tx_request.set_max_fee_per_gas(gas_fee_cap); - - gas_limit = Some( - self.provider - .estimate_gas(&tx_request) - .await - .map_err(|_| TxManagerError::SendTxError)?, - ); - } - let gas_price_multiplied = - tx.gas_price().unwrap_or_default() as f64 * self.gas_limit_multiplier; - let gas_price = gas_price_multiplied as u128; - - let to = tx.to().ok_or(TxManagerError::SendTxError)?; - - let new_tx = TransactionRequest::default() - .with_to(to) - .with_value(tx.value().unwrap_or_default()) - .with_gas_limit(gas_limit.unwrap_or_default()) - .with_nonce(tx.nonce().unwrap_or_default()) - .with_input(tx_input) - .with_chain_id(tx.chain_id().unwrap_or(1)) - .with_max_priority_fee_per_gas(gas_tip_cap) - .with_max_fee_per_gas(gas_fee_cap) - .with_gas_price(gas_price); - - Ok(new_tx) - } - - /// Waits for the transaction receipt. - /// - /// This is a wrapper around `PendingTransactionBuilder::get_receipt`. - /// - /// # Arguments - /// - /// * `pending_tx`: The pending transaction builder we want to wait for. - /// - /// # Returns - /// - /// * The block number in which the transaction was included. - /// * `None` if the transaction was not included in a block or an error ocurred. - /// - /// # Errors - /// - /// * `TxManagerError` - If the transaction receipt cannot be retrieved. - pub async fn wait_for_receipt( - &self, - pending_tx: PendingTransactionBuilder, - ) -> Result { - pending_tx - .get_receipt() - .await - .inspect_err(|err| self.logger.error("Failed to get receipt", &err.to_string())) - .map_err(|_| TxManagerError::WaitForReceiptError) - } -} - -#[cfg(test)] -mod tests { - use super::{SimpleTxManager, TxManagerError}; - use alloy::consensus::TxLegacy; - use alloy::network::TransactionBuilder; - use alloy::primitives::{address, bytes, TxKind::Call, U256}; - use alloy::rpc::types::eth::TransactionRequest; - use eigen_logging::get_test_logger; - use eigen_testing_utils::anvil::start_anvil_container; - use std::time::Duration; - use tokio; - use tokio::time::Instant; - - #[tokio::test] - async fn test_send_transaction_from_legacy() { - let (_container, rpc_url, _ws_endpoint) = start_anvil_container().await; - let logger = get_test_logger(); - - let private_key = - "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80".to_string(); - let simple_tx_manager = - SimpleTxManager::new(logger, 1.0, private_key.as_str(), rpc_url.as_str()).unwrap(); - let to = address!("a0Ee7A142d267C1f36714E4a8F75612F20a79720"); - - let account_nonce = 0x69; // nonce queried from the sender account - let tx = TxLegacy { - to: Call(to), - value: U256::from(1_000_000_000), - gas_limit: 2_000_000, - nonce: account_nonce, - gas_price: 21_000_000_000, - input: bytes!(), - chain_id: Some(31337), - }; - let mut tx_request: TransactionRequest = tx.into(); - - // send transaction and wait for receipt - let receipt = simple_tx_manager.send_tx(&mut tx_request).await.unwrap(); - let block_number = receipt.block_number.unwrap(); - println!("Transaction mined in block: {}", block_number); - assert!(block_number > 0); - assert_eq!(receipt.to, Some(to)); - } - - #[tokio::test] - async fn test_send_transaction_from_eip1559() { - let (_container, rpc_url, _ws_endpoint) = start_anvil_container().await; - let logger = get_test_logger(); - - let private_key = - "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80".to_string(); - let simple_tx_manager = - SimpleTxManager::new(logger, 1.0, private_key.as_str(), rpc_url.as_str()).unwrap(); - let to = address!("a0Ee7A142d267C1f36714E4a8F75612F20a79720"); - - let account_nonce = 0x69; // nonce queried from the sender account - let mut tx = TransactionRequest::default() - .with_to(to) - .with_nonce(account_nonce) - .with_chain_id(31337) - .with_value(U256::from(100)) - .with_gas_limit(21_000) - .with_max_priority_fee_per_gas(1_000_000_000) - .with_max_fee_per_gas(20_000_000_000); - tx.set_gas_price(21_000_000_000); - - // send transaction and wait for receipt - let receipt = simple_tx_manager.send_tx(&mut tx).await.unwrap(); - let block_number = receipt.block_number.unwrap(); - println!("Transaction mined in block: {}", block_number); - assert!(block_number > 0); - assert_eq!(receipt.to, Some(to)); - } - - #[tokio::test] - async fn test_send_transaction_with_retries_returns_after_timeout() { - let rpc_url = "http://fake:8545"; - let logger = get_test_logger(); - let private_key = - "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80".to_string(); - let simple_tx_manager = - SimpleTxManager::new(logger, 1.0, private_key.as_str(), rpc_url).unwrap(); - let to = address!("a0Ee7A142d267C1f36714E4a8F75612F20a79720"); - - let account_nonce = 0x69; - let mut tx = TransactionRequest::default() - .with_to(to) - .with_nonce(account_nonce) - .with_chain_id(31337) - .with_value(U256::from(100)) - .with_gas_limit(21_000) - .with_max_priority_fee_per_gas(1_000_000_000) - .with_max_fee_per_gas(20_000_000_000) - .with_gas_price(21_000_000_000); - let start = Instant::now(); - - let result = simple_tx_manager - .send_tx_with_retries( - &mut tx, - Duration::from_millis(5), - Duration::from_secs(1), - 1.0, - ) - .await; - assert_eq!(result, Err(TxManagerError::SendTxError)); - // substract one interval for asserting, because if the last try does not fit in the max_elapsed_time, it will not be executed - let elapsed = start.elapsed(); - assert!(elapsed >= Duration::from_secs(1) - Duration::from_millis(5)); - } -} diff --git a/crates/eigensdk/Cargo.toml b/crates/eigensdk/Cargo.toml index 31544c3e..71bf1bbe 100644 --- a/crates/eigensdk/Cargo.toml +++ b/crates/eigensdk/Cargo.toml @@ -8,7 +8,6 @@ description = "SDK for eigenlayer" license-file.workspace = true [dependencies] -eigen-chainio-txmanager = { workspace = true, optional = true } eigen-client-avsregistry = { workspace = true, optional = true } eigen-client-elcontracts = { workspace = true, optional = true } eigen-client-eth = { workspace = true, optional = true } @@ -36,7 +35,6 @@ default = [] # Full features set for full usage full = [ - "chainio-txmanager", "client-avsregistry", "client-elcontracts", "client-eth", @@ -53,9 +51,6 @@ full = [ "nodeapi", ] -# Chain IO related features -chainio-txmanager = ["dep:eigen-chainio-txmanager"] - # Client-related features client-avsregistry = ["dep:eigen-client-avsregistry"] client-elcontracts = ["dep:eigen-client-elcontracts"] diff --git a/crates/eigensdk/README.md b/crates/eigensdk/README.md index d1742339..f7813b3f 100644 --- a/crates/eigensdk/README.md +++ b/crates/eigensdk/README.md @@ -21,7 +21,6 @@ cargo add eigensdk --features full - [eigen-types](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/types) - Common types - [eigen-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/utils) - Publicly exportable `mainnet rewards v0.4.3` compatible alloy bindings. - [eigen-testing-utils](https://github.com/Layr-Labs/eigensdk-rs/tree/main/testing/testing-utils) - Contains publicly exportable anvil, holesky, mainnet addresses for eigen contracts. -- [eigen-chainio-txmanager](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/chainio/txmanager) - Simple transaction manager. - [eigen-cli](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/eigen-cli) - ECDSA, BLS keystore cli - [eigen-nodeapi](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/nodeapi) - NodeApi implementation for EigenLayer. - [eigen-logging](https://github.com/Layr-Labs/eigensdk-rs/tree/main/crates/logging) - Logging utilities diff --git a/crates/eigensdk/src/lib.rs b/crates/eigensdk/src/lib.rs index 3c8c80ba..f4691aaf 100644 --- a/crates/eigensdk/src/lib.rs +++ b/crates/eigensdk/src/lib.rs @@ -76,12 +76,6 @@ pub use eigen_nodeapi as nodeapi; #[doc(inline)] pub use eigen_testing_utils as testing_utils; -/* ------------------------------------ Chain IO Re-exports ------------------------------------ */ - -#[cfg(feature = "chainio-txmanager")] -#[doc(inline)] -pub use eigen_chainio_txmanager as chainio_txmanager; - /* ------------------------------------ Metrics Collectors Re-exports -------------------------- */ #[cfg(feature = "metrics-collectors-economic")] diff --git a/crates/metrics/Cargo.toml b/crates/metrics/Cargo.toml index f86db96e..e75a64d4 100644 --- a/crates/metrics/Cargo.toml +++ b/crates/metrics/Cargo.toml @@ -11,7 +11,7 @@ license-file.workspace = true eigen-logging.workspace = true metrics.workspace = true metrics-exporter-prometheus.workspace = true -metrics-util = "0.18.0" +metrics-util = "0.19.0" [dev-dependencies] alloy-primitives.workspace = true From 3300955a3468123c725cab7887fcb77b2ab38ff8 Mon Sep 17 00:00:00 2001 From: supernovahs <91280922+supernovahs@users.noreply.github.com> Date: Thu, 9 Jan 2025 00:50:37 +0530 Subject: [PATCH 10/11] add branches section in readme (#200) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: supernovahs Co-authored-by: Tomás Grüner <47506558+MegaRedHand@users.noreply.github.com> --- README.md | 11 ++++++++--- crates/eigensdk/README.md | 6 +++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e54c2069..18dd65ff 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# eigensdk-rs +# EigenSDK-rs -eigensdk-rs is an initiative for rust developers to build AVSs on eigenlayer. +EigenSDK-rs is an initiative for rust developers to build AVSs on eigenlayer. ## Installation @@ -59,6 +59,11 @@ This command will generate the bindings files in the folder: ` We are actively looking for contributors. Thank you for your interest. We have strict ci checks in place. In case of any questions and support, feel free to raise an issue. +## Branches +- `main` - Points to the latest **mainnet** release of contracts. +- `testnet` - Points to the latest **testnet** release of contracts. +- `dev` - Points to the latest **dev** branch of the contracts. + ### PR To test locally :- @@ -122,7 +127,7 @@ Rolling `MSRV` policy of 6 months. The current `MSRV` is 1.79 ## Disclaimer -🚧 Eigensdk-rs is under active development and has not been audited. Eigensdk-rs is rapidly being upgraded, features may be added, removed or otherwise improved or modified and interfaces will have breaking changes. Eigensdk-rs should be used only for testing purposes and not in production. Eigensdk-rs is provided "as is" and Eigen Labs, Inc. does not guarantee its functionality or provide support for its use in production. 🚧 +🚧 EigenSDK-rs is under active development and has not been audited. EigenSDK-rs is rapidly being upgraded, features may be added, removed or otherwise improved or modified and interfaces will have breaking changes. EigenSDK-rs should be used only for testing purposes and not in production. EigenSDK-rs is provided "as is" and Eigen Labs, Inc. does not guarantee its functionality or provide support for its use in production. 🚧 ## Credits diff --git a/crates/eigensdk/README.md b/crates/eigensdk/README.md index f7813b3f..4290bae9 100644 --- a/crates/eigensdk/README.md +++ b/crates/eigensdk/README.md @@ -59,6 +59,10 @@ This command will generate the bindings files in the folder: ` We are actively looking for contributors. Thank you for your interest. We have strict ci checks in place. In case of any questions and support, feel free to raise an issue. +## Branches +- `main` - Points to the latest **mainnet** release of contracts. +- `dev` - Points to the latest **testnet** release of contracts. + ### PR To test locally :- @@ -122,7 +126,7 @@ Rolling `MSRV` policy of 6 months. The current `MSRV` is 1.79 ## Disclaimer -This software is `unaudited`.This is experimental software and is provided on an "as is" and "as available" basis and may not work at all. It should not be used in production. +🚧 EigenSDK-rs is under active development and has not been audited. EigenSDK-rs is rapidly being upgraded, features may be added, removed or otherwise improved or modified and interfaces will have breaking changes. EigenSDK-rs should be used only for testing purposes and not in production. EigenSDK-rs is provided "as is" and Eigen Labs, Inc. does not guarantee its functionality or provide support for its use in production. 🚧 ## Credits From 4d0cc1fd6e751bb7e90884d86186beb0c54d61e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:40:36 -0300 Subject: [PATCH 11/11] docs: add some notes for running tests (#194) I run into some problems when running the tests locally. This PR adds the way I solved those, for future contributors. --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 18dd65ff..ee4b63da 100644 --- a/README.md +++ b/README.md @@ -68,12 +68,25 @@ We are actively looking for contributors. Thank you for your interest. We have s To test locally :- -You need `foundry`to successfully to run it. +You need `foundry` to successfully to run it. ```bash cargo test ``` +On Mac, you might need to pull the foundry image manually specifying the platform with: + +```bash +docker pull --platform amd64 foundry-rs/foundry +``` + +Sometimes the bindings fail due to containing botched doctests. +You can exclude them from the test run with: + +```bash +cargo test --workspace --exclude eigen-utils +``` + At least 1 `approving` review is required to merge the PR. ### lint